diff options
118 files changed, 8092 insertions, 2438 deletions
@@ -14,28 +14,28 @@ inputs = {}; outputs = {self, ...}: let - sources = import ./npins/full.nix {}; + sources = import ./unflake.nix; # core - nixpkgs = sources.loadFlake "nixpkgs"; - nixpkgs-stable = sources.loadFlake "nixpkgs-stable"; - library = sources.loadFlake "library"; + nixpkgs = sources.nixpkgs; + nixpkgs-stable = sources.nixpkgs-stable; + library = sources.library; # modules - home-manager = sources.loadFlake "home-manager"; - nixos-generators = sources.loadFlake "nixos-generators"; - impermanence = sources.loadFlake "impermanence"; - agenix = sources.loadFlake "agenix"; - serverphone = sources.loadFlake "serverphone"; - disko = sources.loadFlake "disko"; - lanzaboote = sources.loadFlake "lanzaboote"; - nixvim = sources.loadFlake "nixvim"; - nix-index-database = sources.loadFlake "nix-index-database"; + home-manager = sources.home-manager; + nixos-generators = sources.nixos-generators; + impermanence = sources.impermanence; + agenix = sources.agenix; + serverphone = sources.serverphone; + disko = sources.disko; + lanzaboote = sources.lanzaboote; + nixvim = sources.nixvim; + nix-index-database = sources.nix-index-database; # external dependencies - treefmt-nix = sources.loadFlake "treefmt-nix"; - templates = sources.loadFlake "templates"; + treefmt-nix = sources.treefmt-nix; + templates = sources.templates; # my binaries - qmk_firmware = sources.loadFlake "qmk_firmware"; - turtle = sources.loadFlake "turtle"; + qmk_firmware = sources.qmk_firmware; + turtle = sources.turtle; system = "x86_64-linux"; diff --git a/flake/default.nix b/flake/default.nix index c35a5f55..099a4568 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -112,7 +112,6 @@ in { pkgs.alejandra pkgs.deadnix pkgs.nvd - pkgs.npins ]; }; }; diff --git a/hosts/by-name/apzu/configuration.nix b/hosts/by-name/apzu/configuration.nix index e238882d..9e5d97f0 100644 --- a/hosts/by-name/apzu/configuration.nix +++ b/hosts/by-name/apzu/configuration.nix @@ -24,8 +24,13 @@ "/var/log" ]; + power.enable = true; + programs = { + starship.showBattery = true; + ly.batteryName = "BAT0"; + river.init = { mappings = { layout = "dvorak-modified"; diff --git a/hosts/by-name/apzu/hardware.nix b/hosts/by-name/apzu/hardware.nix index 70b041e7..d037473a 100644 --- a/hosts/by-name/apzu/hardware.nix +++ b/hosts/by-name/apzu/hardware.nix @@ -33,6 +33,12 @@ boot = { kernelModules = ["kvm-intel" "rtw89"]; + kernelParams = [ + # Use the newer experimental xe driver + # "i915.force_probe=!9a49" + # "xe.force_probe=9a49" + ]; + initrd.availableKernelModules = ["xhci_pci" "vmd" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"]; }; } diff --git a/hosts/by-name/tiamat/hardware.nix b/hosts/by-name/tiamat/hardware.nix index 2b18a662..f2a5cec6 100644 --- a/hosts/by-name/tiamat/hardware.nix +++ b/hosts/by-name/tiamat/hardware.nix @@ -10,6 +10,7 @@ {modulesPath, ...}: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") # TODO: is this necessary? + ./legacy-disk-module/module.nix ]; soispha = { @@ -20,7 +21,8 @@ enableFlashing = true; }; }; - + }; + legacy.soispha = { disks = { enable = true; disk = "/dev/disk/by-id/nvme-CT1000P5SSD8_21032C857568"; diff --git a/hosts/by-name/tiamat/legacy-disk-module/fstrim.nix b/hosts/by-name/tiamat/legacy-disk-module/fstrim.nix new file mode 100644 index 00000000..0fbb6c83 --- /dev/null +++ b/hosts/by-name/tiamat/legacy-disk-module/fstrim.nix @@ -0,0 +1,51 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + pkgs, + lib, + cfg, +}: { + timers.fstrim = lib.mkIf cfg.ssd { + wantedBy = ["timers.target"]; + wants = ["fstrim.service"]; + unitConfig = { + Description = "Discard unused blocks once a week"; + Documentation = "man:fstrim"; + ConditionVirtualization = "!container"; + ConditionPathExists = "!/etc/initrd-release"; + }; + timerConfig = { + OnCalendar = "weekly"; + AccuracySec = "1h"; + Persistent = "true"; + RandomizedDelaySec = "6000"; + }; + }; + services.fstrim = lib.mkIf cfg.ssd { + wantedBy = lib.mkForce []; + unitConfig = { + Description = "Discard unused blocks on filesystems from /etc/fstab"; + Documentation = "man:fstrim(8)"; + ConditionVirtualization = "!container"; + }; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${pkgs.util-linux}/bin/fstrim --listed-in /etc/fstab:/proc/self/mountinfo --verbose --quiet-unsupported"; + PrivateDevices = "no"; + PrivateNetwork = "yes"; + PrivateUsers = "no"; + ProtectKernelTunables = "yes"; + ProtectKernelModules = "yes"; + ProtectControlGroups = "yes"; + MemoryDenyWriteExecute = "yes"; + SystemCallFilter = "@default @file-system @basic-io @system-service"; + }; + }; +} diff --git a/hosts/by-name/tiamat/legacy-disk-module/hibernate.nix b/hosts/by-name/tiamat/legacy-disk-module/hibernate.nix new file mode 100644 index 00000000..d3f8fe8b --- /dev/null +++ b/hosts/by-name/tiamat/legacy-disk-module/hibernate.nix @@ -0,0 +1,55 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{pkgs}: { + services = { + hibernate-preparation = { + wantedBy = ["systemd-hibernate.service"]; + unitConfig = { + Description = "Enable swap file and disable zram before hibernate"; + Before = "systemd-hibernate.service"; + }; + serviceConfig = { + Type = "oneshot"; + User = "root"; + ExecStart = "${pkgs.bash}/bin/bash -c \"${pkgs.util-linux}/bin/swapon /swap/swapfile && ${pkgs.util-linux}/bin/swapoff /dev/zram0\""; + }; + }; + + hibernate-resume = { + wantedBy = ["systemd-hibernate.service"]; + unitConfig = { + Description = "Disable swap after resuming from hibernation"; + After = "hibernate.target"; + }; + serviceConfig = { + Type = "oneshot"; + User = "root"; + ExecStart = "${pkgs.util-linux}/bin/swapoff /swap/swapfile"; + }; + }; + # swapoff-start = { + # wantedBy = ["multi-user.target"]; + # unitConfig = { + # Description = "Disable hardware swap after booting"; + # }; + # serviceConfig = { + # Type = "oneshot"; + # User = "root"; + # ExecStart = "${pkgs.util-linux}/bin/swapoff /swap/swapfile"; + # }; + # }; + systemd-hibernate.serviceConfig.Environment = "SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1"; + systemd-logind.serviceConfig.Environment = "SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1"; + }; + + sleep.settings.Sleep = { + HibernateDelaySec = "10m"; + }; +} diff --git a/hosts/by-name/tiamat/legacy-disk-module/module.nix b/hosts/by-name/tiamat/legacy-disk-module/module.nix new file mode 100644 index 00000000..955d2026 --- /dev/null +++ b/hosts/by-name/tiamat/legacy-disk-module/module.nix @@ -0,0 +1,159 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + config, + lib, + pkgs, + modules, + ... +}: let + # FIXME: The iso redeploy requires a bigger efi partition <2024-05-12> + cfg = config.legacy.soispha.disks; + defaultMountOptions = [ + "compress=zstd:3" # This saves disk space, at a performance cost + "noatime" # should have some performance upsides, and I don't use it anyways + "lazytime" # make time changes in memory + ]; +in { + options.legacy.soispha.disks = { + enable = lib.mkEnableOption "disk setup with disko"; + + disk = lib.mkOption { + type = lib.types.path; + example = lib.literalExpression "/dev/disk/by-uuid/0442cb6d-f13a-4635-b487-fa76189774c5"; + description = "The disk used for installing the OS."; + }; + + ssd = lib.mkEnableOption "ssd specific improvements, like trim"; + + swap = { + uuid = lib.mkOption { + type = lib.types.str; + example = lib.literalExpression "d1d20ae7-3d8a-44da-86da-677dbbb10c89"; + description = "The uuid of the swapfile"; + }; + resumeOffset = lib.mkOption { + type = lib.types.str; + example = lib.literalExpression "134324224"; + description = "The resume offset of the swapfile"; + }; + }; + }; + + imports = [ + modules.disko.nixosModules.default + ]; + + config = lib.mkIf cfg.enable { + systemd = lib.recursiveUpdate (import ./hibernate.nix {inherit pkgs;}) (import ./fstrim.nix {inherit pkgs lib cfg;}); + + disko.devices = { + disk = { + main = { + device = cfg.disk; + content = { + type = "gpt"; + partitions = { + root = { + size = "100%"; + name = "root"; + content = { + type = "luks"; + name = "nixos"; + extraOpenArgs = ["--allow-discards"]; + content = { + type = "btrfs"; + extraArgs = ["-f" "--label nixos"]; # Override existing partitions + subvolumes = { + "nix" = { + mountpoint = "/nix"; + mountOptions = defaultMountOptions; + }; + "persistent-storage" = { + mountpoint = "/srv"; + mountOptions = defaultMountOptions; + }; + "persistent-storage@snapshots" = { + mountpoint = "/srv/.snapshots"; + mountOptions = defaultMountOptions; + }; + "swap" = { + mountpoint = "/swap"; + mountOptions = [ + "noatime" # should have some performance upsides, and I don't use it anyways + "lazytime" # make time changes in memory + ]; + }; + }; + }; + }; + }; + boot = { + type = "EF00"; + size = "512M"; + name = "boot"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + }; + }; + }; + }; + nodev = { + "/" = { + fsType = "tmpfs"; + mountOptions = ["defaults" "size=25%" "mode=0755"]; + }; + "/tmp" = { + fsType = "tmpfs"; + mountOptions = ["defaults" "size=50%" "mode=0755"]; + }; + "/nix/var/nix/b" = { + fsType = "tmpfs"; + mountOptions = [ + "defaults" + "noswap" # Otherwise, we might run into io-based slowdowns + "size=80%" + "mode=0755" + ]; + }; + }; + }; + fileSystems = { + "/srv" = { + neededForBoot = true; + }; + "/swap" = { + neededForBoot = true; + }; + }; + swapDevices = [ + #{ + # device = "/swap/swapfile"; + # priority = 1; # lower than zramSwap, just in case + # # size = 2048; # TODO: can nixos create a btrfs swapfile correctly? + #} + ]; + zramSwap = { + enable = true; + priority = 10; # needs to be higher than hardware-swap + }; + boot = { + kernelParams = [ + "resume_offset=${cfg.swap.resumeOffset}" + "zswap.enabled=0" # zswap and zram are not really compatible + ]; + resumeDevice = "/dev/disk/by-uuid/${cfg.swap.uuid}"; + }; + }; +} @@ -1,13 +1,97 @@ let - nixpkgsVersion = "26.05"; + nixosVersion = "26.05"; + lanzabooteVersion = "v1.1.0"; + + w_nixpkgs = ref: { + type = "github"; + owner = "nixos"; + repo = "nixpkgs"; + inherit ref; + }; + w_tarball = url: { + type = "tarball"; + inherit url; + }; + + nixos_stable = "https://channels.nixos.org/nixos-${nixosVersion}/nixexprs.tar.zst"; + nixos_unstable = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.zst"; in { + _unflake.dedupRules = [ + { + when = w_nixpkgs "nixpkgs-unstable"; + set = w_tarball nixos_unstable; + } + { + when = w_nixpkgs "nixos-unstable-small"; + set = w_tarball nixos_unstable; + } + { + when = w_nixpkgs "nixos-25.05"; + set = w_tarball nixos_stable; + } + { + when = w_nixpkgs "nixos-25.11"; + set = w_tarball nixos_stable; + } + { + when = w_nixpkgs "nixos-26.05"; + set = w_tarball nixos_stable; + } + + { + when = { + type = "github"; + owner = "nix-community"; + repo = "home-manager"; + }; + + set = {ref = "master";}; + } + + { + when = { + type = "github"; + owner = "nix-systems"; + repo = "default"; + }; + + set = {ref = "main";}; + } + { + when = { + type = "github"; + owner = "nix-systems"; + repo = "x86_64-linux"; + }; + + set = { + repo = "default"; + ref = "main"; + }; + } + + { + when = { + type = "github"; + owner = "numtide"; + repo = "treefmt-nix"; + }; + + set = {ref = "main";}; + } + ]; + + # Actual inputs "agenix" = { url = "github:ryantm/agenix/main"; }; "disko" = { url = "github:nix-community/disko/master"; }; + "devshells" = { + url = "git+https://git.foss-syndicate.org/bpeetz/devshells?ref=prime"; + }; "flake-compat" = { url = "git+https://git.lix.systems/lix-project/flake-compat?ref=main"; }; @@ -32,12 +116,8 @@ in { "nixos-generators" = { url = "github:nix-community/nixos-generators/master"; }; - "nixpkgs-stable" = { - url = "github:NixOS/nixpkgs/nixos-${nixpkgsVersion}"; - }; - "nixpkgs" = { - url = "github:NixOS/nixpkgs/nixos-unstable-small"; - }; + "nixpkgs-stable" = {url = "tarball+${nixos_stable}";}; + "nixpkgs" = {url = "tarball+${nixos_unstable}";}; "nixvim" = { url = "github:nix-community/nixvim/main"; }; diff --git a/modules/by-name/at/atuin/module.nix b/modules/by-name/at/atuin/module.nix index caabdf40..d68e830c 100644 --- a/modules/by-name/at/atuin/module.nix +++ b/modules/by-name/at/atuin/module.nix @@ -39,17 +39,19 @@ in { }; soispha.programs.zsh.integrations.atuin = ./atuin.zsh; + soispha.services.unison.pathsToIgnore = [ + # Already synchronized by atuin sync server + "~/.local/share/atuin" + "~/.local/share/turtle" + ]; home-manager.users.soispha = { - programs.atuin = { - enable = true; - - package = externalBinaries.turtle.packages.${system}.default; + imports = [ + externalBinaries.turtle.nixosModules.home-manager + ]; - daemon.enable = true; - - # We can do this on our own. - enableZshIntegration = false; + programs.turtle = { + enable = true; settings = { sync = lib.mkIf cfg.enableAge { @@ -62,7 +64,7 @@ in { logs = { enabled = true; - dir = "${config.home-manager.users.soispha.xdg.cacheHome}/atuin/logs"; + dir = "${config.home-manager.users.soispha.xdg.cacheHome}/turtle/logs"; }; # Use the rather reasonable syntax of `skim` to search. diff --git a/modules/by-name/au/ausweisapp/module.nix b/modules/by-name/au/ausweisapp/module.nix index 3a89db9d..e74f3d91 100644 --- a/modules/by-name/au/ausweisapp/module.nix +++ b/modules/by-name/au/ausweisapp/module.nix @@ -14,5 +14,8 @@ in { soispha.impermanence.userDirectories = [ ".config/AusweisApp" ]; + soispha.services.unison.pathsToSync = [ + "~/.config/AusweisApp" + ]; }; } diff --git a/modules/by-name/ba/backup/env.vars b/modules/by-name/ba/backup/env.vars new file mode 100644 index 00000000..339c5a5b --- /dev/null +++ b/modules/by-name/ba/backup/env.vars @@ -0,0 +1 @@ +RESTIC_COMPRESSION=max diff --git a/modules/by-name/ba/backup/module.nix b/modules/by-name/ba/backup/module.nix index dd0dfac7..e601d840 100644 --- a/modules/by-name/ba/backup/module.nix +++ b/modules/by-name/ba/backup/module.nix @@ -63,12 +63,23 @@ in { soispha.impermanence.directories = lib.mkMerge [ (lib.mkIf cfg.storagebox.enable [ "/var/cache/restic-backups-storagebox" + + # Generate the base systemd.mount from impermanence (we will override this, so it + # points to the non-admin one instead) + "/var/cache/restic-backups-storagebox-admin" ]) (lib.mkIf cfg.local.enable [ "/var/cache/restic-backups-local" ]) ]; + # TODO: Make this work (`systemd.mounts` is a list, so _this_ doesn't work.) <2026-07-07> + # systemd.mounts."/var/cache/restic-backups-storagebox-admin" = { + # # TODO: Don't hardcode the path, but use + # # `systemd.mounts."/var/cache/restic-backups-storagebox".what` instead <2026-07-07> + # what = "/srv/var/cache/restic-backups-storagebox"; + # }; + age.secrets = { resticStorageboxSshKey = lib.mkIf cfg.storagebox.enable { file = cfg.storagebox.sshKey; @@ -97,6 +108,8 @@ in { }; }; + programs.fuse.enable = cfg.storagebox.enable || cfg.local.enable; + systemd.services = { prepare-backup = { requires = []; @@ -154,16 +167,21 @@ in { ]; exclude = [ "${homeDir}/soispha/.cache" + "${homeDir}/soispha/.local/share/lutris/install" + "${homeDir}/soispha/.local/share/Steam/steamapps/common" ]; extraBackupArgs = [ + # Don't scan the filesystem to determine an estimate. + "--no-scan" "--verbose=2" ]; + environmentFile = "${./env.vars}"; in { local = lib.mkIf cfg.local.enable { inhibitsSleep = true; initialize = true; - inherit paths exclude extraBackupArgs; + inherit paths exclude extraBackupArgs environmentFile; passwordFile = config.age.secrets.resticLocalRepositoryPassword.path; @@ -177,7 +195,7 @@ in { inhibitsSleep = true; initialize = true; - inherit paths exclude extraBackupArgs; + inherit paths exclude extraBackupArgs environmentFile; passwordFile = config.age.secrets.resticStorageboxRepositoryPassword.path; extraOptions = [ @@ -190,7 +208,6 @@ in { repository = "rclone: "; timerConfig = { - Requires = "network-online.target"; OnActiveSec = "30m"; OnUnitInactiveSec = "2h"; Persistent = true; @@ -199,9 +216,13 @@ in { # This is only for listing, pruning and such stuff. storagebox-admin = lib.mkIf cfg.storagebox.enable { - inhibitsSleep = false; + inhibitsSleep = true; + + # Don't create the repository if it doesn't exist yet. initialize = false; + inherit paths exclude extraBackupArgs environmentFile; + passwordFile = config.age.secrets.resticStorageboxRepositoryPassword.path; extraOptions = [ "rclone.program='ssh -p 23 ${cfg.storagebox.user}@${cfg.storagebox.user}.your-storagebox.de command_forced_on_remote'" diff --git a/modules/by-name/bo/boot/module.nix b/modules/by-name/bo/boot/module.nix index 4dc9130a..80a47420 100644 --- a/modules/by-name/bo/boot/module.nix +++ b/modules/by-name/bo/boot/module.nix @@ -37,42 +37,43 @@ iso_options = ## General options? [ - "initrd=${tails.initrd}" - # "noprompt" - # "timezone=Etc/UTC" # "config" - # "noautologin" - # "slab_nomerge" - # "slub_debug=FZ" - # "mce=0" - # "vsyscall=none" - # "init_on_free=1" - # "mds=full,nosmt" - # "page_alloc.shuffle=1" - # "randomize_kstack_offset=on" - # "efi_pstore.pstore_disable=1" - # "erst_disable" - # "spec_store_bypass_disable=on" - # "systemd.condition_needs_update=no" + "initrd=${tails.initrd}" + + "efi_pstore.pstore_disable=1" + "erst_disable" + "init_on_free=1" + "mce=0" + "mds=full,nosmt" + "noautologin" + "noprompt" + "page_alloc.shuffle=1" + "randomize_kstack_offset=on" + "slab_nomerge" + "slub_debug=FZ" + "spec_store_bypass_disable=on" + "systemd.condition_needs_update=no" + "timezone=Etc/UTC" + "vsyscall=none" ] ## Systemd log options ++ [ - "systemd.log_level=debug" - "systemd.log_target=console" - "console=tty1" - "systemd.journald.forward_to_console=1" - "systemd.unit=rescue.target" + # "systemd.log_level=debug" + # "systemd.log_target=console" + # "console=tty1" + # "systemd.journald.forward_to_console=1" + # "systemd.unit=rescue.target" ] ## Options for the first `init` script ++ [ # Use the `*-live` scripts "boot=live" - # "splash" - "plymouth.enable=0" + "splash" + # "plymouth.enable=0" # "quiet" - "debug" + # "debug" ] ## Options for the `*-live` `init` scripts ++ [ @@ -207,6 +208,8 @@ in { }; extraFiles = { + # TODO: Check that the ISO we use for booting is _actually_ still the one we + # copied there (someone might exchange it in between) <2026-06-09> "${tails.root}" = "${iso}/tails.iso"; "${tails.vmlinuz}" = "${iso}/live/vmlinuz-linux"; "${tails.initrd}" = "${iso}/live/initrd.img"; diff --git a/modules/by-name/ca/calibre/module.nix b/modules/by-name/ca/calibre/module.nix new file mode 100644 index 00000000..4188e360 --- /dev/null +++ b/modules/by-name/ca/calibre/module.nix @@ -0,0 +1,38 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + config, + lib, + libraries, + ... +}: let + cfg = config.soispha.programs.calibre; +in { + options.soispha.programs.calibre = { + enable = libraries.base.options.mkEnable "calibre"; + }; + + config = lib.mkIf cfg.enable { + soispha.impermanence.userDirectories = [ + ".config/calibre" + ]; + soispha.services.unison.pathsToSync = [ + "~/.config/calibre" + ]; + + # Calibre depends on multiple “AI” slop stuff, which I don't really want to have in my + # closure. + # Considering, that calibre is probably also LLM friendly (and maybe contains + # vibe-coded stuff), I should probably replace it, but currently I'll keep it. + home-manager.users.soispha.programs.calibre = { + enable = false; + }; + }; +} diff --git a/modules/by-name/cl/cleanup/module.nix b/modules/by-name/cl/cleanup/module.nix index 9b42b337..11e16032 100644 --- a/modules/by-name/cl/cleanup/module.nix +++ b/modules/by-name/cl/cleanup/module.nix @@ -24,6 +24,8 @@ in { services.speechd.enable = false; + system.disableInstallerTools = true; + environment = { defaultPackages = lib.mkForce []; }; diff --git a/modules/by-name/di/direnv/landrun-fish.sh b/modules/by-name/di/direnv/landrun-fish.sh new file mode 100755 index 00000000..09687afb --- /dev/null +++ b/modules/by-name/di/direnv/landrun-fish.sh @@ -0,0 +1,30 @@ +#! /usr/bin/env sh + +export NO_DIRENV_LOAD=true +landrun \ + --env PATH \ + --env USER \ + --env IN_NIX_SHELL \ + --env NIX_SHELL_LEVEL \ + --env NO_DIRENV_LOAD \ + --env SHLVL \ + --rox /nix/store \ + --ro /etc/ \ + --ro /proc/ \ + --rw /dev/ \ + --rw "/run/user/$(id --user)" \ + --ro "$HOME/.config" \ + --rw "$HOME/.cache" \ + --ro "$HOME/.local/share/nix/trusted-settings.json" \ + --rw "$HOME/.local/share/nix/repl-history" \ + --rw "$HOME/.local/share/task/" \ + --rw "$HOME/.local/share/nvim/" \ + --rw "$HOME/.local/share/cargo/" \ + --rw "$HOME/.local/share/ctpv/" \ + --rw "$HOME/.local/share/direnv" \ + --ro "$HOME/.config/fish/" \ + --connect-tcp 80 \ + --connect-tcp 443 \ + -- fish "$@" + +# vim: ft=sh diff --git a/modules/by-name/di/direnv/module.nix b/modules/by-name/di/direnv/module.nix index 363f5cea..ad47a2a7 100644 --- a/modules/by-name/di/direnv/module.nix +++ b/modules/by-name/di/direnv/module.nix @@ -11,26 +11,91 @@ config, lib, pkgs, + sources, ... }: let cfg = config.soispha.programs.direnv; + direnvCfg = config.home-manager.users.soispha.programs.direnv; + + inherit (sources) devshells nixpkgs; + + pre-cache = pkgs.runCommand "pre-cache.sh" {} '' + cat "${./pre-cache.sh}" > $out + + substituteInPlace $out \ + --replace-fail "%DEVSHELLS_REPO%" "${devshells}" \ + --replace-fail "%DEVSHELLS_REPO_REF%" "${devshells.sourceInfo.rev}.${builtins.readFile "${nixpkgs}/.git-revision"}" + ''; + + landrun-fish = pkgs.writeShellApplication { + name = "landrun-fish"; + text = builtins.readFile ./landrun-fish.sh; + inheritPath = true; + runtimeInputs = [ + pkgs.landrun + ]; + }; in { options.soispha.programs.direnv = { enable = lib.mkEnableOption "direnv"; }; - config.home-manager.users.soispha.programs.direnv = lib.mkIf cfg.enable { - enable = true; + config = lib.mkIf cfg.enable { + soispha.programs.fish.integrations.direnv = + # fish + '' + function __direnv_export_eval + ${lib.getExe direnvCfg.package} export fish | source; + end - nix-direnv = { - enable = true; - package = pkgs.nix-direnv.override {nix = config.nix.package;}; - }; + if test -z "$NO_DIRENV_LOAD" + function _direnv_hook + if test -f ".env" -o -f ".envrc" -o -f ".nenvrc" + # ${lib.getExe landrun-fish} --interactive --command='__direnv_export_eval' + __direnv_export_eval + end + end + + function __direnv_on_prompt --on-event fish_prompt; + _direnv_hook + end + + function _direnv_on_preexec --on-event fish_preexec; + _direnv_hook + end + end + ''; + + home-manager.users.soispha = { + programs.direnv = { + enable = true; + + package = pkgs.direnv-patched; + + nix-direnv = { + enable = true; + package = pkgs.nix-direnv.override {nix = config.nix.package;}; + }; + + # Handled by myself (and the script is overridden) + enableBashIntegration = true; + enableZshIntegration = true; + enableFishIntegration = false; + + config = { + warn_timeout = 0; + + # NOTE: Something variable is undeclared in the my default loaded stuff :/. <2026-08-18> + # strict_env = true; - config = { - warn_timeout = 0; - # strict_env = true; - # disable_stdin = true; + # disable_stdin = true; + }; + }; + xdg.configFile = { + "direnv/lib/hm-pre-cache.sh" = { + source = pre-cache; + }; + }; }; }; } diff --git a/modules/by-name/di/direnv/pre-cache.sh b/modules/by-name/di/direnv/pre-cache.sh new file mode 100755 index 00000000..706dae61 --- /dev/null +++ b/modules/by-name/di/direnv/pre-cache.sh @@ -0,0 +1,89 @@ +#! /usr/bin/env sh + +_pre_cache_log() { + printf "pre-cache: %s\n" "$1" +} +_pre_cache_preflight() { + set -eu + _nix_direnv_preflight + + REPO="%DEVSHELLS_REPO%" + system="x86_64-linux" + cache_dir="$XDG_CACHE_HOME/pre_cache" + [ -d "$cache_dir" ] || mkdir --parents "$cache_dir" + + repo_ref="%DEVSHELLS_REPO_REF%" + final_cache="$cache_dir/$repo_ref" + + if ! [ -d "$final_cache" ]; then + _pre_cache_log "Cache dir invalidated" + + # There is not yet a final cache directory, so the ref must have changed. + # Therefore we delete the whole cache directory, so we invalidate old cached shells. + set -u + rm --recursive "$cache_dir" + + mkdir --parents "$final_cache" + fi + + # TODO: Direnv requires `-u` to be unset, for it's stdlib :/. <2026-08-22> + set +u +} + +_pre_cache_load_shell() { + lang="$1" + lang_cache="$final_cache/$lang" + + if ! [ -f "$lang_cache" ]; then + tmp_profile="$final_cache/__tmp_profile" + profile="$final_cache/__profile" + + # It does not already exists, we need to evaluate it. + _nix print-dev-env --profile "$tmp_profile" "$REPO#$lang" >"$lang_cache" + + _nix_add_gcroot "$tmp_profile" "$profile" + # rm "$tmp_profile" "$tmp_profile"* || true + fi + + _pre_cache_log "Loaded dev-shell for $lang." + _nix_import_env "$lang_cache" +} + +_pre_cache_build_shells() { + installables="" + + for lang in "$@"; do + lang_cache="$final_cache/$lang" + + if ! [ -f "$lang_cache" ]; then + new_part="$REPO#devShells.$system.$lang" + + if [ -z "$installables" ]; then + installables="$new_part" + else + installables="$installables $new_part" + fi + fi + done + + if [ -n "$installables" ]; then + _pre_cache_log "Building '$installables'..." + + # We want shell-spliting + # shellcheck disable=SC2086 + _nix build --no-link $installables + fi +} + +pre_cache_load() { + _pre_cache_preflight + + # Build all not-yet build shells concurrently. That speeds up the initial load. + _pre_cache_build_shells "$@" + + for lan in "$@"; do + _pre_cache_load_shell "$lan" + done +} + +# vim: ft=sh diff --git a/modules/by-name/lf/lf/wrappers/ll/default.nix b/modules/by-name/fi/fish/config/01_show-task.fish index 6e4ee336..21db1112 100644 --- a/modules/by-name/lf/lf/wrappers/ll/default.nix +++ b/modules/by-name/fi/fish/config/01_show-task.fish @@ -1,3 +1,5 @@ +#!/usr/bin/env fish + # nixos-config - My current NixOS configuration # # Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> @@ -7,12 +9,12 @@ # # You should have received a copy of the License along with this program. # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -{writeShellApplication}: -writeShellApplication { - name = "ll"; - text = builtins.readFile ./ll.sh; - # This is sourced in the shell - inheritPath = true; - bashOptions = []; -} +# Display current tasks +test -z "$NVIM"; and task next + +# Empty the default greeting +set --global fish_greeting "" + +# Set a nice theme +fish_config theme choose ayu diff --git a/modules/by-name/fi/fish/config/keybindings/00__start.fish b/modules/by-name/fi/fish/config/keybindings/00__start.fish new file mode 100644 index 00000000..75227ef1 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/00__start.fish @@ -0,0 +1 @@ +bind --erase --all diff --git a/modules/by-name/fi/fish/config/keybindings/01_insert.fish b/modules/by-name/fi/fish/config/keybindings/01_insert.fish new file mode 100644 index 00000000..984e0e21 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/01_insert.fish @@ -0,0 +1,86 @@ +bind --preset --mode insert ctrl-y yank +bind --preset --mode insert alt-y yank-pop +bind --preset --mode insert right forward-char +bind --preset --mode insert left backward-char +bind --preset --mode insert ctrl-right forward-token +bind --preset --mode insert ctrl-left backward-token +bind --preset --mode insert pageup beginning-of-history +bind --preset --mode insert pagedown end-of-history +bind --preset --mode insert ctrl-x fish_clipboard_copy +bind --preset --mode insert ctrl-v fish_clipboard_paste +bind --preset --mode insert tab complete +bind --preset --mode insert ctrl-i complete +bind --preset --mode insert ctrl-s pager-toggle-search +bind --preset --mode insert shift-tab complete-and-search +bind --preset --mode insert shift-delete history-delete or backward-delete-char +bind --preset --mode insert down down-or-search +bind --preset --mode insert up up-or-search +bind --preset --mode insert shift-right forward-bigword +bind --preset --mode insert shift-left backward-bigword +bind --preset --mode insert alt-b prevd-or-backward-word +bind --preset --mode insert alt-f nextd-or-forward-word +bind --preset --mode insert alt-right nextd-or-forward-word +bind --preset --mode insert \e\[1\;9C nextd-or-forward-word +bind --preset --mode insert alt-left prevd-or-backward-word +bind --preset --mode insert \e\[1\;9D prevd-or-backward-word +bind --preset --mode insert alt-up history-token-search-backward +bind --preset --mode insert alt-down history-token-search-forward +bind --preset --mode insert \e\[1\;9A history-token-search-backward +bind --preset --mode insert \e\[1\;9B history-token-search-forward +bind --preset --mode insert alt-. history-token-search-backward +bind --preset --mode insert alt-l __fish_list_current_token +bind --preset --mode insert alt-o __fish_preview_current_file +bind --preset --mode insert alt-w __fish_whatis_current_token +bind --preset --mode insert ctrl-l 'status test-terminal-feature scroll-content-up && commandline -f scrollback-push' clear-screen +bind --preset --mode insert ctrl-c clear-commandline +bind --preset --mode insert ctrl-u backward-kill-line +bind --preset --mode insert ctrl-k kill-line +bind --preset --mode insert ctrl-w backward-kill-path-component +bind --preset --mode insert end end-of-line +bind --preset --mode insert home beginning-of-line +bind --preset --mode insert alt-d 'if test "$(commandline; printf .)" = \\n.; __fish_echo dirh; else; commandline -f kill-word; end' +bind --preset --mode insert ctrl-d delete-or-exit +bind --preset --mode insert alt-s 'for cmd in sudo doas please run0; if command -q $cmd; fish_commandline_prepend $cmd; break; end; end' +bind --preset --mode insert f1 __fish_man_page +bind --preset --mode insert alt-h __fish_man_page +bind --preset --mode insert alt-p __fish_paginate +bind --preset --mode insert alt-# __fish_toggle_comment_commandline + +bind --preset --mode insert ctrl-e edit_command_buffer + +bind --preset --mode insert '' self-insert +bind --preset --mode insert space self-insert expand-abbr +bind --preset --mode insert \; self-insert expand-abbr +bind --preset --mode insert \| self-insert expand-abbr +bind --preset --mode insert \& self-insert expand-abbr +bind --preset --mode insert \> self-insert expand-abbr +bind --preset --mode insert \< self-insert expand-abbr +bind --preset --mode insert shift-enter 'commandline -i \\n (commandline --search-field >/dev/null && echo --search-field)' expand-abbr +bind --preset --mode insert alt-enter 'commandline -i \\n (commandline --search-field >/dev/null && echo --search-field)' expand-abbr +bind --preset --mode insert \) self-insert expand-abbr +bind --preset --mode insert ctrl-space 'test -n "$(commandline)" && commandline -i " " (commandline --search-field >/dev/null && echo --search-field)' +bind --preset --mode insert shift-space 'commandline -i " " (commandline --search-field >/dev/null && echo --search-field)' expand-abbr +bind --preset --mode insert enter execute +bind --preset --mode insert ctrl-j execute +bind --preset --mode insert ctrl-m execute +bind --preset --mode insert ctrl-enter execute + +bind --preset --mode insert ctrl-n accept-autosuggestion +bind --preset --mode insert delete delete-char +bind --preset --mode insert backspace backward-delete-char +bind --preset --mode insert shift-backspace backward-delete-char +bind --preset --mode insert ctrl-h backward-delete-char + +function _bind_insert_escape + if commandline -P + commandline -f cancel + else + set fish_bind_mode default + if test (count (commandline --cut-at-cursor | tail -c2)) != 2 + commandline -f backward-char + end + commandline -f repaint-mode + end +end +bind --preset --mode insert escape _bind_insert_escape +bind --preset --mode insert ctrl-\[ _bind_insert_escape diff --git a/modules/by-name/fi/fish/config/keybindings/02_command.fish b/modules/by-name/fi/fish/config/keybindings/02_command.fish new file mode 100644 index 00000000..7cea46c5 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/02_command.fish @@ -0,0 +1,185 @@ +bind --preset --mode default h 'fish_vi_run_count backward-char' +bind --preset --mode default t 'fish_vi_run_count down-or-search' +bind --preset --mode default n 'fish_vi_run_count up-or-search' +bind --preset --mode default s 'fish_vi_run_count forward-char' +bind --preset --mode default left backward-char +bind --preset --mode default down down-or-search +bind --preset --mode default up up-or-search +bind --preset --mode default right forward-char + +bind --preset --mode default b 'fish_vi_run_count backward-word' +bind --preset --mode default B 'fish_vi_run_count backward-bigword' +bind --preset --mode default g,e 'fish_vi_run_count backward-word-end' +bind --preset --mode default g,E 'fish_vi_run_count backward-bigword-end' +bind --preset --mode default w 'fish_vi_run_count forward-word-vi' +bind --preset --mode default W 'fish_vi_run_count forward-bigword-vi' +bind --preset --mode default e 'fish_vi_run_count forward-word-end' +bind --preset --mode default E 'fish_vi_run_count forward-bigword-end' + +bind --preset --mode default ctrl-y yank +bind --preset --mode default alt-y yank-pop + +bind --preset --mode default ctrl-v edit_command_buffer + +bind --preset --mode default ctrl-right forward-token +bind --preset --mode default ctrl-left backward-token + +# bind --preset --mode default ctrl-v fish_clipboard_paste +bind --preset --mode default \",\*,y,y fish_clipboard_copy +bind --preset --mode default \",\*,Y fish_clipboard_copy +bind --preset --mode default \",+,y,y fish_clipboard_copy +bind --preset --mode default \",+,Y fish_clipboard_copy + +bind --preset --mode default pageup beginning-of-history +bind --preset --mode default pagedown end-of-history +bind --preset --mode default ctrl-x fish_vi_dec +bind --preset --mode default escape 'set -g __fish_vi_count' +bind --preset --mode default ctrl-\[ 'set -g __fish_vi_count' +bind --preset --mode default tab complete +bind --preset --mode default ctrl-i complete +bind --preset --mode default ctrl-s pager-toggle-search +bind --preset --mode default shift-tab complete-and-search +bind --preset --mode default shift-delete history-delete or backward-delete-char +bind --preset --mode default shift-right forward-bigword +bind --preset --mode default shift-left backward-bigword +bind --preset --mode default alt-b prevd-or-backward-word +bind --preset --mode default alt-f nextd-or-forward-word +bind --preset --mode default alt-right nextd-or-forward-word +bind --preset --mode default \e\[1\;9C nextd-or-forward-word +bind --preset --mode default alt-left prevd-or-backward-word +bind --preset --mode default \e\[1\;9D prevd-or-backward-word +bind --preset --mode default alt-up history-token-search-backward +bind --preset --mode default alt-down history-token-search-forward +bind --preset --mode default \e\[1\;9A history-token-search-backward +bind --preset --mode default \e\[1\;9B history-token-search-forward +bind --preset --mode default alt-. history-token-search-backward +bind --preset --mode default alt-l __fish_list_current_token +bind --preset --mode default alt-o __fish_preview_current_file +bind --preset --mode default alt-w __fish_whatis_current_token +bind --preset --mode default ctrl-l 'status test-terminal-feature scroll-content-up && commandline -f scrollback-push' clear-screen +bind --preset --mode default --sets-mode insert ctrl-c clear-commandline repaint-mode +bind --preset --mode default ctrl-u backward-kill-line +bind --preset --mode default ctrl-k kill-line +bind --preset --mode default ctrl-w backward-kill-path-component +bind --preset --mode default end end-of-line +bind --preset --mode default home beginning-of-line +bind --preset --mode default alt-d 'if test "$(commandline; printf .)" = \\n.; __fish_echo dirh; else; commandline -f kill-word; end' +bind --preset --mode default ctrl-d delete-or-exit +bind --preset --mode default alt-s 'for cmd in sudo doas please run0; if command -q $cmd; fish_commandline_prepend $cmd; break; end; end' +bind --preset --mode default f1 __fish_man_page +bind --preset --mode default alt-h __fish_man_page +bind --preset --mode default alt-p __fish_paginate +bind --preset --mode default alt-# __fish_toggle_comment_commandline +bind --preset --mode default :,q exit +bind --preset --mode default 1 'fish_vi_arg_digit 1' +bind --preset --mode default 2 'fish_vi_arg_digit 2' +bind --preset --mode default 3 'fish_vi_arg_digit 3' +bind --preset --mode default 4 'fish_vi_arg_digit 4' +bind --preset --mode default 5 'fish_vi_arg_digit 5' +bind --preset --mode default 6 'fish_vi_arg_digit 6' +bind --preset --mode default 7 'fish_vi_arg_digit 7' +bind --preset --mode default 8 'fish_vi_arg_digit 8' +bind --preset --mode default 9 'fish_vi_arg_digit 9' +bind --preset --mode default 0 'if test -n "$__fish_vi_count"; fish_vi_arg_digit 0; else; commandline -f beginning-of-line; end' + + +bind --preset --mode default x __fish_vi_delete_char +bind --preset --mode default X __fish_vi_backward_delete_char + +bind --preset --mode default --sets-mode insert enter execute +bind --preset --mode default --sets-mode insert ctrl-j execute +bind --preset --mode default --sets-mode insert ctrl-m execute +bind --preset --mode default --sets-mode insert o 'set fish_cursor_end_mode exclusive' insert-line-under repaint-mode +bind --preset --mode default --sets-mode insert O 'set fish_cursor_end_mode exclusive' insert-line-over repaint-mode +bind --preset --mode default --sets-mode insert i repaint-mode +bind --preset --mode default --sets-mode insert I beginning-of-line repaint-mode +bind --preset --mode default --sets-mode insert a 'set fish_cursor_end_mode exclusive' forward-single-char repaint-mode +bind --preset --mode default --sets-mode insert A 'set fish_cursor_end_mode exclusive' end-of-line repaint-mode +bind --preset --mode default --sets-mode visual v begin-selection repaint-mode +bind --preset --mode default g,g beginning-of-buffer +bind --preset --mode default G end-of-buffer +bind --preset --mode default \$ end-of-line +bind --preset --mode default g,\$ end-of-line +bind --preset --mode default ^ beginning-of-line +bind --preset --mode default g,^ beginning-of-line +bind --preset --mode default _ beginning-of-line +bind --preset --mode default u undo +bind --preset --mode default ctrl-r redo +bind --preset --mode default \[ history-token-search-backward +bind --preset --mode default \] history-token-search-forward +bind --preset --mode default --sets-mode insert / history-pager repaint-mode + +bind --preset --mode default delete delete-char +bind --preset --mode default backspace backward-char +bind --preset --mode default ctrl-h backward-char +bind --preset --mode default d 'fish_vi_start_operator delete' +bind --preset --mode default c 'fish_vi_start_operator change' +bind --preset --mode default y 'fish_vi_start_operator yank' +bind --preset --mode default g,\~ 'fish_vi_start_operator swap-case' + +bind --preset --mode default D kill-line +bind --preset --mode default d,\$ kill-line +bind --preset --mode default d,^ backward-kill-line +bind --preset --mode default d,0 backward-kill-line +bind --preset --mode default d,i,w kill-inner-word +bind --preset --mode default d,i,W kill-inner-bigword +bind --preset --mode default d,a,w kill-a-word +bind --preset --mode default d,a,W kill-a-bigword +bind --preset --mode default d,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket kill-selection end-selection +bind --preset --mode default d,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket kill-selection end-selection +bind --preset --mode default d,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection +bind --preset --mode default d,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection +bind --preset --mode default d,\; begin-selection repeat-jump kill-selection end-selection +bind --preset --mode default d,comma begin-selection repeat-jump-reverse kill-selection end-selection +bind --preset --mode default \~ togglecase-char forward-single-char +bind --preset --mode default g,u downcase-word +bind --preset --mode default g,U upcase-word +bind --preset --mode default J end-of-line delete-char +bind --preset --mode default K 'man (commandline -t) 2>/dev/null; or echo -n \\a' +bind --preset --mode default Y kill-whole-line yank +bind --preset --mode default y,\$ kill-line yank +bind --preset --mode default y,^ backward-kill-line yank +bind --preset --mode default y,0 backward-kill-line yank +bind --preset --mode default y,i,w kill-inner-word yank +bind --preset --mode default y,i,W kill-inner-bigword yank +bind --preset --mode default y,a,w kill-a-word yank +bind --preset --mode default y,a,W kill-a-bigword yank +bind --preset --mode default y,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket fish_vi_yank_selection end-selection +bind --preset --mode default y,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket fish_vi_yank_selection end-selection +bind --preset --mode default y,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump fish_vi_yank_selection end-selection +bind --preset --mode default y,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump fish_vi_yank_selection end-selection +bind --preset --mode default % jump-to-matching-bracket +bind --preset --mode default f forward-jump +bind --preset --mode default F backward-jump +# bind --preset --mode default t forward-jump-till +bind --preset --mode default T backward-jump-till +bind --preset --mode default \; repeat-jump +bind --preset --mode default comma repeat-jump-reverse +bind --preset --mode default p 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' yank +bind --preset --mode default P yank +bind --preset --mode default g,p yank-pop +bind --preset --mode default \",\*,p 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' fish_clipboard_paste +bind --preset --mode default \",\*,P fish_clipboard_paste +bind --preset --mode default \",+,p 'set -g fish_cursor_end_mode exclusive' forward-char 'set -g fish_cursor_end_mode inclusive' fish_clipboard_paste +bind --preset --mode default \",+,P fish_clipboard_paste + +bind --preset --mode default --sets-mode replace_one r repaint-mode +bind --preset --mode default --sets-mode replace R repaint-mode + +bind --preset --mode default ctrl-a fish_vi_inc +bind --preset --mode default \# __fish_toggle_comment_commandline + +# bind --preset --mode default --sets-mode insert s delete-char repaint-mode +bind --preset --mode default --sets-mode insert S kill-inner-line repaint-mode +bind --preset --mode default --sets-mode insert C kill-line repaint-mode +bind --preset --mode default --sets-mode insert c,\$ kill-line repaint-mode +bind --preset --mode default --sets-mode insert c,^ backward-kill-line repaint-mode +bind --preset --mode default --sets-mode insert c,0 backward-kill-line repaint-mode +bind --preset --mode default --sets-mode insert c,i,w kill-inner-word repaint-mode +bind --preset --mode default --sets-mode insert c,i,W kill-inner-bigword repaint-mode +bind --preset --mode default --sets-mode insert c,a,w kill-a-word repaint-mode +bind --preset --mode default --sets-mode insert c,a,W kill-a-bigword repaint-mode +bind --preset --mode default --sets-mode insert c,i,b jump-till-matching-bracket and jump-till-matching-bracket and begin-selection jump-till-matching-bracket kill-selection end-selection +bind --preset --mode default --sets-mode insert c,a,b jump-to-matching-bracket and jump-to-matching-bracket and begin-selection jump-to-matching-bracket kill-selection end-selection +bind --preset --mode default --sets-mode insert c,i backward-jump-till and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection repaint-mode +bind --preset --mode default --sets-mode insert c,a backward-jump and repeat-jump-reverse and begin-selection repeat-jump kill-selection end-selection repaint-mode diff --git a/modules/by-name/fi/fish/config/keybindings/03_visual.fish b/modules/by-name/fi/fish/config/keybindings/03_visual.fish new file mode 100644 index 00000000..3996549b --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/03_visual.fish @@ -0,0 +1,94 @@ +bind --preset --mode visual ctrl-y yank +bind --preset --mode visual alt-y yank-pop +bind --preset --mode visual right forward-char +bind --preset --mode visual left backward-char +bind --preset --mode visual ctrl-right forward-token +bind --preset --mode visual ctrl-left backward-token +bind --preset --mode visual pageup beginning-of-history +bind --preset --mode visual pagedown end-of-history +bind --preset --mode visual ctrl-x fish_clipboard_copy +bind --preset --mode visual ctrl-v fish_clipboard_paste +bind --preset --mode visual --sets-mode default escape end-selection repaint-mode +bind --preset --mode visual --sets-mode default ctrl-\[ end-selection repaint-mode +bind --preset --mode visual tab complete +bind --preset --mode visual ctrl-i complete +bind --preset --mode visual ctrl-s pager-toggle-search +bind --preset --mode visual shift-tab complete-and-search +bind --preset --mode visual shift-delete history-delete or backward-delete-char +bind --preset --mode visual down down-or-search +bind --preset --mode visual up up-or-search +bind --preset --mode visual shift-right forward-bigword +bind --preset --mode visual shift-left backward-bigword +bind --preset --mode visual alt-b prevd-or-backward-word +bind --preset --mode visual alt-f nextd-or-forward-word +bind --preset --mode visual alt-right nextd-or-forward-word +bind --preset --mode visual \e\[1\;9C nextd-or-forward-word +bind --preset --mode visual alt-left prevd-or-backward-word +bind --preset --mode visual \e\[1\;9D prevd-or-backward-word +bind --preset --mode visual alt-up history-token-search-backward +bind --preset --mode visual alt-down history-token-search-forward +bind --preset --mode visual \e\[1\;9A history-token-search-backward +bind --preset --mode visual \e\[1\;9B history-token-search-forward +bind --preset --mode visual alt-. history-token-search-backward +bind --preset --mode visual alt-l __fish_list_current_token +bind --preset --mode visual alt-o __fish_preview_current_file +bind --preset --mode visual alt-w __fish_whatis_current_token +bind --preset --mode visual ctrl-l 'status test-terminal-feature scroll-content-up && commandline -f scrollback-push' clear-screen +bind --preset --mode visual --sets-mode default ctrl-c end-selection repaint-mode +bind --preset --mode visual ctrl-u backward-kill-line +bind --preset --mode visual ctrl-k kill-line +bind --preset --mode visual ctrl-w backward-kill-path-component +bind --preset --mode visual end end-of-line +bind --preset --mode visual home beginning-of-line +bind --preset --mode visual alt-d 'if test "$(commandline; printf .)" = \\n.; __fish_echo dirh; else; commandline -f kill-word; end' +bind --preset --mode visual ctrl-d delete-or-exit +bind --preset --mode visual alt-s 'for cmd in sudo doas please run0; if command -q $cmd; fish_commandline_prepend $cmd; break; end; end' +bind --preset --mode visual f1 __fish_man_page +bind --preset --mode visual alt-h __fish_man_page +bind --preset --mode visual alt-p __fish_paginate +bind --preset --mode visual alt-# __fish_toggle_comment_commandline +bind --preset --mode visual alt-e edit_command_buffer +bind --preset --mode visual alt-v edit_command_buffer + +bind --preset --mode visual h backward-char +bind --preset --mode visual l forward-char +bind --preset --mode visual k up-line +bind --preset --mode visual j down-line +bind --preset --mode visual b backward-word +bind --preset --mode visual B backward-bigword +bind --preset --mode visual g,e backward-word-end +bind --preset --mode visual g,E backward-bigword-end +bind --preset --mode visual w forward-word-vi +bind --preset --mode visual W forward-bigword-vi +bind --preset --mode visual e forward-word-end +bind --preset --mode visual E forward-bigword-end +bind --preset --mode visual o swap-selection-start-stop repaint-mode +bind --preset --mode visual % jump-to-matching-bracket +bind --preset --mode visual f forward-jump +bind --preset --mode visual t forward-jump-till +bind --preset --mode visual F backward-jump +bind --preset --mode visual T backward-jump-till +bind --preset --mode visual \; repeat-jump +bind --preset --mode visual comma repeat-jump-reverse +bind --preset --mode visual \$ end-of-line +bind --preset --mode visual g,\$ end-of-line +bind --preset --mode visual ^ beginning-of-line +bind --preset --mode visual 0 beginning-of-line +bind --preset --mode visual g,^ beginning-of-line +bind --preset --mode visual _ beginning-of-line + +bind --preset --mode visual --sets-mode default v end-selection repaint-mode +bind --preset --mode visual --sets-mode insert i end-selection repaint-mode +bind --preset --mode visual --sets-mode insert I end-selection beginning-of-line repaint-mode +bind --preset --mode visual --sets-mode insert c kill-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode insert s kill-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default d kill-selection end-selection backward-char repaint-mode +bind --preset --mode visual --sets-mode default x kill-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default X kill-whole-line end-selection repaint-mode +bind --preset --mode visual --sets-mode default y fish_vi_yank_selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default \",\*,y 'fish_clipboard_copy; commandline -f end-selection repaint-mode' +bind --preset --mode visual --sets-mode default \",+,y 'fish_clipboard_copy; commandline -f end-selection repaint-mode' +bind --preset --mode visual --sets-mode default \~ togglecase-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default g,u downcase-selection end-selection repaint-mode +bind --preset --mode visual --sets-mode default g,U upcase-selection end-selection repaint-mode +bind --preset --mode visual \# __fish_toggle_comment_commandline diff --git a/modules/by-name/fi/fish/config/keybindings/04_replace.fish b/modules/by-name/fi/fish/config/keybindings/04_replace.fish new file mode 100644 index 00000000..95de4cc0 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/04_replace.fish @@ -0,0 +1,9 @@ +bind --preset --mode replace '' delete-char self-insert +bind --preset --mode replace --sets-mode insert enter execute repaint-mode +bind --preset --mode replace --sets-mode insert ctrl-j execute repaint-mode +bind --preset --mode replace --sets-mode insert ctrl-m execute repaint-mode +bind --preset --mode replace --sets-mode default escape cancel repaint-mode +bind --preset --mode replace --sets-mode default ctrl-\[ cancel repaint-mode +bind --preset --mode replace backspace backward-char +bind --preset --mode replace shift-backspace backward-char +bind --preset --mode replace \# __fish_toggle_comment_commandline diff --git a/modules/by-name/fi/fish/config/keybindings/05_operator.fish b/modules/by-name/fi/fish/config/keybindings/05_operator.fish new file mode 100644 index 00000000..67f84d82 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/05_operator.fish @@ -0,0 +1,33 @@ +bind --preset --mode operator \; 'fish_vi_exec_motion repeat-jump' +bind --preset --mode operator comma 'fish_vi_exec_motion repeat-jump-reverse' +bind --preset --mode operator d 'fish_vi_exec_motion --linewise' +bind --preset --mode operator c 'fish_vi_exec_motion --linewise' +bind --preset --mode operator y 'fish_vi_exec_motion --linewise' +bind --preset --mode operator \~ 'fish_vi_exec_motion --linewise' + +bind --preset --mode operator escape fish_vi_operator_cancel +bind --preset --mode operator ctrl-\[ fish_vi_operator_cancel +bind --preset --mode operator 1 'fish_vi_arg_digit 1' +bind --preset --mode operator 2 'fish_vi_arg_digit 2' +bind --preset --mode operator 3 'fish_vi_arg_digit 3' +bind --preset --mode operator 4 'fish_vi_arg_digit 4' +bind --preset --mode operator 5 'fish_vi_arg_digit 5' +bind --preset --mode operator 6 'fish_vi_arg_digit 6' +bind --preset --mode operator 7 'fish_vi_arg_digit 7' +bind --preset --mode operator 8 'fish_vi_arg_digit 8' +bind --preset --mode operator 9 'fish_vi_arg_digit 9' +bind --preset --mode operator 0 'fish_vi_exec_motion beginning-of-line' +bind --preset --mode operator h 'fish_vi_exec_motion backward-char' +bind --preset --mode operator l 'fish_vi_exec_motion forward-char' +bind --preset --mode operator k 'fish_vi_exec_motion up-line' +bind --preset --mode operator j 'fish_vi_exec_motion down-line' +bind --preset --mode operator b 'fish_vi_exec_motion backward-word' +bind --preset --mode operator B 'fish_vi_exec_motion backward-bigword' +bind --preset --mode operator g,e 'fish_vi_exec_motion backward-word-end' +bind --preset --mode operator g,E 'fish_vi_exec_motion backward-bigword-end' +bind --preset --mode operator w 'fish_vi_exec_motion forward-word-vi' +bind --preset --mode operator W 'fish_vi_exec_motion forward-bigword-vi' +bind --preset --mode operator e 'fish_vi_exec_motion forward-word-end' +bind --preset --mode operator E 'fish_vi_exec_motion forward-bigword-end' +bind --preset --mode operator ^ 'fish_vi_exec_motion beginning-of-line' +bind --preset --mode operator \$ 'fish_vi_exec_motion end-of-line' diff --git a/modules/by-name/fi/fish/config/keybindings/06_replace_one.fish b/modules/by-name/fi/fish/config/keybindings/06_replace_one.fish new file mode 100644 index 00000000..0d2672b4 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/06_replace_one.fish @@ -0,0 +1,7 @@ +bind --preset --mode replace_one --sets-mode default '' 'set -g fish_cursor_end_mode exclusive' delete-char self-insert backward-char repaint-mode 'set -g fish_cursor_end_mode inclusive' +bind --preset --mode replace_one --sets-mode default enter 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \\n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive' +bind --preset --mode replace_one --sets-mode default ctrl-j 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \\n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive' +bind --preset --mode replace_one --sets-mode default ctrl-m 'set -g fish_cursor_end_mode exclusive' 'commandline -f delete-char; commandline -i \\n; commandline -f backward-char' repaint-mode 'set -g fish_cursor_end_mode inclusive' +bind --preset --mode replace_one --sets-mode default escape cancel repaint-mode +bind --preset --mode replace_one --sets-mode default ctrl-\[ cancel repaint-mode + diff --git a/modules/by-name/fi/fish/config/keybindings/07_others.fish b/modules/by-name/fi/fish/config/keybindings/07_others.fish new file mode 100644 index 00000000..99679857 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/07_others.fish @@ -0,0 +1,9 @@ +bind --preset --mode operator --sets-mode f f '' +bind --preset --mode operator --sets-mode F F '' +bind --preset --mode operator --sets-mode t t '' +bind --preset --mode operator --sets-mode T T '' + +bind --preset --mode f '' get-key 'fish_vi_exec_motion commandline --forward-jump=$fish_key' 'set -eg fish_key' +bind --preset --mode F '' get-key 'fish_vi_exec_motion commandline --backward-jump=$fish_key' 'set -eg fish_key' +bind --preset --mode t '' get-key 'fish_vi_exec_motion commandline --forward-jump-till=$fish_key' 'set -eg fish_key' +bind --preset --mode T '' get-key 'fish_vi_exec_motion commandline --backward-jump-till=$fish_key' 'set -eg fish_key' diff --git a/modules/by-name/fi/fish/config/keybindings/08__end.fish b/modules/by-name/fi/fish/config/keybindings/08__end.fish new file mode 100644 index 00000000..20efad65 --- /dev/null +++ b/modules/by-name/fi/fish/config/keybindings/08__end.fish @@ -0,0 +1 @@ +fish_vi_key_bindings diff --git a/modules/by-name/fi/fish/module.nix b/modules/by-name/fi/fish/module.nix new file mode 100644 index 00000000..590df8b9 --- /dev/null +++ b/modules/by-name/fi/fish/module.nix @@ -0,0 +1,85 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.soispha.programs.fish; + + sourceFile = path: "source ${path}\n"; + + extraFiles = builtins.concatStringsSep "\n" ( + builtins.map (value: + if builtins.isPath value + then (sourceFile value) + else value) ( + builtins.attrValues cfg.integrations + ) + ); +in { + options.soispha.programs.fish = { + enable = lib.mkEnableOption "fish"; + + integrations = lib.mkOption { + type = lib.types.attrsOf (lib.types.either lib.types.path lib.types.str); + example = '' + { + atuin = ./integrations/atuin.fish; + } + ''; + default = {}; + }; + }; + + config = lib.mkIf cfg.enable { + # Ensure that the default shell of the user is actually enabled. + programs.fish = { + enable = true; + package = pkgs.fish-patched; + }; + + home-manager.users.soispha = { + home.sessionPath = lib.mkForce []; + + programs.fish = { + enable = true; + + package = config.programs.fish.package; + + interactiveShellInit = let + start = lib.modules.mkBefore ( + sourceFile ./config/01_show-task.fish + ); + end = lib.modules.mkAfter ( + sourceFile ./config/keybindings/00__start.fish + + sourceFile ./config/keybindings/01_insert.fish + + sourceFile ./config/keybindings/02_command.fish + + sourceFile ./config/keybindings/03_visual.fish + + sourceFile ./config/keybindings/04_replace.fish + + sourceFile ./config/keybindings/05_operator.fish + + sourceFile ./config/keybindings/06_replace_one.fish + + sourceFile ./config/keybindings/07_others.fish + + sourceFile ./config/keybindings/08__end.fish + ); + in + lib.modules.mkMerge + [ + start + + extraFiles + + end + ]; + }; + }; + }; +} diff --git a/modules/by-name/fo/foot/module.nix b/modules/by-name/fo/foot/module.nix index 00c198fa..8d5cfe2b 100644 --- a/modules/by-name/fo/foot/module.nix +++ b/modules/by-name/fo/foot/module.nix @@ -27,6 +27,15 @@ in { ]; home-manager.users.soispha = { + systemd.user.services.foot = { + # Don't restart the foot server (otherwise all my open foot terminals would exit + # too) + Unit.X-SwitchMethod = "keep-old"; + + # TODO: This should probably be added <2026-07-02> + # OOMScoreAdjust=-100; + }; + programs.foot = { enable = true; server.enable = true; @@ -34,18 +43,21 @@ in { main = { include = "${./theme.ini}"; font = "SauceCodePro Nerd Font Mono:size=12"; - horizontal-letter-offset = -1; - vertical-letter-offset = -1; + letter-spacing = "-0.25"; }; "regex:hashes" = { regex = "([a-fA-F0-9]{7,128})"; launch = "git show \${match}"; }; "regex:paths" = { - regex = "([^ '\"`=:\\\\[\\\\(]*/)([^/: '\"`\\\\)\\\\]]*)"; + regex = "([^ '\"`=:\\\\[\\\\(]*/[^/: '\"`\\\\)\\\\]*)"; launch = "ll \${match}"; }; + colors-dark = { + jump-labels = "f2f4f8 484848"; + }; + key-bindings = { regex-launch = [ "[hashes] Control+h" diff --git a/modules/by-name/fo/foot/theme.ini b/modules/by-name/fo/foot/theme.ini index aba19ecb..f5f36039 100644 --- a/modules/by-name/fo/foot/theme.ini +++ b/modules/by-name/fo/foot/theme.ini @@ -1,4 +1,4 @@ -# From https://codeberg.org/dnkl/foot/src/commit/43d2d97386663ebd42563eb44b7fca8e9a7584ae/themes/visibone +# From https://github.com/mbadolato/iTerm2-Color-Schemes/blob/75bc70670c28b5dc97625af38deb3ae49f4363e6/foot/Carbonfox.ini # Other themes I considered: # - ayu-mirage # - catppuccin-mocha @@ -16,22 +16,25 @@ # VisiBone [colors-dark] -cursor=010101 ffffff -foreground=ffffff -background=010101 -regular0=666666 -regular1=cc6666 -regular2=66cc99 -regular3=cc9966 -regular4=6699cc -regular5=cc6699 -regular6=66cccc -regular7=cccccc -bright0=999999 -bright1=ff9999 -bright2=99ffcc -bright3=ffcc99 -bright4=99ccff -bright5=ff99cc -bright6=99ffff -bright7=ffffff +cursor=161616 f2f4f8 +foreground=f2f4f8 +background=161616 +regular0=282828 +regular1=ee5396 +regular2=25be6a +regular3=08bdba +regular4=78a9ff +regular5=be95ff +regular6=33b1ff +regular7=dfdfe0 +bright0=484848 +bright1=f16da6 +bright2=46c880 +bright3=2dc7c4 +bright4=8cb6ff +bright5=c8a5ff +bright6=52bdff +bright7=e4e4e5 +selection-foreground=f2f4f8 +selection-background=2a2a2a + diff --git a/modules/by-name/gi/git/git_ignore.git b/modules/by-name/gi/git/git_ignore.git index 8f29815e..9a92db69 100644 --- a/modules/by-name/gi/git/git_ignore.git +++ b/modules/by-name/gi/git/git_ignore.git @@ -1,4 +1,7 @@ # default nvim Session file name Session.vim +# The .direnv file for pre-cache devshells +.nenvrc + # vim: ft=gitignore diff --git a/modules/by-name/gi/git/module.nix b/modules/by-name/gi/git/module.nix index 64a64904..28e61ecb 100644 --- a/modules/by-name/gi/git/module.nix +++ b/modules/by-name/gi/git/module.nix @@ -9,6 +9,7 @@ # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. { lib, + pkgs, config, ... }: let @@ -43,6 +44,14 @@ in { }; }; + # Add my custom git-scripts + home.packages = [ + pkgs.git-edit-index # Allows you to edit the indexed version of a file + pkgs.git-cm # A wrapper that re-adds the last commit's subject + pkgs.git-cgit # Allows fast cgit settings setup + pkgs.stamp # Add a license header to a file + ]; + programs.git = { enable = true; diff --git a/modules/by-name/gp/gpg/module.nix b/modules/by-name/gp/gpg/module.nix index d5136e92..9be4cada 100644 --- a/modules/by-name/gp/gpg/module.nix +++ b/modules/by-name/gp/gpg/module.nix @@ -22,7 +22,47 @@ in { }; config = lib.mkIf cfg.enable { - soispha.programs.qutebrowser.key = "8321 ED3A 8DB9 99A5 1F3B F80F F268 2914 EA42 DE26"; + soispha = { + programs = { + qutebrowser.key = "8321 ED3A 8DB9 99A5 1F3B F80F F268 2914 EA42 DE26"; + + # fish.integrations.gpg = + # # fish + # '' + # set --export --global GPG_TTY $(tty) + # + # # Ensure that get gpg agent is started (necessary because ssh does not start it + # # automatically and has it's tty updated) + # gpg-connect-agent updatestartuptty /bye + # ''; + + zsh.integrations.gpg = + # bash + '' + export GPG_TTY=$(tty) + + # Magic copied from the gpg-agent manual + unset SSH_AGENT_PID + if [ "''${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then + export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" + fi + + + # Ensure that get gpg agent is started (necessary because ssh does not start it + # automatically and has it's tty updated) + gpg-connect-agent /bye + ''; + }; + + services.unison.pathsToIgnore = [ + # "Unknown filetype" (and there is no real reason to (try to) synchronize sockets) + "~/.local/share/gnupg/S.gpg-agent" + "~/.local/share/gnupg/S.gpg-agent.browser" + "~/.local/share/gnupg/S.gpg-agent.extra" + "~/.local/share/gnupg/S.gpg-agent.ssh" + "~/.local/share/gnupg/S.scdaemon" + ]; + }; home-manager.users.soispha = { programs.gpg = { @@ -51,7 +91,8 @@ in { services = { gpg-agent = { enable = true; - enableZshIntegration = true; + enableZshIntegration = false; + enableFishIntegration = true; enableScDaemon = true; # smartcards and such things # Cache the key passwords @@ -74,20 +115,5 @@ in { }; }; }; - - soispha.programs.zsh.integrations.gpg = '' - export GPG_TTY=$(tty) - - # Magic copied from the gpg-agent manual - unset SSH_AGENT_PID - if [ "''${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then - export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" - fi - - - # Ensure that get gpg agent is started (necessary because ssh does not start it - # automatically and has it's tty updated) - gpg-connect-agent /bye - ''; }; } diff --git a/modules/by-name/gt/gtk/module.nix b/modules/by-name/gt/gtk/module.nix new file mode 100644 index 00000000..44442077 --- /dev/null +++ b/modules/by-name/gt/gtk/module.nix @@ -0,0 +1,82 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + config, + pkgs, + lib, + packageSets, + libraries, + ... +}: let + cfg = config.soispha.gtk; + + homeConfig = config.home-manager.users.soispha; +in { + options.soispha.gtk = { + enable = libraries.base.options.mkEnable "gtk themes"; + }; + + config.home-manager.users.soispha = lib.mkIf cfg.enable { + gtk = { + enable = true; + theme = { + # NOTE: The `nordic` package pulls the whole plasma shell, to copy some stuff from a plasma theme :/ <2026-05-29> + # NOTE: Unstable removed the nordic theme, as it also supported gtk2, which is + # insecure. So we use stable until unstable adds it again. <2026-08-13> + package = packageSets.stable.nordic; + name = "Nordic"; + }; + cursorTheme = { + package = pkgs.nordzy-cursor-theme; + name = "Nordzy-cursors"; + }; + iconTheme = { + package = pkgs.nordzy-icon-theme; + name = "Nordzy-icon"; + }; + font = { + name = "Noto Sans"; + size = 10; + }; + gtk2 = { + configLocation = "${homeConfig.xdg.configHome}/gtk-2.0/gtkrc"; + # extraConfig = '' + # gtk-enable-animations=1 + # gtk-primary-button-warps-slider=0 + # gtk-toolbar-style=3 + # gtk-menu-images=1 + # gtk-button-images=1 + # + # ''; + }; + gtk3 = { + # extraConfig = '' + # gtk-button-images=true + # gtk-decoration-layout=icon:minimize,maximize,close + # gtk-enable-animations=true + # gtk-menu-images=true + # gtk-primary-button-warps-slider=false + # gtk-toolbar-style=3 + # #gtk-modules=window-decorations-gtk-module:colorreload-gtk-module + # ''; + extraCss = ""; + }; + gtk4 = { + theme = homeConfig.gtk.theme; + # extraConfig = '' + # gtk-application-prefer-dark-theme=true + # gtk-decoration-layout=icon:minimize,maximize,close + # gtk-enable-animations=true + # gtk-primary-button-warps-slider=false + # ''; + }; + }; + }; +} diff --git a/modules/by-name/i3/i3bar-river/module.nix b/modules/by-name/i3/i3bar-river/module.nix index 898b6c69..55ac59e9 100644 --- a/modules/by-name/i3/i3bar-river/module.nix +++ b/modules/by-name/i3/i3bar-river/module.nix @@ -115,6 +115,14 @@ in { partOf = ["graphical-session.target"]; after = ["graphical-session.target"]; requisite = ["graphical-session.target"]; + + path = [ + pkgs.bash # `sh` is needed for starting the status command + + # TODO: This should be a wrapper of the status command <2026-06-23> + pkgs.btrfs-progs # `btrfs` is needed by the storage block in the status command + ]; + serviceConfig = { ExecStart = "${lib.getExe cfg.package}"; ExecReload = "kill -SIGUSR2 $MAINPID"; @@ -178,7 +186,7 @@ in { }; # The font and various sizes - font = "SauceCodePro Nerd Font Mono:pixelsize=26"; + font = "SauceCodePro NFM:pixelsize=26"; height = 24; margin_top = 10; margin_bottom = 0; diff --git a/modules/by-name/lf/lf/commands/default.nix b/modules/by-name/lf/lf/commands/default.nix index 42dc548e..98b3119f 100644 --- a/modules/by-name/lf/lf/commands/default.nix +++ b/modules/by-name/lf/lf/commands/default.nix @@ -169,9 +169,6 @@ in { dependencies = [ pkgs.conceal pkgs.fzf - pkgs.gawk - pkgs.trashy - pkgs.gnused ]; }; diff --git a/modules/by-name/lf/lf/commands/scripts/trash_restore.sh b/modules/by-name/lf/lf/commands/scripts/trash_restore.sh index 7b078c26..789ab59a 100755 --- a/modules/by-name/lf/lf/commands/scripts/trash_restore.sh +++ b/modules/by-name/lf/lf/commands/scripts/trash_restore.sh @@ -19,9 +19,5 @@ fs="$fs" # shellcheck disable=SC2269 id="$id" -while IFS="$(printf '\n')" read -r file; do - set -- "$@" "$(pwd)/$file" -done <"$(conceal list | fzf --multi --ansi | awk '{$1="";$2=""; print $0}' | sed 's/^\s*//' | tmp)" - -[ "$#" -ne 0 ] && trash restore --match=exact "$@" +conceal restore --finder=fzf # vim: ft=sh diff --git a/modules/by-name/lf/lf/keybindings/default.nix b/modules/by-name/lf/lf/keybindings/default.nix index d7f8eb95..bd4b2a2c 100644 --- a/modules/by-name/lf/lf/keybindings/default.nix +++ b/modules/by-name/lf/lf/keybindings/default.nix @@ -11,69 +11,99 @@ uid, downloadDir, }: { - # Remove some defaults - "'\"'" = null; - ";" = null; - "\"'\"" = null; + # v o visual-change + # v <esc> visual-discard + # v o visual-change + # v V visual-accept + + "\\!" = "shell-wait"; + "\\$" = "shell"; + "\\%" = "shell-pipe"; + "\\&" = "shell-async"; + "\\:" = "read"; + + "<f-1>" = "help"; + + "<left>" = "updir"; + "<right>" = "open"; + "<down>" = "down"; + "<up>" = "up"; + + "<c-f>" = "page-down"; + "<pgdn>" = "page-down"; + "<pgup>" = "page-up"; + "<c-b>" = "page-up"; + + "[" = "jump-prev"; + "]" = "jump-next"; + q = "quit"; # Sorting - # k = null; k = { - n = ":set sortby natural; set info"; - s = ":set sortby size; set info size"; - t = ":set sortby time; set info time"; - a = ":set sortby atime; set info atime"; - c = ":set sortby ctime; set info ctime"; - e = ":set sortby ext; set info"; + a = ":{{ set sortby atime; set info atime; }}"; + b = ":{{ set sortby btime; set info btime; }}"; + c = ":{{ set sortby ctime; set info ctime; }}"; + e = ":{{ set sortby ext; set info; }}"; + n = ":{{ set sortby natural; set info; }}"; + s = ":{{ set sortby size; set info size; }}"; + t = ":{{ set sortby time; set info time; }}"; + }; + z = { + a = "set info size:time"; + h = "set hidden!"; + n = "set info"; + r = "set reverse!"; + s = "set info size"; + t = "set info time"; }; # Searching l = "search-next"; L = "search-prev"; + "/" = "search"; + "?" = "search-back"; + F = "find-back"; + "," = "find-prev"; + # File edit - # e = null; e = { - e = "\$\$EDITOR \"$f\""; - s = "\$ nvim -S \"$f\""; + e = "\${{ $EDITOR \"$f\" }}"; + s = "\${{ nvim -S \"$f\" }}"; }; u = "view_file"; - # f = null; f = { e = "execute"; l = "follow_link"; }; - # c = null; c = { + h = "chmod"; p = "set_clipboard_path"; s = "stripspace"; - h = "chmod"; }; # Archive Mappings a = { - u = "archive_decompress"; a = "archive_compress"; + u = "archive_decompress"; }; D = { D = "delete"; }; - # d = null; d = { # Trash Mappings d = "trash"; # Dragon Mapping + i = "dragon_individual"; r = "dragon"; s = "dragon_stay"; - i = "dragon_individual"; }; - # j = null; j = { c = "trash_clear"; r = "trash_restore"; @@ -86,17 +116,22 @@ s = "open"; # Basic Functions - "." = "set hidden!"; p = "paste"; x = "cut"; y = "copy"; "<enter>" = "open"; - # m = null; + # Selecting + v = "invert"; + V = "visual"; + "<space>" = ":{{ toggle; down; }}"; + C = "clear"; + U = "unselect"; + m = { - k = "mk_link"; - f = "mk_file"; d = "mk_directory"; + f = "mk_file"; + l = "mk_link"; s = "mk_script"; }; @@ -104,18 +139,24 @@ g = "set_wallpaper"; }; - r = ":rename; cmd-end"; + r = ":{{ rename; cmd-end; }}"; + "<c-r>" = "reload"; R = "reload"; - C = "clear"; - U = "unselect"; + "<c-l>" = "redraw"; + + # Change cursor position + G = "bottom"; + H = "high"; + M = "middle"; # (walking) Movement w = { - u = "cd /run/user/${builtins.toString uid}"; - e = "cd /etc"; d = "cd ${downloadDir}"; - t = "cd /tmp"; + e = "cd /etc"; + H = "cd ~"; h = "cd_project_root"; + t = "cd /tmp"; + u = "cd /run/user/${builtins.toString uid}"; }; g = "cd_lf_make_map"; diff --git a/modules/by-name/lf/lf/module.nix b/modules/by-name/lf/lf/module.nix index 0a0e193f..11708152 100644 --- a/modules/by-name/lf/lf/module.nix +++ b/modules/by-name/lf/lf/module.nix @@ -14,11 +14,24 @@ shell_library, system, lib, + libraries, ... }: let - commands = import ./commands {inherit pkgs sysLib shell_library system;}; + real_commands = import ./commands {inherit pkgs sysLib shell_library system;}; keybindings_raw = import ./keybindings {inherit (cfg.keymaps) uid downloadDir;}; + # NOTE: There is no (easy) way for me to make sure, that the `clearmaps` command is + # generated in the lf config before the keymapping commands. + # This command injection works around that. <2026-07-21> + commands = libraries.extra.warnMerge real_commands { + __clearmaps_injection = '' + :{{ + clearmaps + }}; + clearmaps + ''; + } "lf command map"; + process = prefix: attrs: lib.mapAttrsToList (name: value: if (builtins.isAttrs value) @@ -31,8 +44,6 @@ attrs; keybindings = builtins.listToAttrs (lib.lists.flatten (process null keybindings_raw)); - packages = import ./wrappers {inherit pkgs;}; - cfg = config.soispha.programs.lf; in { imports = [ @@ -66,16 +77,28 @@ in { "d /.Trash 1777 root root" ]; + soispha.programs.fish.integrations.lf = + # fish + '' + function ll + . ${./wrappers/ll.fish} $argv + end + + function lm + . ${./wrappers/lm.fish} $argv + end + ''; + home-manager.users.soispha = { xdg.configFile = { "lf/icons".source = ./icons; "lf/colors".source = ./colors; }; - programs.zsh.shellAliases = { - ll = ". ${lib.getExe packages.ll}"; - lm = ". ${lib.getExe packages.lm}"; - }; + # programs.zsh.shellAliases = { + # ll = ". ${lib.getExe packages.ll}"; + # lm = ". ${lib.getExe packages.lm}"; + # }; programs.lf = { enable = true; diff --git a/modules/by-name/lf/lf/wrappers/default.nix b/modules/by-name/lf/lf/wrappers/default.nix deleted file mode 100644 index 7257a66e..00000000 --- a/modules/by-name/lf/lf/wrappers/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{pkgs}: { - ll = pkgs.callPackage ./ll {}; - lm = pkgs.callPackage ./lm {}; -} diff --git a/modules/by-name/lf/lf/wrappers/lm/lm.sh b/modules/by-name/lf/lf/wrappers/ll.fish index 71213721..7a146993 100755..100644 --- a/modules/by-name/lf/lf/wrappers/lm/lm.sh +++ b/modules/by-name/lf/lf/wrappers/ll.fish @@ -1,4 +1,4 @@ -#!/usr/bin/env dash +#!/usr/bin/env fish # nixos-config - My current NixOS configuration # @@ -10,19 +10,14 @@ # You should have received a copy of the License along with this program. # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -die() { - echo "ERROR: $1" - exit 1 -} +begin + test -d "$XDG_RUNTIME_DIR/ll"; or mkdir "$XDG_RUNTIME_DIR/ll" + set last_directory "$XDG_RUNTIME_DIR/ll/last_directory" -msg() { - echo "$1" -} + command lf -last-dir-path="$last_directory" "$argv" -if [ -f "$XDG_RUNTIME_DIR/ll/last_directory" ]; then - last_dir="$(cat "$XDG_RUNTIME_DIR/ll/last_directory")" - cd "$last_dir" || die "$last_dir does not exist!" -else - msg "No last directory saved (try using ll instead)." -fi -# vim: ft=sh + set dir "$(cat "$last_directory")" + if not cd "$dir" + echo "ll: Failed to cd to '$dir'. Does it exist?" + end +end diff --git a/modules/by-name/lf/lf/wrappers/ll/ll.sh b/modules/by-name/lf/lf/wrappers/lm.fish index 9bb314c6..b590c143 100755..100644 --- a/modules/by-name/lf/lf/wrappers/ll/ll.sh +++ b/modules/by-name/lf/lf/wrappers/lm.fish @@ -1,4 +1,4 @@ -#!/usr/bin/env dash +#!/usr/bin/env fish # nixos-config - My current NixOS configuration # @@ -10,14 +10,11 @@ # You should have received a copy of the License along with this program. # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -[ -d "$XDG_RUNTIME_DIR/ll" ] || mkdir "$XDG_RUNTIME_DIR/ll" -last_directory="$XDG_RUNTIME_DIR/ll/last_directory" - -command lf -last-dir-path="$last_directory" "$@" - -dir="$(cat "$last_directory")" -if ! cd "$dir"; then - die "ll: Failed to cd to '$dir'. Does it exist?" -fi - -# vim: ft=sh +begin + if test -f "$XDG_RUNTIME_DIR/ll/last_directory" + set last_dir "$(cat "$XDG_RUNTIME_DIR/ll/last_directory")" + cd "$last_dir"; or echo "$last_dir does not exist!" + else + echo "No last directory saved (try using ll instead)." + end +end diff --git a/modules/by-name/lu/lutris/module.nix b/modules/by-name/lu/lutris/module.nix new file mode 100644 index 00000000..eabc11fb --- /dev/null +++ b/modules/by-name/lu/lutris/module.nix @@ -0,0 +1,55 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + lib, + config, + libraries, + pkgs, + ... +}: let + cfg = config.soispha.programs.lutris; +in { + options.soispha.programs.lutris = { + enable = libraries.base.options.mkEnable "Lutris"; + }; + + config = lib.mkIf cfg.enable { + soispha.impermanence.userDirectories = [ + ".config/lutris" + ]; + soispha.services.unison.pathsToSync = [ + "~/.config/lutris" + ]; + + # TODO: This should also have something, to avoid giving the games network access: 'https://github.com/lutris/docs/blob/master/DisableNetworkAccess.md' <2026-07-10> + home-manager.users.soispha = { + programs.lutris = { + enable = true; + extraPackages = [ + # Show fps and such in game + pkgs.mangohud + + pkgs.winetricks + + # Runs game in it's own compositor (avoids issues with all the resolution stuff) + pkgs.gamescope + + pkgs.gamemode + pkgs.umu-launcher + ]; + steamPackage = lib.mkIf config.programs.steam.enable config.programs.steam.package; + defaultWinePackage = pkgs.proton-ge-bin; + protonPackages = [pkgs.proton-ge-bin]; + + # winePackages = [pkgs.wineWow64Packages.full]; + }; + }; + }; +} diff --git a/modules/by-name/mp/mpv/module.nix b/modules/by-name/mp/mpv/module.nix index 0610dcd8..496dcd47 100644 --- a/modules/by-name/mp/mpv/module.nix +++ b/modules/by-name/mp/mpv/module.nix @@ -19,38 +19,44 @@ in { enable = lib.mkEnableOption "mpv"; }; - config.home-manager.users.soispha = lib.mkIf cfg.enable { - programs.mpv = { - enable = true; + config = lib.mkIf cfg.enable { + soispha.services.unison.pathsToSync = [ + "~/.local/state/mpv" + ]; - package = pkgs.mpv.override { - mpv-unwrapped = pkgs.mpv-unwrapped.override { - ffmpeg = pkgs.ffmpeg-headless; + home-manager.users.soispha = { + programs.mpv = { + enable = true; + + package = pkgs.mpv.override { + mpv-unwrapped = pkgs.mpv-unwrapped.override { + ffmpeg = pkgs.ffmpeg-headless; + }; }; - }; - bindings = { - q = "quit 0"; - "Ctrl+c" = "quit 1"; - "Shift+q" = "quit-watch-later 1"; - }; + bindings = { + q = "quit 0"; + "Ctrl+c" = "quit 1"; + "Shift+q" = "quit-watch-later 1"; + }; - config = { - osd-bar = true; + config = { + osd-bar = true; - border = false; - }; - scriptOpts = { - osc = { - scalewindowed = 0.8; - hidetimeout = 300; + border = false; }; - thumbfast = { - hwdec = true; - network = false; - spawn_first = false; - max_height = 250; - max_width = 250; + scriptOpts = { + osc = { + scalewindowed = 0.8; + hidetimeout = 300; + }; + thumbfast = { + hwdec = true; + network = false; + spawn_first = false; + max_height = 250; + max_width = 250; + }; }; }; }; diff --git a/modules/by-name/ni/nix-index/command_not_found.fish b/modules/by-name/ni/nix-index/command_not_found.fish new file mode 100644 index 00000000..bbdb2230 --- /dev/null +++ b/modules/by-name/ni/nix-index/command_not_found.fish @@ -0,0 +1,111 @@ +#!/usr/bin/env fish + +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + +# This was taken from the +# `${pkgs.nix-index}/etc/profile.d/command-not-found.sh` file on 2024-02-28 + +function _log + printf $argv >&2 +end + +function _bail + __fish_default_command_not_found_handler $argv + return "$status" +end + +function _common_prefix + set --function prefix + + for str in $argv + set position 1 + for c in (string split '' "$str") + if test -z $prefix[$position] + set prefix[$position] "$c" + else if test $prefix[$position] != "$c" + if test $position = 1 + # The first letter of the prefix mis-matched. + # As such there is no shared prefix, and we can simple bail early. + echo "" + return + else + set prefix $prefix[1..(math $position - 1)] + end + break + end + + set position (math $position + 1) + end + end + + echo "$(string join "" $prefix)" +end + +function fish_command_not_found + # Only run if it's an interactive shell + if not status is-interactive + return (_bail $argv) + end + + # The nixpkgs flake should always be available on NixOS + set --local toplevel nixpkgs + set --local cmd "$argv[1]" + + set --local attrs "$(nix-locate --minimal --no-group --type x --type s --whole-name --at-root "/bin/$cmd")" + + if test -n "$attrs" + set --function len "$(echo "$attrs" | count)" + else + set --function len 0 + end + + switch "$len" + case 0 + case 1 or '*' + _log "The program '%s' is currently not installed.\n" "$cmd" + end + + switch "$len" + case 0 + return (_bail $argv) + case 1 + # If only one package provides this, then we can invoke it + # without asking the user. + + # These will not return 127 if they worked correctly. + + _log "A shell will be opened with it.\n" + + if nix build "$toplevel#$attrs" --no-link + nix shell "$toplevel#$attrs" + return "$status" + else + _log "Failed to build: '%s#%s'\n" "$toplevel" "$attrs" + return (_bail $argv) + end + case '*' + _log "It is provided by several packages. You can run it load it with:\n" + + set --local counter 0 + set --local attrs $(echo $attrs) + for attr in $attrs + _log "%3s)" "$counter" + _log " nix shell %s#%s\n" "$toplevel" "$attr"; + + set counter "$(math "$counter" + 1)" + end + + commandline "nix shell $toplevel#$(_common_prefix $attrs)" + end + + # command not found should always exit with 127 + return 127 +end diff --git a/modules/by-name/ni/nix-index/command_not_found.sh b/modules/by-name/ni/nix-index/command_not_found.zsh index 579f9db4..579f9db4 100644 --- a/modules/by-name/ni/nix-index/command_not_found.sh +++ b/modules/by-name/ni/nix-index/command_not_found.zsh diff --git a/modules/by-name/ni/nix-index/module.nix b/modules/by-name/ni/nix-index/module.nix index 5ddaece3..72be6b52 100644 --- a/modules/by-name/ni/nix-index/module.nix +++ b/modules/by-name/ni/nix-index/module.nix @@ -20,7 +20,11 @@ in { }; config = lib.mkIf cfg.enable { - soispha.programs.zsh.integrations.nix-index = ./command_not_found.sh; + soispha.programs = { + zsh.integrations.nix-index = ./command_not_found.zsh; + fish.integrations.nix-index = ./command_not_found.fish; + }; + home-manager.users.soispha = { imports = [ modules.nix-index-database.homeModules.nix-index diff --git a/modules/by-name/ni/nix/module.nix b/modules/by-name/ni/nix/module.nix index 65b6ed5c..b7e64989 100644 --- a/modules/by-name/ni/nix/module.nix +++ b/modules/by-name/ni/nix/module.nix @@ -19,7 +19,7 @@ externalDependencies, ... }: let - nixpkgs = sources.loadFlake "nixpkgs"; + inherit (sources) nixpkgs; cfg = config.soispha.nix; in { @@ -59,6 +59,9 @@ in { }; settings = { + # Don't warn about dirty git trees (It is usually absolutely useless) + warn-dirty = false; + auto-optimise-store = true; experimental-features = [ "nix-command" diff --git a/modules/by-name/ni/nixos-shell/module.nix b/modules/by-name/ni/nixos-shell/module.nix index 3556a98b..1a0190c8 100644 --- a/modules/by-name/ni/nixos-shell/module.nix +++ b/modules/by-name/ni/nixos-shell/module.nix @@ -15,7 +15,7 @@ ... }: let cfg = config.soispha.nixos-shell; - nixpkgs = sources.loadFlake "nixpkgs"; + inherit (sources) nixpkgs; in { options.soispha.nixos-shell = { enable = lib.mkEnableOption "nixos-shell"; diff --git a/modules/by-name/nv/nvim/module.nix b/modules/by-name/nv/nvim/module.nix index 81d7febf..860610bd 100644 --- a/modules/by-name/nv/nvim/module.nix +++ b/modules/by-name/nv/nvim/module.nix @@ -42,6 +42,10 @@ in { }; config = lib.mkIf cfg.enable { + soispha.services.unison.pathsToSync = [ + "~/.local/state/nvim" + ]; + home-manager.users.soispha = { imports = [ modules.nixvim.homeModules.nixvim diff --git a/modules/by-name/qu/qutebrowser/module.nix b/modules/by-name/qu/qutebrowser/module.nix index 51c1b239..d7689793 100644 --- a/modules/by-name/qu/qutebrowser/module.nix +++ b/modules/by-name/qu/qutebrowser/module.nix @@ -80,7 +80,7 @@ in { config = lib.mkIf cfg.enable { home-manager.users.soispha = { disabledModules = [ - "${sources.sources.home-manager}/modules/programs/qutebrowser.nix" + "${sources.home-manager}/modules/programs/qutebrowser.nix" ]; imports = [ ./module.hm.nix diff --git a/modules/by-name/ri/river/keymap.nix b/modules/by-name/ri/river/keymap.nix index 1d4b8c3e..897d11df 100644 --- a/modules/by-name/ri/river/keymap.nix +++ b/modules/by-name/ri/river/keymap.nix @@ -69,7 +69,7 @@ in { "x" = { "q" = ["exit"]; "l" = mkSpawn pkgs.lock "" {once = true;}; - "h" = mkSpawn' pkgs.procps "pkill" "--signal USR1 i3bar-river" {once = true;}; + "h" = mkSpawn pkgs.systemd-toggle "--user i3bar-river.service" {once = true;}; }; # Media control diff --git a/modules/by-name/ri/river/module.nix b/modules/by-name/ri/river/module.nix index cbb7e3cc..f9ecea0f 100644 --- a/modules/by-name/ri/river/module.nix +++ b/modules/by-name/ri/river/module.nix @@ -229,7 +229,7 @@ in { home.packages = [ river-start - pkgs.swallow + pkgs.sw ]; xdg.configFile."river/init" = { @@ -239,15 +239,48 @@ in { # ${text} ${other_stuff} ''; + + sessionVars = + (builtins.attrNames config.environment.sessionVariables) + ++ (builtins.attrNames config.home-manager.users.soispha.home.sessionVariables) + ++ [ + "WAYLAND_DISPLAY" + "DISPLAY" + "XDG_RUNTIME_DIR" + ]; + + part = acc: vars: let + firstTen = lib.lists.take 5 vars; + in + if firstTen == [] + then acc + else part (acc ++ [firstTen]) (lib.lists.removePrefix firstTen vars); + + partedSessionVars = part [] sessionVars; + + mkEnvSet = prefix: vars: let + stringVars = builtins.concatStringsSep " " vars; + in ''err_fail ${riverctl} spawn "${prefix} ${stringVars}"''; + + dbusEnvs = + builtins.map + (mkEnvSet "${lib.getExe' pkgs.dbus "dbus-update-activation-environment"} --verbose --systemd") + partedSessionVars; + systemdUserEnvs = + builtins.map + (mkEnvSet "systemctl --user --verbose import-environment") + partedSessionVars; in builtins.readFile ./init_base.sh + # bash mkHeading "Environment variables" '' - err_fail ${riverctl} spawn "${lib.getExe' pkgs.dbus "dbus-update-activation-environment"} --verbose --systemd SEATD_SOCK DISPLAY WAYLAND_DISPLAY DESKTOP_SESSION=river XDG_CURRENT_DESKTOP=river" export XDG_CURRENT_DESKTOP=river DESKTOP_SESSION=river; - - systemctl --user start nixos-fake-graphical-session.target + '' + + mkHeading "Informing dbus about changed env-vars" (builtins.concatStringsSep "\n" dbusEnvs) + + mkHeading "Informing systemd user about changed env-vars" (builtins.concatStringsSep "\n" systemdUserEnvs) + + mkHeading "Starting graphical-session-target" '' + err_fail systemctl --user start nixos-fake-graphical-session.target '' + mkHeading "Key Mappings" keymappings + mkHeading "Rules" ruleSetup diff --git a/modules/by-name/ss/ssh/module.nix b/modules/by-name/ss/ssh/module.nix index 87c50728..39c203fd 100644 --- a/modules/by-name/ss/ssh/module.nix +++ b/modules/by-name/ss/ssh/module.nix @@ -55,6 +55,13 @@ in { text = cfg.rootKnownHosts; }) ); + "Host *.your-storagebox.de" = { + # Don't try to authenticate via password for these, because we need to use the + # forced commands, and they are only provided via the ssh key login. + # So password login is a footgun (it is, however, valid to use it for non-root + # use-cases) + PasswordAuthentication = false; + }; }; }; @@ -64,6 +71,11 @@ in { settings = { "Host *" = mkDefaultMatchBlock "${config.home-manager.users.soispha.xdg.dataHome}/ssh/known_hosts"; + "Host *.your-storagebox.de" = { + # Port 22 is for sftp, and when we connect as user, we probably want an + # interactive shell. + Port = 23; + }; }; }; }; diff --git a/modules/by-name/st/starship/module.nix b/modules/by-name/st/starship/module.nix new file mode 100644 index 00000000..9c0ef7ba --- /dev/null +++ b/modules/by-name/st/starship/module.nix @@ -0,0 +1,157 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + lib, + pkgs, + config, + libraries, + ... +}: let + cfg = config.soispha.programs.starship; +in { + options.soispha.programs.starship = { + enable = libraries.base.options.mkEnable "starship"; + + showBattery = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Whether to show the current battery percentage in the prompt"; + }; + }; + + config.home-manager.users.soispha = lib.mkIf cfg.enable { + programs.starship = { + enable = true; + enableZshIntegration = true; + enableFishIntegration = true; + + settings = { + add_newline = false; + format = lib.concatStrings [ + "$directory" + "$username" + "\${custom.in_nixos_shell}" + "$cmd_duration" + "$status" + "$character" + ]; + + right_format = lib.concatStrings ( + [ + "$git_metrics" + "$git_branch" + "$git_status" + "$git_commit" + "$git_state" + "$time" + ] + ++ lib.optionals cfg.showBattery ["$battery"] + ); + + scan_timeout = 20; + + character = { + # success_symbol = "[❯](bold blue)"; + # a = "⬢"; + success_symbol = "[](bold blue)"; + error_symbol = "[](bold red)"; + }; + + status = { + disabled = false; + format = "([($common_meaning )($status)( $signal_name)]($style) )"; + }; + + time = { + disabled = false; + format = "[\\[$time\\]]($style)"; + }; + + username = { + format = "as [$user]($style) "; + }; + + git_branch = { + format = "[($symbol$branch(:$remote_branch) )]($style)"; + }; + git_status = { + disabled = true; + format = "([\\[$ahead_behind\\]]($style) )"; + ahead = "⇡$count"; + diverged = "⇕⇡$ahead_count⇣$behind_count"; + behind = "⇣$count"; + }; + git_metrics = { + disabled = true; + ignore_submodules = true; + }; + git_state = { + format = "[($state( $progress_current of $progress_total))]($style) "; + rebase = "[rebasing](bold magenta)"; + merge = "[merging](bold yellow)"; + revert = "[reverting](bold blue)"; + cherry_pick = "[picking](bold red)"; + bisect = "[bisecting](bold red)"; + am = "[applying](bold green)"; + am_or_rebase = "[applying/rebasing](bold yellow)"; + }; + git_commit = { + disabled = true; + tag_disabled = false; + tag_symbol = "v"; + format = "[(\\[$tag\\] )]($style)"; + }; + + directory = { + truncate_to_repo = true; + read_only = " "; + before_repo_root_style = "black bold dimmed"; + }; + + cmd_duration = { + min_time = 2000; # Milliseconds + style = "bold white"; + }; + + custom = { + in_nixos_shell = { + symbol = "VM "; + style = "bold white"; + when = ''test "$IN_NIXOS_SHELL" = true''; + shell = ["${lib.getExe pkgs.dash}"]; + description = "Show if a shell is run in a vm"; + }; + }; + + battery = { + # ' ' + # ' ' + # ' ' + # ' ' + # ' ' + display = [ + { + threshold = 10; + style = "bold red"; + } + { + threshold = 30; + style = "bold blue"; + } + { + threshold = 50; + style = "bold green"; + } + ]; + }; + }; + }; + }; +} diff --git a/modules/by-name/st/steam/module.nix b/modules/by-name/st/steam/module.nix index aaa36fd3..f44aa0dd 100644 --- a/modules/by-name/st/steam/module.nix +++ b/modules/by-name/st/steam/module.nix @@ -26,6 +26,11 @@ in { "steam-run" ]; + soispha.services.unison.pathsToIgnore = [ + # That is just to big to be synchronized (# TODO: Work around that <2024-08-31> ) + "~/.local/share/Steam" + ]; + programs.steam = { enable = true; }; diff --git a/modules/by-name/sw/swayidle/module.nix b/modules/by-name/sw/swayidle/module.nix index a29b5952..9bda534f 100644 --- a/modules/by-name/sw/swayidle/module.nix +++ b/modules/by-name/sw/swayidle/module.nix @@ -9,11 +9,13 @@ # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. { config, + pkgs, lib, libraries, ... }: let cfg = config.soispha.programs.swayidle; + swaylock = lib.getExe pkgs.swaylock; in { options.soispha.programs.swayidle = { enable = libraries.base.options.mkEnable "swayidle"; @@ -24,13 +26,13 @@ in { services.swayidle = { enable = true; events = { - "before-sleep" = "swaylock -f "; + "before-sleep" = "${swaylock} -f "; }; timeouts = [ { timeout = 180; - command = "swaylock -fF"; + command = "${swaylock} -fF"; } { timeout = 360; diff --git a/modules/by-name/ta/taskwarrior/module.nix b/modules/by-name/ta/taskwarrior/module.nix index d757be90..d8129bdc 100644 --- a/modules/by-name/ta/taskwarrior/module.nix +++ b/modules/by-name/ta/taskwarrior/module.nix @@ -110,6 +110,11 @@ in { inherit mkHook; }; + soispha.services.unison.pathsToIgnore = [ + # Already synchronized by TaskChampion sync server + "~/.local/share/task" + ]; + age.secrets.taskwarrior_sync_server_encryption_key = lib.mkIf (cfg.enable && cfg.enableAge) { file = ./secrets/sync_server_encryption_key.age; mode = "700"; @@ -138,7 +143,7 @@ in { tags = true; }; - news.version = "3.4.1"; + news.version = "3.5.0"; regex = true; weekstart = "Monday"; diff --git a/modules/by-name/un/unison/module.nix b/modules/by-name/un/unison/module.nix index 8d156b00..8e943304 100644 --- a/modules/by-name/un/unison/module.nix +++ b/modules/by-name/un/unison/module.nix @@ -84,6 +84,17 @@ in { }; config = lib.mkIf cfg.enable { + soispha.services.unison.pathsToIgnore = let + prefix = "/home/soispha/"; + dataDir = + if lib.strings.hasPrefix prefix cfg.dataDir + then "~/${lib.strings.removePrefix prefix cfg.dataDir}" + else builtins.throw "Wrong prefix in unison"; + in [ + # Should not be synchronized + dataDir + ]; + home-manager.users.soispha = { home.sessionVariables = { UNISON = cfg.dataDir; diff --git a/modules/by-name/us/users/module.nix b/modules/by-name/us/users/module.nix index 65b75d2e..d9097fe1 100644 --- a/modules/by-name/us/users/module.nix +++ b/modules/by-name/us/users/module.nix @@ -35,9 +35,6 @@ in { }; config = lib.mkIf cfg.enable { - # Ensure that the default shell of the user is actually enabled. - programs.zsh.enable = true; - users = { mutableUsers = false; @@ -46,7 +43,7 @@ in { isNormalUser = true; home = "/home/soispha"; createHome = true; - shell = pkgs.zsh; + shell = config.home-manager.users.soispha.programs.fish.package; initialHashedPassword = cfg.hashedPassword; extraGroups = cfg.groups ++ lib.optional cfg.enableDeprecatedPlugdev "plugdev"; diff --git a/modules/by-name/ve/version/module.nix b/modules/by-name/ve/version/module.nix index fc03b107..d666695d 100644 --- a/modules/by-name/ve/version/module.nix +++ b/modules/by-name/ve/version/module.nix @@ -10,19 +10,19 @@ { config, lib, - self, + sources, ... }: let cfg = config.soispha.version; + + inherit (sources) nixpkgs; in { options.soispha.version = { - enable = lib.mkEnableOption "storing the git revision in /etc/nixos_git_rev"; + enable = lib.mkEnableOption "storing the git revision in /etc/nixpkgs-git-revision"; }; config = lib.mkIf cfg.enable { - environment.etc.nixos_git_rev = { - text = builtins.toString (self.longRev - or self.lastModified - or "unknown"); + environment.etc.nixpkgs-git-revision = { + source = "${nixpkgs}/.git-revision"; }; }; } diff --git a/modules/by-name/yt/yt/module.nix b/modules/by-name/yt/yt/module.nix index 81bacf44..f001c030 100644 --- a/modules/by-name/yt/yt/module.nix +++ b/modules/by-name/yt/yt/module.nix @@ -113,6 +113,10 @@ in { config = { home-manager.users.soispha = lib.mkIf cfg.enable { + home.packages = [ + pkgs.yt + ]; + xdg.configFile = { "yt/mpv.conf".text = renderOptions mpvConf; "yt/mpv.input.conf".text = renderBindings mpvInputConfig; diff --git a/modules/by-name/zs/zsh/module.nix b/modules/by-name/zs/zsh/module.nix index fee2eae3..cd2e917f 100644 --- a/modules/by-name/zs/zsh/module.nix +++ b/modules/by-name/zs/zsh/module.nix @@ -42,6 +42,9 @@ in { }; config = lib.mkIf cfg.enable { + # Ensure that the default shell of the user is actually enabled. + programs.zsh.enable = true; + environment.variables = { ZDOTDIR = zDotDir; }; diff --git a/modules/common/default.nix b/modules/common/default.nix index e5172921..4855c7ab 100644 --- a/modules/common/default.nix +++ b/modules/common/default.nix @@ -42,7 +42,6 @@ }; polkit.enable = true; - power.enable = true; xdg.enable = true; services = { @@ -97,33 +96,14 @@ config.home-manager.users.soispha.home.file); in [ - # TODO(@bpeetz): Move these to their respective modules <2025-05-09> - # Already synchronized by TaskChampion sync server - "~/.local/share/task" - # Already synchronized by atuin sync server - "~/.local/share/atuin" + # TODO(@bpeetz): Move that to its respective module (after migrating it to + # by-name) <2025-05-09> # Already synchronized by mbsync "~/.local/share/maildir" - - - # "Unknown filetype" (and there is no real reason to (try to) synchronize sockets) - "~/.local/share/gnupg/S.gpg-agent" - "~/.local/share/gnupg/S.gpg-agent.browser" - "~/.local/share/gnupg/S.gpg-agent.extra" - "~/.local/share/gnupg/S.gpg-agent.ssh" - "~/.local/share/gnupg/S.scdaemon" - - # Should not be synchronized - "~/.local/share/unison" - - # These are just to big to be synchronized (# TODO: Work around that <2024-08-31> ) - "~/.local/share/Steam" ] ++ homeManagerSymlinks; pathsToSync = [ - "~/.local/state/mpv" - "~/.local/state/nvim" "~/.local/share" "~/.local/.Trash-1000" @@ -240,6 +220,7 @@ yt.enable = true; zathura.enable = true; zsh.enable = true; + fish.enable = true; }; version.enable = true; diff --git a/modules/common/projects.json b/modules/common/projects.json index e8e9bc39..7f434976 100644 --- a/modules/common/projects.json +++ b/modules/common/projects.json @@ -22,6 +22,7 @@ "google": {}, "health": {}, "job": {}, + "shop": {}, "sweden": {} } }, diff --git a/modules/home.legacy/conf/default.nix b/modules/home.legacy/conf/default.nix index b50068ea..cedcf71a 100644 --- a/modules/home.legacy/conf/default.nix +++ b/modules/home.legacy/conf/default.nix @@ -13,7 +13,6 @@ ./btop ./dconf ./gammastep - ./gtk ./himalaya ./keepassxc ./mail @@ -23,6 +22,5 @@ ./npm ./prusa_slicer ./python - ./starship ]; } diff --git a/modules/home.legacy/conf/gtk/default.nix b/modules/home.legacy/conf/gtk/default.nix deleted file mode 100644 index e624765b..00000000 --- a/modules/home.legacy/conf/gtk/default.nix +++ /dev/null @@ -1,67 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -{ - config, - pkgs, - ... -}: { - gtk = { - enable = true; - theme = { - # NOTE: The `nordic` package pulls the whole plasma shell, to copy some stuff from a plasma theme :/ <2026-05-29> - package = pkgs.nordic; - name = "Nordic"; - }; - cursorTheme = { - package = pkgs.nordzy-cursor-theme; - name = "Nordzy-cursors"; - }; - iconTheme = { - package = pkgs.nordzy-icon-theme; - name = "Nordzy-icon"; - }; - font = { - name = "Noto Sans"; - size = 10; - }; - gtk2 = { - configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; - # extraConfig = '' - # gtk-enable-animations=1 - # gtk-primary-button-warps-slider=0 - # gtk-toolbar-style=3 - # gtk-menu-images=1 - # gtk-button-images=1 - # - # ''; - }; - gtk3 = { - # extraConfig = '' - # gtk-button-images=true - # gtk-decoration-layout=icon:minimize,maximize,close - # gtk-enable-animations=true - # gtk-menu-images=true - # gtk-primary-button-warps-slider=false - # gtk-toolbar-style=3 - # #gtk-modules=window-decorations-gtk-module:colorreload-gtk-module - # ''; - extraCss = ""; - }; - gtk4 = { - theme = config.gtk.theme; - # extraConfig = '' - # gtk-application-prefer-dark-theme=true - # gtk-decoration-layout=icon:minimize,maximize,close - # gtk-enable-animations=true - # gtk-primary-button-warps-slider=false - # ''; - }; - }; -} diff --git a/modules/home.legacy/conf/starship/default.nix b/modules/home.legacy/conf/starship/default.nix deleted file mode 100644 index c34beb05..00000000 --- a/modules/home.legacy/conf/starship/default.nix +++ /dev/null @@ -1,143 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -{ - lib, - nixosConfig, - pkgs, - ... -}: { - programs.starship = { - enable = true; - enableZshIntegration = true; - - settings = { - add_newline = false; - format = lib.concatStrings [ - "$directory" - "$username" - "\${custom.in_nixos_shell}" - "$cmd_duration" - "$status" - "$character" - ]; - - right_format = lib.concatStrings ( - [ - "$git_metrics" - "$git_branch" - "$git_status" - "$git_commit" - "$git_state" - "$time" - ] - ++ lib.optional - nixosConfig.soispha.laptop.enable - "$battery" - ); - - scan_timeout = 20; - - character = { - # success_symbol = "[❯](bold blue)"; - # a = "⬢"; - success_symbol = "[](bold blue)"; - error_symbol = "[](bold red)"; - }; - - status = { - disabled = false; - format = "([($common_meaning )($status)( $signal_name)]($style) )"; - }; - - time = { - disabled = false; - format = "[\\[$time\\]]($style)"; - }; - - username = { - format = "as [$user]($style) "; - }; - - git_branch = { - format = "[($symbol$branch(:$remote_branch) )]($style)"; - }; - git_status = { - disabled = true; - format = "([\\[$ahead_behind\\]]($style) )"; - ahead = "⇡$count"; - diverged = "⇕⇡$ahead_count⇣$behind_count"; - behind = "⇣$count"; - }; - git_metrics = { - disabled = true; - ignore_submodules = true; - }; - git_state = { - format = "[($state( $progress_current of $progress_total))]($style) "; - rebase = "[rebasing](bold magenta)"; - merge = "[merging](bold yellow)"; - revert = "[reverting](bold blue)"; - cherry_pick = "[picking](bold red)"; - bisect = "[bisecting](bold red)"; - am = "[applying](bold green)"; - am_or_rebase = "[applying/rebasing](bold yellow)"; - }; - git_commit = { - disabled = true; - tag_disabled = false; - tag_symbol = "v"; - format = "[(\\[$tag\\] )]($style)"; - }; - - directory = { - truncate_to_repo = true; - read_only = " "; - before_repo_root_style = "black bold dimmed"; - }; - - cmd_duration = { - min_time = 2000; # Milliseconds - style = "bold white"; - }; - - custom = { - in_nixos_shell = { - symbol = "VM "; - style = "bold white"; - when = ''test "$IN_NIXOS_SHELL" = true ''; - shell = ["${lib.getExe pkgs.dash}"]; - description = "Show if a shell is run in a vm"; - }; - }; - - battery = { - # ' ' - # ' ' - # ' ' - # ' ' - # ' ' - display = [ - { - threshold = 10; - style = "bold red"; - } - { - threshold = 30; - style = "bold blue"; - } - { - threshold = 50; - style = "bold green"; - } - ]; - }; - }; - }; -} diff --git a/modules/home.legacy/pkgs/default.nix b/modules/home.legacy/pkgs/default.nix index 065f0c96..840ffb19 100644 --- a/modules/home.legacy/pkgs/default.nix +++ b/modules/home.legacy/pkgs/default.nix @@ -23,7 +23,6 @@ with pkgs; let TuiCli = { Misc = [ - killall # kill a application by name bc # Smart calculator aumo # Automatic mount jq # Json parser @@ -48,12 +47,6 @@ with pkgs; let ]; }; - Media = { - YouTube = [ - yt # A command line YouTube client - ]; - }; - Hardware = { Storage = [ # TODO: smartmontools # Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives @@ -87,16 +80,6 @@ with pkgs; let ripgrep # A search tool that combines the usability of ag with the raw speed of grep file # Show information about a file ]; - - Programming = { - GeneralTools = [ - stamp # Add a license header to a file - git # the fast distributed version control system - git-edit-index # Allows you to edit the indexed version of a file - git-cm # A wrapper that re-adds the last commit's subject - glow # Command-line markdown renderer - ]; - }; }; mapFun = x: if builtins.isAttrs x diff --git a/npins/default.nix b/npins/default.nix deleted file mode 100644 index 8ec5eca6..00000000 --- a/npins/default.nix +++ /dev/null @@ -1,260 +0,0 @@ -/* - This file is provided under the MIT licence: - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ -# Generated by npins. Do not modify; will be overwritten regularly -let - # Backwards-compatibly make something that previously didn't take any arguments take some - # The function must return an attrset, and will unfortunately be eagerly evaluated - # Same thing, but it catches eval errors on the default argument so that one may still call it with other arguments - mkFunctor = - fn: - let - e = builtins.tryEval (fn { }); - in - (if e.success then e.value else { error = fn { }; }) // { __functor = _self: fn; }; - - # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295 - range = - first: last: if first > last then [ ] else builtins.genList (n: first + n) (last - first + 1); - - # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257 - stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1)); - - # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269 - stringAsChars = f: s: concatStrings (map f (stringToCharacters s)); - concatStrings = builtins.concatStringsSep ""; - - # If the environment variable NPINS_OVERRIDE_${name} is set, then use - # the path directly as opposed to the fetched source. - # (Taken from Niv for compatibility) - mayOverride = - name: path: - let - envVarName = "NPINS_OVERRIDE_${saneName}"; - saneName = stringAsChars (c: if (builtins.match "[a-zA-Z0-9]" c) == null then "_" else c) name; - ersatz = builtins.getEnv envVarName; - in - if ersatz == "" then - path - else - # this turns the string into an actual Nix path (for both absolute and - # relative paths) - builtins.trace "Overriding path of \"${name}\" with \"${ersatz}\" due to set \"${envVarName}\"" ( - if builtins.substring 0 1 ersatz == "/" then - /. + ersatz - else - /. + builtins.getEnv "PWD" + "/${ersatz}" - ); - - mkSource = - name: spec: - { - pkgs ? null, - }: - assert spec ? type; - let - # Unify across builtin and pkgs fetchers. - # `fetchGit` requires a wrapper because of slight API differences. - fetchers = - if pkgs == null then - { - inherit (builtins) fetchTarball fetchurl; - # Frustratingly, due to flakes and `fetchTree`, `fetchGit` - # has a different signature than the other builtin - # fetchers - fetchGit = args: (builtins.fetchGit args).outPath; - } - else - { - fetchTarball = - { - url, - sha256, - }: - pkgs.fetchzip { - inherit url sha256; - extension = "tar"; - }; - inherit (pkgs) fetchurl; - fetchGit = - { - url, - submodules, - rev, - name, - narHash, - }: - pkgs.fetchgit { - inherit url rev name; - fetchSubmodules = submodules; - hash = narHash; - }; - }; - - path = - if spec.type == "Git" then - mkGitSource fetchers spec - else if spec.type == "GitRelease" then - mkGitSource fetchers spec - else if spec.type == "PyPi" then - mkPyPiSource fetchers spec - else if spec.type == "Channel" then - mkChannelSource fetchers spec - else if spec.type == "Url" || spec.type == "MutableUrl" then - mkUrlSource fetchers spec - else if spec.type == "Container" then - mkContainerSource pkgs spec - else - builtins.throw "Unknown source type ${spec.type}"; - in - spec // { outPath = mayOverride name path; }; - - mkGitSource = - { - fetchTarball, - fetchGit, - ... - }: - { - repository, - revision, - url ? null, - submodules, - hash, - ... - }: - assert repository ? type; - # At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository - # In the latter case, there we will always be an url to the tarball - if url != null && !submodules then - fetchTarball { - inherit url; - sha256 = hash; - } - else - let - url = - if repository.type == "Git" then - repository.url - else if repository.type == "GitHub" then - "https://github.com/${repository.owner}/${repository.repo}.git" - else if repository.type == "GitLab" then - "${repository.server}/${repository.repo_path}.git" - else if repository.type == "Forgejo" then - "${repository.server}/${repository.owner}/${repository.repo}.git" - else - throw "Unrecognized repository type ${repository.type}"; - urlToName = - url: rev: - let - matched = builtins.match "^.*/([^/]*)(\\.git)?$" url; - - short = builtins.substring 0 7 rev; - - appendShort = if (builtins.match "[a-f0-9]*" rev) != null then "-${short}" else ""; - in - "${if matched == null then "source" else builtins.head matched}${appendShort}"; - name = urlToName url revision; - in - fetchGit { - rev = revision; - narHash = hash; - - inherit name submodules url; - }; - - mkPyPiSource = - { fetchurl, ... }: - { - url, - hash, - ... - }: - fetchurl { - inherit url; - sha256 = hash; - }; - - mkChannelSource = - { fetchTarball, ... }: - { - url, - hash, - ... - }: - fetchTarball { - inherit url; - sha256 = hash; - }; - - mkUrlSource = - { - fetchTarball, - fetchurl, - ... - }: - { - url, - hash, - unpack, - ... - }: - (if unpack then fetchTarball else fetchurl) { - inherit url; - sha256 = hash; - }; - - mkContainerSource = - pkgs: - { - image_name, - image_tag, - image_digest, - hash, - ... - }@args: - if pkgs == null then - builtins.throw "container sources require passing in a Nixpkgs value: https://github.com/andir/npins/blob/master/README.md#using-the-nixpkgs-fetchers" - else - pkgs.dockerTools.pullImage ( - { - imageName = image_name; - imageDigest = image_digest; - finalImageTag = image_tag; - hash = hash; - } - // (if args.arch or null != null then { arch = args.arch; } else { }) - ); - -in -mkFunctor ( - { - input ? ./sources.json, - }: - let - data = - if builtins.isPath input then - # while `readFile` will throw an error anyways if the path doesn't exist, - # we still need to check beforehand because *our* error can be caught but not the one from the builtin - # See: <https://git.lix.systems/lix-project/lix/issues/1098> - if builtins.pathExists input then - builtins.fromJSON (builtins.readFile input) - else - throw "Input path ${toString input} does not exist" - else if builtins.isAttrs input then - input - else - throw "Unsupported input type ${builtins.typeOf input}, must be a path or an attrset"; - version = data.version; - in - if version == 8 then - builtins.mapAttrs (name: spec: mkFunctor (mkSource name spec)) data.pins - else - throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`" -) diff --git a/npins/full.nix b/npins/full.nix deleted file mode 100644 index 0fb56679..00000000 --- a/npins/full.nix +++ /dev/null @@ -1,8 +0,0 @@ -_: let - sources = import ../unflake.nix; - loadFlake = input: sources."${input}"; - - # loadFlake = flakeInput: (import sources.flake-compat {src = sources."${flakeInput}";}).outputs; -in { - inherit sources loadFlake; -} diff --git a/npins/sources.json b/npins/sources.json deleted file mode 100644 index f7d5476a..00000000 --- a/npins/sources.json +++ /dev/null @@ -1,449 +0,0 @@ -{ - "pins": { - "unflake_git_https---codeberg-org-bpeetz-flake-templates_ref_prime": { - "type": "Git", - "repository": { - "type": "Forgejo", - "server": "https://codeberg.org/", - "owner": "bpeetz", - "repo": "flake-templates" - }, - "branch": "prime", - "submodules": false, - "revision": "0294fb03df7c265f8fae24a9e775d69a953bbf03", - "url": "https://codeberg.org/bpeetz/flake-templates/archive/0294fb03df7c265f8fae24a9e775d69a953bbf03.tar.gz", - "hash": "sha256-rI1qMFzbXVjfEvmf2OS4upnibXpL21its6cCXqhz86o=" - }, - "unflake_git_https---git-foss-syndicate-org-bpeetz-forks-atuin_ref_main": { - "type": "Git", - "repository": { - "type": "Git", - "url": "https://git.foss-syndicate.org/bpeetz/forks/atuin" - }, - "branch": "main", - "submodules": false, - "revision": "3ba41b526d57368bfa8d151fd777865370c24f6b", - "url": null, - "hash": "sha256-6upceGLe7W2i00Qsv4fPQUuAIAUpHK8Tm/dsmoQ4SzI=" - }, - "unflake_git_https---git-foss-syndicate-org-bpeetz-qmk_layout_ref_prime": { - "type": "Git", - "repository": { - "type": "Git", - "url": "https://git.foss-syndicate.org/bpeetz/qmk_layout" - }, - "branch": "prime", - "submodules": false, - "revision": "4dff2e6ba5c9c80de3e3d2213ad28802814c3bba", - "url": null, - "hash": "sha256-dv5P3ahDICDacdzEmcyxrtKgbRWhVFiKQaLEz+WniGM=" - }, - "unflake_git_https---git-foss-syndicate-org-vhack-eu-nix-library_ref_prime": { - "type": "Git", - "repository": { - "type": "Git", - "url": "https://git.foss-syndicate.org/vhack.eu/nix-library" - }, - "branch": "prime", - "submodules": false, - "revision": "65bf71bb6ef05ce684924a1dc248bb2e8e2869fb", - "url": null, - "hash": "sha256-IV7n/l3rFoz5UuavrDv0a7IIOPne0jDQVmJAR8bve8U=" - }, - "unflake_git_https---git-lix-systems-lix-project-flake-compat_ref_main": { - "type": "Git", - "repository": { - "type": "Forgejo", - "server": "https://git.lix.systems/", - "owner": "lix-project", - "repo": "flake-compat" - }, - "branch": "main", - "submodules": false, - "revision": "382052b74656a369c5408822af3f2501e9b1af81", - "url": "https://git.lix.systems/lix-project/flake-compat/archive/382052b74656a369c5408822af3f2501e9b1af81.tar.gz", - "hash": "sha256-Eg9b/rq/ECYwNwEXs5i9wHyhxNI0JrYx2srdI2uZMaQ=" - }, - "unflake_github_cachix_pre-commit-hooks-nix": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "cachix", - "repo": "pre-commit-hooks.nix" - }, - "branch": "master", - "submodules": false, - "revision": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", - "url": "https://github.com/cachix/pre-commit-hooks.nix/archive/61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a.tar.gz", - "hash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=" - }, - "unflake_github_hercules-ci_flake-parts": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "hercules-ci", - "repo": "flake-parts" - }, - "branch": "main", - "submodules": false, - "revision": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", - "url": "https://github.com/hercules-ci/flake-parts/archive/f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb.tar.gz", - "hash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=" - }, - "unflake_github_hercules-ci_gitignore-nix": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "hercules-ci", - "repo": "gitignore.nix" - }, - "branch": "master", - "submodules": false, - "revision": "cb5e3fdca1de58ccbc3ef53de65bd372b48f567c", - "url": "https://github.com/hercules-ci/gitignore.nix/archive/cb5e3fdca1de58ccbc3ef53de65bd372b48f567c.tar.gz", - "hash": "sha256-XmjITeZNMTQXGhhww6ed/Wacy2KzD6svioyCX7pkUu4=" - }, - "unflake_github_ipetkov_crane": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "ipetkov", - "repo": "crane" - }, - "branch": "master", - "submodules": false, - "revision": "59a82a1222dd3b2080b5cc52a1a2e8d5f1b77f37", - "url": "https://github.com/ipetkov/crane/archive/59a82a1222dd3b2080b5cc52a1a2e8d5f1b77f37.tar.gz", - "hash": "sha256-D+BsdpxmtUwtqGoY0IXPhHgTlmqgcZKCEo1oMyn7ep0=" - }, - "unflake_github_lnl7_nix-darwin_ref_master": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "lnl7", - "repo": "nix-darwin" - }, - "branch": "master", - "submodules": false, - "revision": "aabb2037edfc0f210723b72cd5f528aab5dd3f0b", - "url": "https://github.com/lnl7/nix-darwin/archive/aabb2037edfc0f210723b72cd5f528aab5dd3f0b.tar.gz", - "hash": "sha256-bchLZZ3sRn740zyvD2icZSnNoTaanN0nw7l6fjVXO+E=" - }, - "unflake_github_nix-community_disko_ref_master": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "disko" - }, - "branch": "master", - "submodules": false, - "revision": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1", - "url": "https://github.com/nix-community/disko/archive/ff8702b4de27f72b4c78573dfb89ec74e36abdf1.tar.gz", - "hash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=" - }, - "unflake_github_nix-community_home-manager": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "home-manager" - }, - "branch": "master", - "submodules": false, - "revision": "5b6f5733726a1b2ccafb5dec6ac4ca7299fad66c", - "url": "https://github.com/nix-community/home-manager/archive/5b6f5733726a1b2ccafb5dec6ac4ca7299fad66c.tar.gz", - "hash": "sha256-zqDBhXMzfbdlO7F2bGHe7MOtB3xngd/+4ieMHDC+ZXo=" - }, - "unflake_github_nix-community_home-manager_ref_master": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "home-manager" - }, - "branch": "master", - "submodules": false, - "revision": "5b6f5733726a1b2ccafb5dec6ac4ca7299fad66c", - "url": "https://github.com/nix-community/home-manager/archive/5b6f5733726a1b2ccafb5dec6ac4ca7299fad66c.tar.gz", - "hash": "sha256-zqDBhXMzfbdlO7F2bGHe7MOtB3xngd/+4ieMHDC+ZXo=" - }, - "unflake_github_nix-community_impermanence_ref_master": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "impermanence" - }, - "branch": "master", - "submodules": false, - "revision": "7b1d382faf603b6d264f58627330f9faa5cba149", - "url": "https://github.com/nix-community/impermanence/archive/7b1d382faf603b6d264f58627330f9faa5cba149.tar.gz", - "hash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=" - }, - "unflake_github_nix-community_lanzaboote_ref_master": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "lanzaboote" - }, - "branch": "master", - "submodules": false, - "revision": "0403b4b7e8b2612657f0053a4c315e6c43eee9e6", - "url": "https://github.com/nix-community/lanzaboote/archive/0403b4b7e8b2612657f0053a4c315e6c43eee9e6.tar.gz", - "hash": "sha256-4JLkQvN7/f77TyxXXtoEuUfovMqMLOgWpBaLMNX1dns=" - }, - "unflake_github_nix-community_lanzaboote_ref_v1-0-0": { - "type": "GitRelease", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "lanzaboote" - }, - "pre_releases": false, - "version_upper_bound": null, - "release_prefix": null, - "submodules": false, - "version": "v1.0.0", - "revision": "2fe211d9c0e2320ce23dc995a3f93666ca149d9a", - "url": "https://api.github.com/repos/nix-community/lanzaboote/tarball/refs/tags/v1.0.0", - "hash": "sha256-RJmgVDzjRI18BWVogG6wpsl1UCuV6ui8qr4DJ1LfWZ8=" - }, - "unflake_github_nix-community_nix-index-database_ref_main": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "nix-index-database" - }, - "branch": "main", - "submodules": false, - "revision": "1a2ea89c917781e88508d9fd2b507f2d2a0e173c", - "url": "https://github.com/nix-community/nix-index-database/archive/1a2ea89c917781e88508d9fd2b507f2d2a0e173c.tar.gz", - "hash": "sha256-0BYqs8yKWkOz2Q7+SP18N5E5gmDKSo6LSxIVIa0wWes=" - }, - "unflake_github_nix-community_nixos-generators_ref_master": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "nixos-generators" - }, - "branch": "master", - "submodules": false, - "revision": "8946737ff703382fda7623b9fab071d037e897d5", - "url": "https://github.com/nix-community/nixos-generators/archive/8946737ff703382fda7623b9fab071d037e897d5.tar.gz", - "hash": "sha256-nnVmNNKBi1YiBNPhKclNYDORoHkuKipoz7EtVnXO50A=" - }, - "unflake_github_nix-community_nixpkgs-lib": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "nixpkgs.lib" - }, - "branch": "master", - "submodules": false, - "revision": "78afa8e310f34cba09443a5ef2fb47bfd21d294f", - "url": "https://github.com/nix-community/nixpkgs.lib/archive/78afa8e310f34cba09443a5ef2fb47bfd21d294f.tar.gz", - "hash": "sha256-eVQuIiDIy24NIAW+yEirKosWHFYAml6dghmevWgruBE=" - }, - "unflake_github_nix-community_nixvim_ref_main": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-community", - "repo": "nixvim" - }, - "branch": "main", - "submodules": false, - "revision": "e3c908fdf6dff268b04ffb6758bcfc7c018489b9", - "url": "https://github.com/nix-community/nixvim/archive/e3c908fdf6dff268b04ffb6758bcfc7c018489b9.tar.gz", - "hash": "sha256-Kx1zxra9sZ215H3OiWUfkulu8N2v3iu19wqlzpD/Ac0=" - }, - "unflake_github_nix-systems_default": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-systems", - "repo": "default" - }, - "branch": "main", - "submodules": false, - "revision": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "url": "https://github.com/nix-systems/default/archive/da67096a3b9bf56a91d16901293e51ba5b49a27e.tar.gz", - "hash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=" - }, - "unflake_github_nix-systems_default_ref_future-26-11": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-systems", - "repo": "default" - }, - "branch": "future-26.11", - "submodules": false, - "revision": "c29398b59d2048c4ab79345812849c9bd15e9150", - "url": "https://github.com/nix-systems/default/archive/c29398b59d2048c4ab79345812849c9bd15e9150.tar.gz", - "hash": "sha256-brhZ8DmuGtzkCYHJg4HEd602amKm89Y9ytsFZ5uWD1w=" - }, - "unflake_github_nix-systems_x86_64-linux": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nix-systems", - "repo": "x86_64-linux" - }, - "branch": "main", - "submodules": false, - "revision": "2ecfcac5e15790ba6ce360ceccddb15ad16d08a8", - "url": "https://github.com/nix-systems/x86_64-linux/archive/2ecfcac5e15790ba6ce360ceccddb15ad16d08a8.tar.gz", - "hash": "sha256-Gtqg8b/v49BFDpDetjclCYXm8mAnTrUzR0JnE2nv5aw=" - }, - "unflake_github_nixos_flake-compat_flake_false": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nixos", - "repo": "flake-compat" - }, - "branch": "master", - "submodules": false, - "revision": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", - "url": "https://github.com/nixos/flake-compat/archive/5edf11c44bc78a0d334f6334cdaf7d60d732daab.tar.gz", - "hash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=" - }, - "unflake_github_nixos_nixpkgs_ref_nixos-25-05": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nixos", - "repo": "nixpkgs" - }, - "branch": "nixos-25.05", - "submodules": false, - "revision": "ac62194c3917d5f474c1a844b6fd6da2db95077d", - "url": "https://github.com/nixos/nixpkgs/archive/ac62194c3917d5f474c1a844b6fd6da2db95077d.tar.gz", - "hash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=" - }, - "unflake_github_nixos_nixpkgs_ref_nixos-26-05": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nixos", - "repo": "nixpkgs" - }, - "branch": "nixos-26.05", - "submodules": false, - "revision": "a0374025a863d007d98e3297f6aa46cc3141c2f0", - "url": "https://github.com/nixos/nixpkgs/archive/a0374025a863d007d98e3297f6aa46cc3141c2f0.tar.gz", - "hash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=" - }, - "unflake_github_nixos_nixpkgs_ref_nixos-unstable": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nixos", - "repo": "nixpkgs" - }, - "branch": "nixos-unstable", - "submodules": false, - "revision": "9ae611a455b90cf061d8f332b977e387bda8e1ca", - "url": "https://github.com/nixos/nixpkgs/archive/9ae611a455b90cf061d8f332b977e387bda8e1ca.tar.gz", - "hash": "sha256-md8WlXOlfnIeHeOScMTTHFyf2d6iaTwPl2apR5EQ3P4=" - }, - "unflake_github_nixos_nixpkgs_ref_nixos-unstable-small": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nixos", - "repo": "nixpkgs" - }, - "branch": "nixos-unstable-small", - "submodules": false, - "revision": "25b882bfb833fb4d692e83b22d466732b64ebc8c", - "url": "https://github.com/nixos/nixpkgs/archive/25b882bfb833fb4d692e83b22d466732b64ebc8c.tar.gz", - "hash": "sha256-LActLimqQUa9LTzcVaO7Z5Yl6TEjcjkr5lzNrZX3COc=" - }, - "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "nixos", - "repo": "nixpkgs" - }, - "branch": "nixpkgs-unstable", - "submodules": false, - "revision": "49a4bd0573c376468dd7996ddb6f9fa31d8c4d97", - "url": "https://github.com/nixos/nixpkgs/archive/49a4bd0573c376468dd7996ddb6f9fa31d8c4d97.tar.gz", - "hash": "sha256-Zn5KTggEmUB3lXn/ccERNcBdddE6IaOFber9dWViWDg=" - }, - "unflake_github_numtide_flake-utils": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "numtide", - "repo": "flake-utils" - }, - "branch": "main", - "submodules": false, - "revision": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "url": "https://github.com/numtide/flake-utils/archive/11707dc2f618dd54ca8739b309ec4fc024de578b.tar.gz", - "hash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=" - }, - "unflake_github_numtide_treefmt-nix": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "numtide", - "repo": "treefmt-nix" - }, - "branch": "main", - "submodules": false, - "revision": "db947814a175b7ca6ded66e21383d938df01c227", - "url": "https://github.com/numtide/treefmt-nix/archive/db947814a175b7ca6ded66e21383d938df01c227.tar.gz", - "hash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=" - }, - "unflake_github_numtide_treefmt-nix_ref_main": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "numtide", - "repo": "treefmt-nix" - }, - "branch": "main", - "submodules": false, - "revision": "db947814a175b7ca6ded66e21383d938df01c227", - "url": "https://github.com/numtide/treefmt-nix/archive/db947814a175b7ca6ded66e21383d938df01c227.tar.gz", - "hash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=" - }, - "unflake_github_oxalica_rust-overlay": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "oxalica", - "repo": "rust-overlay" - }, - "branch": "master", - "submodules": false, - "revision": "5b929d8c854149d926d05ea0cd6469bf4e54db27", - "url": "https://github.com/oxalica/rust-overlay/archive/5b929d8c854149d926d05ea0cd6469bf4e54db27.tar.gz", - "hash": "sha256-mjJ/VxJaIkgcUvKANgKOaaN5M1X1X+6NjCP0C5hw0WI=" - }, - "unflake_github_ryantm_agenix_ref_main": { - "type": "Git", - "repository": { - "type": "GitHub", - "owner": "ryantm", - "repo": "agenix" - }, - "branch": "main", - "submodules": false, - "revision": "b027ee29d959fda4b60b57566d64c98a202e0feb", - "url": "https://github.com/ryantm/agenix/archive/b027ee29d959fda4b60b57566d64c98a202e0feb.tar.gz", - "hash": "sha256-9VnK6Oqai65puVJ4WYtCTvlJeXxMzAp/69HhQuTdl/I=" - } - }, - "version": 8 -} diff --git a/pkgs/by-name/di/direnv-patched/0001-rc-Also-consider-.nenvrc-files.patch b/pkgs/by-name/di/direnv-patched/0001-rc-Also-consider-.nenvrc-files.patch new file mode 100644 index 00000000..fa2716f4 --- /dev/null +++ b/pkgs/by-name/di/direnv-patched/0001-rc-Also-consider-.nenvrc-files.patch @@ -0,0 +1,28 @@ +From c7fd4ebf40f2cec9ce23c4227fc48402c0469e69 Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz <benedikt.peetz@b-peetz.de> +Date: Thu, 13 Aug 2026 17:47:06 +0200 +Subject: [PATCH] rc: Also consider `.nenvrc` files + +--- + internal/cmd/rc.go | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/internal/cmd/rc.go b/internal/cmd/rc.go +index 4167ecf..d7f5886 100644 +--- a/internal/cmd/rc.go ++++ b/internal/cmd/rc.go +@@ -391,9 +391,9 @@ func allow(path string, allowPath string) (err error) { + + func findEnvUp(searchDir string, loadDotenv bool) (path string) { + if loadDotenv { +- return findUp(searchDir, ".envrc", ".env") ++ return findUp(searchDir, ".envrc", ".nenvrc", ".env") + } +- return findUp(searchDir, ".envrc") ++ return findUp(searchDir, ".envrc", ".nenvrc") + } + + func findUp(searchDir string, fileNames ...string) (path string) { +-- +2.55.0 + diff --git a/pkgs/by-name/di/direnv-patched/package.nix b/pkgs/by-name/di/direnv-patched/package.nix new file mode 100644 index 00000000..64f55bba --- /dev/null +++ b/pkgs/by-name/di/direnv-patched/package.nix @@ -0,0 +1,10 @@ +{direnv}: +direnv.overrideAttrs (final: prev: { + pname = "${prev.pname}-patched"; + + patches = + (prev.patches or []) + ++ [ + ./0001-rc-Also-consider-.nenvrc-files.patch + ]; +}) diff --git a/pkgs/by-name/fi/fish-patched/Cargo.lock b/pkgs/by-name/fi/fish-patched/Cargo.lock new file mode 100644 index 00000000..1814ae12 --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/Cargo.lock @@ -0,0 +1,3551 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" + +[[package]] +name = "assert_matches" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" + +[[package]] +name = "async-trait" +version = "0.1.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "axum" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" +dependencies = [ + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "serde_core", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "beef" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" + +[[package]] +name = "bitflags" +version = "2.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "bstr" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb31b46c14244e20ee9984b11bf5c992b91fb6939fea616e3512c8baecdbe5f" +dependencies = [ + "memchr", + "serde_core", +] + +[[package]] +name = "bumpalo" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" + +[[package]] +name = "cc" +version = "1.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + +[[package]] +name = "chacha20" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core", +] + +[[package]] +name = "clap" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_complete" +version = "4.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be2ad0423bdbbb0e25bc89add796f3559706d4a95e1bc98e4d9662a957b6a19" +dependencies = [ + "clap", + "clap_lex", + "is_executable", + "shlex", +] + +[[package]] +name = "clap_derive" +version = "4.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "clap_lex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "const-oid" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c" + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" + +[[package]] +name = "crossbeam-deque" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "crypto-common" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" +dependencies = [ + "hybrid-array", +] + +[[package]] +name = "ctutils" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" +dependencies = [ + "cmov", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "serde_core", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common 0.1.6", +] + +[[package]] +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.1", + "const-oid", + "crypto-common 0.2.2", + "ctutils", +] + +[[package]] +name = "directories" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "either" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" +dependencies = [ + "serde", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "etcetera" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de48cc4d1c1d97a20fd819def54b890cadde72ed3ad0c614822a0a433361be96" +dependencies = [ + "cfg-if", + "windows-sys 0.61.2", +] + +[[package]] +name = "event-listener" +version = "5.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" +dependencies = [ + "parking", + "pin-project-lite", +] + +[[package]] +name = "eyre" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08309dbcc659c5549a24ddb9b27027640641b282ef5768267c7e675558986a3" +dependencies = [ + "autocfg", + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[package]] +name = "find-msvc-tools" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" + +[[package]] +name = "fish" +version = "4.8.1" +dependencies = [ + "assert_matches", + "bitflags", + "cc", + "cfg-if", + "errno", + "fish-build-helper", + "fish-build-man-pages", + "fish-color", + "fish-common", + "fish-fallback", + "fish-feature-flags", + "fish-fluent", + "fish-fluent-extraction", + "fish-gettext", + "fish-gettext-extraction", + "fish-gettext-mo-file-parser", + "fish-localization", + "fish-printf", + "fish-tempfile", + "fish-util", + "fish-wcstringutil", + "fish-wgetopt", + "fish-widecharwidth", + "fish-widestring", + "fluent", + "itertools", + "libc", + "lru", + "macro_rules_attribute", + "nix 0.31.3", + "num-traits", + "once_cell", + "pcre2", + "phf_codegen", + "portable-atomic", + "rand", + "rsconf", + "rust-embed", + "rustc_version", + "serial_test", + "strum_macros", + "tokio", + "turtle-api", + "unix_path", + "uuid", + "xterm-color", +] + +[[package]] +name = "fish-build-helper" +version = "0.0.0" +dependencies = [ + "rsconf", +] + +[[package]] +name = "fish-build-man-pages" +version = "0.0.0" +dependencies = [ + "fish-build-helper", + "rsconf", +] + +[[package]] +name = "fish-color" +version = "0.0.0" +dependencies = [ + "fish-common", + "fish-widestring", +] + +[[package]] +name = "fish-common" +version = "0.0.0" +dependencies = [ + "bitflags", + "fish-build-helper", + "fish-feature-flags", + "fish-widestring", + "libc", + "nix 0.31.3", + "rsconf", +] + +[[package]] +name = "fish-fallback" +version = "0.0.0" +dependencies = [ + "fish-build-helper", + "fish-common", + "fish-widecharwidth", + "fish-widestring", + "libc", + "rsconf", + "widestring", +] + +[[package]] +name = "fish-feature-flags" +version = "0.0.0" +dependencies = [ + "fish-widestring", +] + +[[package]] +name = "fish-fluent" +version = "0.0.0" +dependencies = [ + "cfg-if", + "fish-build-helper", + "fish-fluent-extraction", + "fish-localization", + "fluent", + "fluent-ftl-tools", + "rust-embed", + "unic-langid", + "widestring", +] + +[[package]] +name = "fish-fluent-extraction" +version = "0.0.0" +dependencies = [ + "fish-tempfile", + "fluent-ftl-tools", + "fluent-syntax", + "proc-macro2", + "rsconf", + "syn 2.0.119", +] + +[[package]] +name = "fish-gettext" +version = "0.0.0" +dependencies = [ + "fish-gettext-maps", + "fish-localization", + "phf", +] + +[[package]] +name = "fish-gettext-extraction" +version = "0.0.0" +dependencies = [ + "fish-tempfile", + "proc-macro2", + "rsconf", +] + +[[package]] +name = "fish-gettext-maps" +version = "0.0.0" +dependencies = [ + "fish-build-helper", + "fish-gettext-mo-file-parser", + "fish-localization", + "phf", + "phf_codegen", + "rsconf", +] + +[[package]] +name = "fish-gettext-mo-file-parser" +version = "0.0.0" + +[[package]] +name = "fish-localization" +version = "0.0.0" +dependencies = [ + "fish-build-helper", + "phf_shared", +] + +[[package]] +name = "fish-printf" +version = "0.2.1" +dependencies = [ + "assert_matches", + "libc", + "unicode-segmentation", + "unicode-width 0.2.2", + "widestring", +] + +[[package]] +name = "fish-tempfile" +version = "0.0.0" +dependencies = [ + "nix 0.31.3", + "rand", +] + +[[package]] +name = "fish-util" +version = "0.0.0" +dependencies = [ + "errno", + "fish-widestring", + "libc", + "nix 0.31.3", + "rand", +] + +[[package]] +name = "fish-wcstringutil" +version = "0.0.0" +dependencies = [ + "fish-build-helper", + "fish-fallback", + "fish-widestring", + "rsconf", +] + +[[package]] +name = "fish-wgetopt" +version = "0.0.0" +dependencies = [ + "assert_matches", + "fish-wcstringutil", + "fish-widestring", +] + +[[package]] +name = "fish-widecharwidth" +version = "0.0.0" + +[[package]] +name = "fish-widestring" +version = "0.0.0" +dependencies = [ + "libc", + "unicode-width 0.2.2", + "widestring", +] + +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + +[[package]] +name = "fluent" +version = "0.17.0" +source = "git+https://github.com/danielrainer/fluent-rs?rev=cf712bced280b217b6307edabc2089b3e57204ab#cf712bced280b217b6307edabc2089b3e57204ab" +dependencies = [ + "fluent-bundle", + "unic-langid", +] + +[[package]] +name = "fluent-bundle" +version = "0.16.0" +source = "git+https://github.com/danielrainer/fluent-rs?rev=cf712bced280b217b6307edabc2089b3e57204ab#cf712bced280b217b6307edabc2089b3e57204ab" +dependencies = [ + "fluent-langneg", + "fluent-syntax", + "intl-memoizer", + "intl_pluralrules", + "rustc-hash", + "self_cell", + "smallvec", + "unic-langid", +] + +[[package]] +name = "fluent-ftl-tools" +version = "0.1.0" +source = "git+https://codeberg.org/danielrainer/fluent-ftl-tools?rev=5917664c8f2e4928ef1e480ff5c13bbe1e226066#5917664c8f2e4928ef1e480ff5c13bbe1e226066" +dependencies = [ + "anyhow", + "fluent", + "fluent-syntax", + "gettext-po-file-parser", + "nix 0.30.1", + "unic-langid", +] + +[[package]] +name = "fluent-langneg" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eebbe59450baee8282d71676f3bfed5689aeab00b27545e83e5f14b1195e8b0" +dependencies = [ + "unic-langid", +] + +[[package]] +name = "fluent-syntax" +version = "0.12.0" +source = "git+https://github.com/danielrainer/fluent-rs?rev=cf712bced280b217b6307edabc2089b3e57204ab#cf712bced280b217b6307edabc2089b3e57204ab" +dependencies = [ + "memchr", + "thiserror", +] + +[[package]] +name = "flume" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" +dependencies = [ + "futures-core", + "futures-sink", + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" + +[[package]] +name = "futures-executor" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + +[[package]] +name = "futures-io" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" + +[[package]] +name = "futures-sink" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" + +[[package]] +name = "futures-task" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" + +[[package]] +name = "futures-util" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "rand_core", +] + +[[package]] +name = "gettext-po-file-parser" +version = "0.0.0" +source = "git+https://codeberg.org/danielrainer/fluent-ftl-tools?rev=5917664c8f2e4928ef1e480ff5c13bbe1e226066#5917664c8f2e4928ef1e480ff5c13bbe1e226066" +dependencies = [ + "anyhow", +] + +[[package]] +name = "globset" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47d37d2ae4464254884b60ab7071be2b876a9c35b696bd018ddcc76847309cd" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "h2" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "839c0e8a181239723652be9062bb56ca5bf5f64011f73b623f6f4fc59086a228" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashlink" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824e001ac4f3012dd16a264bec811403a67ca9deb6c102fc5049b32c4574b35f" +dependencies = [ + "hashbrown 0.16.1", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" +dependencies = [ + "digest 0.11.3", +] + +[[package]] +name = "http" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hybrid-array" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" +dependencies = [ + "typenum", +] + +[[package]] +name = "hyper" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "libc", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "ignore" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b009b6744c1445efd7244084e25e498636412effb6760b55067553baa925cc7" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "indenter" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.1", +] + +[[package]] +name = "intl-memoizer" +version = "0.5.3" +source = "git+https://github.com/danielrainer/fluent-rs?rev=cf712bced280b217b6307edabc2089b3e57204ab#cf712bced280b217b6307edabc2089b3e57204ab" +dependencies = [ + "type-map", + "unic-langid", +] + +[[package]] +name = "intl_pluralrules" +version = "7.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972" +dependencies = [ + "unic-langid", +] + +[[package]] +name = "is_executable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" +dependencies = [ + "cfg-if", + "futures-util", + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.189" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" + +[[package]] +name = "libredox" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28d0a00925a9f930d679b6789b721e3a7f9ed110f41b86d2497caa780c3a070a" +dependencies = [ + "libc", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" + +[[package]] +name = "logos" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff472f899b4ec2d99161c51f60ff7075eeb3097069a36050d8037a6325eb8154" +dependencies = [ + "logos-derive 0.15.1", +] + +[[package]] +name = "logos" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2c55a318a87600ea870ff8c2012148b44bf18b74fad48d0f835c38c7d07c5f" +dependencies = [ + "logos-derive 0.16.1", +] + +[[package]] +name = "logos-codegen" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "192a3a2b90b0c05b27a0b2c43eecdb7c415e29243acc3f89cc8247a5b693045c" +dependencies = [ + "beef", + "fnv", + "lazy_static", + "proc-macro2", + "quote", + "regex-syntax", + "rustc_version", + "syn 2.0.119", +] + +[[package]] +name = "logos-codegen" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58b3ffaa284e1350d017a57d04ada118c4583cf260c8fb01e0fe28a2e9cf8970" +dependencies = [ + "fnv", + "proc-macro2", + "quote", + "regex-automata", + "regex-syntax", + "syn 2.0.119", +] + +[[package]] +name = "logos-derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470" +dependencies = [ + "logos-codegen 0.15.1", +] + +[[package]] +name = "logos-derive" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52d3a9855747c17eaf4383823f135220716ab49bea5fbea7dd42cc9a92f8aa31" +dependencies = [ + "logos-codegen 0.16.1", +] + +[[package]] +name = "lru" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2f2f9b4ba7e6b24d95e7e899329d35be83bcded72c8540cdd5368932d1d90a" +dependencies = [ + "hashbrown 0.17.1", +] + +[[package]] +name = "macro_rules_attribute" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3ae8f6d608c795738406608304d30a2dfbdc8e58e44f7ba43236da5208ded3c" +dependencies = [ + "macro_rules_attribute-proc_macro", + "pastey", +] + +[[package]] +name = "macro_rules_attribute-proc_macro" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc04a4c58212d57930a24bf47d3fa87485264a3a054e9c10e042eb373573ad3c" + +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + +[[package]] +name = "md-5" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98" +dependencies = [ + "cfg-if", + "digest 0.11.3", +] + +[[package]] +name = "memchr" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" + +[[package]] +name = "miette" +version = "7.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" +dependencies = [ + "cfg-if", + "miette-derive", + "unicode-width 0.1.14", +] + +[[package]] +name = "miette-derive" +version = "7.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "mio" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nix" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags", +] + +[[package]] +name = "objc2-system-configuration" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7216bd11cbda54ccabcab84d523dc93b858ec75ecfb3a7d89513fa22464da396" +dependencies = [ + "objc2-core-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link", +] + +[[package]] +name = "pastey" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" + +[[package]] +name = "pcre2" +version = "0.2.9" +source = "git+https://github.com/fish-shell/rust-pcre2?tag=0.2.9-utf32#85b7afba1a9d9bd445779800e5bcafeb732e4421" +dependencies = [ + "libc", + "log", + "pcre2-sys", +] + +[[package]] +name = "pcre2-sys" +version = "0.2.9" +source = "git+https://github.com/fish-shell/rust-pcre2?tag=0.2.9-utf32#85b7afba1a9d9bd445779800e5bcafeb732e4421" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "petgraph" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" +dependencies = [ + "fixedbitset", + "hashbrown 0.15.5", + "indexmap", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" + +[[package]] +name = "portable-atomic" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" + +[[package]] +name = "potential_utf" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.119", +] + +[[package]] +name = "proc-macro2" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" +dependencies = [ + "heck", + "itertools", + "log", + "multimap", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "pulldown-cmark", + "pulldown-cmark-to-cmark", + "regex", + "syn 2.0.119", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" +dependencies = [ + "anyhow", + "itertools", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "prost-reflect" +version = "0.16.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01b80ea363c31af2de2b92e3c07ed1156628f7838c4afb4df75ee78a37fedbd1" +dependencies = [ + "logos 0.16.1", + "miette", + "prost", + "prost-types", +] + +[[package]] +name = "prost-types" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" +dependencies = [ + "prost", +] + +[[package]] +name = "protox" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f25a07a73c6717f0b9bbbd685918f5df9815f7efba450b83d9c9dea41f0e3a1" +dependencies = [ + "bytes", + "miette", + "prost", + "prost-reflect", + "prost-types", + "protox-parse", + "thiserror", +] + +[[package]] +name = "protox-parse" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "072eee358134396a4643dff81cfff1c255c9fbd3fb296be14bdb6a26f9156366" +dependencies = [ + "logos 0.15.1", + "miette", + "prost-types", + "thiserror", +] + +[[package]] +name = "pulldown-cmark" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" +dependencies = [ + "bitflags", + "memchr", + "unicase", +] + +[[package]] +name = "pulldown-cmark-to-cmark" +version = "22.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab1ad36992cead65f02aa399a373a42730922f1525d988172634fdefdecb8a60" +dependencies = [ + "pulldown-cmark", +] + +[[package]] +name = "quote" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rsconf" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06cbd984e96cc891aa018958ac3d09986c0ea7635eedfff670b99a90970f159f" +dependencies = [ + "cc", +] + +[[package]] +name = "rust-embed" +version = "8.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9e7760e252aaba7b09f4be00e36476cf585bdb68a53552ac954cdf504ab4bc9" +dependencies = [ + "rust-embed-impl", + "rust-embed-utils", + "walkdir", +] + +[[package]] +name = "rust-embed-impl" +version = "8.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bcfc4d6f53af43755f7a723e4b6b8794fcce052a178dd8c6c1dadc5f5343097" +dependencies = [ + "mime_guess", + "proc-macro2", + "quote", + "rust-embed-utils", + "shellexpand", + "syn 2.0.119", + "walkdir", +] + +[[package]] +name = "rust-embed-utils" +version = "8.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ffa149f6aa81b58a5b3011d01a857c4ed12c7a732d2c51947a4c7c692185f0" +dependencies = [ + "globset", + "sha2 0.11.0", + "walkdir", +] + +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls" +version = "0.23.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" +dependencies = [ + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "self_cell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab42ca02749e120097e328d91d415325bdf43b1c72c4c8badf37375fe40a813" + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + +[[package]] +name = "serde" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serial_test" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "699f4197115b8a7e7ff19c9a315a4bd6fffec26cc4626ef45ecaea389e081c6d" +dependencies = [ + "once_cell", + "parking_lot", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94e153fc76e1c6a068703d6d29c508a0b15c061c4b7e43da59cc097bc342673c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "sha1" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures 0.2.17", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", +] + +[[package]] +name = "shellexpand" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32824fab5e16e6c4d86dc1ba84489390419a39f97699852b66480bb87d297ed8" +dependencies = [ + "dirs", +] + +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "spin" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" +dependencies = [ + "lock_api", +] + +[[package]] +name = "sqlx" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "378620ccc25c62c89d8be1c819e76a88d59bdcc3304733330788948e619bfd71" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b44e85bf579a8eeb4ceaa77a3a523baf2bf0e9bac7e40f405d537b5d2d5ccb" +dependencies = [ + "base64", + "bytes", + "cfg-if", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashbrown 0.16.1", + "hashlink", + "indexmap", + "log", + "memchr", + "percent-encoding", + "rustls", + "serde", + "serde_json", + "sha2 0.10.9", + "smallvec", + "thiserror", + "time", + "tokio", + "tokio-stream", + "tracing", + "url", + "uuid", + "webpki-roots", +] + +[[package]] +name = "sqlx-macros" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd2b84f2bc39a5705ef27ec785a11c934a41bbd4a24941e257927cddc26b60bf" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 2.0.119", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb8d96de5fdc85a5c4ec813432b523ec637e80ba98f046555f75f7908ddac7c3" +dependencies = [ + "cfg-if", + "dotenvy", + "either", + "heck", + "hex", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2 0.10.9", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn 2.0.119", + "thiserror", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90b8020fe17c5f2c245bfa2505d7ef59c5604839527c740266ad2214acebea27" +dependencies = [ + "bitflags", + "byteorder", + "bytes", + "crc", + "digest 0.11.3", + "dotenvy", + "either", + "futures-core", + "futures-util", + "generic-array", + "log", + "percent-encoding", + "serde", + "sha1", + "sha2 0.11.0", + "sqlx-core", + "thiserror", + "time", + "tracing", + "uuid", +] + +[[package]] +name = "sqlx-postgres" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87a2bdd6e83f6b3ea525ca9fee568030508b58355a43d0b2c1674d5f79dcd65e" +dependencies = [ + "atoi", + "base64", + "bitflags", + "byteorder", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-util", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "rand", + "serde", + "serde_json", + "sha2 0.11.0", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "time", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488e99c397a62007e4229aec669a179816339afc6d2620ca6fa420dbee2e982c" +dependencies = [ + "atoi", + "flume", + "form_urlencoded", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "regex", + "serde", + "sqlx-core", + "thiserror", + "time", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.3", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "thiserror" +version = "2.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +dependencies = [ + "deranged", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + +[[package]] +name = "time-macros" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" +dependencies = [ + "displaydoc", + "serde_core", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "tokio-stream" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "libc", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tonic" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fec7c61a0695dc1887c1b53952990f3ad2e3a31453e1f49f10e75424943a93ec" +dependencies = [ + "async-trait", + "axum", + "base64", + "bytes", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "socket2", + "sync_wrapper", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1882ac3bf5ef12877d7ed57aad87e75154c11931c2ba7e6cde5e22d63522c734" +dependencies = [ + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tonic-prost" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" +dependencies = [ + "bytes", + "prost", + "tonic", +] + +[[package]] +name = "tonic-prost-build" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3144df636917574672e93d0f56d7edec49f90305749c668df5101751bb8f95a" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "prost-types", + "quote", + "syn 2.0.119", + "tempfile", + "tonic-build", +] + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "indexmap", + "pin-project-lite", + "slab", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "turtle-api" +version = "20.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b95568c8b817de1e74b4661e760329a36c11c36da4e1bbb94f7fe16c19748b1d" +dependencies = [ + "eyre", + "hyper-util", + "prost", + "protox", + "regex", + "sqlx", + "time", + "tokio", + "tonic", + "tonic-prost", + "tonic-prost-build", + "tower", + "turtle-common", + "typed-builder", + "uuid", +] + +[[package]] +name = "turtle-common" +version = "20.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e3ea95176431c038196cd8ce808e99e85096d3fe5ec06da0562cf2e310e701" +dependencies = [ + "directories", + "eyre", + "semver", + "serde", + "sqlx", + "time", + "typed-builder", + "uuid", + "whoami", +] + +[[package]] +name = "type-map" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" +dependencies = [ + "rustc-hash", +] + +[[package]] +name = "typed-builder" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31aa81521b70f94402501d848ccc0ecaa8f93c8eb6999eb9747e72287757ffda" +dependencies = [ + "typed-builder-macro", +] + +[[package]] +name = "typed-builder-macro" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076a02dc54dd46795c2e9c8282ed40bcfb1e22747e955de9389a1de28190fb26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "typenum" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "unic-langid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ba52c9b05311f4f6e62d5d9d46f094bd6e84cb8df7b3ef952748d752a7d05" +dependencies = [ + "unic-langid-impl", +] + +[[package]] +name = "unic-langid-impl" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658" +dependencies = [ + "tinystr", +] + +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" + +[[package]] +name = "unicode-segmentation" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "unix_path" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af8e291873ae77c4c8d9c9b34d0bee68a35b048fb39c263a5155e0e353783eaf" +dependencies = [ + "unix_str", +] + +[[package]] +name = "unix_str" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ace0b4755d0a2959962769239d56267f8a024fef2d9b32666b3dcd0946b0906" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f053576934f05a761a402421fbbe3d425d9366f75f978806a037b3ca481abecc" +dependencies = [ + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasite" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66fe902b4a6b8028a753d5424909b764ccf79b7a209eac9bf97e59cda9f71a42" +dependencies = [ + "wasi 0.14.7+wasi-0.2.4", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.119", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "web-sys" +version = "0.3.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "whoami" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626c4bac6755d76ffc12cb01b2eac751db1996b9e0041de9aa02c8c211ddc82c" +dependencies = [ + "libc", + "libredox", + "objc2-system-configuration", + "wasite", + "web-sys", +] + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" + +[[package]] +name = "xtask" +version = "0.0.0" +dependencies = [ + "anstyle", + "anyhow", + "clap", + "clap_complete", + "fish-build-helper", + "fish-common", + "fish-tempfile", + "fish-widestring", + "fluent-ftl-tools", + "fluent-syntax", + "ignore", + "pcre2", + "walkdir", +] + +[[package]] +name = "xterm-color" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7008a9d8ba97a7e47d9b2df63fcdb8dade303010c5a7cd5bf2469d4da6eba673" + +[[package]] +name = "yoke" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" + +[[package]] +name = "zerotrie" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" +dependencies = [ + "serde", + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/pkgs/by-name/fi/fish-patched/package.nix b/pkgs/by-name/fi/fish-patched/package.nix new file mode 100644 index 00000000..9d4bac75 --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/package.nix @@ -0,0 +1,37 @@ +{ + fish, + rustPlatform, + lib, +}: let + loadedRustPlatform = { + inherit (rustPlatform) cargoSetupHook; + fetchCargoVendor = loadedFetchCargoVendor; + }; + + loadedFetchCargoVendor = prev: + rustPlatform.importCargoLock + { + lockFile = ./Cargo.lock; + allowBuiltinFetchGit = true; + }; +in + (fish.override { + rustPlatform = loadedRustPlatform; + }).overrideAttrs (prev: { + pname = "${prev.pname}-patched"; + + postPatch = '' + rm Cargo.lock + cat ${./Cargo.lock} > Cargo.lock + ''; + + doCheck = false; + + patches = + (prev.patches or []) + ++ ( + builtins.map (name: ./patches + "/${name}") + (builtins.attrNames + (builtins.readDir ./patches)) + ); + }) diff --git a/pkgs/by-name/fi/fish-patched/patches/0003-feat-history-Add-turtle-as-history-backend.patch b/pkgs/by-name/fi/fish-patched/patches/0003-feat-history-Add-turtle-as-history-backend.patch new file mode 100644 index 00000000..8eeb03b4 --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/patches/0003-feat-history-Add-turtle-as-history-backend.patch @@ -0,0 +1,843 @@ +From 26e8fbb5a24dd8b9cac67adcb59e714b32f95aa6 Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz <benedikt.peetz@b-peetz.de> +Date: Sat, 22 Aug 2026 22:42:44 +0200 +Subject: [PATCH 03/10] feat(history): Add turtle as history backend + +--- + Cargo.toml | 4 + + src/history/history.rs | 285 ++--------------------------- + src/history/mod.rs | 2 + + src/history/turtle.rs | 400 +++++++++++++++++++++++++++++++++++++++++ + src/parser.rs | 5 + + src/reader/reader.rs | 4 +- + 6 files changed, 424 insertions(+), 276 deletions(-) + create mode 100644 src/history/turtle.rs + +diff --git a/Cargo.toml b/Cargo.toml +index aa91b61b7..137fbed24 100644 +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -11,6 +11,7 @@ repository = "https://github.com/fish-shell/fish-shell" + license = "GPL-2.0-only AND LGPL-2.0-or-later AND MIT AND PSF-2.0" + + [workspace.dependencies] ++turtle-api = { version = "20.0.0" } + anstyle = "1.0.13" + anyhow = "1.0.102" + assert_matches = "1.5.0" +@@ -115,6 +116,9 @@ homepage = "https://fishshell.com" + readme = "README.rst" + + [dependencies] ++turtle-api.workspace = true ++tokio = { version = "1.53.1", features = ["rt"] } ++uuid = { version = "1.24.0", features = ["v7"] } + assert_matches.workspace = true + bitflags.workspace = true + cfg-if.workspace = true +diff --git a/src/history/history.rs b/src/history/history.rs +index e1d04ad49..90cbfe6a9 100644 +--- a/src/history/history.rs ++++ b/src/history/history.rs +@@ -14,6 +14,7 @@ + //! `src/fs.rs`. By default, `flock()` is used for locking. If that is unavailable, an imperfect + //! fallback solution attempts to detect races and retries if a race is detected. + ++use crate::history::turtle::HistoryDb; + use crate::{ + ast::{self, Kind, Node as _}, + common::valid_var_name, +@@ -334,7 +335,7 @@ struct HistoryImpl { + /// Deleted item contents, and the scope of the deletion. + deleted_items: HashMap<WString, DeletionScope>, + /// The history file contents. +- file_contents: Option<HistoryFile>, ++ file_contents: Option<HistoryDb>, + /// The file ID of the history file. + history_file_id: FileId, // INVALID_FILE_ID + /// The boundary timestamp distinguishes old items from new items. Items whose timestamps are <= +@@ -358,6 +359,8 @@ fn history_file_path(&self) -> std::io::Result<Option<WString>> { + return Ok(None); + } + ++ return Ok(Some(L!("/run/user/1000/turtle.sock").to_owned())); ++ + let mut path = if let Some(custom_dir) = &self.custom_directory { + custom_dir.clone() + } else { +@@ -422,10 +425,7 @@ fn add(&mut self, item: HistoryItem, pending: bool, do_save: bool) { + } + + /// Internal function. +- fn clear_file_state(&mut self) { +- // Erase everything we know about our file. +- self.file_contents = None; +- } ++ fn clear_file_state(&mut self) {} + + /// Returns a timestamp for new items - see the implementation for a subtlety. + fn timestamps_as_of_now(&self) -> Timestamps { +@@ -451,32 +451,16 @@ fn timestamps_as_of_now(&self) -> Timestamps { + + /// Loads old items if necessary. + /// Return a reference to the loaded history file. +- fn load_old_if_needed(&mut self) -> &HistoryFile { ++ fn load_old_if_needed(&mut self) -> &HistoryDb { + if let Some(ref file_contents) = self.file_contents { + return file_contents; + } + let Ok(Some(history_path)) = self.history_file_path() else { +- return self.file_contents.insert(HistoryFile::create_empty()); ++ return self.file_contents.insert(HistoryDb::create_empty()); + }; + + let _profiler = TimeProfiler::new("load_old"); +- let file_contents = match lock_and_load(&history_path, RawHistoryFile::create) { +- Ok((file_id, history_file)) => { +- self.history_file_id = file_id; +- let _profiler = TimeProfiler::new("populate_from_file_contents"); +- let file_contents = history_file.decode(Some(self.boundary_timestamp)); +- flogf!( +- history, +- "Loaded %u old items", +- file_contents.offsets().len() +- ); +- file_contents +- } +- Err(e) => { +- flog!(history_file, "Error reading from history file:", e); +- HistoryFile::create_empty() +- } +- }; ++ let file_contents = HistoryDb::load(&history_path, self.boundary_timestamp); + self.file_contents.insert(file_contents) + } + +@@ -524,260 +508,11 @@ fn remove_ephemeral_items(&mut self) { + usize::min(self.first_unwritten_new_item_index, self.new_items.len()); + } + +- /// Given an existing history file, write a new history file to `dst`. +- fn rewrite_to_temporary_file( +- &self, +- existing_file: &File, +- dst: &mut File, +- ) -> std::io::Result<()> { +- // We are reading FROM existing_file and writing TO dst +- +- // Make an LRU cache to save only the last N elements. +- +- /// When we rewrite the history, the number of items we keep. +- const HISTORY_SAVE_MAX: NonZeroUsize = NonZeroUsize::new(1024 * 256).unwrap(); +- let mut lru = LruCache::new(HISTORY_SAVE_MAX); +- +- // Read in existing items (which may have changed out from underneath us, so don't trust our +- // old file contents). +- let file_id = file_id_for_file(existing_file); +- if let Ok(local_file) = RawHistoryFile::create(existing_file, file_id) { +- for offset in local_file.offsets(None) { +- // Try decoding an old item. +- let Some(old_item) = local_file.decode_item(offset) else { +- continue; +- }; +- if old_item.is_empty() { +- continue; +- } +- +- // Check if this item should be deleted. +- if let Some(&scope) = self.deleted_items.get(old_item.str()) { +- // If old item is newer than session always erase if in deleted. +- // If old item is older and in deleted items don't erase if added by clear_session. +- let delete = old_item.first_added_timestamp() > self.boundary_timestamp +- || scope == DeletionScope::AllSessions; +- if delete { +- continue; +- } +- } +- lru.add_item(old_item); +- } +- } +- +- // Insert any unwritten new items +- for item in self +- .new_items +- .iter() +- .skip(self.first_unwritten_new_item_index) +- { +- if item.should_write_to_disk() { +- lru.add_item(item.clone()); +- } +- } +- +- // Stable-sort our items by timestamp +- // This is because we may have read "old" items with a later timestamp than our "new" items +- // This is the essential step that roughly orders items by history +- let mut items: Vec<_> = lru.into_iter().map(|(_key, item)| item).collect(); +- items.sort_by_key(HistoryItem::last_added_timestamp); +- +- /// Default buffer size for flushing to the history file. +- const HISTORY_OUTPUT_BUFFER_SIZE: usize = 64 * 1024; +- // Write them out. +- let mut buffer = BufWriter::with_capacity(HISTORY_OUTPUT_BUFFER_SIZE + 128, dst); +- for item in items { +- item.write_to(&mut buffer)?; +- } +- buffer.flush()?; +- Ok(()) +- } +- +- /// Saves history by rewriting the file. +- fn save_internal_via_rewrite(&mut self, history_path: &wstr) -> std::io::Result<()> { +- flogf!( +- history, +- "Saving %u items via rewrite", +- self.new_items.len() - self.first_unwritten_new_item_index +- ); +- +- let rewrite = +- |old_file: &File, tmp_file: &mut File| -> std::io::Result<PotentialUpdate<()>> { +- let result = self.rewrite_to_temporary_file(old_file, tmp_file); +- if let Err(err) = result { +- flog!( +- history_file, +- "Error writing to temporary history file:", +- err +- ); +- return Err(err); +- } +- Ok(PotentialUpdate { +- do_save: true, +- data: (), +- }) +- }; +- +- let (file_id, _) = rewrite_via_temporary_file(history_path, rewrite)?; +- self.history_file_id = file_id; +- +- // We've saved everything, so we have no more unsaved items. +- self.first_unwritten_new_item_index = self.new_items.len(); +- +- // We deleted our deleted items. +- self.deleted_items.clear(); +- +- // Our history has been written to the file, so clear our state so we can re-reference the +- // file. +- self.clear_file_state(); +- +- Ok(()) +- } +- +- /// Saves history by appending to the file. +- fn save_internal_via_appending(&mut self, history_path: &wstr) -> std::io::Result<()> { +- flogf!( +- history, +- "Saving %u items via appending", +- self.new_items.len() - self.first_unwritten_new_item_index +- ); +- // No deleting allowed. +- assert!(self.deleted_items.is_empty()); +- +- let mut locked_history_file = +- LockedFile::new(LockingMode::Exclusive(WriteMethod::Append), history_path)?; +- +- // Check if the file was modified since it was last read. +- // If someone has replaced the file, forget our file state. +- if file_id_for_file(locked_history_file.get()) != self.history_file_id { +- self.clear_file_state(); +- } +- +- // We took the exclusive lock. Append to the file. +- // Note that this is sketchy for a few reasons: +- // - Another shell may have appended its own items with a later timestamp, so our file may +- // no longer be sorted by timestamp. +- // - Another shell may have appended the same items, so our file may now contain +- // duplicates. +- // +- // Originally we always rewrote the file on saving, which avoided both of these problems. +- // However, appending allows us to save history after every command, which is nice! +- // +- // Periodically we "clean up" the file by rewriting it, so that most of the time it doesn't +- // have duplicates, although we don't yet sort by timestamp (the timestamp isn't really used +- // for much anyways). +- +- // So far so good. Write all items at or after first_unwritten_new_item_index. Note that we +- // write even a pending item - pending items are ignored by history within the command +- // itself, but should still be written to the file. +- // Use a small buffer size for appending, as we usually only have 1 item. +- // Buffer everything and then write it all at once to avoid tearing writes (O_APPEND). +- let mut buffer = Vec::new(); +- let mut new_first_index = self.first_unwritten_new_item_index; +- while new_first_index < self.new_items.len() { +- let item = &self.new_items[new_first_index]; +- if item.should_write_to_disk() { +- // Can't error writing to a buffer. +- item.write_to(&mut buffer).unwrap(); +- } +- // We wrote or skipped this item, hooray. +- new_first_index += 1; +- } +- locked_history_file.get_mut().write_all(&buffer)?; +- fsync(locked_history_file.get())?; +- self.first_unwritten_new_item_index = new_first_index; +- +- // Since we just modified the file, update our history_file_id to match its current state +- // Otherwise we'll think the file has been changed by someone else the next time we go to +- // write. +- // We don't update `self.file_contents` since we only appended to the file, and everything we +- // appended remains in our new_items +- self.history_file_id = file_id_for_file(locked_history_file.get()); +- +- Ok(()) +- } +- + /// Saves history. +- fn save(&mut self, vacuum: bool) { +- // Nothing to do if there's no new items. +- if self.first_unwritten_new_item_index >= self.new_items.len() +- && self.deleted_items.is_empty() +- { +- return; +- } +- +- // Compact our new items so we don't have duplicates. +- self.compact_new_items(); +- +- if self.name.is_empty() { +- // We're in the "incognito" mode. Pretend we've saved the history. +- self.first_unwritten_new_item_index = self.new_items.len(); +- self.deleted_items.clear(); +- self.clear_file_state(); +- return; +- } +- +- let history_path = match self.history_file_path() { +- Ok(history_path) => history_path.unwrap(), +- Err(e) => { +- flog!(history, "Saving history failed:", e); +- return; +- } +- }; +- +- // Try saving. If we have items to delete, we have to rewrite the file. If we do not, we can +- // append to it. +- let mut ok = false; +- if !vacuum && self.deleted_items.is_empty() { +- // Try doing a fast append. +- if let Err(e) = self.save_internal_via_appending(&history_path) { +- flog!(history, "Appending to history failed:", e); +- } else { +- ok = true; +- } +- } +- if !ok { +- // We did not or could not append; rewrite the file ("vacuum" it). +- if let Err(e) = self.save_internal_via_rewrite(&history_path) { +- flog!(history, "Rewriting history failed:", e); +- } +- } +- } ++ fn save(&mut self, vacuum: bool) {} + + /// Saves history unless doing so is disabled. +- fn save_unless_disabled(&mut self) { +- // Respect disable_automatic_save_counter. +- if self.disable_automatic_save_counter > 0 { +- return; +- } +- +- // We may or may not vacuum. We try to vacuum every `VACUUM_FREQUENCY` items, but start the +- // countdown at a random number so that even if the user never runs more than 25 commands, we'll +- // eventually vacuum. If countdown_to_vacuum is None, it means we haven't yet picked a value for +- // the counter. +- let countdown_to_vacuum = self +- .countdown_to_vacuum +- .get_or_insert_with(|| rand::rng().random_range(0..VACUUM_FREQUENCY)); +- +- // Determine if we're going to vacuum. +- let mut vacuum = false; +- if *countdown_to_vacuum == 0 { +- *countdown_to_vacuum = VACUUM_FREQUENCY; +- vacuum = true; +- } +- +- // Update our countdown. +- assert!(*countdown_to_vacuum > 0); +- *countdown_to_vacuum -= 1; +- +- // This might be a good candidate for moving to a background thread. +- let _profiler = TimeProfiler::new(if vacuum { +- "save vacuum" +- } else { +- "save no vacuum" +- }); +- self.save(vacuum); +- } ++ fn save_unless_disabled(&mut self) {} + + fn new(name: WString, custom_directory: Option<WString>) -> Self { + Self { +diff --git a/src/history/mod.rs b/src/history/mod.rs +index 7ef4d4417..0de867740 100644 +--- a/src/history/mod.rs ++++ b/src/history/mod.rs +@@ -3,4 +3,6 @@ + mod history; + mod yaml_backend; + ++pub(crate) mod turtle; ++ + pub use history::*; +diff --git a/src/history/turtle.rs b/src/history/turtle.rs +new file mode 100644 +index 000000000..ffcdea108 +--- /dev/null ++++ b/src/history/turtle.rs +@@ -0,0 +1,400 @@ ++use std::{ ++ collections::HashMap, ++ sync::{ ++ Arc, OnceLock, RwLock, ++ atomic::{AtomicBool, Ordering}, ++ mpsc, ++ }, ++ thread::{self, JoinHandle, Thread}, ++ time::{Duration, SystemTime, UNIX_EPOCH}, ++}; ++ ++use fish_widestring::{L, WString}; ++use turtle_api::{ ++ client::{HistoryClient, OffsetDateTime, Probe, Range}, ++ history::{History, HistoryId}, ++}; ++ ++use crate::{env::Environment as _, flog, flogf, history::HistoryItem}; ++ ++pub(crate) struct HistoryDb; ++ ++#[derive(Debug)] ++struct HistoryDbInner { ++ range: Option<Range>, ++ session: uuid::Uuid, ++ ++ loaded_history: Vec<History>, ++ ++ handler: Handler, ++} ++ ++impl HistoryDbInner { ++ fn loaded_history(&mut self) -> &[History] { ++ let should_wait = if self.loaded_history.is_empty() { ++ // We are probably running this the first time. ++ // Make sure, that we actually load something. ++ true ++ } else { ++ false ++ }; ++ ++ if NEW_LOADED_HISTORY_AVAILABLE.load(Ordering::Relaxed) || should_wait { ++ if let Some(pre_loaded_history) = self.handler.load_history_resp(should_wait) { ++ self.loaded_history = pre_loaded_history; ++ } ++ ++ flogf!( ++ history, ++ "Loaded history was requested, returning %d entries.", ++ self.loaded_history.len() ++ ); ++ ++ NEW_LOADED_HISTORY_AVAILABLE.store(false, Ordering::Relaxed); ++ } ++ ++ &self.loaded_history ++ } ++} ++ ++impl HistoryDb { ++ fn with_inner_mut<T>(mut fun: impl FnMut(&mut HistoryDbInner) -> T) -> T { ++ let mut inner = INNER.write().expect("Should not be poisioned"); ++ let inner = (*inner).get_mut().expect("Should be initialized"); ++ ++ let output = fun(inner); ++ ++ output ++ } ++} ++ ++impl HistoryDb { ++ /// Create an empty history file. ++ pub(super) fn create_empty() -> Self { ++ flog!(history, "turtle: Creating new empty hist"); ++ ++ Self ++ } ++ ++ /// Return the offsets of items in this file. ++ pub(super) fn offsets(&self) -> Vec<HistoryId> { ++ let out: Vec<_> = Self::with_inner_mut(|inner| { ++ inner ++ .loaded_history() ++ .iter() ++ .map(|h| h.id.clone()) ++ .collect() ++ }); ++ out ++ } ++ ++ /// Return whether this file is empty. ++ pub(super) fn is_empty(&self) -> bool { ++ self.offsets().is_empty() ++ } ++ ++ /// Load from on-disk file. ++ pub(super) fn load(history_path: &WString, _boundary_timestamp: SystemTime) -> Self { ++ flogf!(history, "turtle: Loading hist from %s", history_path); ++ ++ let inner = { ++ // let range = Some(Range { ++ // start: OffsetDateTime::from_unix_timestamp( ++ // boundary_timestamp ++ // .duration_since(UNIX_EPOCH) ++ // .expect("Also valid") ++ // .as_secs() as i64, ++ // ) ++ // .expect("Valid"), ++ // end: OffsetDateTime::now_local().unwrap_or_else(|_| OffsetDateTime::now_utc()), ++ // }); ++ let range = None; ++ ++ let handler = Handler::start(history_path.to_string()); ++ handler.emit(HandleHistoryCmd::Load { range }); ++ ++ let inner = HistoryDbInner { ++ session: uuid::Uuid::now_v7(), ++ range, ++ loaded_history: vec![], ++ handler, ++ }; ++ ++ inner ++ }; ++ ++ let static_inner = INNER.write().expect("should not be poisened"); ++ (*static_inner) ++ .set(inner) ++ .expect("Should not have been initialized before"); ++ ++ Self ++ } ++ ++ /// Decode an item at a given offset. ++ pub(super) fn decode_item(&self, id: HistoryId) -> Option<HistoryItem> { ++ Self::with_inner_mut(|inner| { ++ inner.loaded_history().iter().find(|h| h.id == id).map(|h| { ++ HistoryItem::new( ++ WString::from_str(&h.command), ++ super::Timestamps { ++ last_added: UNIX_EPOCH ++ + Duration::from_nanos_u128(h.timestamp.unix_timestamp_nanos() as u128), ++ first_added: UNIX_EPOCH ++ + Duration::from_nanos_u128(h.timestamp.unix_timestamp_nanos() as u128), ++ }, ++ super::PersistenceMode::Disk, ++ ) ++ }) ++ }) ++ } ++} ++ ++static INNER: RwLock<OnceLock<HistoryDbInner>> = RwLock::new(OnceLock::new()); ++ ++pub(crate) fn handle_preexec(parser: &mut crate::parser::Parser, command: WString) { ++ HistoryDb::with_inner_mut(|inner| { ++ let now = OffsetDateTime::now_local().expect("Should have local time zone"); ++ let command = command.to_string(); ++ let history: History = History::daemon() ++ .timestamp(now) ++ .command(command) ++ .cwd(parser.vars().get_pwd_slash().to_string()) ++ .session(inner.session) ++ .hostname( ++ parser ++ .vars() ++ .get(L!("hostname")) ++ .map_or(String::from("<unknown>"), |s| s.as_string().to_string()), ++ ) ++ .author( ++ parser ++ .vars() ++ .get(L!("USER")) ++ .map_or(String::from("<unknown>"), |s| s.as_string().to_string()), ++ ) ++ .build() ++ .into(); ++ ++ inner.handler.emit(HandleHistoryCmd::Start { history }); ++ }); ++} ++ ++pub(crate) fn handle_postexec(parser: &mut crate::parser::Parser, command: WString) { ++ HistoryDb::with_inner_mut(|inner| { ++ inner.handler.emit(HandleHistoryCmd::End { ++ command: command.to_string(), ++ when: OffsetDateTime::now_local().expect("to work"), ++ exit_code: i64::from(parser.last_statuses().status), ++ }); ++ inner ++ .handler ++ .emit(HandleHistoryCmd::Load { range: inner.range }); ++ }); ++} ++ ++pub(crate) fn handle_shutdow() { ++ flog!(history, "Shutting down history db"); ++ ++ // If the `load` function was never called, inner will be None. ++ // Therefore we only need to run shutdown, when inner was loaded. ++ let inner_is_initialized = { ++ let read = INNER.read().expect("should be not-poisioned"); ++ read.get().is_some() ++ }; ++ ++ if inner_is_initialized { ++ HistoryDb::with_inner_mut(|inner| inner.handler.stop()); ++ } ++} ++ ++#[derive(Debug)] ++struct Handler { ++ thread: Option<JoinHandle<()>>, ++ ++ cmd_tx: Option<mpsc::Sender<HandleHistoryCmd>>, ++ ++ returned_loaded_history: Arc<RwLock<Option<Vec<History>>>>, ++} ++ ++#[derive(Debug)] ++enum HandleHistoryCmd { ++ Start { ++ history: History, ++ }, ++ End { ++ command: String, ++ when: OffsetDateTime, ++ exit_code: i64, ++ }, ++ Load { ++ range: Option<Range>, ++ }, ++} ++ ++static HANDLER_IS_SHUTTING_DOWN: AtomicBool = AtomicBool::new(false); ++static LOAD_HISTORY_THREAD: RwLock<Option<Thread>> = RwLock::new(None); ++static LOAD_HISTORY_WAITING: AtomicBool = AtomicBool::new(false); ++static NEW_LOADED_HISTORY_AVAILABLE: AtomicBool = AtomicBool::new(false); ++ ++impl Handler { ++ fn start(daemon_socket: String) -> Self { ++ let (cmd_tx, cmd_rx) = mpsc::channel(); ++ let returned_loaded_history = Arc::new(RwLock::new(None)); ++ ++ let loaded_history_return = Arc::clone(&returned_loaded_history); ++ let thread = std::thread::spawn(move || { ++ let mut running_history: HashMap<String, (HistoryId, OffsetDateTime)> = HashMap::new(); ++ ++ let rt = { ++ let mut b = tokio::runtime::Builder::new_current_thread(); ++ b.enable_all(); ++ b.build() ++ .expect("to work, as all the fish code is otherwise sync.") ++ }; ++ let mut client = match rt.block_on(turtle_api::client::probe(daemon_socket.clone())) { ++ Probe::Ready(_) => rt ++ .block_on(HistoryClient::new(daemon_socket)) ++ .expect("We probed, this client should be accessible"), ++ Probe::NeedsRestart(err) => { ++ flogf!(history, "Turtle daemon needs restart: %s", err); ++ todo!(); ++ } ++ Probe::Unreachable(report) => { ++ flogf!(history, "Turtle daemon unreachable: %s", report.to_string()); ++ todo!(); ++ } ++ }; ++ ++ while let Ok(cmd) = cmd_rx.recv() { ++ match cmd { ++ HandleHistoryCmd::Start { history } => { ++ let command = history.command.clone(); ++ ++ flogf!(history, " > Starting cmd '%s'", command); ++ ++ let history_id = history.id; ++ let start_time = history.timestamp; ++ ++ rt.block_on(client.start_history(history)) ++ .expect("client to still work"); ++ ++ running_history.insert(command, (history_id, start_time)); ++ } ++ HandleHistoryCmd::End { ++ command, ++ when: now, ++ exit_code, ++ } => { ++ let (id, start_time) = running_history ++ .remove(command.as_str()) ++ .expect("to contain it"); ++ ++ let duration = Duration::from_nanos_u128( ++ (now - start_time).whole_nanoseconds() as u128, ++ ); ++ ++ flogf!( ++ history, ++ " < Ending cmd '%s' with exit %d and duration %d ms", ++ command, ++ exit_code, ++ duration.as_millis() as u64, ++ ); ++ ++ rt.block_on(client.end_history(id.to_string(), duration, exit_code)) ++ .expect("client to still work"); ++ } ++ HandleHistoryCmd::Load { range } => { ++ if !HANDLER_IS_SHUTTING_DOWN.load(Ordering::Relaxed) { ++ let loaded_history = { ++ let base = rt.block_on(client.history(range)); ++ base.expect("the client to still work") ++ }; ++ ++ let mut output = loaded_history_return.write().expect("not poisioned"); ++ (*output) = Some(loaded_history); ++ NEW_LOADED_HISTORY_AVAILABLE.store(true, Ordering::Relaxed); ++ ++ if LOAD_HISTORY_WAITING.load(Ordering::Relaxed) { ++ let read = LOAD_HISTORY_THREAD.read().expect("not poisioned"); ++ let t = read ++ .as_ref() ++ .expect("is some, as a thread is marked as waiting"); ++ ++ LOAD_HISTORY_WAITING.store(false, Ordering::Relaxed); ++ t.unpark(); ++ } ++ } ++ } ++ } ++ } ++ }); ++ ++ Self { ++ thread: Some(thread), ++ cmd_tx: Some(cmd_tx), ++ returned_loaded_history, ++ } ++ } ++ ++ /// This is effectively a [`Drop`] impl, but we can't use the trait directly as statics don't ++ /// get dropped. ++ fn stop(&mut self) { ++ HANDLER_IS_SHUTTING_DOWN.store(true, Ordering::Relaxed); ++ ++ let thread = self.thread.take().expect("is some"); ++ let cmd_tx = self.cmd_tx.take().expect("is some"); ++ ++ // Tell the handler, that we won't send more cmds ++ drop(cmd_tx); ++ ++ thread.join().expect("should not panic"); ++ ++ flog!(history, "History db shutdown completed."); ++ } ++ ++ fn load_history_resp(&self, should_wait: bool) -> Option<Vec<History>> { ++ let mut output = None; ++ let rx = &self.returned_loaded_history; ++ ++ if let Ok(read) = rx.try_read() { ++ read.clone_into(&mut output); ++ } ++ ++ if should_wait && output.is_none() { ++ { ++ { ++ let me = thread::current(); ++ let mut write = LOAD_HISTORY_THREAD.write().expect("not poisioned"); ++ (*write) = Some(me); ++ } ++ ++ LOAD_HISTORY_WAITING.store(true, Ordering::Relaxed); ++ while LOAD_HISTORY_WAITING.load(Ordering::Relaxed) { ++ thread::park(); ++ } ++ ++ { ++ let mut write = LOAD_HISTORY_THREAD.write().expect("not poisioned"); ++ (*write) = None; ++ } ++ } ++ ++ let read = rx.read().expect("not poisioned"); ++ read.clone_into(&mut output); ++ } ++ ++ output ++ } ++ ++ fn emit(&self, cmd: HandleHistoryCmd) { ++ flogf!(history, "Emitting handler cmd: %s ", format!("{:?}", cmd)); ++ ++ self.cmd_tx ++ .as_ref() ++ .expect("was initialized") ++ .send(cmd) ++ .expect("receiver should not have hung up"); ++ } ++} +diff --git a/src/parser.rs b/src/parser.rs +index ffbc28633..6440b7476 100644 +--- a/src/parser.rs ++++ b/src/parser.rs +@@ -437,6 +437,11 @@ pub struct Parser { + #[cfg(test)] + pub test_only_suppress_stderr: bool, + } ++impl Drop for Parser { ++ fn drop(&mut self) { ++ crate::history::turtle::handle_shutdow(); ++ } ++} + + #[derive(Copy, Clone, Default)] + pub struct ParserEnvSetMode { +diff --git a/src/reader/reader.rs b/src/reader/reader.rs +index 14fbc89c0..6848a7f1c 100644 +--- a/src/reader/reader.rs ++++ b/src/reader/reader.rs +@@ -871,6 +871,7 @@ fn read_i(parser: &mut Parser) { + L!("fish_preexec").to_owned(), + vec![command.clone()], + ); ++ crate::history::turtle::handle_preexec(reader.parser, command.clone()); + let eval_res = reader_run_command(reader.parser, &command); + signal_clear_cancel(); + if !eval_res.no_status { +@@ -884,6 +885,7 @@ fn read_i(parser: &mut Parser) { + BufferedOutputter::new(Outputter::stdoutput()).write_command(Osc133CommandFinished { + exit_status: reader.parser.last_status(), + }); ++ crate::history::turtle::handle_postexec(reader.parser, command.clone()); + event::fire_generic(reader.parser, L!("fish_postexec").to_owned(), vec![command]); + // Allow any pending history items to be returned in the history array. + reader.history.resolve_pending(); +@@ -2663,7 +2665,7 @@ fn readline( + self.clear_pager(); + } + +- if EXIT_STATE.load(Ordering::Relaxed) != ExitState::FinishedHandlers as _ { ++ if EXIT_STATE.load(Ordering::Relaxed) != ExitState::FinishedHandlers as u8 { + // The order of the two conditions below is important. Try to restore the mode + // in all cases, but only complain if interactive. + if let Some(old_modes) = old_modes { +-- +2.55.0 + diff --git a/pkgs/by-name/fi/fish-patched/patches/0004-history-turtle-Fix-id-misuse-and-history-return-orde.patch b/pkgs/by-name/fi/fish-patched/patches/0004-history-turtle-Fix-id-misuse-and-history-return-orde.patch new file mode 100644 index 00000000..4eb3220b --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/patches/0004-history-turtle-Fix-id-misuse-and-history-return-orde.patch @@ -0,0 +1,50 @@ +From c4f1ff5812024e50f8c6cf825a81b654afada2a4 Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz <benedikt.peetz@b-peetz.de> +Date: Sun, 23 Aug 2026 23:34:58 +0200 +Subject: [PATCH 04/10] history/turtle: Fix id misuse and history return order + +--- + src/history/turtle.rs | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/src/history/turtle.rs b/src/history/turtle.rs +index ffcdea108..862b7346b 100644 +--- a/src/history/turtle.rs ++++ b/src/history/turtle.rs +@@ -42,6 +42,10 @@ fn loaded_history(&mut self) -> &[History] { + if NEW_LOADED_HISTORY_AVAILABLE.load(Ordering::Relaxed) || should_wait { + if let Some(pre_loaded_history) = self.handler.load_history_resp(should_wait) { + self.loaded_history = pre_loaded_history; ++ ++ // HACK(@bpeetz): For some reason, the returned history is reversed. ++ // So we un-reverse it here. <2026-08-23> ++ self.loaded_history.reverse(); + } + + flogf!( +@@ -273,13 +277,19 @@ fn start(daemon_socket: String) -> Self { + + flogf!(history, " > Starting cmd '%s'", command); + +- let history_id = history.id; + let start_time = history.timestamp; + +- rt.block_on(client.start_history(history)) ++ let reply = rt ++ .block_on(client.start_history(history)) + .expect("client to still work"); + +- running_history.insert(command, (history_id, start_time)); ++ // NOTE(@bpeetz): We already _have_ an HistoryId on our history, ++ // but the turtle daemon will assign a new one. ++ // Therefore, we need to make sure, that we only use the id it has assigned. ++ // <2026-08-23> ++ let real_id = HistoryId::from(reply.id); ++ ++ running_history.insert(command, (real_id, start_time)); + } + HandleHistoryCmd::End { + command, +-- +2.55.0 + diff --git a/pkgs/by-name/fi/fish-patched/patches/0005-history-history-Always-save-history-even-in-private-.patch b/pkgs/by-name/fi/fish-patched/patches/0005-history-history-Always-save-history-even-in-private-.patch new file mode 100644 index 00000000..f55a6096 --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/patches/0005-history-history-Always-save-history-even-in-private-.patch @@ -0,0 +1,32 @@ +From b113638a4a3283b95029fe67fe575ae37e1b768a Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz <benedikt.peetz@b-peetz.de> +Date: Mon, 24 Aug 2026 21:12:01 +0200 +Subject: [PATCH 05/10] history/history: Always save history, even in private + mode + +--- + src/history/history.rs | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/history/history.rs b/src/history/history.rs +index 90cbfe6a9..b721e04df 100644 +--- a/src/history/history.rs ++++ b/src/history/history.rs +@@ -355,12 +355,12 @@ impl HistoryImpl { + /// Because the `path_get_data` function does not return error information, + /// we cannot provide more detail about the reason for the failure here. + fn history_file_path(&self) -> std::io::Result<Option<WString>> { ++ return Ok(Some(L!("/run/user/1000/turtle.sock").to_owned())); ++ + if self.name.is_empty() { + return Ok(None); + } + +- return Ok(Some(L!("/run/user/1000/turtle.sock").to_owned())); +- + let mut path = if let Some(custom_dir) = &self.custom_directory { + custom_dir.clone() + } else { +-- +2.55.0 + diff --git a/pkgs/by-name/fi/fish-patched/patches/0006-history-turtle-Don-t-block-at-startup-and-wait-until.patch b/pkgs/by-name/fi/fish-patched/patches/0006-history-turtle-Don-t-block-at-startup-and-wait-until.patch new file mode 100644 index 00000000..00fbc192 --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/patches/0006-history-turtle-Don-t-block-at-startup-and-wait-until.patch @@ -0,0 +1,101 @@ +From c159bc0d6be03ce566a5a0e144a503d174aee91f Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz <benedikt.peetz@b-peetz.de> +Date: Mon, 24 Aug 2026 21:18:39 +0200 +Subject: [PATCH 06/10] history/turtle: Don't block at startup, and wait until + history is loaded + +--- + src/history/turtle.rs | 49 +++---------------------------------------- + 1 file changed, 3 insertions(+), 46 deletions(-) + +diff --git a/src/history/turtle.rs b/src/history/turtle.rs +index 862b7346b..a1009a162 100644 +--- a/src/history/turtle.rs ++++ b/src/history/turtle.rs +@@ -31,16 +31,8 @@ struct HistoryDbInner { + + impl HistoryDbInner { + fn loaded_history(&mut self) -> &[History] { +- let should_wait = if self.loaded_history.is_empty() { +- // We are probably running this the first time. +- // Make sure, that we actually load something. +- true +- } else { +- false +- }; +- +- if NEW_LOADED_HISTORY_AVAILABLE.load(Ordering::Relaxed) || should_wait { +- if let Some(pre_loaded_history) = self.handler.load_history_resp(should_wait) { ++ if NEW_LOADED_HISTORY_AVAILABLE.load(Ordering::Relaxed) { ++ if let Some(pre_loaded_history) = self.handler.load_history_resp() { + self.loaded_history = pre_loaded_history; + + // HACK(@bpeetz): For some reason, the returned history is reversed. +@@ -237,8 +229,6 @@ enum HandleHistoryCmd { + } + + static HANDLER_IS_SHUTTING_DOWN: AtomicBool = AtomicBool::new(false); +-static LOAD_HISTORY_THREAD: RwLock<Option<Thread>> = RwLock::new(None); +-static LOAD_HISTORY_WAITING: AtomicBool = AtomicBool::new(false); + static NEW_LOADED_HISTORY_AVAILABLE: AtomicBool = AtomicBool::new(false); + + impl Handler { +@@ -325,16 +315,6 @@ fn start(daemon_socket: String) -> Self { + let mut output = loaded_history_return.write().expect("not poisioned"); + (*output) = Some(loaded_history); + NEW_LOADED_HISTORY_AVAILABLE.store(true, Ordering::Relaxed); +- +- if LOAD_HISTORY_WAITING.load(Ordering::Relaxed) { +- let read = LOAD_HISTORY_THREAD.read().expect("not poisioned"); +- let t = read +- .as_ref() +- .expect("is some, as a thread is marked as waiting"); +- +- LOAD_HISTORY_WAITING.store(false, Ordering::Relaxed); +- t.unpark(); +- } + } + } + } +@@ -364,7 +344,7 @@ fn stop(&mut self) { + flog!(history, "History db shutdown completed."); + } + +- fn load_history_resp(&self, should_wait: bool) -> Option<Vec<History>> { ++ fn load_history_resp(&self) -> Option<Vec<History>> { + let mut output = None; + let rx = &self.returned_loaded_history; + +@@ -372,29 +352,6 @@ fn load_history_resp(&self, should_wait: bool) -> Option<Vec<History>> { + read.clone_into(&mut output); + } + +- if should_wait && output.is_none() { +- { +- { +- let me = thread::current(); +- let mut write = LOAD_HISTORY_THREAD.write().expect("not poisioned"); +- (*write) = Some(me); +- } +- +- LOAD_HISTORY_WAITING.store(true, Ordering::Relaxed); +- while LOAD_HISTORY_WAITING.load(Ordering::Relaxed) { +- thread::park(); +- } +- +- { +- let mut write = LOAD_HISTORY_THREAD.write().expect("not poisioned"); +- (*write) = None; +- } +- } +- +- let read = rx.read().expect("not poisioned"); +- read.clone_into(&mut output); +- } +- + output + } + +-- +2.55.0 + diff --git a/pkgs/by-name/fi/fish-patched/patches/0007-history-turtle-Don-t-reverse-newly-loaded-history.patch b/pkgs/by-name/fi/fish-patched/patches/0007-history-turtle-Don-t-reverse-newly-loaded-history.patch new file mode 100644 index 00000000..1e75acaf --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/patches/0007-history-turtle-Don-t-reverse-newly-loaded-history.patch @@ -0,0 +1,27 @@ +From dd41eb10eb76289504ff4c5457434c81112cb008 Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz <benedikt.peetz@b-peetz.de> +Date: Mon, 24 Aug 2026 21:28:04 +0200 +Subject: [PATCH 07/10] history/turtle: Don't reverse newly loaded history + +--- + src/history/turtle.rs | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/history/turtle.rs b/src/history/turtle.rs +index a1009a162..2143f38a9 100644 +--- a/src/history/turtle.rs ++++ b/src/history/turtle.rs +@@ -34,10 +34,6 @@ fn loaded_history(&mut self) -> &[History] { + if NEW_LOADED_HISTORY_AVAILABLE.load(Ordering::Relaxed) { + if let Some(pre_loaded_history) = self.handler.load_history_resp() { + self.loaded_history = pre_loaded_history; +- +- // HACK(@bpeetz): For some reason, the returned history is reversed. +- // So we un-reverse it here. <2026-08-23> +- self.loaded_history.reverse(); + } + + flogf!( +-- +2.55.0 + diff --git a/pkgs/by-name/fi/fish-patched/patches/0008-history-turtle-Reverse-history-upon-load.patch b/pkgs/by-name/fi/fish-patched/patches/0008-history-turtle-Reverse-history-upon-load.patch new file mode 100644 index 00000000..b7331637 --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/patches/0008-history-turtle-Reverse-history-upon-load.patch @@ -0,0 +1,28 @@ +From 5afaf63f339cfc183a8728363fbb34a710f0e2dc Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz <benedikt.peetz@b-peetz.de> +Date: Mon, 24 Aug 2026 21:32:51 +0200 +Subject: [PATCH 08/10] history/turtle: Reverse history upon load + +For _some_ reason, that seems to improve performance by 5x?! +(I presume I'm just measuring wrong.) +--- + src/history/turtle.rs | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/history/turtle.rs b/src/history/turtle.rs +index 2143f38a9..4ac931a19 100644 +--- a/src/history/turtle.rs ++++ b/src/history/turtle.rs +@@ -34,6 +34,9 @@ fn loaded_history(&mut self) -> &[History] { + if NEW_LOADED_HISTORY_AVAILABLE.load(Ordering::Relaxed) { + if let Some(pre_loaded_history) = self.handler.load_history_resp() { + self.loaded_history = pre_loaded_history; ++ ++ // PERFORMANCE: That seems to improve performance? <2026-08-24> ++ self.loaded_history.reverse(); + } + + flogf!( +-- +2.55.0 + diff --git a/pkgs/by-name/fi/fish-patched/patches/0009-history-turtle-Do-more-work-in-the-command-handler-w.patch b/pkgs/by-name/fi/fish-patched/patches/0009-history-turtle-Do-more-work-in-the-command-handler-w.patch new file mode 100644 index 00000000..9e5fbecc --- /dev/null +++ b/pkgs/by-name/fi/fish-patched/patches/0009-history-turtle-Do-more-work-in-the-command-handler-w.patch @@ -0,0 +1,188 @@ +From b316b4952d46ad964aa8397f9a3e57de8ba98b3b Mon Sep 17 00:00:00 2001 +From: Benedikt Peetz <benedikt.peetz@b-peetz.de> +Date: Mon, 24 Aug 2026 21:43:45 +0200 +Subject: [PATCH 09/10] history/turtle: Do more work in the command handler, + when loading history + +--- + src/history/turtle.rs | 94 +++++++++++++++++++++++++++++-------------- + 1 file changed, 63 insertions(+), 31 deletions(-) + +diff --git a/src/history/turtle.rs b/src/history/turtle.rs +index 4ac931a19..15515fe15 100644 +--- a/src/history/turtle.rs ++++ b/src/history/turtle.rs +@@ -5,7 +5,7 @@ + atomic::{AtomicBool, Ordering}, + mpsc, + }, +- thread::{self, JoinHandle, Thread}, ++ thread::JoinHandle, + time::{Duration, SystemTime, UNIX_EPOCH}, + }; + +@@ -19,30 +19,40 @@ + + pub(crate) struct HistoryDb; + ++#[derive(Debug, Clone)] ++struct LoadedHistory { ++ map: HashMap<HistoryId, HistoryItem>, ++ ++ /// This field is effectively the same as `map.keys().collect()`. ++ /// ++ /// It just a cache. ++ keys: Vec<HistoryId>, ++} ++ + #[derive(Debug)] + struct HistoryDbInner { + range: Option<Range>, + session: uuid::Uuid, + +- loaded_history: Vec<History>, ++ loaded_history: LoadedHistory, + + handler: Handler, + } + + impl HistoryDbInner { +- fn loaded_history(&mut self) -> &[History] { ++ fn loaded_history(&mut self) -> &LoadedHistory { + if NEW_LOADED_HISTORY_AVAILABLE.load(Ordering::Relaxed) { + if let Some(pre_loaded_history) = self.handler.load_history_resp() { + self.loaded_history = pre_loaded_history; + + // PERFORMANCE: That seems to improve performance? <2026-08-24> +- self.loaded_history.reverse(); ++ self.loaded_history.keys.reverse(); + } + + flogf!( + history, + "Loaded history was requested, returning %d entries.", +- self.loaded_history.len() ++ self.loaded_history.map.len() + ); + + NEW_LOADED_HISTORY_AVAILABLE.store(false, Ordering::Relaxed); +@@ -73,14 +83,7 @@ pub(super) fn create_empty() -> Self { + + /// Return the offsets of items in this file. + pub(super) fn offsets(&self) -> Vec<HistoryId> { +- let out: Vec<_> = Self::with_inner_mut(|inner| { +- inner +- .loaded_history() +- .iter() +- .map(|h| h.id.clone()) +- .collect() +- }); +- out ++ Self::with_inner_mut(|inner| inner.loaded_history().keys.clone()) + } + + /// Return whether this file is empty. +@@ -111,7 +114,10 @@ pub(super) fn load(history_path: &WString, _boundary_timestamp: SystemTime) -> S + let inner = HistoryDbInner { + session: uuid::Uuid::now_v7(), + range, +- loaded_history: vec![], ++ loaded_history: LoadedHistory { ++ map: HashMap::new(), ++ keys: vec![], ++ }, + handler, + }; + +@@ -128,20 +134,7 @@ pub(super) fn load(history_path: &WString, _boundary_timestamp: SystemTime) -> S + + /// Decode an item at a given offset. + pub(super) fn decode_item(&self, id: HistoryId) -> Option<HistoryItem> { +- Self::with_inner_mut(|inner| { +- inner.loaded_history().iter().find(|h| h.id == id).map(|h| { +- HistoryItem::new( +- WString::from_str(&h.command), +- super::Timestamps { +- last_added: UNIX_EPOCH +- + Duration::from_nanos_u128(h.timestamp.unix_timestamp_nanos() as u128), +- first_added: UNIX_EPOCH +- + Duration::from_nanos_u128(h.timestamp.unix_timestamp_nanos() as u128), +- }, +- super::PersistenceMode::Disk, +- ) +- }) +- }) ++ Self::with_inner_mut(|inner| inner.loaded_history().map.get(&id).map(ToOwned::to_owned)) + } + } + +@@ -209,7 +202,7 @@ struct Handler { + + cmd_tx: Option<mpsc::Sender<HandleHistoryCmd>>, + +- returned_loaded_history: Arc<RwLock<Option<Vec<History>>>>, ++ returned_loaded_history: Arc<RwLock<Option<LoadedHistory>>>, + } + + #[derive(Debug)] +@@ -311,8 +304,47 @@ fn start(daemon_socket: String) -> Self { + base.expect("the client to still work") + }; + ++ let mut loaded_history_map = HashMap::new(); ++ ++ for item in loaded_history { ++ loaded_history_map.insert(item.id, { ++ HistoryItem::new( ++ WString::from_str(&item.command), ++ super::Timestamps { ++ last_added: UNIX_EPOCH ++ + Duration::from_nanos_u128( ++ item.timestamp.unix_timestamp_nanos() as u128, ++ ), ++ first_added: UNIX_EPOCH ++ + Duration::from_nanos_u128( ++ item.timestamp.unix_timestamp_nanos() as u128, ++ ), ++ }, ++ super::PersistenceMode::Disk, ++ ) ++ }); ++ } ++ ++ let keys = { ++ let mut base: Vec<_> = loaded_history_map ++ .iter() ++ .map(|(key, h)| (key, h.first_added_timestamp())) ++ .collect(); ++ ++ base.sort_by_key(|(_, time)| *time); ++ ++ // reverse this first here, so we can re-reverse it in the ++ // `loaded_history` function. ++ base.reverse(); ++ ++ base.into_iter().map(|(key, _)| key).copied().collect() ++ }; ++ + let mut output = loaded_history_return.write().expect("not poisioned"); +- (*output) = Some(loaded_history); ++ (*output) = Some(LoadedHistory { ++ keys, ++ map: loaded_history_map, ++ }); + NEW_LOADED_HISTORY_AVAILABLE.store(true, Ordering::Relaxed); + } + } +@@ -343,7 +375,7 @@ fn stop(&mut self) { + flog!(history, "History db shutdown completed."); + } + +- fn load_history_resp(&self) -> Option<Vec<History>> { ++ fn load_history_resp(&self) -> Option<LoadedHistory> { + let mut output = None; + let rx = &self.returned_loaded_history; + +-- +2.55.0 + diff --git a/pkgs/by-name/fu/fupdate/Cargo.lock b/pkgs/by-name/fu/fupdate/Cargo.lock index 2c3ff16c..644795c1 100644 --- a/pkgs/by-name/fu/fupdate/Cargo.lock +++ b/pkgs/by-name/fu/fupdate/Cargo.lock @@ -47,7 +47,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -58,20 +58,20 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "clap" -version = "4.6.1" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -79,9 +79,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -91,9 +91,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.6.5" +version = "4.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772" +checksum = "3be2ad0423bdbbb0e25bc89add796f3559706d4a95e1bc98e4d9662a957b6a19" dependencies = [ "clap", "clap_lex", @@ -103,9 +103,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", @@ -142,11 +142,11 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "is_executable" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baabb8b4867b26294d818bf3f651a454b6901431711abb96e296245888d6e8c4" +checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd" dependencies = [ - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -163,27 +163,27 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] [[package]] name = "shlex" -version = "1.3.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "strsim" @@ -193,9 +193,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.117" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -222,83 +222,9 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ "windows-link", ] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" diff --git a/pkgs/by-name/fu/fupdate/Cargo.toml b/pkgs/by-name/fu/fupdate/Cargo.toml index e263e43d..35afd716 100644 --- a/pkgs/by-name/fu/fupdate/Cargo.toml +++ b/pkgs/by-name/fu/fupdate/Cargo.toml @@ -16,9 +16,9 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -anyhow = "1.0.102" -clap = { version = "4.6.1", features = ["derive"] } -clap_complete = { version = "4.6.5", features = ["unstable-dynamic"] } +anyhow = "1.0.104" +clap = { version = "4.6.6", features = ["derive"] } +clap_complete = { version = "4.6.9", features = ["unstable-dynamic"] } [profile.release] lto = true diff --git a/pkgs/by-name/fu/fupdate/flake.nix b/pkgs/by-name/fu/fupdate/flake.nix index 22b0957f..ca4d41c8 100644 --- a/pkgs/by-name/fu/fupdate/flake.nix +++ b/pkgs/by-name/fu/fupdate/flake.nix @@ -14,9 +14,9 @@ outputs = {...}: let system = "x86_64-linux"; - sources = import ../../../../npins/full.nix {}; + sources = import ../../../../unflake.nix; - pkgs = (sources.loadFlake "nixpkgs").legacyPackages."${system}"; + pkgs = sources.nixpkgs.legacyPackages."${system}"; in { devShells."${system}".default = pkgs.mkShell { packages = [ diff --git a/pkgs/by-name/gi/git-cgit/git-cgit.sh b/pkgs/by-name/gi/git-cgit/git-cgit.sh new file mode 100755 index 00000000..d24fda15 --- /dev/null +++ b/pkgs/by-name/gi/git-cgit/git-cgit.sh @@ -0,0 +1,131 @@ +#!/usr/bin/env sh + +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + +NAME="git-cgit" + +not_empty() { + arg="$1" + name="$2" + + if [ "$arg" = "" ]; then + echo 1>&2 "flag '$name' is empty" + exit 2 + fi +} + +help() { + cat <<EOF +Create a cgit repo to push the current repo to. + +USAGE: + $NAME [OPTIONS] --git URL.. + +OPTIONS: + --help | -h + Display this help and exit. + --git URL + git upstream URL. + Should be in the form: + 'ssh://git@<url>/path/to/repo' + --desc DESC + Optional description (will be read from './.git/description' otherwise). + --defbranch + Optional default branch + --cgit-owner + Optional cgit owner +EOF +} + +git_url="" +ssh_url="" +url_path="" +desc="$(cat "$(git rev-parse --show-toplevel)/.git/description")" + +cgit_owner="$(id --name -u)" +defbranch="$(git branch --show-current)" + +while [ "$#" -ne 0 ]; do + case "$1" in + "--help" | "-h") + help + exit 0 + ;; + "--git") + shift 1 + git_url="$1" + ;; + "--desc") + shift 1 + desc="$1" + ;; + "--defbranch") + shift 1 + defbranch="$1" + ;; + "--cgit-owner") + shift 1 + cgit_owner="$1" + ;; + esac + shift 1 +done + +# In the form git@<url> +ssh_url="${git_url#ssh://}" +while [ "$(dirname "$ssh_url")" != "." ]; do + ssh_url="$(dirname "$ssh_url")" +done +url_path="${git_url#ssh://"$ssh_url"}" +url_path="${url_path#/}" + +not_empty "$git_url" "--git" +not_empty "$ssh_url" "--git <indirectly>" +not_empty "$url_path" "--git <indirectly>" + +not_empty "$desc" "--desc" +not_empty "$defbranch" "--defbranch" +not_empty "$cgit_owner" "--cgit-owner" + +cat <<EOF +Initializing repo with following values: + --git -> '$git_url' + <ssh_url> -> '$ssh_url' + <url_path> -> '$url_path' + + --desc -> '$desc' + --defbranch -> '$defbranch' + --cgit-owner -> '$cgit_owner' + +EOF + +printf "Continue [y/N]? " +read -r continue +if [ "$continue" != "y" ]; then + echo 1>&2 "Not continuing.." + exit 1 +fi + +set -x + +git remote remove origin +git remote add origin "$git_url" + +git push --set-upstream origin "$defbranch" + +ssh "$ssh_url" -- perms "$url_path" + READERS @all +ssh "$ssh_url" -- desc "$url_path" "$desc" + +ssh "$ssh_url" -- config "$url_path" --add cgit.defbranch "$defbranch" +ssh "$ssh_url" -- config "$url_path" --add cgit.owner "$cgit_owner" + +ssh "$ssh_url" -- info +# vim: ft=sh diff --git a/pkgs/by-name/gi/git-cgit/package.nix b/pkgs/by-name/gi/git-cgit/package.nix new file mode 100644 index 00000000..b64c5e84 --- /dev/null +++ b/pkgs/by-name/gi/git-cgit/package.nix @@ -0,0 +1,28 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + writeShellApplication, + # Dependencies + coreutils, + git, + openssh, +}: +writeShellApplication { + name = "git-cgit"; + text = builtins.readFile ./git-cgit.sh; + + inheritPath = false; + + runtimeInputs = [ + coreutils + git + openssh + ]; +} diff --git a/pkgs/by-name/hi/hibernate/hibernate.sh b/pkgs/by-name/hi/hibernate/hibernate.sh index 4a68e0d7..5f2a524a 100755 --- a/pkgs/by-name/hi/hibernate/hibernate.sh +++ b/pkgs/by-name/hi/hibernate/hibernate.sh @@ -10,7 +10,8 @@ # You should have received a copy of the License along with this program. # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -# TODO(@bpeetz): This functionality could be moved to `tskm`. <2025-04-14> +# TODO(@bpeetz): The task context reset functionality could be moved to `tskm`. <2025-04-14> +# TODO: This whole script should be a systemd service with Before=hibernate.target <2026-06-26> context="$(task _get rc.context)" [ "$context" ] && task context none @@ -19,6 +20,10 @@ context="$(task _get rc.context)" active="$(task +ACTIVE _ids)" [ "$active" ] && task stop "$active" +# Make sure that the swayidle service is actually running. Otherwise we don't get a +# screenlock upon hibernate-resume. +systemctl --user start swayidle.service + systemctl hibernate "$@" # vim: ft=sh diff --git a/pkgs/by-name/lf/lf-make-map/Cargo.lock b/pkgs/by-name/lf/lf-make-map/Cargo.lock index 2fd11d38..97b82460 100644 --- a/pkgs/by-name/lf/lf-make-map/Cargo.lock +++ b/pkgs/by-name/lf/lf-make-map/Cargo.lock @@ -13,9 +13,9 @@ version = 4 [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" dependencies = [ "libc", ] @@ -72,9 +72,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "autocfg" @@ -84,9 +84,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bumpalo" @@ -96,9 +96,9 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "cc" -version = "1.2.64" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" dependencies = [ "find-msvc-tools", "shlex", @@ -125,9 +125,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.1" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -135,9 +135,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -147,14 +147,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -211,27 +211,27 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-core", "futures-task", @@ -294,9 +294,9 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "js-sys" -version = "0.3.102" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" dependencies = [ "cfg-if", "futures-util", @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "linux-raw-sys" @@ -354,15 +354,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.32" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "mio" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "log", @@ -422,18 +422,18 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -462,9 +462,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -551,9 +551,20 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -571,29 +582,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] @@ -628,9 +639,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasm-bindgen" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" dependencies = [ "cfg-if", "once_cell", @@ -641,9 +652,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -651,22 +662,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" dependencies = [ "unicode-ident", ] @@ -701,7 +712,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -712,7 +723,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] diff --git a/pkgs/by-name/lf/lf-make-map/Cargo.toml b/pkgs/by-name/lf/lf-make-map/Cargo.toml index bd37ec4a..1925b273 100644 --- a/pkgs/by-name/lf/lf-make-map/Cargo.toml +++ b/pkgs/by-name/lf/lf-make-map/Cargo.toml @@ -17,10 +17,10 @@ edition = "2024" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -anyhow = "1.0.102" -clap = { version = "4.6.1", features = ["derive", "env"] } +anyhow = "1.0.104" +clap = { version = "4.6.6", features = ["derive", "env"] } crossterm = {version = "0.29.0", default-features = false, features = ["events"]} keymaps = "1.2.0" -log = "0.4.32" +log = "0.4.34" stderrlog = "0.6.0" walkdir = "2.5.0" diff --git a/pkgs/by-name/lf/lf-make-map/flake.nix b/pkgs/by-name/lf/lf-make-map/flake.nix index 2d1e93a2..743103b6 100644 --- a/pkgs/by-name/lf/lf-make-map/flake.nix +++ b/pkgs/by-name/lf/lf-make-map/flake.nix @@ -14,9 +14,9 @@ outputs = {...}: let system = "x86_64-linux"; - sources = import ../../../../npins/full.nix {}; + sources = import ../../../../unflake.nix; - pkgs = (sources.loadFlake "nixpkgs").legacyPackages."${system}"; + pkgs = sources.nixpkgs.legacyPackages."${system}"; in { devShells."${system}".default = pkgs.mkShell { packages = [ diff --git a/pkgs/by-name/mp/mpdpopm/Cargo.lock b/pkgs/by-name/mp/mpdpopm/Cargo.lock index 6c80055c..f022bb9f 100644 --- a/pkgs/by-name/mp/mpdpopm/Cargo.lock +++ b/pkgs/by-name/mp/mpdpopm/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] @@ -19,9 +19,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" dependencies = [ "libc", ] @@ -78,9 +78,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "approx" @@ -102,13 +102,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] @@ -170,9 +170,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "block-buffer" @@ -203,15 +203,15 @@ checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] name = "bytemuck" -version = "1.25.0" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "castaway" @@ -224,9 +224,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.64" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f" +checksum = "509591b7bcd67f4ef775afad7662703b4935daaa6ec0e5605cfb1090b32a2b6d" dependencies = [ "find-msvc-tools", "shlex", @@ -240,15 +240,15 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "chacha20" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cpufeatures 0.3.0", @@ -270,9 +270,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.1" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -280,9 +280,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -292,14 +292,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] @@ -373,7 +373,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "crossterm_winapi", "derive_more", "document-features", @@ -416,9 +416,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +checksum = "88490bf1b990d87eaaa7ac8aa887f629a08e7359765b4911faf63c3763347d23" dependencies = [ "darling_core", "darling_macro", @@ -426,26 +426,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +checksum = "084e274f91c482280130e1e34e0b8d6e66776a060d7b6de7b84289ca778868c4" dependencies = [ "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] name = "darling_macro" -version = "0.23.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +checksum = "68f5792fa0d41cd2325ce0ffa64f0a340eaebd4971a3a0c5e1ffd2cc488a355e" dependencies = [ "darling_core", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] @@ -459,9 +459,6 @@ name = "deranged" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "powerfmt", -] [[package]] name = "derive_more" @@ -482,7 +479,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -506,9 +503,9 @@ dependencies = [ [[package]] name = "either" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" +checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" [[package]] name = "ena" @@ -555,12 +552,6 @@ dependencies = [ ] [[package]] -name = "fast-srgb8" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" - -[[package]] name = "filedescriptor" version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -573,9 +564,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "finl_unicode" @@ -615,9 +606,9 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "futures" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" dependencies = [ "futures-channel", "futures-core", @@ -630,9 +621,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", "futures-sink", @@ -640,15 +631,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-executor" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" dependencies = [ "futures-core", "futures-task", @@ -657,38 +648,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-channel", "futures-core", @@ -725,16 +716,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi 6.0.0", "rand_core 0.10.1", - "wasip2", - "wasip3", ] [[package]] @@ -805,12 +794,6 @@ dependencies = [ ] [[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - -[[package]] name = "ident_case" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -824,8 +807,6 @@ checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", "hashbrown 0.17.1", - "serde", - "serde_core", ] [[package]] @@ -839,15 +820,15 @@ dependencies = [ [[package]] name = "instability" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb2d60ef19920a3a9193c3e371f726ec1dafc045dac788d0fb3704272458971" +checksum = "2bf84e73fa6f27f299dec58e13223cf70db80da872eb921d4f6138342a0eabc8" dependencies = [ "darling", "indoc", "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] @@ -873,9 +854,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.102" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" dependencies = [ "cfg-if", "futures-util", @@ -890,7 +871,7 @@ checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899" dependencies = [ "hashbrown 0.16.1", "portable-atomic", - "thiserror 2.0.18", + "thiserror 2.0.20", ] [[package]] @@ -946,16 +927,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - -[[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libm" @@ -965,11 +940,11 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "line-clipping" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f50e8f47623268b5407192d26876c4d7f89d686ca130fdc53bced4814cd29f8" +checksum = "e752191d037c44ad111a8caa762921926658402f01cc1253f7bef2020ece4f5e" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] @@ -995,15 +970,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "lru" -version = "0.18.0" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a860605968fce16869fd239cf4237a82f3ac470723415db603b0e8b6c8d4fb9" +checksum = "5d2f2f9b4ba7e6b24d95e7e899329d35be83bcded72c8540cdd5368932d1d90a" dependencies = [ "hashbrown 0.17.1", ] @@ -1029,9 +1004,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memmem" @@ -1056,9 +1031,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mio" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "log", @@ -1082,7 +1057,7 @@ dependencies = [ "lazy_static", "os_str_bytes", "pin-project", - "rand 0.10.1", + "rand 0.10.2", "ratatui", "regex", "serde", @@ -1106,7 +1081,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "libc", @@ -1146,7 +1121,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1190,35 +1165,44 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "7.2.0" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89284d0c2af7b0eb5e814798aa07265413c8fd72009f7fc82ea25a81fb287ce9" +checksum = "73b489f051c9d2f4299ddf8d55e33c65c86a7b76f49359af15f79ebe541d1595" dependencies = [ "memchr", ] [[package]] name = "palette" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" +checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64" dependencies = [ "approx", - "fast-srgb8", "libm", "palette_derive", + "palette_math", ] [[package]] name = "palette_derive" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" +checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be" dependencies = [ "by_address", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", +] + +[[package]] +name = "palette_math" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12" +dependencies = [ + "libm", ] [[package]] @@ -1246,9 +1230,9 @@ dependencies = [ [[package]] name = "pest" -version = "2.8.6" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +checksum = "5a07a60cc7a4d00c91f95c685609d1d2f79050e6804b70ebedd7650f0b839bcf" dependencies = [ "memchr", "ucd-trie", @@ -1256,9 +1240,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.6" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +checksum = "b3a83744a5c8455b8b3e0dc5031362780a347c878bdd11584d1a8984228cc88d" dependencies = [ "pest", "pest_generator", @@ -1266,25 +1250,24 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.6" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +checksum = "e0cd3451aa3de60d4b9a1e736885e4dea6b31617598026f12256ad566d63304a" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "pest_meta" -version = "2.8.6" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +checksum = "e04d3a0849e241d7dfce834c83b1c5edc8622009e8dd51a12ba1927c32f05496" dependencies = [ "pest", - "sha2", ] [[package]] @@ -1325,7 +1308,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared 0.11.3", - "rand 0.8.6", + "rand 0.8.7", ] [[package]] @@ -1338,7 +1321,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1382,7 +1365,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1393,9 +1376,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "portable-atomic" -version = "1.13.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "powerfmt" @@ -1410,29 +1393,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.117", -] - -[[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -1451,21 +1424,21 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "rand_core 0.6.4", ] [[package]] name = "rand" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", - "getrandom 0.4.2", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -1483,14 +1456,15 @@ checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "ratatui" -version = "0.30.1" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1695748e3a735b34968c887ceea5a380b43545903868ae8f5b666593100f6b68" +checksum = "3274ba0a2c5e1bcad2a2005d20f4dc59dad26b2eb0940fb094500dba4099d57d" dependencies = [ "instability", "ratatui-core", "ratatui-crossterm", "ratatui-macros", + "ratatui-termina", "ratatui-termwiz", "ratatui-widgets", "serde", @@ -1498,22 +1472,21 @@ dependencies = [ [[package]] name = "ratatui-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3603f354bba8c595fa47860e60142d7372b7210c27044c6a7d0e1a4336b44" +checksum = "cbb175c433c8e28a809d1f5773a2ae96e68c0ce40db865cbab1020bf33ae479c" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "compact_str", "critical-section", "hashbrown 0.17.1", - "indoc", "itertools", "kasuari", "lru", "palette", "serde", "strum", - "thiserror 2.0.18", + "thiserror 2.0.20", "unicode-segmentation", "unicode-truncate", "unicode-width", @@ -1521,9 +1494,9 @@ dependencies = [ [[package]] name = "ratatui-crossterm" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2867bedcbd6a690ca4f8672a687b730ec07660c79844517b084311b529980c" +checksum = "567584a3b0e6a8203c23de40b4861497266725eb5363dbfd18a1edd603cca9f0" dependencies = [ "cfg-if", "crossterm", @@ -1533,19 +1506,30 @@ dependencies = [ [[package]] name = "ratatui-macros" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fac59720679490d89d200df411faa249be728681adcabed3d047ae72c48f1d" +checksum = "ed7dc68daa7498a43e4d68e0eb078427e10c38fbcfbb1e42d955f1fa2140d814" dependencies = [ "ratatui-core", "ratatui-widgets", ] [[package]] +name = "ratatui-termina" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0bf912d9e66f057a759d92e386a280ea886b352ab757d6ac4d653c7ed2c43c2" +dependencies = [ + "instability", + "ratatui-core", + "termina", +] + +[[package]] name = "ratatui-termwiz" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "386b8ff8f74ed749509391c56d549761a2fcdb408e1f42e467286bcb7dac8967" +checksum = "faf03e0380b7744054d6cb74224fe3adf062a029754933f575ca1e3b4c2ce977" dependencies = [ "ratatui-core", "termwiz", @@ -1553,11 +1537,11 @@ dependencies = [ [[package]] name = "ratatui-widgets" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef4f17dd7ac3abf5adc2b920a03c61eee4bfe6a88fa5191936895525371d79c" +checksum = "66e3d19bcc9130ca376277d93b60767ff121ace3be06f5f95f81dd68956407d1" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "hashbrown 0.17.1", "indoc", "instability", @@ -1577,14 +1561,14 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", ] [[package]] name = "regex" -version = "1.12.4" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -1594,9 +1578,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -1624,7 +1608,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys", @@ -1633,9 +1617,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -1666,9 +1650,9 @@ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -1676,29 +1660,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -1803,9 +1787,9 @@ checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "socket2" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys", @@ -1853,7 +1837,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -1869,9 +1853,20 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -1888,6 +1883,19 @@ dependencies = [ ] [[package]] +name = "termina" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9048a889effe34a5cddee0af7f53285198b16dca3be510858d38dfdb3e62a04e" +dependencies = [ + "bitflags 2.13.1", + "parking_lot", + "rustix", + "signal-hook", + "windows-sys", +] + +[[package]] name = "terminfo" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1916,7 +1924,7 @@ checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7" dependencies = [ "anyhow", "base64", - "bitflags 2.13.0", + "bitflags 2.13.1", "fancy-regex", "filedescriptor", "finl_unicode", @@ -1961,11 +1969,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ - "thiserror-impl 2.0.18", + "thiserror-impl 2.0.20", ] [[package]] @@ -1976,34 +1984,34 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] [[package]] name = "time" -version = "0.3.47" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" dependencies = [ "deranged", "libc", @@ -2016,15 +2024,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "tokio" -version = "1.52.3" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "bytes", "libc", @@ -2038,20 +2046,20 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 3.0.3", ] [[package]] name = "toml" -version = "1.1.2+spec-1.1.0" +version = "1.1.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" dependencies = [ "indexmap", "serde_core", @@ -2073,18 +2081,18 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.1.1+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] name = "tracing" @@ -2105,7 +2113,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2202,12 +2210,12 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.3" +version = "1.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "2cefc03fd367c0c6d4305de1b312cf00248c4114f4a0418ce6a6af769e3b0bd9" dependencies = [ "atomic", - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", "wasm-bindgen", ] @@ -2255,23 +2263,14 @@ version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" dependencies = [ "cfg-if", "once_cell", @@ -2282,9 +2281,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2292,61 +2291,27 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" dependencies = [ "unicode-ident", ] [[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.13.0", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - -[[package]] name = "wezterm-bidi" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2470,7 +2435,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2481,7 +2446,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.117", + "syn 2.0.119", ] [[package]] @@ -2519,18 +2484,9 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" - -[[package]] -name = "wit-bindgen" -version = "0.51.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" [[package]] name = "wit-bindgen" @@ -2539,86 +2495,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.13.0", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - -[[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/pkgs/by-name/mp/mpdpopm/Cargo.toml b/pkgs/by-name/mp/mpdpopm/Cargo.toml index 87f4ea48..8152fb40 100644 --- a/pkgs/by-name/mp/mpdpopm/Cargo.toml +++ b/pkgs/by-name/mp/mpdpopm/Cargo.toml @@ -34,11 +34,11 @@ lalrpop-util = { version = "0.23", features = ["lexer"] } lazy_static = "1.5" os_str_bytes = "7.2" pin-project = "1.1" -regex = "1.12" +regex = "1.13" serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0.150" +serde_json = "1.0.151" toml = "1.1" -tokio = { version = "1.52", features = [ +tokio = { version = "1.53", features = [ "io-util", "macros", "net", @@ -50,7 +50,7 @@ tokio = { version = "1.52", features = [ ] } tracing = "0.1.44" tracing-subscriber = { version = "0.3.23", features = ["env-filter"] } -anyhow = "1.0.102" +anyhow = "1.0.104" shlex = "2.0.1" -rand = "0.10.1" -ratatui = "0.30.1" +rand = "0.10.2" +ratatui = "0.30.2" diff --git a/pkgs/by-name/mp/mpdpopm/flake.nix b/pkgs/by-name/mp/mpdpopm/flake.nix index d672bd1b..d2e37260 100644 --- a/pkgs/by-name/mp/mpdpopm/flake.nix +++ b/pkgs/by-name/mp/mpdpopm/flake.nix @@ -15,10 +15,10 @@ outputs = {self, ...}: let system = "x86_64-linux"; - sources = import ../../../../npins/full.nix {}; + sources = import ../../../../unflake.nix; - pkgs = (sources.loadFlake "nixpkgs").legacyPackages."${system}"; - treefmt-nix = sources.loadFlake "treefmt-nix"; + pkgs = sources.nixpkgs.legacyPackages."${system}"; + inherit (sources) treefmt-nix; treefmtEval = import ./treefmt.nix {inherit treefmt-nix pkgs;}; in { diff --git a/pkgs/by-name/no/notify-run/Cargo.lock b/pkgs/by-name/no/notify-run/Cargo.lock index ef352c0f..c1ff746e 100644 --- a/pkgs/by-name/no/notify-run/Cargo.lock +++ b/pkgs/by-name/no/notify-run/Cargo.lock @@ -13,9 +13,9 @@ version = 4 [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "notify-run" diff --git a/pkgs/by-name/no/notify-run/Cargo.toml b/pkgs/by-name/no/notify-run/Cargo.toml index f7da67de..ceff208e 100644 --- a/pkgs/by-name/no/notify-run/Cargo.toml +++ b/pkgs/by-name/no/notify-run/Cargo.toml @@ -17,4 +17,4 @@ edition = "2024" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -anyhow = "1.0.102" +anyhow = "1.0.104" diff --git a/pkgs/by-name/no/notify-run/flake.nix b/pkgs/by-name/no/notify-run/flake.nix index ea5fecb2..f8649e8f 100644 --- a/pkgs/by-name/no/notify-run/flake.nix +++ b/pkgs/by-name/no/notify-run/flake.nix @@ -15,9 +15,9 @@ outputs = {...}: let system = "x86_64-linux"; - sources = import ../../../../npins/full.nix {}; + sources = import ../../../../unflake.nix; - pkgs = (sources.loadFlake "nixpkgs").legacyPackages."${system}"; + pkgs = sources.nixpkgs.legacyPackages."${system}"; in { devShells."${system}".default = pkgs.mkShell { packages = [ diff --git a/pkgs/by-name/no/notify-run/src/main.rs b/pkgs/by-name/no/notify-run/src/main.rs index a6a0165a..94f9ad4e 100644 --- a/pkgs/by-name/no/notify-run/src/main.rs +++ b/pkgs/by-name/no/notify-run/src/main.rs @@ -8,7 +8,13 @@ // You should have received a copy of the License along with this program. // If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -use std::{env::args, path::PathBuf, process::Command}; +use std::{ + env::args, + io::{BufRead, BufReader, Read, Write}, + path::PathBuf, + process::{Command, Stdio}, + thread::JoinHandle, +}; use anyhow::{Context, Result}; @@ -20,18 +26,40 @@ fn main() -> Result<()> { cmd.args(arguments.split(" ").collect::<Vec<_>>().as_slice()); } - eprintln!("Spawning {:?}", cmd); + eprintln!("notify-run> Spawning {:?}", cmd); - let output = cmd - .output() - .with_context(|| format!("Failed to spawn and await output of {:?}", cmd))?; + let mut child = cmd + .stderr(Stdio::piped()) + .stdout(Stdio::piped()) + .spawn() + .with_context(|| format!("Failed to spawn {:?}", cmd))?; - if !output.status.success() { + let (stdout, stderr) = ( + child.stdout.take().expect("Was piped"), + child.stderr.take().expect("Was piped"), + ); + + let name = PathBuf::from(&args[0]) + .file_name() + .expect("this to be a command, and thus have a file_name") + .to_string_lossy() + .to_string(); + + let stdout_t = write_thread(stdout, name.to_owned()); + let stderr_t = write_thread(stderr, name.to_owned()); + stdout_t + .join() + .unwrap() + .context("Failed to join stdout thread")?; + stderr_t + .join() + .unwrap() + .context("Failed to join stderr thread")?; + + let status = child.wait().context("Failed to wait for child output")?; + if !status.success() { let mut notify_send = Command::new("notify-send"); - notify_send.args([ - format!("Command {:?} failed", cmd).as_str(), - &String::from_utf8_lossy(output.stderr.as_slice()), - ]); + notify_send.args([format!("Command {:?} failed", cmd).as_str()]); notify_send.status().with_context(|| { format!( @@ -39,27 +67,29 @@ fn main() -> Result<()> { cmd ) })?; - } else { - let name = PathBuf::from(&args[0]) - .file_name() - .expect("this to be a command, and thus have a file_name") - .to_string_lossy() - .to_string(); - - print!("{}", append_name(&name, &output.stdout)); - eprint!("{}", append_name(&name, &output.stderr)); } Ok(()) } -fn append_name(name: &str, base: &[u8]) -> String { - let base = String::from_utf8_lossy(base).to_string(); +fn write_thread<R: Read + Send + 'static>(input: R, name: String) -> JoinHandle<Result<()>> { + std::thread::spawn(move || { + let mut reader = BufReader::new(input); - let mut output = String::new(); - for line in base.lines() { - output.push_str(format!("{name}> {line}\n").as_str()); - } + let mut buf = String::new(); + loop { + buf.clear(); + if reader + .read_line(&mut buf) + .context("Failed to read from child output")? + == 0 + { + break; + } + + write!(std::io::stdout(), "{name}> {buf}")?; + } - output + Ok(()) + }) } diff --git a/pkgs/by-name/qu/qutebrowser-patched/package.nix b/pkgs/by-name/qu/qutebrowser-patched/package.nix index 1e0532a1..bf4fab1d 100644 --- a/pkgs/by-name/qu/qutebrowser-patched/package.nix +++ b/pkgs/by-name/qu/qutebrowser-patched/package.nix @@ -4,7 +4,8 @@ }: let python3NoSpeech = python3.override { packageOverrides = self: super: { - pyqt6 = super.pyqt6.override {withSpeech = false;}; + # NOTE: The re-compile is not worth the space saving <2026-07-01> + # pyqt6 = super.pyqt6.override {withSpeech = false;}; }; }; # NOTE: It's just not feasible to re-compile a webengine. <2026-05-29> diff --git a/pkgs/by-name/ri/river-mk-keymap/Cargo.lock b/pkgs/by-name/ri/river-mk-keymap/Cargo.lock index a4287cb4..0f7bae8a 100644 --- a/pkgs/by-name/ri/river-mk-keymap/Cargo.lock +++ b/pkgs/by-name/ri/river-mk-keymap/Cargo.lock @@ -79,15 +79,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "bitflags" @@ -97,9 +97,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "byteorder" @@ -109,9 +109,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.2.64" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" dependencies = [ "find-msvc-tools", "shlex", @@ -125,9 +125,9 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "clap" -version = "4.6.1" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -135,9 +135,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -147,9 +147,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", @@ -281,9 +281,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "float-ord" @@ -297,7 +297,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c7e611d49285d4c4b2e1727b72cf05353558885cc5252f93707b845dfcaf3d3" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "byteorder", "core-foundation", "core-graphics", @@ -328,9 +328,9 @@ dependencies = [ [[package]] name = "foreign-types-macros" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +checksum = "ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225" dependencies = [ "proc-macro2", "quote", @@ -401,9 +401,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libloading" @@ -417,9 +417,9 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "28d0a00925a9f930d679b6789b721e3a7f9ed110f41b86d2497caa780c3a070a" dependencies = [ "libc", ] @@ -432,21 +432,21 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "log" -version = "0.4.32" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memmap2" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] @@ -499,33 +499,33 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.39.4" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -577,7 +577,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys", @@ -601,9 +601,9 @@ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -611,18 +611,18 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", @@ -631,9 +631,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -662,9 +662,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.117" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -673,18 +673,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", @@ -737,9 +737,9 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wayland-backend" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" +checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" dependencies = [ "cc", "downcast-rs", @@ -750,11 +750,11 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.14" +version = "0.31.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" +checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "rustix", "wayland-backend", "wayland-scanner", @@ -762,11 +762,11 @@ dependencies = [ [[package]] name = "wayland-protocols" -version = "0.32.12" +version = "0.32.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-scanner", @@ -778,7 +778,7 @@ version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.13.0", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -787,9 +787,9 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.10" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" dependencies = [ "proc-macro2", "quick-xml", @@ -873,6 +873,6 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/pkgs/by-name/ri/river-mk-keymap/Cargo.toml b/pkgs/by-name/ri/river-mk-keymap/Cargo.toml index 3abe4d67..fba97053 100644 --- a/pkgs/by-name/ri/river-mk-keymap/Cargo.toml +++ b/pkgs/by-name/ri/river-mk-keymap/Cargo.toml @@ -17,24 +17,24 @@ edition = "2021" [dependencies] ab_glyph = "0.2.32" -anyhow = "1.0.102" -clap = { version = "4.6.1", features = ["derive"] } +anyhow = "1.0.104" +clap = { version = "4.6.6", features = ["derive"] } font-kit = "0.14.3" keymaps = { version = "1.2.0", features = [ "serde", "mouse-keys", "modifier-keys", ] } -memmap2 = "0.9.10" +memmap2 = "0.9.11" rustix = { version = "1.1.4", features = ["fs", "shm"] } -serde = { version = "1.0.228", features = ["derive"] } -serde_json = "1.0.150" +serde = { version = "1.0.229", features = ["derive"] } +serde_json = "1.0.151" shlex = "2.0.1" -thiserror = "2.0.18" +thiserror = "2.0.20" vte = "0.15.0" -wayland-client = { version = "0.31.14", default-features = false } +wayland-client = { version = "0.31.15", default-features = false } wayland-protocols-wlr = { version = "0.3.12", features = ["client"] } -wayland-scanner = { version = "0.31.10", default-features = false } +wayland-scanner = { version = "0.31.11", default-features = false } [profile.release] lto = true diff --git a/pkgs/by-name/ri/river-mk-keymap/flake.nix b/pkgs/by-name/ri/river-mk-keymap/flake.nix index d1467506..6cf70c97 100644 --- a/pkgs/by-name/ri/river-mk-keymap/flake.nix +++ b/pkgs/by-name/ri/river-mk-keymap/flake.nix @@ -16,8 +16,8 @@ outputs = {...}: let system = "x86_64-linux"; - sources = import ../../../../npins/full.nix {}; - pkgs = (sources.loadFlake "nixpkgs").legacyPackages."${system}"; + sources = import ../../../../unflake.nix; + pkgs = sources.nixpkgs.legacyPackages."${system}"; nativeBuildInputs = [ pkgs.pkg-config diff --git a/pkgs/by-name/sw/swallow/package.nix b/pkgs/by-name/sw/sw/package.nix index 16608143..dea7e16c 100644 --- a/pkgs/by-name/sw/swallow/package.nix +++ b/pkgs/by-name/sw/sw/package.nix @@ -13,8 +13,8 @@ river-classic, }: writeShellApplication { - name = "swallow"; - text = builtins.readFile ./swallow.sh; + name = "sw"; + text = builtins.readFile ./sw.sh; # We need to inherit the path, so that we can spawn stuff in a swallowed mode. inheritPath = true; diff --git a/pkgs/by-name/sw/swallow/swallow.sh b/pkgs/by-name/sw/sw/sw.sh index ac1858ea..f71f65ee 100755 --- a/pkgs/by-name/sw/swallow/swallow.sh +++ b/pkgs/by-name/sw/sw/sw.sh @@ -14,12 +14,36 @@ throwup() { riverctl focus-previous-tags } +swallow() { + # Make sure that we actually `throwup`, when the command fails + set +e + + eat && "$@" + throwup + + set -e +} + if [ -z "$*" ]; then - printf "ERROR: No arguments supplied\n" -elif ! command -v "$1" >/dev/null; then - printf "ERROR: Command '%s' does not exist\n" "$1" + printf "sw: No arguments supplied\n" + exit 2 else - eat && "$@" + case "$1" in + "-n" | "--nix") + shift 1 + [ -z "$1" ] && { + printf "sw: --nix requires a nix installible\n" + exit 2 + } + + # Build it first, so the user still sees a progress bar + nix build --no-link "n#$1" + + swallow nix run "n#$1" + ;; + *) + swallow "$@" + ;; + esac - throwup fi diff --git a/modules/by-name/lf/lf/wrappers/lm/default.nix b/pkgs/by-name/sy/systemd-toggle/package.nix index 42bdc687..04ed576f 100644 --- a/modules/by-name/lf/lf/wrappers/lm/default.nix +++ b/pkgs/by-name/sy/systemd-toggle/package.nix @@ -7,12 +7,17 @@ # # You should have received a copy of the License along with this program. # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -{writeShellApplication}: +{ + writeShellApplication, + systemd, +}: writeShellApplication { - name = "lm"; - text = builtins.readFile ./lm.sh; - - # This is sourced in the shell - inheritPath = true; - bashOptions = []; + name = "systemd-toggle"; + text = builtins.readFile ./systemd-toggle.sh; + runtimeInputs = [ + systemd + ]; + meta = { + mainProgram = "systemd-toggle"; + }; } diff --git a/pkgs/by-name/sy/systemd-toggle/systemd-toggle.sh b/pkgs/by-name/sy/systemd-toggle/systemd-toggle.sh new file mode 100755 index 00000000..a8290238 --- /dev/null +++ b/pkgs/by-name/sy/systemd-toggle/systemd-toggle.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env sh + +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + +use_user=false +service="" +while [ "$#" -ne 0 ]; do + case "$1" in + "--user") + use_user=true + ;; + *) + if [ -n "$service" ]; then + echo "Service was already specified as: '$service'" + exit 2 + else + service="$1" + fi + ;; + esac + + shift 1 +done + +user_str="" +if [ "$use_user" = "true" ]; then + user_str="--user" +fi + +service_status="$(systemctl $user_str show "$service" | grep ActiveState | sed 's/ActiveState=//')" + +if [ "$service_status" = "inactive" ]; then + systemctl $user_str start "$service" +else + systemctl $user_str stop "$service" +fi + +# vim: ft=sh diff --git a/pkgs/by-name/ta/tails-iso/files.json b/pkgs/by-name/ta/tails-iso/files.json index 0e42badf..096193f4 100644 --- a/pkgs/by-name/ta/tails-iso/files.json +++ b/pkgs/by-name/ta/tails-iso/files.json @@ -1,7 +1,7 @@ { - "version": "7.8.1", + "version": "7.11", "files": { - "iso.sig": "sha256-DQm+EHe0KllmzLQzGU61cqaRDNjhU3KUCtDzHKDwWck=", - "iso": "sha256-Y4Sch1ZgWUODi9rxcXimVrFvicXPCN6SgLvINvJGcvw=" + "iso.sig": "sha256-npEcaVwrY4F1ot79WE75h1iIxtDv8q3JcNfi9Ppd1cA=", + "iso": "sha256-1L7peM7wf9S5qCtiWz472vxEHZCfeUU0YF0LC36jP0o=" } } diff --git a/pkgs/by-name/ta/tails-iso/package.nix b/pkgs/by-name/ta/tails-iso/package.nix index 87bfd0b2..3325f178 100644 --- a/pkgs/by-name/ta/tails-iso/package.nix +++ b/pkgs/by-name/ta/tails-iso/package.nix @@ -30,7 +30,7 @@ }) (fetchurl { url = "https://tails.net/tails-signing.key"; - hash = "sha256-OwdqyM7o7K6F5Km0U1RU3hzsnaT+Yw0sjQk/thMeq1k="; + hash = "sha256-LhWSTlgT9FJnd6RQZA3avLzhHKgfanRZkiipMjL1ZP8="; }) ]; @@ -40,20 +40,16 @@ sequoia-sq ]; - buildPhase = - /* - bash - */ - '' - for src in $srcs; do - cp --recursive "$src" "$(stripHash "$src")" - done + buildPhase = '' + for src in $srcs; do + cp --recursive "$src" "$(stripHash "$src")" + done - sq verify \ - --signer-file=tails-signing.key \ - --signature-file=tails-${finalAttrs.version}.iso.sig \ - tails-${finalAttrs.version}.iso - ''; + sq verify \ + --signer-file=tails-signing.key \ + --signature-file=tails-${finalAttrs.version}.iso.sig \ + tails-${finalAttrs.version}.iso + ''; installPhase = '' cp tails-${finalAttrs.version}.iso "$out"; diff --git a/pkgs/by-name/ta/tails-iso/update.sh b/pkgs/by-name/ta/tails-iso/update.sh index 10336449..363df8c5 100755 --- a/pkgs/by-name/ta/tails-iso/update.sh +++ b/pkgs/by-name/ta/tails-iso/update.sh @@ -2,6 +2,10 @@ set -e +root="$(git rev-parse --show-toplevel)" + +cd "$root/pkgs/by-name/ta/tails-iso/" + tmpHomePath="$(mktemp -d "${TMPDIR:-/tmp}/nix-prefetch-url-XXXXXXXXXX")" cleanup() { chmod -R u+w "$tmpHomePath" @@ -43,12 +47,16 @@ get_sha256() { echo "$hash" } -old_version="$(jq .version --raw-output <./files.json)" new_version="$(curl --follow https://download.tails.net/tails/stable/ 2>/dev/null | html2text -links | grep --regexp='\s*[0-9]\. tails-amd64-' | sed 's/\s*[0-9]\. tails-amd64-\(.*\)\//\1/')" -if [ "$old_version" = "$new_version" ]; then - # No need to update. - exit 0 +# The `files.json` file might not be present, if a previous update failed. +if test -f ./files.json; then + old_version="$(jq .version --raw-output <./files.json)" + + if [ "$old_version" = "$new_version" ]; then + # No need to update. + exit 0 + fi fi final_version="amd64-$new_version" diff --git a/pkgs/by-name/ts/tskm/Cargo.lock b/pkgs/by-name/ts/tskm/Cargo.lock index 93f371df..22e23813 100644 --- a/pkgs/by-name/ts/tskm/Cargo.lock +++ b/pkgs/by-name/ts/tskm/Cargo.lock @@ -19,9 +19,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" dependencies = [ "libc", ] @@ -62,7 +62,7 @@ version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -73,14 +73,14 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "arraydeque" @@ -90,13 +90,13 @@ checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -107,9 +107,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "bumpalo" @@ -125,12 +125,12 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.2.64" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad887fd958be91b5098c0248def011f4523ab786cd411be668777e55063501f" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" dependencies = [ "find-msvc-tools", - "shlex 2.0.1", + "shlex", ] [[package]] @@ -155,9 +155,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.1" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -165,9 +165,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -177,26 +177,26 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.6.5" +version = "4.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7a9bfdb35811f9e59832f0f05975114d2251b415fb534108e6f34060fd772" +checksum = "3be2ad0423bdbbb0e25bc89add796f3559706d4a95e1bc98e4d9662a957b6a19" dependencies = [ "clap", "clap_lex", "is_executable", - "shlex 1.3.0", + "shlex", ] [[package]] name = "clap_derive" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -219,9 +219,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "crc32fast" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550" dependencies = [ "cfg-if", ] @@ -244,18 +244,18 @@ dependencies = [ "libc", "option-ext", "redox_users", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] name = "displaydoc" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -268,12 +268,6 @@ dependencies = [ ] [[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] name = "fallible-iterator" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -287,9 +281,9 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "flate2" @@ -303,12 +297,6 @@ dependencies = [ [[package]] name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foldhash" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" @@ -324,21 +312,21 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-core", "futures-task", @@ -359,35 +347,24 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasip2", - "wasip3", "wasm-bindgen", ] [[package]] name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash 0.1.5", -] - -[[package]] -name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ - "foldhash 0.2.0", + "foldhash", ] [[package]] @@ -395,6 +372,9 @@ name = "hashbrown" version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "foldhash", +] [[package]] name = "hashlink" @@ -406,6 +386,15 @@ dependencies = [ ] [[package]] +name = "hashlink" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32069d97bb81e38fa67eab65e3393bf804bb85969f2bc06bf13f64aef5aba248" +dependencies = [ + "hashbrown 0.17.1", +] + +[[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -443,9 +432,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" dependencies = [ "displaydoc", "potential_utf", @@ -457,9 +446,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" dependencies = [ "displaydoc", "litemap", @@ -470,9 +459,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -484,16 +473,17 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" [[package]] name = "icu_properties" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" dependencies = [ + "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", @@ -504,15 +494,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" [[package]] name = "icu_provider" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" dependencies = [ "displaydoc", "icu_locale_core", @@ -524,12 +514,6 @@ dependencies = [ ] [[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - -[[package]] name = "idna" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -551,18 +535,6 @@ dependencies = [ ] [[package]] -name = "indexmap" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" -dependencies = [ - "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", -] - -[[package]] name = "is-terminal" version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -570,16 +542,16 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.61.2", + "windows-sys", ] [[package]] name = "is_executable" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baabb8b4867b26294d818bf3f651a454b6901431711abb96e296245888d6e8c4" +checksum = "82cb6a9f675da968c63b6208c641b9dca58fc0133ae53375736b1767b0cab8bd" dependencies = [ - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -596,9 +568,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.102" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" dependencies = [ "cfg-if", "futures-util", @@ -606,22 +578,16 @@ dependencies = [ ] [[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - -[[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "28d0a00925a9f930d679b6789b721e3a7f9ed110f41b86d2497caa780c3a070a" dependencies = [ "libc", ] @@ -638,27 +604,27 @@ dependencies = [ [[package]] name = "litemap" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" [[package]] name = "log" -version = "0.4.32" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "md5" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae960838283323069879657ca3de837e9f7bbb4c7bf6ea7f1b290d5e9476d2e0" +checksum = "7ebb8d8732c6a6df3d8f032a82911cfc747e00efb95cc46e8d0acd5b5b88570c" [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "miniz_oxide" @@ -711,43 +677,33 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" [[package]] name = "potential_utf" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" dependencies = [ "zerovec", ] [[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - -[[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -788,7 +744,7 @@ dependencies = [ "bitflags", "fallible-iterator", "fallible-streaming-iterator", - "hashlink", + "hashlink 0.11.1", "libsqlite3-sys", "smallvec", "sqlite-wasm-rs", @@ -796,9 +752,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "same-file" @@ -810,16 +766,10 @@ dependencies = [ ] [[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" - -[[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -838,29 +788,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -871,21 +821,15 @@ dependencies = [ [[package]] name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "shlex" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" [[package]] name = "simd-adler32" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "slab" @@ -950,14 +894,25 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.119", +] + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] name = "syn" -version = "2.0.117" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -972,7 +927,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -986,7 +941,7 @@ dependencies = [ "byteorder", "chrono", "flate2", - "getrandom 0.4.2", + "getrandom 0.4.3", "log", "rusqlite", "serde", @@ -1012,38 +967,38 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] [[package]] name = "tinystr" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" dependencies = [ "displaydoc", "zerovec", @@ -1051,9 +1006,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.52.3" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "pin-project-lite", "tokio-macros", @@ -1061,13 +1016,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -1097,12 +1052,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] name = "url" version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1129,11 +1078,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.3" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "f053576934f05a761a402421fbbe3d425d9366f75f978806a037b3ca481abecc" dependencies = [ - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", "serde_core", "wasm-bindgen", @@ -1162,28 +1111,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasip2" -version = "1.0.4+wasi-0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", -] - -[[package]] name = "wasm-bindgen" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" dependencies = [ "cfg-if", "once_cell", @@ -1194,9 +1125,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.75" +version = "0.4.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503b14d284f2c8dac03b819967e155ea753f573586193b2b2c95990cb5d69280" +checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950" dependencies = [ "js-sys", "wasm-bindgen", @@ -1204,9 +1135,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1214,67 +1145,33 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.125" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" dependencies = [ "unicode-ident", ] [[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - -[[package]] name = "winapi-util" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys", ] [[package]] @@ -1298,7 +1195,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1309,7 +1206,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1338,15 +1235,6 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" @@ -1355,179 +1243,20 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - -[[package]] name = "writeable" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" [[package]] name = "yaml-rust2" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "631a50d867fafb7093e709d75aaee9e0e0d5deb934021fcea25ac2fe09edc51e" +checksum = "c6edb26322e610d4f04b7cd34478317685d24d0999437e551fb97c5441151041" dependencies = [ "arraydeque", "encoding_rs", - "hashlink", + "hashlink 0.12.1", ] [[package]] @@ -1549,7 +1278,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] @@ -1570,15 +1299,15 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] [[package]] name = "zerotrie" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" dependencies = [ "displaydoc", "yoke", @@ -1587,9 +1316,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" dependencies = [ "yoke", "zerofrom", @@ -1598,17 +1327,17 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" diff --git a/pkgs/by-name/ts/tskm/Cargo.toml b/pkgs/by-name/ts/tskm/Cargo.toml index 2b0471e6..844cd652 100644 --- a/pkgs/by-name/ts/tskm/Cargo.toml +++ b/pkgs/by-name/ts/tskm/Cargo.toml @@ -16,8 +16,8 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -anyhow = { version = "1.0.102", default-features = false } -clap = { version = "4.6.1", features = [ +anyhow = { version = "1.0.104", default-features = false } +clap = { version = "4.6.6", features = [ "derive", "std", "color", @@ -26,11 +26,11 @@ clap = { version = "4.6.1", features = [ "error-context", "suggestions", ], default-features = false } -clap_complete = { version = "4.6.5", features = ["unstable-dynamic"] } +clap_complete = { version = "4.6.9", features = ["unstable-dynamic"] } dirs = { version = "6.0.0", default-features = false } -log = { version = "0.4.32", default-features = false } -serde = { version = "1.0.228", features = ["derive"], default-features = false } -serde_json = { version = "1.0.150", default-features = false } +log = { version = "0.4.34", default-features = false } +serde = { version = "1.0.229", features = ["derive"], default-features = false } +serde_json = { version = "1.0.151", default-features = false } stderrlog = { version = "0.6.0", default-features = false } taskchampion = { version = "3.1.0", features =["storage", "storage-sqlite"], default-features = false } url = { version = "2.5.8", features = [ @@ -38,9 +38,9 @@ url = { version = "2.5.8", features = [ "std", ], default-features = false } walkdir = { version = "2.5.0", default-features = false } -md5 = { version = "0.8.0", default-features = false } -yaml-rust2 = "0.11.0" -tokio = { version = "1.52.3", features = ["rt-multi-thread"] } +md5 = { version = "0.8.1", default-features = false } +yaml-rust2 = "0.12.0" +tokio = { version = "1.53.1", features = ["rt-multi-thread"] } [profile.release] lto = true diff --git a/pkgs/by-name/ts/tskm/flake.nix b/pkgs/by-name/ts/tskm/flake.nix index e4d22c09..a4a010ae 100644 --- a/pkgs/by-name/ts/tskm/flake.nix +++ b/pkgs/by-name/ts/tskm/flake.nix @@ -16,8 +16,8 @@ outputs = {...}: let system = "x86_64-linux"; - sources = import ../../../../npins/full.nix {}; - pkgs = (sources.loadFlake "nixpkgs").legacyPackages."${system}"; + sources = import ../../../../unflake.nix; + pkgs = sources.nixpkgs.legacyPackages."${system}"; in { devShells."${system}".default = pkgs.mkShell { buildInputs = [ diff --git a/scripts/unflake.sh b/scripts/unflake.sh index b46df36e..f916759a 100755 --- a/scripts/unflake.sh +++ b/scripts/unflake.sh @@ -2,17 +2,6 @@ set -e -# HACK(@bpeetz): unflake doesn't support npins version 8 yet, so we pretend to still use -# version 7. <2026-06-13> -NPINS_DIRECTORY="$(mktemp -t "npins_fake_dir_for_unflake_XXXXX" -d)" -export NPINS_DIRECTORY - -mv npins/sources.json "$NPINS_DIRECTORY/" -jq '.version = 7' <"$NPINS_DIRECTORY/sources.json" >npins/sources.json - NIX_CONFIG="pure-eval = false" nix run -f https://codeberg.org/goldstein/unflake/archive/main.tar.gz unflake -- "$@" -mv "$NPINS_DIRECTORY/sources.json" npins/sources.json -rmdir "$NPINS_DIRECTORY" - # vim: ft=sh diff --git a/unflake.nix b/unflake.nix index 11b30d52..a4ce51fb 100644 --- a/unflake.nix +++ b/unflake.nix @@ -1,122 +1,322 @@ # @generated by https://codeberg.org/goldstein/unflake let indirect_deps = { - unflake_indirect_nixpkgs = builtins.getFlake "flake:nixpkgs"; }; - specs = {}; - deps = indirect_deps // builtins.mapAttrs (_: v: - if builtins.typeOf v.outPath == "set" then - v.outPath - else if v?revision then - { outPath = v.outPath; rev = v.revision; } - else - { outPath = v.outPath; } - ) (import ./npins/default.nix); - injections = rec { - unflake_indirect_nixpkgs = { + specs = rec { + unflake_github_cachix_pre-commit-hooks-nix = { + type = "github"; + owner = "cachix"; + repo = "pre-commit-hooks.nix"; + rev = "809414f0cdadf82cf11b06c2b29ba9b3168b3297"; + lastModified = 1787424939; + narHash = "sha256-O2tBn84NNuHrnqNVxx/XqsXwfYvS1YwBh+7CBnbCYsk="; + }; + unflake_github_hercules-ci_flake-parts = { + type = "github"; + owner = "hercules-ci"; + repo = "flake-parts"; + rev = "427bf4bd9435fdf21321c8cc628c24efc14c0f7a"; + lastModified = 1785627969; + narHash = "sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw="; + }; + unflake_github_ipetkov_crane = { + type = "github"; + owner = "ipetkov"; + repo = "crane"; + rev = "692f7e9ef2ece8125b466f66f2af532b3edaed0d"; + lastModified = 1787326676; + narHash = "sha256-lWhBbBvC05/xwivKBBiM2YNizpmgqCgyOIzomvRuwxs="; + }; + unflake_github_lnl7_nix-darwin_ref_master = { + type = "github"; + owner = "lnl7"; + repo = "nix-darwin"; + rev = "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48"; + lastModified = 1786845137; + narHash = "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ="; + }; + unflake_github_nix-community_nix-index-database_ref_main = { + type = "github"; + owner = "nix-community"; + repo = "nix-index-database"; + rev = "c7962dc97b45129df8d751bedaf37beb5a17706e"; + lastModified = 1786852476; + narHash = "sha256-IM5CYtf86W4w8eUPpKcY/LpdHElmVBtJhaKnoTKxZEA="; + }; + unflake_github_nix-community_nixvim_ref_main = { + type = "github"; + owner = "nix-community"; + repo = "nixvim"; + rev = "bd46166bd8308861cd36984a52ed5d25522d0ba8"; + lastModified = 1787270640; + narHash = "sha256-L3ZXW7MSCPsOZz5powJZZqzZLxuPLh9QXHp5shwzqb8="; + }; + unflake_github_nix-community_disko_ref_master = { + type = "github"; + owner = "nix-community"; + repo = "disko"; + rev = "ff8702b4de27f72b4c78573dfb89ec74e36abdf1"; + lastModified = 1781152676; + narHash = "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o="; + }; + unflake_github_nix-community_home-manager_ref_master = { + type = "github"; + owner = "nix-community"; + repo = "home-manager"; + rev = "ec1a8fdf74ed3f276148ee106299a2ba0e65d51f"; + lastModified = 1787379775; + narHash = "sha256-XL2qfqmocfsvuEGyomZg4nOZfkuSe8vZtrOX99I+b6I="; + }; + unflake_github_nix-community_impermanence_ref_master = { + type = "github"; + owner = "nix-community"; + repo = "impermanence"; + rev = "7b1d382faf603b6d264f58627330f9faa5cba149"; + lastModified = 1769548169; + narHash = "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y="; + }; + unflake_github_nix-community_nixos-generators_ref_master = { + type = "github"; + owner = "nix-community"; + repo = "nixos-generators"; + rev = "8946737ff703382fda7623b9fab071d037e897d5"; + lastModified = 1769813415; + narHash = "sha256-nnVmNNKBi1YiBNPhKclNYDORoHkuKipoz7EtVnXO50A="; + }; + unflake_github_nix-community_lanzaboote_ref_v1-1-0 = { + type = "github"; + owner = "nix-community"; + repo = "lanzaboote"; + rev = "7c9a54a7f87b4539ddbd8bda09a8a5f5f9361aa9"; + lastModified = 1782141370; + narHash = "sha256-hqijVSEETttmo8Okql9/LG0Ua34hdciKW1a5zzlj8mU="; + }; + unflake_github_nix-community_nixpkgs-lib = { + type = "github"; + owner = "nix-community"; + repo = "nixpkgs.lib"; + rev = "6c072ec3b5c474f370866628582bb6533fe6f822"; + lastModified = 1786841782; + narHash = "sha256-auVxpg6qxDnBG7bhSgqcolnbzsNfYvUNTyvOZJoHcrY="; + }; + unflake_github_nix-systems_default_ref_main = { + type = "github"; + owner = "nix-systems"; + repo = "default"; + rev = "da67096a3b9bf56a91d16901293e51ba5b49a27e"; + lastModified = 1681028828; + narHash = "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768="; + }; + unflake_github_nixos_nixpkgs_ref_nixos-unstable = { + type = "github"; + owner = "nixos"; + repo = "nixpkgs"; + rev = "2c423e03bbafcff28bfadc6781a4a8257f205cb5"; + lastModified = 1787360063; + narHash = "sha256-dt4WdcvsA8/RCe+VZZwqU0X+XMM3wBbGCWA0/sFWzGo="; + }; + unflake_github_nixos_flake-compat = { + type = "github"; + owner = "nixos"; + repo = "flake-compat"; + rev = "5edf11c44bc78a0d334f6334cdaf7d60d732daab"; + lastModified = 1767039857; + narHash = "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns="; + }; + unflake_github_numtide_treefmt-nix_ref_main = { + type = "github"; + owner = "numtide"; + repo = "treefmt-nix"; + rev = "27b3b12a8e6375f28ebe122f07d230ca5459bbfa"; + lastModified = 1786901030; + narHash = "sha256-WSFCsDSE5ffgD2MqzkM2CYjeFiKhRF/dJUN8uedb6YE="; + }; + unflake_github_numtide_flake-utils = { + type = "github"; + owner = "numtide"; + repo = "flake-utils"; + rev = "11707dc2f618dd54ca8739b309ec4fc024de578b"; + lastModified = 1731533236; + narHash = "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI="; + }; + unflake_github_oxalica_rust-overlay = { + type = "github"; + owner = "oxalica"; + repo = "rust-overlay"; + rev = "fd2ebb9cc4323d0c5a1336138dab5c3c5a5d8bd9"; + lastModified = 1787367552; + narHash = "sha256-YT4Fs2k7bi+7YzuLt93EtIRgjpwHK5ZfsQEIh5dEQSk="; + }; + unflake_github_ryantm_agenix_ref_main = { + type = "github"; + owner = "ryantm"; + repo = "agenix"; + rev = "b027ee29d959fda4b60b57566d64c98a202e0feb"; + lastModified = 1770165109; + narHash = "sha256-9VnK6Oqai65puVJ4WYtCTvlJeXxMzAp/69HhQuTdl/I="; }; + unflake_git_https---git-foss-syndicate-org-bpeetz-forks-atuin_ref_main = { + type = "git"; + url = "https://git.foss-syndicate.org/bpeetz/forks/atuin"; + ref = "main"; + rev = "9a78305b20aba97617a94ab8e52acd5719593a93"; + revCount = 1861; + lastModified = 1787516633; + narHash = "sha256-eSitueOrO/xYyMP437GVPMJLg3NxF52KVvhal4/3Pa8="; + }; + unflake_git_https---git-lix-systems-lix-project-flake-compat_ref_main = { + type = "git"; + url = "https://git.lix.systems/lix-project/flake-compat"; + ref = "main"; + rev = "382052b74656a369c5408822af3f2501e9b1af81"; + revCount = 94; + lastModified = 1777699697; + narHash = "sha256-Eg9b/rq/ECYwNwEXs5i9wHyhxNI0JrYx2srdI2uZMaQ="; + }; + unflake_git_https---codeberg-org-bpeetz-flake-templates_ref_prime = { + type = "git"; + url = "https://codeberg.org/bpeetz/flake-templates"; + ref = "prime"; + rev = "0294fb03df7c265f8fae24a9e775d69a953bbf03"; + revCount = 204; + lastModified = 1733053857; + narHash = "sha256-rI1qMFzbXVjfEvmf2OS4upnibXpL21its6cCXqhz86o="; + }; + unflake_git_https---git-foss-syndicate-org-bpeetz-devshells_ref_prime = { + type = "git"; + url = "https://git.foss-syndicate.org/bpeetz/devshells"; + ref = "prime"; + rev = "eeadc1096d4f122e09109bb10195ee9a8b6e3be6"; + revCount = 3; + lastModified = 1786571173; + narHash = "sha256-qnSNf9dhKAAFmRTDKCzz8+PDyAvQ+wG3vCoOJCChdxU="; + }; + unflake_git_https---git-foss-syndicate-org-bpeetz-qmk_layout_ref_prime = { + type = "git"; + url = "https://git.foss-syndicate.org/bpeetz/qmk_layout"; + ref = "prime"; + rev = "4dff2e6ba5c9c80de3e3d2213ad28802814c3bba"; + revCount = 39; + lastModified = 1753517111; + narHash = "sha256-dv5P3ahDICDacdzEmcyxrtKgbRWhVFiKQaLEz+WniGM="; + }; + unflake_git_https---git-foss-syndicate-org-vhack-eu-nix-library_ref_prime = { + type = "git"; + url = "https://git.foss-syndicate.org/vhack.eu/nix-library"; + ref = "prime"; + rev = "65bf71bb6ef05ce684924a1dc248bb2e8e2869fb"; + revCount = 17; + lastModified = 1738443114; + narHash = "sha256-IV7n/l3rFoz5UuavrDv0a7IIOPne0jDQVmJAR8bve8U="; + }; + unflake_tarball_https---channels-nixos-org-nixos-26-05-nixexprs-tar-zst = { + type = "tarball"; + url = "https://releases.nixos.org/nixos/26.05/nixos-26.05.8111.5880666fd9eb/nixexprs.tar.zst?lastModified=1787204541"; + rev = "5880666fd9eb563038431edb35c2d0aa595884e6"; + lastModified = 1787204541; + narHash = "sha256-Rb7J0ykni6QA+m5ZC6t5gbBBgkS0xn3bf2fgKpSSbFE="; + }; + unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst = { + type = "tarball"; + url = "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1059570.2c423e03bbaf/nixexprs.tar.zst?lastModified=1787360063"; + rev = "2c423e03bbafcff28bfadc6781a4a8257f205cb5"; + lastModified = 1787360063; + narHash = "sha256-95aJfHyQTLWslCXFVNB0odgmVkpdmDezQwTg9mhqV1E="; + }; + unflake_github_nix-systems_default_ref_main_flake_false = unflake_github_nix-systems_default_ref_main; + unflake_github_nixos_flake-compat_flake_false = unflake_github_nixos_flake-compat; + }; + deps = indirect_deps // builtins.mapAttrs (_: spec: builtins.fetchTree spec) specs; + injections = rec { unflake_github_cachix_pre-commit-hooks-nix = { flake-compat = "unflake_github_nixos_flake-compat_flake_false"; - gitignore = "unflake_github_hercules-ci_gitignore-nix"; - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; }; unflake_github_hercules-ci_flake-parts = { nixpkgs-lib = "unflake_github_nix-community_nixpkgs-lib"; }; - unflake_github_hercules-ci_gitignore-nix = { - nixpkgs = "unflake_indirect_nixpkgs"; - }; unflake_github_ipetkov_crane = { }; unflake_github_lnl7_nix-darwin_ref_master = { - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; }; unflake_github_nix-community_nix-index-database_ref_main = { nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixos-unstable"; }; unflake_github_nix-community_nixvim_ref_main = { flake-parts = "unflake_github_hercules-ci_flake-parts"; - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; - systems = "unflake_github_nix-systems_default_ref_future-26-11"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; + systems = "unflake_github_nix-systems_default_ref_main_flake_false"; }; unflake_github_nix-community_disko_ref_master = { - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; }; unflake_github_nix-community_home-manager_ref_master = { - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; }; unflake_github_nix-community_impermanence_ref_master = { - home-manager = "unflake_github_nix-community_home-manager"; + home-manager = "unflake_github_nix-community_home-manager_ref_master"; nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixos-unstable"; }; - unflake_github_nix-community_lanzaboote_ref_master = { + unflake_github_nix-community_nixos-generators_ref_master = { + nixlib = "unflake_github_nix-community_nixpkgs-lib"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; + }; + unflake_github_nix-community_lanzaboote_ref_v1-1-0 = { crane = "unflake_github_ipetkov_crane"; nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixos-unstable"; pre-commit = "unflake_github_cachix_pre-commit-hooks-nix"; rust-overlay = "unflake_github_oxalica_rust-overlay"; }; - unflake_github_nix-community_nixos-generators_ref_master = { - nixlib = "unflake_github_nix-community_nixpkgs-lib"; - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; - }; - unflake_github_nix-community_home-manager = { - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; - }; unflake_github_nix-community_nixpkgs-lib = { }; - unflake_github_nix-systems_default_ref_future-26-11 = { - }; - unflake_github_nix-systems_default = { - }; - unflake_github_nix-systems_x86_64-linux = { - }; - unflake_github_nixos_nixpkgs_ref_nixos-25-05 = { - }; - unflake_github_nixos_nixpkgs_ref_nixos-26-05 = { + unflake_github_nix-systems_default_ref_main = { }; unflake_github_nixos_nixpkgs_ref_nixos-unstable = { }; - unflake_github_nixos_nixpkgs_ref_nixos-unstable-small = { - }; - unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable = { - }; unflake_github_numtide_treefmt-nix_ref_main = { - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; }; unflake_github_numtide_flake-utils = { - systems = "unflake_github_nix-systems_default"; - }; - unflake_github_numtide_treefmt-nix = { - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; + systems = "unflake_github_nix-systems_default_ref_main"; }; unflake_github_oxalica_rust-overlay = { - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; }; unflake_github_ryantm_agenix_ref_main = { darwin = "unflake_github_lnl7_nix-darwin_ref_master"; - home-manager = "unflake_github_nix-community_home-manager"; - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixos-25-05"; - systems = "unflake_github_nix-systems_default"; + home-manager = "unflake_github_nix-community_home-manager_ref_master"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-26-05-nixexprs-tar-zst"; + systems = "unflake_github_nix-systems_default_ref_main"; }; unflake_git_https---git-foss-syndicate-org-bpeetz-forks-atuin_ref_main = { - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixos-unstable-small"; + crane = "unflake_github_ipetkov_crane"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; }; unflake_git_https---git-lix-systems-lix-project-flake-compat_ref_main = { }; unflake_git_https---codeberg-org-bpeetz-flake-templates_ref_prime = { flake-utils = "unflake_github_numtide_flake-utils"; - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; - systems = "unflake_github_nix-systems_x86_64-linux"; - treefmt-nix = "unflake_github_numtide_treefmt-nix"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; + systems = "unflake_github_nix-systems_default_ref_main"; + treefmt-nix = "unflake_github_numtide_treefmt-nix_ref_main"; + }; + unflake_git_https---git-foss-syndicate-org-bpeetz-devshells_ref_prime = { + library = "unflake_git_https---git-foss-syndicate-org-vhack-eu-nix-library_ref_prime"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; }; unflake_git_https---git-foss-syndicate-org-bpeetz-qmk_layout_ref_prime = { flake-utils = "unflake_github_numtide_flake-utils"; - nixpkgs = "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable"; - systems = "unflake_github_nix-systems_x86_64-linux"; - treefmt-nix = "unflake_github_numtide_treefmt-nix"; + nixpkgs = "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst"; + systems = "unflake_github_nix-systems_default_ref_main"; + treefmt-nix = "unflake_github_numtide_treefmt-nix_ref_main"; }; unflake_git_https---git-foss-syndicate-org-vhack-eu-nix-library_ref_prime = { }; + unflake_tarball_https---channels-nixos-org-nixos-26-05-nixexprs-tar-zst = { + }; + unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst = { + }; }; inject = name: flake_path: subdir: let @@ -133,10 +333,8 @@ let }; in self; universe = rec { - unflake_indirect_nixpkgs = inject "unflake_indirect_nixpkgs" "flake.nix" ""; unflake_github_cachix_pre-commit-hooks-nix = inject "unflake_github_cachix_pre-commit-hooks-nix" "flake.nix" ""; unflake_github_hercules-ci_flake-parts = inject "unflake_github_hercules-ci_flake-parts" "flake.nix" ""; - unflake_github_hercules-ci_gitignore-nix = inject "unflake_github_hercules-ci_gitignore-nix" "flake.nix" ""; unflake_github_ipetkov_crane = inject "unflake_github_ipetkov_crane" "flake.nix" ""; unflake_github_lnl7_nix-darwin_ref_master = inject "unflake_github_lnl7_nix-darwin_ref_master" "flake.nix" ""; unflake_github_nix-community_nix-index-database_ref_main = inject "unflake_github_nix-community_nix-index-database_ref_main" "flake.nix" ""; @@ -144,42 +342,39 @@ let unflake_github_nix-community_disko_ref_master = inject "unflake_github_nix-community_disko_ref_master" "flake.nix" ""; unflake_github_nix-community_home-manager_ref_master = inject "unflake_github_nix-community_home-manager_ref_master" "flake.nix" ""; unflake_github_nix-community_impermanence_ref_master = inject "unflake_github_nix-community_impermanence_ref_master" "flake.nix" ""; - unflake_github_nix-community_lanzaboote_ref_master = inject "unflake_github_nix-community_lanzaboote_ref_master" "flake.nix" ""; unflake_github_nix-community_nixos-generators_ref_master = inject "unflake_github_nix-community_nixos-generators_ref_master" "flake.nix" ""; - unflake_github_nix-community_home-manager = inject "unflake_github_nix-community_home-manager" "flake.nix" ""; + unflake_github_nix-community_lanzaboote_ref_v1-1-0 = inject "unflake_github_nix-community_lanzaboote_ref_v1-1-0" "flake.nix" ""; unflake_github_nix-community_nixpkgs-lib = inject "unflake_github_nix-community_nixpkgs-lib" "flake.nix" ""; - unflake_github_nix-systems_default_ref_future-26-11 = inject "unflake_github_nix-systems_default_ref_future-26-11" "flake.nix" ""; - unflake_github_nix-systems_default = inject "unflake_github_nix-systems_default" "flake.nix" ""; - unflake_github_nix-systems_x86_64-linux = inject "unflake_github_nix-systems_x86_64-linux" "flake.nix" ""; - unflake_github_nixos_nixpkgs_ref_nixos-25-05 = inject "unflake_github_nixos_nixpkgs_ref_nixos-25-05" "flake.nix" ""; - unflake_github_nixos_nixpkgs_ref_nixos-26-05 = inject "unflake_github_nixos_nixpkgs_ref_nixos-26-05" "flake.nix" ""; + unflake_github_nix-systems_default_ref_main_flake_false = deps.unflake_github_nix-systems_default_ref_main_flake_false; + unflake_github_nix-systems_default_ref_main = inject "unflake_github_nix-systems_default_ref_main" "flake.nix" ""; unflake_github_nixos_nixpkgs_ref_nixos-unstable = inject "unflake_github_nixos_nixpkgs_ref_nixos-unstable" "flake.nix" ""; - unflake_github_nixos_nixpkgs_ref_nixos-unstable-small = inject "unflake_github_nixos_nixpkgs_ref_nixos-unstable-small" "flake.nix" ""; - unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable = inject "unflake_github_nixos_nixpkgs_ref_nixpkgs-unstable" "flake.nix" ""; unflake_github_nixos_flake-compat_flake_false = deps.unflake_github_nixos_flake-compat_flake_false; unflake_github_numtide_treefmt-nix_ref_main = inject "unflake_github_numtide_treefmt-nix_ref_main" "flake.nix" ""; unflake_github_numtide_flake-utils = inject "unflake_github_numtide_flake-utils" "flake.nix" ""; - unflake_github_numtide_treefmt-nix = inject "unflake_github_numtide_treefmt-nix" "flake.nix" ""; unflake_github_oxalica_rust-overlay = inject "unflake_github_oxalica_rust-overlay" "flake.nix" ""; unflake_github_ryantm_agenix_ref_main = inject "unflake_github_ryantm_agenix_ref_main" "flake.nix" ""; unflake_git_https---git-foss-syndicate-org-bpeetz-forks-atuin_ref_main = inject "unflake_git_https---git-foss-syndicate-org-bpeetz-forks-atuin_ref_main" "flake.nix" ""; unflake_git_https---git-lix-systems-lix-project-flake-compat_ref_main = inject "unflake_git_https---git-lix-systems-lix-project-flake-compat_ref_main" "flake.nix" ""; unflake_git_https---codeberg-org-bpeetz-flake-templates_ref_prime = inject "unflake_git_https---codeberg-org-bpeetz-flake-templates_ref_prime" "flake.nix" ""; + unflake_git_https---git-foss-syndicate-org-bpeetz-devshells_ref_prime = inject "unflake_git_https---git-foss-syndicate-org-bpeetz-devshells_ref_prime" "flake.nix" ""; unflake_git_https---git-foss-syndicate-org-bpeetz-qmk_layout_ref_prime = inject "unflake_git_https---git-foss-syndicate-org-bpeetz-qmk_layout_ref_prime" "flake.nix" ""; unflake_git_https---git-foss-syndicate-org-vhack-eu-nix-library_ref_prime = inject "unflake_git_https---git-foss-syndicate-org-vhack-eu-nix-library_ref_prime" "flake.nix" ""; + unflake_tarball_https---channels-nixos-org-nixos-26-05-nixexprs-tar-zst = inject "unflake_tarball_https---channels-nixos-org-nixos-26-05-nixexprs-tar-zst" "flake.nix" ""; + unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst = inject "unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst" "flake.nix" ""; }; inputs = { agenix = universe.unflake_github_ryantm_agenix_ref_main; + devshells = universe.unflake_git_https---git-foss-syndicate-org-bpeetz-devshells_ref_prime; disko = universe.unflake_github_nix-community_disko_ref_master; flake-compat = universe.unflake_git_https---git-lix-systems-lix-project-flake-compat_ref_main; home-manager = universe.unflake_github_nix-community_home-manager_ref_master; impermanence = universe.unflake_github_nix-community_impermanence_ref_master; - lanzaboote = universe.unflake_github_nix-community_lanzaboote_ref_master; + lanzaboote = universe.unflake_github_nix-community_lanzaboote_ref_v1-1-0; library = universe.unflake_git_https---git-foss-syndicate-org-vhack-eu-nix-library_ref_prime; nix-index-database = universe.unflake_github_nix-community_nix-index-database_ref_main; nixos-generators = universe.unflake_github_nix-community_nixos-generators_ref_master; - nixpkgs = universe.unflake_github_nixos_nixpkgs_ref_nixos-unstable-small; - nixpkgs-stable = universe.unflake_github_nixos_nixpkgs_ref_nixos-26-05; + nixpkgs = universe.unflake_tarball_https---channels-nixos-org-nixos-unstable-nixexprs-tar-zst; + nixpkgs-stable = universe.unflake_tarball_https---channels-nixos-org-nixos-26-05-nixexprs-tar-zst; nixvim = universe.unflake_github_nix-community_nixvim_ref_main; qmk_firmware = universe.unflake_git_https---git-foss-syndicate-org-bpeetz-qmk_layout_ref_prime; templates = universe.unflake_git_https---codeberg-org-bpeetz-flake-templates_ref_prime; @@ -24,8 +24,7 @@ __update_sh_run() { unset __update_sh_command } -__update_sh_run unflake.sh --backend=npins -__update_sh_run npins update +__update_sh_run unflake.sh --backend=nix __update_sh_run ./pkgs/update_pkgs.sh "$@" # __update_sh_run nix flake check |
