From 817ca1e9dfb73138593eb270f30a34d2b65110ae Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 23 Mar 2021 19:42:35 +0000 Subject: [PATCH 0001/1588] machine: aramis: add installer script This is the first time that I am setting up LVM-on-LUKS with NixOS, so a VM came in handy to test it out. --- machines/aramis/install.sh | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 machines/aramis/install.sh diff --git a/machines/aramis/install.sh b/machines/aramis/install.sh new file mode 100755 index 0000000..537ef9e --- /dev/null +++ b/machines/aramis/install.sh @@ -0,0 +1,51 @@ +#!/bin/sh + +if [ "$(id -u)" -ne 0 ]; then + echo "This script must be run as root" >&2 + exit 1 +fi + +SWAP_SIZE=16GiB + +parted /dev/nvme0n1 --script -- \ + mklabel gpt \ + mkpart primary 512MiB 100% \ + mkpart ESP fat32 1MiB 512MiB \ + set 2 esp on + +cryptsetup luksFormat /dev/nvme0n1p1 +cryptsetup open /dev/nvme0n1p1 crypt + +pvcreate /dev/mapper/crypt +vgcreate lvm /dev/mapper/crypt +lvcreate -L "$SWAP_SIZE" -n swap lvm +lvcreate -l 100%FREE -n root lvm + +mkfs.ext4 -L nixos /dev/lvm/root +mkswap -L swap /dev/lvm/swap +mkfs.vfat -n boot /dev/nvme0n1p2 + +mount /dev/disk/by-label/nixos /mnt +mkdir /mnt/boot +mount /dev/nvme0n1p2 /mnt/boot +swapon /dev/lvm/swap + +cat << EOF +# Run the following commands as setup user +nixos-generate-config --root /mnt + +# Change uuids to labels +vim /mnt/etc/nixos/hardware-configuration.nix + +# Install system +mkdir -p /mnt/home/ambroisie/git/nix/config +cd /mnt/home/ambroisie/git/nix/config + +git clone . +# Assuming you set up GPG key correctly +git crypt unlock + +# Setup LUKS with 'boot.initrd.luks.devices.crypt', device is /dev/nvme0n1p1, preLVM = true + +# Use 'nixos-install --flake .#aramis --root /mnt --impure' because of home-manager issue +EOF From 825e09f59e82fd0ef4c30d022a24d2efd7c6cabf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 2 Apr 2021 11:49:07 +0000 Subject: [PATCH 0002/1588] flake: refactor handling of shared modules --- flake.nix | 8 +++++++- machines/porthos/default.nix | 8 ++++++++ porthos.nix | 23 ----------------------- 3 files changed, 15 insertions(+), 24 deletions(-) delete mode 100644 porthos.nix diff --git a/flake.nix b/flake.nix index f582719..9f072c5 100644 --- a/flake.nix +++ b/flake.nix @@ -58,12 +58,18 @@ home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; } + # Include generic settings + ./modules + # Include my secrets + ./secrets + # Include my services + ./services ]; buildHost = name: system: lib.nixosSystem { inherit system; modules = defaultModules ++ [ - (./. + "/${name}.nix") + (./. + "/machines/${name}") ]; specialArgs = { # Use my extended lib in NixOS configuration diff --git a/machines/porthos/default.nix b/machines/porthos/default.nix index d8726f2..ec29917 100644 --- a/machines/porthos/default.nix +++ b/machines/porthos/default.nix @@ -9,4 +9,12 @@ ./services.nix ./users.nix ]; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "20.09"; # Did you read the comment? } diff --git a/porthos.nix b/porthos.nix deleted file mode 100644 index ce3a200..0000000 --- a/porthos.nix +++ /dev/null @@ -1,23 +0,0 @@ -# Porthos self-hosted server -{ ... }: - -{ - imports = [ - # Include generic settings - ./modules - # Include porthos-specific modules - ./machines/porthos - # Include my secrets - ./secrets - # Include my services - ./services - ]; - - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "20.09"; # Did you read the comment? -} From b30d574069a3a29a6f82e5ffe0181aa974058fe3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 3 Apr 2021 17:11:55 +0000 Subject: [PATCH 0003/1588] lib: attrs: add genAttrs' function --- lib/attrs.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/attrs.nix b/lib/attrs.nix index 4595467..17ed3bf 100644 --- a/lib/attrs.nix +++ b/lib/attrs.nix @@ -4,4 +4,6 @@ let in { mapFilterAttrs = pred: f: attrs: filterAttrs pred (mapAttrs' f attrs); + + genAttrs' = values: f: listToAttrs (map f values); } From af317ac156f882e5d2ef0370a48fb0345d7ce008 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 3 Apr 2021 17:12:34 +0000 Subject: [PATCH 0004/1588] lib: attrs: document functions --- lib/attrs.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/attrs.nix b/lib/attrs.nix index 17ed3bf..7b86aaa 100644 --- a/lib/attrs.nix +++ b/lib/attrs.nix @@ -1,9 +1,21 @@ { lib, ... }: let - inherit (lib) filterAttrs mapAttrs'; + inherit (lib) filterAttrs listToAttrs mapAttrs'; in { + # Filter a generated set of attrs using a predicate function. + # + # mapFilterAttrs :: + # (name -> value -> bool) + # (name -> value -> { name = any; value = any; }) + # attrs mapFilterAttrs = pred: f: attrs: filterAttrs pred (mapAttrs' f attrs); + # Generate an attribute set by mapping a function over a list of values. + # + # genAttrs' :: + # [ values ] + # (value -> { name = any; value = any; }) + # attrs genAttrs' = values: f: listToAttrs (map f values); } From 9690b0b14baf7f2ba07efee0c9d149e3e114589d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 3 Apr 2021 17:35:14 +0000 Subject: [PATCH 0005/1588] lib: attrs: add renaming functions --- lib/attrs.nix | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/attrs.nix b/lib/attrs.nix index 7b86aaa..84b63c7 100644 --- a/lib/attrs.nix +++ b/lib/attrs.nix @@ -1,6 +1,6 @@ { lib, ... }: let - inherit (lib) filterAttrs listToAttrs mapAttrs'; + inherit (lib) filterAttrs listToAttrs mapAttrs' nameValuePair; in { # Filter a generated set of attrs using a predicate function. @@ -18,4 +18,19 @@ in # (value -> { name = any; value = any; }) # attrs genAttrs' = values: f: listToAttrs (map f values); + + # Rename each of the attributes in an attribute set using the mapping function + # + # renameAttrs :: + # (name -> new name) + # attrs + renameAttrs = f: mapAttrs' (name: value: nameValuePair (f name) value); + + # Rename each of the attributes in an attribute set using a function which + # takes the attribute's name and value as inputs. + # + # renameAttrs' :: + # (name -> value -> new name) + # attrs + renameAttrs' = f: mapAttrs' (name: value: nameValuePair (f name value) value); } From 63791a98a4d7cd9f39cf19d614d88acfc98a9a64 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 2 Apr 2021 12:00:21 +0000 Subject: [PATCH 0006/1588] machines: add aramis --- flake.nix | 1 + machines/aramis/boot.nix | 32 ++++++++++++++++++++++++++++ machines/aramis/default.nix | 38 ++++++++++++++++++++++++++++++++++ machines/aramis/hardware.nix | 26 +++++++++++++++++++++++ machines/aramis/networking.nix | 21 +++++++++++++++++++ machines/aramis/sound.nix | 5 +++++ 6 files changed, 123 insertions(+) create mode 100644 machines/aramis/boot.nix create mode 100644 machines/aramis/default.nix create mode 100644 machines/aramis/hardware.nix create mode 100644 machines/aramis/networking.nix create mode 100644 machines/aramis/sound.nix diff --git a/flake.nix b/flake.nix index 9f072c5..404b2c0 100644 --- a/flake.nix +++ b/flake.nix @@ -109,6 +109,7 @@ }; nixosConfigurations = lib.mapAttrs buildHost { + aramis = "x86_64-linux"; porthos = "x86_64-linux"; }; }; diff --git a/machines/aramis/boot.nix b/machines/aramis/boot.nix new file mode 100644 index 0000000..2169da5 --- /dev/null +++ b/machines/aramis/boot.nix @@ -0,0 +1,32 @@ +{ ... }: +{ + boot = { + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + + initrd = { + availableKernelModules = [ + "nvme" + "sd_mod" + "sdhci_pci" + "usb_storage" + "usbhid" + "xhci_pci" + ]; + kernelModules = [ + "dm-snapshot" + ]; + luks.devices.crypt = { + device = "/dev/nvme0n1p1"; + preLVM = true; + }; + }; + + kernelModules = [ + "kvm-intel" + ]; + extraModulePackages = [ ]; + }; +} diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix new file mode 100644 index 0000000..67486d1 --- /dev/null +++ b/machines/aramis/default.nix @@ -0,0 +1,38 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ + imports = [ + ./boot.nix + ./hardware.nix + ./networking.nix + ./sound.nix + ]; + + # Set your time zone. + time.timeZone = "Europe/Paris"; + + # Enable the X11 windowing system. + # services.xserver.enable = true; + + # Configure keymap in X11 + # services.xserver.layout = "us"; + # services.xserver.xkbOptions = "eurosign:e"; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable touchpad support (enabled default in most desktopManager). + services.xserver.libinput.enable = true; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "20.09"; # Did you read the comment? +} diff --git a/machines/aramis/hardware.nix b/machines/aramis/hardware.nix new file mode 100644 index 0000000..86eaf28 --- /dev/null +++ b/machines/aramis/hardware.nix @@ -0,0 +1,26 @@ +{ lib, modulesPath, ... }: +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + fileSystems = { + "/" = { + device = "/dev/disk/by-label/nixos"; + fsType = "ext4"; + }; + + "/boot" = { + device = "/dev/disk/by-label/boot"; + fsType = "vfat"; + }; + }; + + swapDevices = [ + { device = "/dev/disk/by-label/swap"; } + ]; + + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + + hardware.cpu.intel.updateMicrocode = true; +} diff --git a/machines/aramis/networking.nix b/machines/aramis/networking.nix new file mode 100644 index 0000000..752fc8c --- /dev/null +++ b/machines/aramis/networking.nix @@ -0,0 +1,21 @@ +{ ... }: +{ + networking = { + hostName = "aramis"; + domain = "nodomain.local"; # FIXME: gotta fix domain handling + wireless.enable = true; + + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + # Per-interface useDHCP will be mandatory in the future, so this generated config + # replicates the default behaviour. + useDHCP = false; + + interfaces = { + enp0s31f6.useDHCP = true; + wlp0s20f3.useDHCP = true; + }; + }; + + # Which interface is used to connect to the internet + my.networking.externalInterface = "enp0s3"; +} diff --git a/machines/aramis/sound.nix b/machines/aramis/sound.nix new file mode 100644 index 0000000..38365f6 --- /dev/null +++ b/machines/aramis/sound.nix @@ -0,0 +1,5 @@ +{ ... }: +{ + sound.enable = true; + hardware.pulseaudio.enable = true; +} From ff4745e1e621313e7896338476f61a747f136152 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 2 Apr 2021 18:46:45 +0000 Subject: [PATCH 0007/1588] home: add X keyboard configuration --- home/default.nix | 1 + home/x/default.nix | 17 +++++++++++++++++ home/x/keyboard.nix | 12 ++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 home/x/default.nix create mode 100644 home/x/keyboard.nix diff --git a/home/default.nix b/home/default.nix index e8218e8..7a51a02 100644 --- a/home/default.nix +++ b/home/default.nix @@ -14,6 +14,7 @@ ./ssh.nix ./tmux.nix ./vim + ./x ./xdg.nix ./zsh ]; diff --git a/home/x/default.nix b/home/x/default.nix new file mode 100644 index 0000000..086c41b --- /dev/null +++ b/home/x/default.nix @@ -0,0 +1,17 @@ +{ config, lib, ... }: +let + cfg = config.my.home.x; +in +{ + imports = [ + ./keyboard.nix + ]; + + options.my.home.x = with lib; { + enable = mkEnableOption "X server configuration"; + }; + + config = lib.mkIf cfg.enable { + xsession.enable = true; + }; +} diff --git a/home/x/keyboard.nix b/home/x/keyboard.nix new file mode 100644 index 0000000..40af800 --- /dev/null +++ b/home/x/keyboard.nix @@ -0,0 +1,12 @@ +{ config, lib, ... }: +let + cfg = config.my.home.x; +in +{ + config = lib.mkIf cfg.enable { + home.keyboard = { + layout = "fr"; + variant = "us"; + }; + }; +} From ca48df56749e367fd8ee01fc8e2053b554849167 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 2 Apr 2021 19:03:29 +0000 Subject: [PATCH 0008/1588] home: wm: add i3 This is only the basic default configuration. The full configuration will come later. I am not a fan of `wm.windowManager`, I might rename that option at some point. --- home/default.nix | 1 + home/wm/default.nix | 15 +++++++++++++++ home/wm/i3.nix | 15 +++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 home/wm/default.nix create mode 100644 home/wm/i3.nix diff --git a/home/default.nix b/home/default.nix index 7a51a02..fd59171 100644 --- a/home/default.nix +++ b/home/default.nix @@ -14,6 +14,7 @@ ./ssh.nix ./tmux.nix ./vim + ./wm ./x ./xdg.nix ./zsh diff --git a/home/wm/default.nix b/home/wm/default.nix new file mode 100644 index 0000000..10f86a4 --- /dev/null +++ b/home/wm/default.nix @@ -0,0 +1,15 @@ +{ lib, ... }: +{ + imports = [ + ./i3.nix + ]; + + options.my.home.wm = with lib; { + windowManager = mkOption { + type = with types; nullOr (enum [ "i3" ]); + default = null; + example = "i3"; + description = "Which window manager to use for home session"; + }; + }; +} diff --git a/home/wm/i3.nix b/home/wm/i3.nix new file mode 100644 index 0000000..3039cd6 --- /dev/null +++ b/home/wm/i3.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let + isEnabled = config.my.home.wm.windowManager == "i3"; +in +{ + config = lib.mkIf isEnabled { + xsession.windowManager.i3 = { + enable = true; + + config = { + modifier = "Mod4"; # `Super` key + }; + }; + }; +} From 864e78bc611ecdbca7af8be6f8c36407da6970e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 26 Apr 2021 17:22:20 +0000 Subject: [PATCH 0009/1588] modules: add home This makes setting and referring to my home-manager options easier. --- modules/default.nix | 1 + modules/home.nix | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 modules/home.nix diff --git a/modules/default.nix b/modules/default.nix index 082a8da..f20351f 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -5,6 +5,7 @@ imports = [ ./documentation.nix ./ergodox.nix + ./home.nix ./language.nix ./media.nix ./networking.nix diff --git a/modules/home.nix b/modules/home.nix new file mode 100644 index 0000000..f5314b9 --- /dev/null +++ b/modules/home.nix @@ -0,0 +1,11 @@ +# Simplify setting home options +{ lib, ... }: +let + actualPath = [ "home-manager" "users" "ambroisie" "my" "home" ]; + aliasPath = [ "my" "home" ]; +in +{ + imports = [ + (lib.mkAliasOptionModule aliasPath actualPath) + ]; +} From 6af00fe351246b153f52491133ab06e857a30f05 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 2 Apr 2021 18:47:23 +0000 Subject: [PATCH 0010/1588] machines: aramis: add home configuration --- machines/aramis/default.nix | 8 +------- machines/aramis/home.nix | 4 ++++ 2 files changed, 5 insertions(+), 7 deletions(-) create mode 100644 machines/aramis/home.nix diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index 67486d1..6eaadeb 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -8,6 +8,7 @@ imports = [ ./boot.nix ./hardware.nix + ./home.nix ./networking.nix ./sound.nix ]; @@ -15,13 +16,6 @@ # Set your time zone. time.timeZone = "Europe/Paris"; - # Enable the X11 windowing system. - # services.xserver.enable = true; - - # Configure keymap in X11 - # services.xserver.layout = "us"; - # services.xserver.xkbOptions = "eurosign:e"; - # Enable CUPS to print documents. services.printing.enable = true; diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix new file mode 100644 index 0000000..ce312c4 --- /dev/null +++ b/machines/aramis/home.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + # To be filled out +} From 3d51af4f5499ea38d184d55921892f713fc26f59 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 21:01:28 +0000 Subject: [PATCH 0011/1588] machines: aramis: home: enable X & i3 --- machines/aramis/home.nix | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index ce312c4..e19428e 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -1,4 +1,14 @@ { ... }: { - # To be filled out + my.home = { + # i3 settings + wm.windowManager = "i3"; + # Keyboard settings + x.enable = true; + }; + + # Enable the X11 windowing system. + services.xserver.enable = true; + # Enable i3 + services.xserver.windowManager.i3.enable = true; } From 82790ea5fa564654bea08b5f222b458473688577 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 4 Apr 2021 19:28:34 +0000 Subject: [PATCH 0012/1588] home: wm: add i3bar --- home/wm/default.nix | 1 + home/wm/i3bar.nix | 52 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 home/wm/i3bar.nix diff --git a/home/wm/default.nix b/home/wm/default.nix index 10f86a4..b8eec93 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -2,6 +2,7 @@ { imports = [ ./i3.nix + ./i3bar.nix ]; options.my.home.wm = with lib; { diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix new file mode 100644 index 0000000..80cc252 --- /dev/null +++ b/home/wm/i3bar.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, ... }: +let + isEnabled = config.my.home.wm.windowManager == "i3"; +in +{ + config = lib.mkIf isEnabled { + home.packages = with pkgs; [ + alsaUtils # Used by `sound` block + lm_sensors # Used by `temperature` block + ]; + + programs.i3status-rust = { + enable = true; + + bars = { + top = { + blocks = [ + { + block = "music"; + buttons = [ "prev" "play" "next" ]; + } + { + block = "cpu"; + } + { + block = "disk_space"; + } + { + block = "net"; + format = "{ssid} {ip} {signal_strength}"; + } + { + block = "battery"; + format = "{percentage}% ({time})"; + full_format = "{percentage}%"; + } + { + block = "temperature"; + } + { + block = "sound"; + } + { + block = "time"; + format = "%F %T"; + } + ]; + }; + }; + }; + }; +} From f257c15071748ba18b5835355cff396edf6349db Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 4 Apr 2021 19:28:44 +0000 Subject: [PATCH 0013/1588] home: wm: add rofi --- home/wm/default.nix | 1 + home/wm/rofi.nix | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 home/wm/rofi.nix diff --git a/home/wm/default.nix b/home/wm/default.nix index b8eec93..55669eb 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -3,6 +3,7 @@ imports = [ ./i3.nix ./i3bar.nix + ./rofi.nix ]; options.my.home.wm = with lib; { diff --git a/home/wm/rofi.nix b/home/wm/rofi.nix new file mode 100644 index 0000000..b2fb32f --- /dev/null +++ b/home/wm/rofi.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: +let + isEnabled = config.my.home.wm.windowManager == "i3"; +in +{ + config = lib.mkIf isEnabled { + programs.rofi = { + enable = true; + + package = pkgs.rofi.override { + plugins = with pkgs; [ + rofi-emoji + ]; + }; + + theme = "gruvbox-dark-hard"; + }; + }; +} From b9831360803d08188caba5aec458e9334f8e52a0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 4 Apr 2021 13:49:02 +0000 Subject: [PATCH 0014/1588] home: wm: i3: add configuration --- home/wm/i3.nix | 288 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 286 insertions(+), 2 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 3039cd6..649210b 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -1,14 +1,298 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let isEnabled = config.my.home.wm.windowManager == "i3"; + + terminal = "i3-sensible-terminal"; + + alt = "Mod1"; # `Alt` key + modifier = "Mod4"; # `Super` key + movementKeys = [ "Left" "Down" "Up" "Right" ]; + vimMovementKeys = [ "h" "j" "k" "l" ]; + shutdownMode = + "(l)ock, (e)xit, switch_(u)ser, (h)ibernate, (r)eboot, (Shift+s)hutdown"; + + # Takes an attrset of bindings for movement keys, transforms it to Vim keys + toVimKeyBindings = + let + toVimKeys = builtins.replaceStrings movementKeys vimMovementKeys; + in + lib.my.renameAttrs toVimKeys; + + # Takes an attrset of bindings for movement keys, add equivalent Vim keys + addVimKeyBindings = bindings: bindings // (toVimKeyBindings bindings); + # Generate an attrset of movement bindings, using the mapper function + genMovementBindings = f: addVimKeyBindings (lib.my.genAttrs' movementKeys f); in { config = lib.mkIf isEnabled { + home.packages = with pkgs; [ + arandr # Used by a mapping + flameshot # Used by a mapping, started at startup + playerctl # Used by a mapping + ]; + xsession.windowManager.i3 = { enable = true; config = { - modifier = "Mod4"; # `Super` key + inherit modifier; + + bars = + let + barConfigPath = + config.xdg.configFile."i3status-rust/config-top.toml".target; + in + [ + { + statusCommand = "i3status-rs ${barConfigPath}"; + trayOutput = "primary"; + position = "top"; + + colors = { + background = "#021215"; + statusline = "#93a1a1"; + separator = "#2aa198"; + + focusedWorkspace = { + border = "#2aa198"; + background = "#073642"; + text = "#eee895"; + }; + + activeWorkspace = { + border = "#073642"; + background = "#002b36"; + text = "#839496"; + }; + + inactiveWorkspace = { + border = "#002b36"; + background = "#021215"; + text = "#586e75"; + }; + + urgentWorkspace = { + border = "#cb4b16"; + background = "#dc322f"; + text = "#fdf6e3"; + }; + }; + } + ]; + + floating = { + inherit modifier; + + criteria = [ + { class = "^tridactyl_editor$"; } + { class = "^Blueman-.*$"; } + { title = "^htop$"; } + { class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; } + { class = "^Pavucontrol.*$"; } + { class = "^Arandr$"; } + ]; + }; + + focus = { + followMouse = true; # It is annoying sometimes, but useful enough to use + mouseWarping = true; # Let's moving around when switching screens + }; + + fonts = [ + "DejaVu Sans Mono 8" + ]; + + # I don't care for i3's default values, I specify them all explicitly + keybindings = builtins.foldl' (lhs: rhs: lhs // rhs) { } [ + { + # The basics + "${modifier}+Return" = "exec ${terminal}"; + "${modifier}+Shift+Return" = "exec env TMUX=nil ${terminal}"; + "${modifier}+Shift+q" = "kill"; + "${modifier}+f" = "fullscreen toggle"; + "${modifier}+Shift+c" = "reload"; + "${modifier}+Shift+r" = "restart"; + "${modifier}+Shift+e" = + "exec i3-nagbar -t warning -m 'Do you want to exit i3?' -b 'Yes' 'i3-msg exit'"; + } + { + # Splits + "${modifier}+g" = "split h"; # Horizontally + "${modifier}+v" = "split v"; # Vertically + } + { + # Layouts + "${modifier}+s" = "layout stacking"; + "${modifier}+w" = "layout tabbed"; + "${modifier}+e" = "layout toggle split"; + } + { + # Toggle tiling/floating + "${modifier}+Control+space" = "floating toggle"; + # Change focus between tiling/floating + "${modifier}+space" = "focus mode_toggle"; + } + { + # Focus parent container + "${modifier}+q" = "focus parent"; + # Focus child container + "${modifier}+a" = "focus child"; + } + { + # Rofi tools + "${modifier}+d" = "exec rofi -show drun -disable-history"; + "${modifier}+Shift+d" = "exec rofi -show run -disable-history"; + "${modifier}+p" = "exec --no-startup-id flameshot gui"; + "${modifier}+Shift+p" = "exec rofi -show emoji"; + } + ( + # Changing container focus + genMovementBindings ( + key: lib.nameValuePair + "${modifier}+${key}" + "focus ${lib.toLower key}" + ) + ) + ( + # Changing screen focus + genMovementBindings ( + key: lib.nameValuePair + "${modifier}+${alt}+${key}" + "focus output ${lib.toLower key}" + ) + ) + ( + # Moving workspace to another screen + genMovementBindings ( + key: lib.nameValuePair + "${modifier}+${alt}+Control+${key}" + "move workspace to output ${lib.toLower key}" + ) + ) + ( + # Moving container to another screen + genMovementBindings ( + key: lib.nameValuePair + "${modifier}+${alt}+Shift+${key}" + "move container to output ${lib.toLower key}" + ) + ) + (addVimKeyBindings { + # Scroll through workspaces on given screen + "${modifier}+Control+Left" = "workspace prev_on_output"; + "${modifier}+Control+Right" = "workspace next_on_output"; + # Use scratchpad + "${modifier}+Control+Up" = "move to scratchpad"; + "${modifier}+Control+Down" = "scratchpad show"; + }) + ( + # Moving floating window + genMovementBindings ( + key: lib.nameValuePair + "${modifier}+Shift+${key}" + "move ${lib.toLower key} 10 px" + ) + ) + { + # Media keys + "XF86AudioRaiseVolume" = "exec amixer -q -D pulse sset Master 5%+"; + "XF86AudioLowerVolume" = "exec amixer -q -D pulse sset Master 5%-"; + "Control+XF86AudioRaiseVolume" = "exec amixer -q -D pulse sset Master 1%+"; + "Control+XF86AudioLowerVolume" = "exec amixer -q -D pulse sset Master 1%-"; + "XF86AudioMute" = "exec amixer -q -D pulse sset Master toggle"; + + "XF86AudioPlay" = "exec playerctl play-pause"; + "XF86AudioNext" = "exec playerctl next"; + "XF86AudioPrev" = "exec playerctl previous"; + } + { + # Sub-modes + "${modifier}+r" = "mode resize"; + "${modifier}+Shift+space" = "mode floating"; + "${modifier}+0" = ''mode "${shutdownMode}"''; + } + ]; + + keycodebindings = + let + toKeycode = n: if n == 0 then 19 else n + 9; + createWorkspaceBindings = mapping: command: + let + createWorkspaceBinding = num: + lib.nameValuePair + "${mapping}+${toString (toKeycode num)}" + "${command} ${toString num}"; + oneToNine = builtins.genList (x: x + 1) 9; + in + lib.my.genAttrs' oneToNine createWorkspaceBinding; + in + builtins.foldl' (lhs: rhs: lhs // rhs) { } [ + (createWorkspaceBindings modifier "workspace number") + (createWorkspaceBindings "${modifier}+Shift" "move container to workspace number") + ]; + + modes = + let + makeModeBindings = attrs: (addVimKeyBindings attrs) // { + "Escape" = "mode default"; + "Return" = "mode default"; + }; + in + { + resize = makeModeBindings { + # Normal movements + "Left" = "resize shrink width 10 px or 10 ppt"; + "Down" = "resize grow height 10 px or 10 ppt"; + "Up" = "resize shrink height 10 px or 10 ppt"; + "Right" = "resize grow width 10 px or 10 ppt"; + # Small movements + "Control+Left" = "resize shrink width 1 px or 1 ppt"; + "Control+Down" = "resize grow height 1 px or 1 ppt"; + "Control+Up" = "resize shrink height 1 px or 1 ppt"; + "Control+Right" = "resize grow width 1 px or 1 ppt"; + # Big movements + "Shift+Left" = "resize shrink width 100 px or 100 ppt"; + "Shift+Down" = "resize grow height 100 px or 100 ppt"; + "Shift+Up" = "resize shrink height 100 px or 100 ppt"; + "Shift+Right" = "resize grow width 100 px or 100 ppt"; + }; + + floating = makeModeBindings { + # Normal movements + "Left" = "move left 10 px"; + "Down" = "move down 10 px"; + "Up" = "move up 10 px"; + "Right" = "move right 10 px"; + # Small movements + "Control+Left" = "move left 1 px"; + "Control+Down" = "move down 1 px"; + "Control+Up" = "move up 1 px"; + "Control+Right" = "move right 1 px"; + # Big movements + "Shift+Left" = "move left 100 px"; + "Shift+Down" = "move down 100 px"; + "Shift+Up" = "move up 100 px"; + "Shift+Right" = "move right 100 px"; + }; + + ${shutdownMode} = makeModeBindings { + "l" = "exec --no-startup-id loginctl lock-session, mode default"; + "s" = "exec --no-startup-id systemctl suspend, mode default"; + "u" = "exec --no-startup-id dm-tool switch-to-greeter, mode default"; + "e" = "exec --no-startup-id i3-msg exit, mode default"; + "h" = "exec --no-startup-id systemctl hibernate, mode default"; + "r" = "exec --no-startup-id systemctl reboot, mode default"; + "Shift+s" = "exec --no-startup-id systemctl poweroff, mode default"; + }; + }; + + startup = [ + # FIXME + # { commdand; always; notification; } + { + command = "flameshot"; + } + ]; }; }; }; From a4f3d67393f0991cd49d2dc1971e2ccb4820047e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 00:54:28 +0000 Subject: [PATCH 0015/1588] home: add terminal This module abstracts away the color configuration. --- home/default.nix | 1 + home/terminal/default.nix | 47 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 home/terminal/default.nix diff --git a/home/default.nix b/home/default.nix index fd59171..b1a5274 100644 --- a/home/default.nix +++ b/home/default.nix @@ -12,6 +12,7 @@ ./pager.nix ./secrets # Home-manager specific secrets ./ssh.nix + ./terminal ./tmux.nix ./vim ./wm diff --git a/home/terminal/default.nix b/home/terminal/default.nix new file mode 100644 index 0000000..bab73aa --- /dev/null +++ b/home/terminal/default.nix @@ -0,0 +1,47 @@ +{ lib, ... }: +let + mkColorOption = with lib; description: default: mkOption { + inherit description default; + example = "#abcdef"; + type = types.strMatching "#[0-9a-f]{6}"; + }; +in +{ + imports = [ + ]; + + options.my.home = with lib; { + terminal = { + colors = { + background = mkColorOption "Background color" "#161616"; + foreground = mkColorOption "Foreground color" "#ffffff"; + foregroundBold = mkColorOption "Foreground bold color" "#ffffff"; + cursor = mkColorOption "Cursor color" "#ffffff"; + + black = mkColorOption "Black" "#222222"; + blackBold = mkColorOption "Black bold" "#666666"; + + red = mkColorOption "Red" "#e84f4f"; + redBold = mkColorOption "Red bold" "#d23d3d"; + + green = mkColorOption "Green" "#b7ce42"; + greenBold = mkColorOption "Green bold" "#bde077"; + + yellow = mkColorOption "Yellow" "#fea63c"; + yellowBold = mkColorOption "Yellow bold" "#ffe863"; + + blue = mkColorOption "Blue" "#66aabb"; + blueBold = mkColorOption "Blue bold" "#aaccbb"; + + magenta = mkColorOption "Magenta" "#b7416e"; + magentaBold = mkColorOption "Magenta bold" "#e16a98"; + + cyan = mkColorOption "Cyan" "#6d878d"; + cyanBold = mkColorOption "Cyan bold" "#42717b"; + + white = mkColorOption "White" "#dddddd"; + whiteBold = mkColorOption "White bold" "#cccccc"; + }; + }; + }; +} From 07b91de2f297acb4c4fc6e1afa755e77902dfbaf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 00:57:32 +0000 Subject: [PATCH 0016/1588] home: terminal: add termite --- home/terminal/default.nix | 8 ++++++ home/terminal/termite.nix | 53 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 home/terminal/termite.nix diff --git a/home/terminal/default.nix b/home/terminal/default.nix index bab73aa..4c3f5cb 100644 --- a/home/terminal/default.nix +++ b/home/terminal/default.nix @@ -8,10 +8,18 @@ let in { imports = [ + ./termite.nix ]; options.my.home = with lib; { terminal = { + program = mkOption { + type = with types; nullOr (enum [ "termite" ]); + default = null; + example = "termite"; + description = "Which terminal to use for home session"; + }; + colors = { background = mkColorOption "Background color" "#161616"; foreground = mkColorOption "Foreground color" "#ffffff"; diff --git a/home/terminal/termite.nix b/home/terminal/termite.nix new file mode 100644 index 0000000..e8f67a7 --- /dev/null +++ b/home/terminal/termite.nix @@ -0,0 +1,53 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.terminal; +in +{ + config = lib.mkIf (cfg.program == "termite") { + programs.termite = { + enable = true; + + # Niceties + browser = "${pkgs.xdg-utils}/bin/xdg-open"; + clickableUrl = true; + dynamicTitle = true; + fullscreen = false; + mouseAutohide = true; + urgentOnBell = true; + + # Look and feel + allowBold = true; + audibleBell = false; + cursorBlink = "system"; + font = "Monospace 9"; + scrollbar = "off"; + + + # Colors + backgroundColor = cfg.colors.background; + cursorColor = cfg.colors.cursor; + foregroundColor = cfg.colors.foreground; + foregroundBoldColor = cfg.colors.foregroundBold; + colorsExtra = with cfg.colors; '' + # Normal colors + color0 = ${black} + color1 = ${red} + color2 = ${green} + color3 = ${yellow} + color4 = ${blue} + color5 = ${magenta} + color6 = ${cyan} + color7 = ${white} + # Bold colors + color8 = ${blackBold} + color9 = ${redBold} + color10 = ${greenBold} + color11 = ${yellowBold} + color12 = ${blueBold} + color13 = ${magentaBold} + color14 = ${cyanBold} + color15 = ${whiteBold} + ''; + }; + }; +} From b7b1c77dc88b39eb81e0a92ab1ae2e8a2c5d7a08 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 01:00:47 +0000 Subject: [PATCH 0017/1588] home: wm: i3: use 'my.home.terminal' explicitly --- home/wm/i3.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 649210b..af22bc5 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -2,7 +2,10 @@ let isEnabled = config.my.home.wm.windowManager == "i3"; - terminal = "i3-sensible-terminal"; + terminal = + if config.my.home.terminal.program != null + then config.my.home.terminal.program + else "i3-sensible-terminal"; alt = "Mod1"; # `Alt` key modifier = "Mod4"; # `Super` key From 3aa089db36942c895d5e88a4cc4061a8e3824848 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 01:08:42 +0000 Subject: [PATCH 0018/1588] machines: aramis: home: enable termite --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index e19428e..06218d7 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -1,6 +1,8 @@ { ... }: { my.home = { + # Termite terminal + terminal.program = "termite"; # i3 settings wm.windowManager = "i3"; # Keyboard settings From bc6c50aff1d8bb495cb934f440427f31763b0e37 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 01:33:46 +0000 Subject: [PATCH 0019/1588] home: add zathura --- home/default.nix | 1 + home/zathura.nix | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 home/zathura.nix diff --git a/home/default.nix b/home/default.nix index b1a5274..77d54ae 100644 --- a/home/default.nix +++ b/home/default.nix @@ -18,6 +18,7 @@ ./wm ./x ./xdg.nix + ./zathura.nix ./zsh ]; diff --git a/home/zathura.nix b/home/zathura.nix new file mode 100644 index 0000000..6162542 --- /dev/null +++ b/home/zathura.nix @@ -0,0 +1,20 @@ +{ config, lib, ... }: +let + cfg = config.my.home.zathura; +in +{ + options.my.home.zathura = with lib; { + enable = mkEnableOption "zathura configuration"; + }; + + config.programs.zathura = lib.mkIf cfg.enable { + enable = true; + + options = { + # Show '~' instead of full path to '$HOME' in window title + "window-title-home-tilde" = true; + # Show '~' instead of full path to '$HOME' in status bar + "statusbar-home-tilde" = true; + }; + }; +} From 61b36c54346d9eb893cce10837b211ee3e0987e8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 01:35:33 +0000 Subject: [PATCH 0020/1588] machines: aramis: home: enable zathura --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 06218d7..5c12451 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -7,6 +7,8 @@ wm.windowManager = "i3"; # Keyboard settings x.enable = true; + # Zathura document viewer + zathura.enable = true; }; # Enable the X11 windowing system. From 86b12dc8a8dc4fb0b007ca715747b260623c5823 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 01:38:32 +0000 Subject: [PATCH 0021/1588] home: add flameshot --- home/default.nix | 1 + home/flameshot.nix | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 home/flameshot.nix diff --git a/home/default.nix b/home/default.nix index 77d54ae..e47940d 100644 --- a/home/default.nix +++ b/home/default.nix @@ -4,6 +4,7 @@ ./bat.nix ./direnv.nix ./documentation.nix + ./flameshot.nix ./git ./gpg.nix ./htop.nix diff --git a/home/flameshot.nix b/home/flameshot.nix new file mode 100644 index 0000000..a9a60a8 --- /dev/null +++ b/home/flameshot.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.my.home.flameshot; +in +{ + options.my.home.flameshot = with lib; { + enable = mkEnableOption "flameshot configuration"; + }; + + config.services.flameshot = lib.mkIf cfg.enable { + enable = true; + }; +} From 44cad6b52bec990780bc3b90ba55bd2211ca7701 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 01:39:01 +0000 Subject: [PATCH 0022/1588] home: wm: i3: use flameshot service directly Instead of starting `flameshot` with `i3`, use the provided service. --- home/wm/i3.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index af22bc5..819d880 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -28,9 +28,12 @@ let in { config = lib.mkIf isEnabled { + my.home = { + flameshot.enable = true; + }; + home.packages = with pkgs; [ arandr # Used by a mapping - flameshot # Used by a mapping, started at startup playerctl # Used by a mapping ]; @@ -292,9 +295,6 @@ in startup = [ # FIXME # { commdand; always; notification; } - { - command = "flameshot"; - } ]; }; }; From 43457ce41e05b11baccbb6a552dd3099a00af9e7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 01:47:49 +0000 Subject: [PATCH 0023/1588] home: add udiskie --- home/default.nix | 1 + home/udiskie.nix | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 home/udiskie.nix diff --git a/home/default.nix b/home/default.nix index e47940d..2f92758 100644 --- a/home/default.nix +++ b/home/default.nix @@ -15,6 +15,7 @@ ./ssh.nix ./terminal ./tmux.nix + ./udiskie.nix ./vim ./wm ./x diff --git a/home/udiskie.nix b/home/udiskie.nix new file mode 100644 index 0000000..1f2119e --- /dev/null +++ b/home/udiskie.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.my.home.udiskie; +in +{ + options.my.home.udiskie = with lib; { + enable = mkEnableOption "udiskie configuration"; + }; + + config.services.udiskie = lib.mkIf cfg.enable { + enable = true; + }; +} From 85f422006833a66bc5f5033a776eaa5a34451b40 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 01:48:33 +0000 Subject: [PATCH 0024/1588] home: wm: i3: use udiskie service --- home/wm/i3.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 819d880..f81d881 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -30,6 +30,7 @@ in config = lib.mkIf isEnabled { my.home = { flameshot.enable = true; + udiskie.enable = true; }; home.packages = with pkgs; [ From 38440f67abacc5878b413a535d9298249ee6c570 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 11:55:42 +0000 Subject: [PATCH 0025/1588] home: add firefox --- home/default.nix | 1 + home/firefox/default.nix | 19 +++++++++++++++++++ home/firefox/firefox.nix | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 home/firefox/default.nix create mode 100644 home/firefox/firefox.nix diff --git a/home/default.nix b/home/default.nix index 2f92758..a7609ef 100644 --- a/home/default.nix +++ b/home/default.nix @@ -4,6 +4,7 @@ ./bat.nix ./direnv.nix ./documentation.nix + ./firefox ./flameshot.nix ./git ./gpg.nix diff --git a/home/firefox/default.nix b/home/firefox/default.nix new file mode 100644 index 0000000..1391052 --- /dev/null +++ b/home/firefox/default.nix @@ -0,0 +1,19 @@ +{ config, lib, ... }: +{ + options.my.home.firefox = with lib; { + enable = mkEnableOption "firefox configuration"; + + tridactyl = { + enable = mkOption { + type = types.bool; + description = "tridactyl configuration"; + example = false; + default = config.my.home.firefox.enable; + }; + }; + }; + + imports = [ + ./firefox.nix + ]; +} diff --git a/home/firefox/firefox.nix b/home/firefox/firefox.nix new file mode 100644 index 0000000..f4bc675 --- /dev/null +++ b/home/firefox/firefox.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.firefox; +in +{ + config.programs.firefox = lib.mkIf cfg.enable { + enable = true; + + profiles = { + default = { + id = 0; + + settings = { + "browser.bookmarks.showMobileBookmarks" = true; # Mobile bookmarks + "browser.download.useDownloadDir" = false; # Ask for download location + "browser.in-content.dark-mode" = true; # Dark mode + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; # Disable top stories + "browser.newtabpage.activity-stream.feeds.sections" = false; + "browser.newtabpage.activity-stream.feeds.system.topstories" = false; # Disable top stories + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket + "extensions.pocket.enabled" = false; # Disable pocket + "media.eme.enabled" = true; # Enable DRM + "media.gmp-widevinecdm.visible" = true; # Enable DRM + "media.gmp-widevinecdm.enabled" = true; # Enable DRM + "signon.autofillForms" = false; # Disable built-in form-filling + "signon.rememberSignons" = false; # Disable built-in password manager + "ui.systemUsesDarkTheme" = true; # Dark mode + }; + }; + }; + + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + bitwarden + https-everywhere + i-dont-care-about-cookies + reddit-enhancement-suite + ublock-origin + ] ++ lib.optional (cfg.tridactyl.enable) tridactyl; + }; +} From 1587b992daaaf7c5c10cdd7b07bd4f3f4f8b7824 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 11:58:32 +0000 Subject: [PATCH 0026/1588] machines: aramis: home: enable firefox --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 5c12451..2bda0d6 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -1,6 +1,8 @@ { ... }: { my.home = { + # Firefo profile and extensions + firefox.enable = true; # Termite terminal terminal.program = "termite"; # i3 settings From dadd835b66fc24b216b4ae533f092048572585fb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 12:30:04 +0000 Subject: [PATCH 0027/1588] home: firefox: use tridactyl-native when enabled --- home/firefox/firefox.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/firefox/firefox.nix b/home/firefox/firefox.nix index f4bc675..a1db93a 100644 --- a/home/firefox/firefox.nix +++ b/home/firefox/firefox.nix @@ -6,6 +6,12 @@ in config.programs.firefox = lib.mkIf cfg.enable { enable = true; + package = pkgs.firefox.override { + cfg = { + enableTridactylNative = cfg.tridactyl.enable; + }; + }; + profiles = { default = { id = 0; From 873c41745aec7ed22e210e8c2fbddd5d6f81afe3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 13:22:53 +0000 Subject: [PATCH 0028/1588] home: firefox: add tridactyl --- home/firefox/default.nix | 1 + home/firefox/tridactyl.nix | 9 +++++ home/firefox/tridactylrc | 72 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 home/firefox/tridactyl.nix create mode 100644 home/firefox/tridactylrc diff --git a/home/firefox/default.nix b/home/firefox/default.nix index 1391052..fd7d5ba 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -15,5 +15,6 @@ imports = [ ./firefox.nix + ./tridactyl.nix ]; } diff --git a/home/firefox/tridactyl.nix b/home/firefox/tridactyl.nix new file mode 100644 index 0000000..fd8e3fb --- /dev/null +++ b/home/firefox/tridactyl.nix @@ -0,0 +1,9 @@ +{ config, lib, ... }: +let + cfg = config.my.home.firefox.tridactyl; +in +{ + config = lib.mkIf cfg.enable { + xdg.configFile."tridactyl/tridactylrc".source = ./tridactylrc; + }; +} diff --git a/home/firefox/tridactylrc b/home/firefox/tridactylrc new file mode 100644 index 0000000..edb595e --- /dev/null +++ b/home/firefox/tridactylrc @@ -0,0 +1,72 @@ +" Shamelessly taken from bovine3dom's example configuration file from the docs + +" Basics {{{ +" Use dark color scheme +colorscheme dark + +" Make tridactyl open Vim in my prefered terminal +" FIXME: make it follow my prefered terminal +set editorcmd termite --class tridactyl_editor -e 'vim %f' +" }}} + +" Binds {{{ +" Reddit et al. {{{ +" Toggle comments on Reddit, Hacker News, Lobste.rs +bind ;c hint -c [class*="expand"],[class="togg"],[class="comment_folder"] + +" Make `gu` take me back to subreddit from comments +bindurl reddit.com gu urlparent 4 + +" Only hint search results on Google +bindurl www.google.com f hint -Jc #search div:not(.action-menu) > a +bindurl www.google.com F hint -Jbc #search div:not(.action-menu) > a + +" Only hint search results on DuckDuckGo +bindurl ^https://duckduckgo.com f hint -Jc [class=result__a] +bindurl ^https://duckduckgo.com F hint -Jbc [class=result__a] + +" Only hint item pages on Hacker News +bindurl news.ycombinator.com ;f hint -Jc .age > a +bindurl news.ycombinator.com ;f hint -Jtc .age > a +" }}} + +" Better bindings {{{ +" Handy multiwindow binds +bind gd tabdetach +bind gD composite tabduplicate; tabdetach + +" Make yy use canonical links on the few websites that support them +bind yy clipboard yankcanon +" }}} + +" Search {{{ +" Case insensitive only if fully lowercase +set findcase smart + +" Search forward/backward +bind / fillcmdline find +bind ? fillcmdline find -? + +" Go to next/previous match +bind n findnext 1 +bind N findnext -1 + +" Because :nohls never works +bind nohlsearch + +" Use browser's native find when using Ctrl-F +unbind +" }}} +" }}} + +" Redirections {{{ +" Always redirect Reddit to the old site +autocmd DocStart ^http(s?)://www.redit.com js tri.excmds.urlmodify("-t", "www", "old") +" }}} + +" Disabled websites {{{ +blacklistadd netflix.com +blacklistadd jellyfin.belanyi.fr +" }}} + +" vim: set filetype=vim foldmethod=marker: From b3fffcac3ee89568a6a64a9b91e40b23b6b087bb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 15:57:05 +0000 Subject: [PATCH 0029/1588] home: add gammastep --- home/default.nix | 1 + home/gammastep.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 home/gammastep.nix diff --git a/home/default.nix b/home/default.nix index a7609ef..570a0c2 100644 --- a/home/default.nix +++ b/home/default.nix @@ -6,6 +6,7 @@ ./documentation.nix ./firefox ./flameshot.nix + ./gammastep.nix ./git ./gpg.nix ./htop.nix diff --git a/home/gammastep.nix b/home/gammastep.nix new file mode 100644 index 0000000..b96f028 --- /dev/null +++ b/home/gammastep.nix @@ -0,0 +1,42 @@ +{ config, lib, ... }: +let + cfg = config.my.home.gammastep; + + mkTempOption = with lib; description: default: mkOption { + inherit description default; + type = types.int; + example = 1000; + }; + + mkTimeOption = with lib; description: default: mkOption { + inherit description default; + type = types.str; + example = "12:00-14:00"; + }; +in +{ + options.my.home.gammastep = with lib; { + enable = mkEnableOption "gammastep configuration"; + + temperature = { + day = mkTempOption "Colour temperature to use during the day" 6500; + night = mkTempOption "Colour temperature to use during the night" 2500; + }; + + times = { + dawn = mkTimeOption "Dawn time" "6:00-7:30"; + dusk = mkTimeOption "Dawn time" "18:30-20:00"; + }; + }; + + config.services.gammastep = lib.mkIf cfg.enable { + enable = true; + + dawnTime = cfg.times.dawn; + duskTime = cfg.times.dusk; + + temperature = { + inherit (cfg.temperature) day night; + }; + }; +} From f608bcd9f94f05af70de383facafc6822606b683 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 15:59:09 +0000 Subject: [PATCH 0030/1588] machines: aramis: home: enable gammastep --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 2bda0d6..2f72a5c 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -3,6 +3,8 @@ my.home = { # Firefo profile and extensions firefox.enable = true; + # Blue light filter + gammastep.enable = true; # Termite terminal terminal.program = "termite"; # i3 settings From 44c66ab72998e5110c1037f4399d99898cd31f39 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 15:58:15 +0000 Subject: [PATCH 0031/1588] home: wm: i3bar: add gammastep block if enabled --- home/wm/i3bar.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index 80cc252..9d7a4f9 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -14,7 +14,7 @@ in bars = { top = { - blocks = [ + blocks = builtins.filter (attr: attr != { }) [ { block = "music"; buttons = [ "prev" "play" "next" ]; @@ -29,6 +29,12 @@ in block = "net"; format = "{ssid} {ip} {signal_strength}"; } + (lib.optionalAttrs (config.my.home.gammastep.enable) { + block = "hueshift"; + hue_shifter = "gammastep"; + step = 100; + click_temp = config.my.home.gammastep.temperature.day; + }) { block = "battery"; format = "{percentage}% ({time})"; From c6ebb9d45fd4fe8bbe32edab507b7ed669e0a82f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 20:38:25 +0000 Subject: [PATCH 0032/1588] home: wm: i3bar: hide music block when not playing --- home/wm/i3bar.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index 9d7a4f9..186a863 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -18,6 +18,7 @@ in { block = "music"; buttons = [ "prev" "play" "next" ]; + hide_when_empty = true; } { block = "cpu"; From 38a475d35d1636f6871cdafa615cc6004c175396 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 20:52:16 +0000 Subject: [PATCH 0033/1588] modules: users: add myself to 'video' and 'audio' --- modules/users.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/users.nix b/modules/users.nix index 1ace265..fbc3880 100644 --- a/modules/users.nix +++ b/modules/users.nix @@ -19,8 +19,10 @@ in isNormalUser = true; shell = pkgs.zsh; extraGroups = groupsIfExist [ + "audio" # sound control "media" # access to media files "plugdev" # usage of ZSA keyboard tools + "video" # screen control "wheel" # `sudo` for the user. ]; openssh.authorizedKeys.keys = with builtins; let From c56517497aade457c83426c890262c9cb9b42e7e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 21:27:20 +0000 Subject: [PATCH 0034/1588] home: wm: use explicit 'enable' options This is so that I can explicitly enable them if I were to use Wayland and Sway, given that they should be compatible with both environment. This also means that putting them in `/home/x/` would a misnomer... Will revisit this if and when I try out Wayland and sway... --- home/wm/default.nix | 19 ++++++++++++++++++- home/wm/i3bar.nix | 4 ++-- home/wm/rofi.nix | 4 ++-- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/home/wm/default.nix b/home/wm/default.nix index 55669eb..2421a50 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -1,4 +1,13 @@ -{ lib, ... }: +{ config, lib, ... }: +let + mkRelatedOption = description: relatedWMs: + let + isActivatedWm = wm: config.my.home.wm.windowManager == wm; + in + (lib.mkEnableOption description) // { + default = builtins.any isActivatedWm relatedWMs; + }; +in { imports = [ ./i3.nix @@ -13,5 +22,13 @@ example = "i3"; description = "Which window manager to use for home session"; }; + + i3bar = { + enable = mkRelatedOption "i3bar configuration" [ "i3" ]; + }; + + rofi = { + enable = mkRelatedOption "rofi menu" [ "i3" ]; + }; }; } diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index 186a863..b1358b9 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -1,9 +1,9 @@ { config, lib, pkgs, ... }: let - isEnabled = config.my.home.wm.windowManager == "i3"; + cfg = config.my.home.wm.i3bar; in { - config = lib.mkIf isEnabled { + config = lib.mkIf cfg.enable { home.packages = with pkgs; [ alsaUtils # Used by `sound` block lm_sensors # Used by `temperature` block diff --git a/home/wm/rofi.nix b/home/wm/rofi.nix index b2fb32f..87f167a 100644 --- a/home/wm/rofi.nix +++ b/home/wm/rofi.nix @@ -1,9 +1,9 @@ { config, lib, pkgs, ... }: let - isEnabled = config.my.home.wm.windowManager == "i3"; + cfg = config.my.home.wm.rofi; in { - config = lib.mkIf isEnabled { + config = lib.mkIf cfg.enable { programs.rofi = { enable = true; From 3344b079dccc8668f5e5a1ffcdb799537c687d42 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 6 Apr 2021 15:52:41 +0000 Subject: [PATCH 0035/1588] home: wm: add dunst --- home/wm/default.nix | 5 +++++ home/wm/dunst.nix | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 home/wm/dunst.nix diff --git a/home/wm/default.nix b/home/wm/default.nix index 2421a50..5a50331 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -10,6 +10,7 @@ let in { imports = [ + ./dunst.nix ./i3.nix ./i3bar.nix ./rofi.nix @@ -23,6 +24,10 @@ in description = "Which window manager to use for home session"; }; + dunst = { + enable = mkRelatedOption "dunst configuration" [ "i3" ]; + }; + i3bar = { enable = mkRelatedOption "i3bar configuration" [ "i3" ]; }; diff --git a/home/wm/dunst.nix b/home/wm/dunst.nix new file mode 100644 index 0000000..e6c2090 --- /dev/null +++ b/home/wm/dunst.nix @@ -0,0 +1,11 @@ +{ config, lib, ... }: +let + cfg = config.my.home.wm.dunst; +in +{ + config = lib.mkIf cfg.enable { + services.dunst = { + enable = true; + }; + }; +} From 79d92178b5ce5fc757215ee69e65e7c1b2520e02 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 28 Apr 2021 16:41:26 +0000 Subject: [PATCH 0036/1588] home: wm: dunst: add configuration --- home/wm/dunst.nix | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/home/wm/dunst.nix b/home/wm/dunst.nix index e6c2090..334396c 100644 --- a/home/wm/dunst.nix +++ b/home/wm/dunst.nix @@ -6,6 +6,57 @@ in config = lib.mkIf cfg.enable { services.dunst = { enable = true; + + settings = { + global = { + alignment = "center"; # Put message in the middle of the box + browser = "xdg-open"; # use default browser to open links + follow = "keyboard"; # follow keyboard focus + font = "Monospace 8"; # Simple looking font + frame_width = 3; # small frame + geometry = "300x50-15+49"; + markup = "full"; # subset of HTML + padding = 6; # distance between text and bubble border + progress_bar = true; # show a progress bar in notification bubbles + separator_color = "frame"; # use frame color to separate bubbles + sort = true; # sort messages by urgency + }; + + urgency_low = { + background = "#191311"; + foreground = "#3b7c87"; + frame_color = "#3b7c87"; + highlight = "#4998a6"; + timeout = 10; + }; + + urgency_normal = { + background = "#191311"; + foreground = "#5b8234"; + frame_color = "#5b8234"; + highlight = "#73a542"; + timeout = 10; + }; + + urgency_critical = { + background = "#191311"; + foreground = "#b7472a"; + frame_color = "#b7472a"; + highlight = "#d25637"; + timeout = 0; + }; + + fullscreen_delay_everything = { + # delay notifications by default + fullscreen = "delay"; + }; + + fullscreen_show_critical = { + # show critical notification + fullscreen = "show"; + msg_urgency = "critical"; + }; + }; }; }; } From 46b3a32b82f00a6bd73708af9feaf62e26d02244 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 6 Apr 2021 17:20:39 +0000 Subject: [PATCH 0037/1588] home: wm: add screen-lock --- home/wm/default.nix | 21 ++++++++++++++++++++- home/wm/screen-lock.nix | 15 +++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 home/wm/screen-lock.nix diff --git a/home/wm/default.nix b/home/wm/default.nix index 5a50331..05c0e85 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let mkRelatedOption = description: relatedWMs: let @@ -14,6 +14,7 @@ in ./i3.nix ./i3bar.nix ./rofi.nix + ./screen-lock.nix ]; options.my.home.wm = with lib; { @@ -35,5 +36,23 @@ in rofi = { enable = mkRelatedOption "rofi menu" [ "i3" ]; }; + + screen-lock = { + enable = mkRelatedOption "automatic X screen locker" [ "i3" ]; + + command = mkOption { + type = types.str; + default = "${pkgs.i3lock}/bin/i3lock -n -c 000000"; + example = "\${pkgs.i3lock}/bin/i3lock -n -i lock.png"; + description = "Locker command to run"; + }; + + timeout = mkOption { + type = types.ints.between 1 60; + default = 5; + example = 1; + description = "Inactive time interval to lock the screen automatically"; + }; + }; }; } diff --git a/home/wm/screen-lock.nix b/home/wm/screen-lock.nix new file mode 100644 index 0000000..eca5895 --- /dev/null +++ b/home/wm/screen-lock.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let + cfg = config.my.home.wm.screen-lock; +in +{ + config = lib.mkIf cfg.enable { + services.screen-locker = { + enable = true; + + inactiveInterval = cfg.timeout; + + lockCmd = cfg.command; + }; + }; +} From 5042c1df2016d5d459b400efb6b503fea58acc85 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 6 Apr 2021 17:54:26 +0000 Subject: [PATCH 0038/1588] home: wm: screen-lock: add xautolock options --- home/wm/default.nix | 7 +++++++ home/wm/screen-lock.nix | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/home/wm/default.nix b/home/wm/default.nix index 05c0e85..b4cece9 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -47,6 +47,13 @@ in description = "Locker command to run"; }; + cornerLock = my.mkDisableOption '' + Move mouse to upper-left corner to lock instantly, lower-right corner to + disable auto-lock. + ''; + + notify = my.mkDisableOption "Notify when about to lock the screen"; + timeout = mkOption { type = types.ints.between 1 60; default = 5; diff --git a/home/wm/screen-lock.nix b/home/wm/screen-lock.nix index eca5895..e6eee22 100644 --- a/home/wm/screen-lock.nix +++ b/home/wm/screen-lock.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.home.wm.screen-lock; in @@ -10,6 +10,21 @@ in inactiveInterval = cfg.timeout; lockCmd = cfg.command; + + xautolockExtraOptions = lib.optionals cfg.cornerLock [ + # Mouse corners: instant lock on upper-left, never lock on lower-right + "-cornerdelay" + "5" + "-cornerredelay" + "5" + "-corners" + "+00-" + ] ++ lib.optionals cfg.notify [ + "-notify" + "5" + "-notifier" + ''"${pkgs.libnotify}/bin/notify-send -u critical -t 5000 -- 'Locking in 5 seconds'"'' + ]; }; }; } From 33752d2bcb38d566691473cad864529c1cf24da0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 6 Apr 2021 18:27:38 +0000 Subject: [PATCH 0039/1588] home: wm: i3: add binding to toggle xautolock --- home/wm/i3.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index f81d881..7c29c8b 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -218,6 +218,25 @@ in "${modifier}+Shift+space" = "mode floating"; "${modifier}+0" = ''mode "${shutdownMode}"''; } + (lib.optionalAttrs config.my.home.wm.screen-lock.enable { + "${modifier}+x" = + let + systemctlUser = "${pkgs.systemd}/bin/systemctl --user"; + notify = "${pkgs.libnotify}/bin/notify-send -u low " + + "-h string:x-canonical-private-synchronous:xautolock-toggle"; + toggleXautolock = pkgs.writeScript "toggle-xautolock" '' + #!/bin/sh + if ${systemctlUser} is-active xautolock-session.service; then + ${systemctlUser} stop --user xautolock-session.service + ${notify} "Disabled Xautolock" + else + ${systemctlUser} start xautolock-session.service + ${notify} "Enabled Xautolock" + fi + ''; + in + "exec ${toggleXautolock}"; + }) ]; keycodebindings = From 6cea859693619185b079a4549cba6e30fc1093b2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 6 Apr 2021 18:59:52 +0000 Subject: [PATCH 0040/1588] home: wm: i3: add dunst bindings --- home/wm/i3.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 7c29c8b..38a5f9e 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -237,6 +237,16 @@ in in "exec ${toggleXautolock}"; }) + ( + let + execDunstctl = "exec ${pkgs.dunst}/bin/dunstctl"; + in + lib.optionalAttrs config.my.home.wm.dunst.enable { + "${modifier}+minus" = "${execDunstctl} close"; + "${modifier}+Shift+minus" = "${execDunstctl} close-all"; + "${modifier}+equal" = "${execDunstctl} history-pop"; + } + ) ]; keycodebindings = From ad2c5dd2093c1517ad5605f6b85857f6184b82b0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 6 Apr 2021 19:17:09 +0000 Subject: [PATCH 0041/1588] home: wm: i3: add display bindings --- home/wm/i3.nix | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 38a5f9e..01ededd 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -212,6 +212,33 @@ in "XF86AudioNext" = "exec playerctl next"; "XF86AudioPrev" = "exec playerctl previous"; } + ( + let + xbacklight = "${pkgs.xorg.xbacklight}/bin/xbacklight"; + changeBacklight = pkgs.writeScript "change-backlight" '' + #!/bin/sh + if [ "$1" = "up" ]; then + upDown=-inc + else + upDown=-dec + fi + + ${xbacklight} "$upDown" "$2" + newBrightness="$(printf '$.0f' "$(${xbacklight} -get)")" + ${pkgs.libnotify}/bin/notify-send -u low \ + -h string:x-canonical-private-synchronous:change-backlight \ + -h "int:value:$newBrightness" \ + -- "Set brightness to $newBrightness" + ''; + in + { + "XF86Display" = "arandr"; + "XF86MonBrightnessUp" = "${changeBacklight} up 10"; + "XF86MonBrightnessDown" = "${changeBacklight} down 10"; + "Control+XF86MonBrightnessUp" = "${changeBacklight} up 1"; + "Control+XF86MonBrightnessDown" = "${changeBacklight} down 1"; + } + ) { # Sub-modes "${modifier}+r" = "mode resize"; From a4abc2edd89e3323f77337dc48d0d35b799dd0e2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 7 Apr 2021 17:55:26 +0000 Subject: [PATCH 0042/1588] project: bootstrap: unlock BW when logged in --- bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bootstrap.sh b/bootstrap.sh index a3f9ac9..8f97c5e 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -78,7 +78,7 @@ get_pgp() { } get_creds() { - BW_SESSION="$(bw login --raw)" + BW_SESSION="$(bw login --raw || bw unlock --raw)" export BW_SESSION get_ssh From 2dbb25a9e36fd84aa20410205d65d5eb3f32e601 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 7 Apr 2021 20:05:15 +0000 Subject: [PATCH 0043/1588] modules: packages: prefer user compinit to global This should make the shell startup faster. --- modules/packages.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/packages.nix b/modules/packages.nix index 9eb50f6..4560ab1 100644 --- a/modules/packages.nix +++ b/modules/packages.nix @@ -1,5 +1,5 @@ # Common packages -{ pkgs, ... }: +{ config, pkgs, ... }: { # List packages installed in system profile. To search, run: @@ -13,7 +13,11 @@ ]; programs.vim.defaultEditor = true; # Modal editing is life - programs.zsh.enable = true; # Use integrations + programs.zsh = { + enable = true; # Use integrations + # Disable global compinit when a user config exists + enableGlobalCompInit = !config.my.home.zsh.enable; + }; nixpkgs.config.allowUnfree = true; # Because I don't care *that* much. } From f96bc19bf6c10795c281d2f72338af71cfa64d1d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 7 Apr 2021 17:40:11 +0000 Subject: [PATCH 0044/1588] home: gpg: make pinentry configurable --- home/gpg.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/home/gpg.nix b/home/gpg.nix index 548f90b..d48c200 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -3,8 +3,15 @@ let cfg = config.my.home.gpg; in { - options.my.home.gpg = with lib.my; { - enable = mkDisableOption "gpg configuration"; + options.my.home.gpg = with lib; { + enable = my.mkDisableOption "gpg configuration"; + + pinentry = mkOption { + type = types.str; + default = "tty"; + example = "gtk2"; + description = "Which pinentry interface to use"; + }; }; config = lib.mkIf cfg.enable { @@ -15,7 +22,7 @@ in services.gpg-agent = { enable = true; enableSshSupport = true; # One agent to rule them all - pinentryFlavor = "tty"; + pinentryFlavor = cfg.pinentry; extraConfig = '' allow-loopback-pinentry ''; From 22642908ddc91e91714a2f32e5eabc3e0d116507 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 7 Apr 2021 17:42:31 +0000 Subject: [PATCH 0045/1588] machines: aramis: home: use GTK pinentry I do have a graphical session, I can afford to be "fancy" --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 2f72a5c..c46b3fc 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -5,6 +5,8 @@ firefox.enable = true; # Blue light filter gammastep.enable = true; + # Use a small popup to enter passwords + gpg.pinentry = "gtk2"; # Termite terminal terminal.program = "termite"; # i3 settings From 7c17b675f6d8a4ad5fecbbba37d5479d42b1bd14 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 9 Apr 2021 11:28:16 +0000 Subject: [PATCH 0046/1588] home: wm: i3: use keycode for shutdown mapping The motivation for using keycodes for all those mappings is to allow switch to an actual french keyboard layout it still be able to move through workspaces etc... --- home/wm/i3.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 01ededd..87e5ec8 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -243,7 +243,6 @@ in # Sub-modes "${modifier}+r" = "mode resize"; "${modifier}+Shift+space" = "mode floating"; - "${modifier}+0" = ''mode "${shutdownMode}"''; } (lib.optionalAttrs config.my.home.wm.screen-lock.enable { "${modifier}+x" = @@ -292,6 +291,9 @@ in builtins.foldl' (lhs: rhs: lhs // rhs) { } [ (createWorkspaceBindings modifier "workspace number") (createWorkspaceBindings "${modifier}+Shift" "move container to workspace number") + { + "${modifier}+${toString (toKeycode 0)}" = ''mode "${shutdownMode}"''; + } ]; modes = From 3177d0115790defa4f10c48db5540c53f568eb7a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 5 Apr 2021 11:57:08 +0000 Subject: [PATCH 0047/1588] home: firefox: add form-history-control extension --- home/firefox/firefox.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/firefox/firefox.nix b/home/firefox/firefox.nix index a1db93a..68a8337 100644 --- a/home/firefox/firefox.nix +++ b/home/firefox/firefox.nix @@ -37,6 +37,7 @@ in extensions = with pkgs.nur.repos.rycee.firefox-addons; [ bitwarden + form-history-control https-everywhere i-dont-care-about-cookies reddit-enhancement-suite From 5973841ff5874e30361bc7345733da7cd6e4fb75 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 18 Apr 2021 00:19:26 +0000 Subject: [PATCH 0048/1588] modules: users: reformat --- modules/users.nix | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/users.nix b/modules/users.nix index fbc3880..6fa4e6d 100644 --- a/modules/users.nix +++ b/modules/users.nix @@ -25,13 +25,14 @@ in "video" # screen control "wheel" # `sudo` for the user. ]; - openssh.authorizedKeys.keys = with builtins; let - keyDir = ./ssh; - contents = readDir keyDir; - names = attrNames contents; - files = filter (name: contents.${name} == "regular") names; - keys = map (basename: readFile (keyDir + "/${basename}")) files; - in - keys; + openssh.authorizedKeys.keys = with builtins; + let + keyDir = ./ssh; + contents = readDir keyDir; + names = attrNames contents; + files = filter (name: contents.${name} == "regular") names; + keys = map (basename: readFile (keyDir + "/${basename}")) files; + in + keys; }; } From e5b5e73294d57bafb685743909273062df85e743 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 19 Apr 2021 16:17:57 +0000 Subject: [PATCH 0049/1588] home: wm: screen-lock: add corner delay setting --- home/wm/default.nix | 17 +++++++++++++---- home/wm/screen-lock.nix | 6 +++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/home/wm/default.nix b/home/wm/default.nix index b4cece9..f4f0ad2 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -47,10 +47,19 @@ in description = "Locker command to run"; }; - cornerLock = my.mkDisableOption '' - Move mouse to upper-left corner to lock instantly, lower-right corner to - disable auto-lock. - ''; + cornerLock = { + enable = my.mkDisableOption '' + Move mouse to upper-left corner to lock instantly, lower-right corner to + disable auto-lock. + ''; + + delay = mkOption { + type = types.int; + default = 5; + example = 15; + description = "How many seconds before locking this way"; + }; + }; notify = my.mkDisableOption "Notify when about to lock the screen"; diff --git a/home/wm/screen-lock.nix b/home/wm/screen-lock.nix index e6eee22..1632be7 100644 --- a/home/wm/screen-lock.nix +++ b/home/wm/screen-lock.nix @@ -11,12 +11,12 @@ in lockCmd = cfg.command; - xautolockExtraOptions = lib.optionals cfg.cornerLock [ + xautolockExtraOptions = lib.optionals cfg.cornerLock.enable [ # Mouse corners: instant lock on upper-left, never lock on lower-right "-cornerdelay" - "5" + "${toString cfg.cornerLock.delay}" "-cornerredelay" - "5" + "${toString cfg.cornerLock.delay}" "-corners" "+00-" ] ++ lib.optionals cfg.notify [ From f8a1480d095422cfddcddee8680f0150d724fbf9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 19 Apr 2021 16:44:28 +0000 Subject: [PATCH 0050/1588] home: wm: screen-lock: add 'notify.delay' setting --- home/wm/default.nix | 21 ++++++++++++++++++++- home/wm/screen-lock.nix | 14 +++++++++++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/home/wm/default.nix b/home/wm/default.nix index f4f0ad2..508fe76 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -61,7 +61,26 @@ in }; }; - notify = my.mkDisableOption "Notify when about to lock the screen"; + notify = { + enable = my.mkDisableOption "Notify when about to lock the screen"; + + delay = mkOption { + type = with types; + addCheck int (x: + let + cfg = config.my.home.wm.screen-lock.notify; + cornerCfg = config.my.home.wm.screen-lock.cornerLock; + in + (cfg.enable && cornerCfg.enable) -> cornerCfg.delay >= x); + default = 5; + example = 15; + description = '' + How many seconds in advance should there be a notification. + This value must be at lesser than or equal to `cornerLock.delay` + when both options are enabled. + ''; + }; + }; timeout = mkOption { type = types.ints.between 1 60; diff --git a/home/wm/screen-lock.nix b/home/wm/screen-lock.nix index 1632be7..720e73a 100644 --- a/home/wm/screen-lock.nix +++ b/home/wm/screen-lock.nix @@ -1,6 +1,14 @@ { config, lib, pkgs, ... }: let cfg = config.my.home.wm.screen-lock; + + notficationCmd = + let + duration = toString (cfg.notify.delay * 1000); + notifyCmd = "${pkgs.libnotify}/bin/notify-send -u critical -t ${duration}"; + in + # Needs to be surrounded by quotes for systemd to launch it correctly + ''"${notifyCmd} -- 'Locking in ${toString cfg.notify.delay} seconds'"''; in { config = lib.mkIf cfg.enable { @@ -19,11 +27,11 @@ in "${toString cfg.cornerLock.delay}" "-corners" "+00-" - ] ++ lib.optionals cfg.notify [ + ] ++ lib.optionals cfg.notify.enable [ "-notify" - "5" + "${toString cfg.notify.delay}" "-notifier" - ''"${pkgs.libnotify}/bin/notify-send -u critical -t 5000 -- 'Locking in 5 seconds'"'' + notficationCmd ]; }; }; From 4c154c7216b3baaedb8c1daf5cbbfea3c39b35b2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 23 Apr 2021 18:31:10 +0000 Subject: [PATCH 0051/1588] machines: aramis: services: enable wireguard --- machines/aramis/default.nix | 1 + machines/aramis/services.nix | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 machines/aramis/services.nix diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index 6eaadeb..59f373f 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -10,6 +10,7 @@ ./hardware.nix ./home.nix ./networking.nix + ./services.nix ./sound.nix ]; diff --git a/machines/aramis/services.nix b/machines/aramis/services.nix new file mode 100644 index 0000000..30dc47d --- /dev/null +++ b/machines/aramis/services.nix @@ -0,0 +1,8 @@ +{ lib, ... }: +{ + config.my.services = { + wireguard = { + enable = true; + }; + }; +} From eba01a006799df8362106a9bf32ac0b50815d090 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 7 Apr 2021 17:15:03 +0000 Subject: [PATCH 0052/1588] home: zsh: enable VTE integration when appropriate --- home/zsh/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index b7b9e8e..4657c4e 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -65,6 +65,12 @@ in # Sometime `gpg-agent` errors out... reset-agent = "gpg-connect-agent updatestartuptty /bye"; }; + + # Enable VTE integration when using one of the affected shells + enableVteIntegration = + builtins.any (name: config.my.home.terminal.program == name) [ + "termite" + ]; }; # Fuzzy-wuzzy From b52c55db5f6df1fbdc0033930742ed6299eed190 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 3 May 2021 20:23:22 +0200 Subject: [PATCH 0053/1588] home: wm: i3bar: show temperature block by default --- home/wm/i3bar.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index b1358b9..7e3625c 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -43,6 +43,7 @@ in } { block = "temperature"; + collapsed = false; } { block = "sound"; From 7a85b045415ded61853247c373742bb2210f6214 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 3 May 2021 20:41:03 +0200 Subject: [PATCH 0054/1588] home: wm: i3bar: extend width of music block --- home/wm/i3bar.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index 7e3625c..b763b86 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -18,6 +18,7 @@ in { block = "music"; buttons = [ "prev" "play" "next" ]; + max_width = 50; hide_when_empty = true; } { From ec8ea63fcbf8d0497f62f6b708e07066b34b764b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 May 2021 19:35:30 +0200 Subject: [PATCH 0055/1588] home: wm: i3: fix audio media keys --- home/wm/i3.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 87e5ec8..5039f28 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -202,11 +202,11 @@ in ) { # Media keys - "XF86AudioRaiseVolume" = "exec amixer -q -D pulse sset Master 5%+"; - "XF86AudioLowerVolume" = "exec amixer -q -D pulse sset Master 5%-"; - "Control+XF86AudioRaiseVolume" = "exec amixer -q -D pulse sset Master 1%+"; - "Control+XF86AudioLowerVolume" = "exec amixer -q -D pulse sset Master 1%-"; - "XF86AudioMute" = "exec amixer -q -D pulse sset Master toggle"; + "XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +5%"; + "XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -5%"; + "Control+XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +1%"; + "Control+XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -1%"; + "XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle"; "XF86AudioPlay" = "exec playerctl play-pause"; "XF86AudioNext" = "exec playerctl next"; From e0fe15aa2b4115d5f447abd2faa02fe4c1015176 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 May 2021 19:36:16 +0200 Subject: [PATCH 0056/1588] home: wm: i3: add mic mute media key --- home/wm/i3.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 5039f28..b4994e8 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -207,6 +207,7 @@ in "Control+XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +1%"; "Control+XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -1%"; "XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle"; + "XF86AudioMicMute" = "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle"; "XF86AudioPlay" = "exec playerctl play-pause"; "XF86AudioNext" = "exec playerctl next"; From d111e16bea15445438819dfe47c6eb170b60af4b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 May 2021 22:44:16 +0200 Subject: [PATCH 0057/1588] home: gammastep: change default night temperature I want the colour to be warmer, and blues even more attenuated. --- home/gammastep.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/gammastep.nix b/home/gammastep.nix index b96f028..343f130 100644 --- a/home/gammastep.nix +++ b/home/gammastep.nix @@ -20,7 +20,7 @@ in temperature = { day = mkTempOption "Colour temperature to use during the day" 6500; - night = mkTempOption "Colour temperature to use during the night" 2500; + night = mkTempOption "Colour temperature to use during the night" 2000; }; times = { From 3f35f9e44050c00f687d482e5be8498a94e3bb63 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 May 2021 22:44:29 +0200 Subject: [PATCH 0058/1588] home: gammastep: show tray icon --- home/gammastep.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/gammastep.nix b/home/gammastep.nix index 343f130..24c595c 100644 --- a/home/gammastep.nix +++ b/home/gammastep.nix @@ -32,6 +32,8 @@ in config.services.gammastep = lib.mkIf cfg.enable { enable = true; + tray = true; + dawnTime = cfg.times.dawn; duskTime = cfg.times.dusk; From 0a7a2c5c903f5a81e811e1c1949e7d367f0adc58 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:04:53 +0200 Subject: [PATCH 0059/1588] machine: aramis: networking: use networkmanager I consider WiFi configurations to be ephemeral --- machines/aramis/networking.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/machines/aramis/networking.nix b/machines/aramis/networking.nix index 752fc8c..3e0cb28 100644 --- a/machines/aramis/networking.nix +++ b/machines/aramis/networking.nix @@ -3,7 +3,8 @@ networking = { hostName = "aramis"; domain = "nodomain.local"; # FIXME: gotta fix domain handling - wireless.enable = true; + + networkmanager.enable = true; # The global useDHCP flag is deprecated, therefore explicitly set to false here. # Per-interface useDHCP will be mandatory in the future, so this generated config From 165e26f0b383dfdfe46e5e35f1ab960bb1887311 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:09:49 +0200 Subject: [PATCH 0060/1588] modules: users: add myself to 'networkmanager' --- modules/users.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/users.nix b/modules/users.nix index 6fa4e6d..3bc1c37 100644 --- a/modules/users.nix +++ b/modules/users.nix @@ -21,6 +21,7 @@ in extraGroups = groupsIfExist [ "audio" # sound control "media" # access to media files + "networkmanager" # wireless configuration "plugdev" # usage of ZSA keyboard tools "video" # screen control "wheel" # `sudo` for the user. From 40fa4798e1be502e6b91adab896f05115e049492 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:21:10 +0200 Subject: [PATCH 0061/1588] home: add nm-applet --- home/default.nix | 1 + home/nm-applet.nix | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 home/nm-applet.nix diff --git a/home/default.nix b/home/default.nix index 570a0c2..91a6e51 100644 --- a/home/default.nix +++ b/home/default.nix @@ -11,6 +11,7 @@ ./gpg.nix ./htop.nix ./jq.nix + ./nm-applet.nix ./packages.nix ./pager.nix ./secrets # Home-manager specific secrets diff --git a/home/nm-applet.nix b/home/nm-applet.nix new file mode 100644 index 0000000..b8637f7 --- /dev/null +++ b/home/nm-applet.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.my.home.nm-applet; +in +{ + options.my.home.nm-applet = with lib; { + enable = mkEnableOption "network-manager-applet configuration"; + }; + + config.services.network-manager-applet = lib.mkIf cfg.enable { + enable = true; + }; +} From ed1539ae295f77c7171b393561eb5ec956721a8f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:21:34 +0200 Subject: [PATCH 0062/1588] machines: aramis: home: enable nm-applet --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index c46b3fc..3520fc0 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -7,6 +7,8 @@ gammastep.enable = true; # Use a small popup to enter passwords gpg.pinentry = "gtk2"; + # Network-Manager applet + nm-applet.enable = true; # Termite terminal terminal.program = "termite"; # i3 settings From 8755d84b214d1c1b732d130d7b247dd6be573e9d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 May 2021 19:16:47 +0200 Subject: [PATCH 0063/1588] machines: aramis: install: exit on error --- machines/aramis/install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/install.sh b/machines/aramis/install.sh index 537ef9e..b03a6df 100755 --- a/machines/aramis/install.sh +++ b/machines/aramis/install.sh @@ -1,5 +1,7 @@ #!/bin/sh +set -eu + if [ "$(id -u)" -ne 0 ]; then echo "This script must be run as root" >&2 exit 1 From 8013120856341a929ad61fd0fb94ab7dd8d22a8f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:27:07 +0200 Subject: [PATCH 0064/1588] modules: networking: add 'wireless' option --- modules/networking.nix | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/modules/networking.nix b/modules/networking.nix index 28ba108..99e1ef3 100644 --- a/modules/networking.nix +++ b/modules/networking.nix @@ -1,13 +1,27 @@ -{ lib, ... }: - +{ config, lib, ... }: +let + cfg = config.my.networking; +in { - options.my.networking.externalInterface = with lib; mkOption { - type = types.nullOr types.str; - default = null; - example = "eth0"; - description = '' - Name of the network interface that egresses to the internet. Used for - e.g. NATing internal networks. - ''; + options.my.networking = with lib; { + externalInterface = mkOption { + type = types.nullOr types.str; + default = null; + example = "eth0"; + description = '' + Name of the network interface that egresses to the internet. Used for + e.g. NATing internal networks. + ''; + }; + + wireless = { + enable = mkEnableOption "wireless configuration"; + }; }; + + config = lib.mkMerge [ + (lib.mkIf cfg.wireless.enable { + networking.networkmanager.enable = true; + }) + ]; } From 4319105aa5530cd8b32024022795e798889e3b31 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:27:21 +0200 Subject: [PATCH 0065/1588] machines: aramis: networking: use wireless option --- machines/aramis/networking.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/machines/aramis/networking.nix b/machines/aramis/networking.nix index 3e0cb28..929b44d 100644 --- a/machines/aramis/networking.nix +++ b/machines/aramis/networking.nix @@ -4,8 +4,6 @@ hostName = "aramis"; domain = "nodomain.local"; # FIXME: gotta fix domain handling - networkmanager.enable = true; - # The global useDHCP flag is deprecated, therefore explicitly set to false here. # Per-interface useDHCP will be mandatory in the future, so this generated config # replicates the default behaviour. @@ -19,4 +17,7 @@ # Which interface is used to connect to the internet my.networking.externalInterface = "enp0s3"; + + # Enable WiFi integration + my.networking.wireless.enable = true; } From 35b8de02c2bc768103175073169713bfc0cedcc7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:47:04 +0200 Subject: [PATCH 0066/1588] modules: add bluetooth --- modules/bluetooth.nix | 38 ++++++++++++++++++++++++++++++++++++++ modules/default.nix | 1 + 2 files changed, 39 insertions(+) create mode 100644 modules/bluetooth.nix diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix new file mode 100644 index 0000000..811dd94 --- /dev/null +++ b/modules/bluetooth.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.modules.bluetooth; +in +{ + options.my.modules.bluetooth = with lib; { + enable = mkEnableOption "wireless configuration"; + + enableHeadsetIntegration = my.mkDisableOption "A2DP sink configuration"; + + loadExtraCodecs = my.mkDisableOption "extra audio codecs"; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + # Enable bluetooth devices and GUI to connect to them + { + hardware.bluetooth.enable = true; + services.blueman.enable = true; + } + + # Support for additional bluetooth codecs + (lib.mkIf cfg.loadExtraCodecs { + hardware.pulseaudio = { + extraModules = [ pkgs.pulseaudio-modules-bt ]; + package = pkgs.pulseaudioFull; + }; + }) + + # Support for A2DP audio profile + (lib.mkIf cfg.enableHeadsetIntegration { + hardware.bluetooth.settings = { + General = { + Enable = "Source,Sink,Media,Socket"; + }; + }; + }) + ]); +} diff --git a/modules/default.nix b/modules/default.nix index f20351f..c25a426 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -3,6 +3,7 @@ { imports = [ + ./bluetooth.nix ./documentation.nix ./ergodox.nix ./home.nix From 432cd97b53bc78d156498bc29106b93a060e85b5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:47:34 +0200 Subject: [PATCH 0067/1588] machines: aramis: enable bluetooth --- machines/aramis/bluetooth.nix | 5 +++++ machines/aramis/default.nix | 1 + 2 files changed, 6 insertions(+) create mode 100644 machines/aramis/bluetooth.nix diff --git a/machines/aramis/bluetooth.nix b/machines/aramis/bluetooth.nix new file mode 100644 index 0000000..0255a72 --- /dev/null +++ b/machines/aramis/bluetooth.nix @@ -0,0 +1,5 @@ +{ ... }: +{ + # Bluetooth integration + my.modules.bluetooth.enable = true; +} diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index 59f373f..221da9e 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -6,6 +6,7 @@ { imports = [ + ./bluetooth.nix ./boot.nix ./hardware.nix ./home.nix From 554620f00470e39295e705a2305c3f229dd75e18 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 May 2021 19:15:13 +0200 Subject: [PATCH 0068/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index f80cf84..9e21b7a 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1619558193, - "narHash": "sha256-DljP5/9EX0eXEPhzCUFqFEHkkcFuXJBx1PTgcv0OgyM=", + "lastModified": 1620138697, + "narHash": "sha256-8Mgj+Fj4zGEI7oA9wbyqvdwq+46kAyd3barMIedWkho=", "owner": "nix-community", "repo": "home-manager", - "rev": "18ad12d52b8cebbb57013865eec2be5125de050a", + "rev": "64c5228c0828fff0c94c1d42f7225115c299ae08", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1619464443, - "narHash": "sha256-R7WAb8EnkIJxxaF6GTHUPytjonhB4Zm0iatyWoW169A=", + "lastModified": 1620074890, + "narHash": "sha256-4Z8Zwpg0gPvqKbSsck1g9ql4E5NClGZdjyxbYoaXA4s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8e4fe32876ca15e3d5eb3ecd3ca0b224417f5f17", + "rev": "7cb76200088f45cd24a9aa67fd2f9657943d78a4", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nur": { "locked": { - "lastModified": 1619628114, - "narHash": "sha256-s3pQyvMfXVmbQOX224yOWQf6zi8406sShFF4u17LVQ0=", + "lastModified": 1620140064, + "narHash": "sha256-WiQxLQEyYkmeHv/oB89LfyIjLqNWvI+7ZWBX0Ygb9pM=", "owner": "nix-community", "repo": "NUR", - "rev": "0615e756dc14986c4968fa478c0bd080d621cb2b", + "rev": "ac217b9a764d5352db9ccfb5cc39bdd3ff74d4ec", "type": "github" }, "original": { From 5930fc0d3bd7f2e5739c7af62e84c37f3a81d78a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 May 2021 19:15:49 +0200 Subject: [PATCH 0069/1588] home: wm: i3: use new 'fonts' option type --- home/wm/i3.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index b4994e8..9446e99 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -105,9 +105,10 @@ in mouseWarping = true; # Let's moving around when switching screens }; - fonts = [ - "DejaVu Sans Mono 8" - ]; + fonts = { + names = [ "DejaVu Sans Mono" ]; + size = 8.0; + }; # I don't care for i3's default values, I specify them all explicitly keybindings = builtins.foldl' (lhs: rhs: lhs // rhs) { } [ From 0c8eea0fb457c663cc27aaf0db30d9d4c0171f9a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 May 2021 19:16:18 +0200 Subject: [PATCH 0070/1588] home: wm: i3bar: use FontAwesome5 for icons --- home/wm/i3.nix | 5 +++++ home/wm/i3bar.nix | 3 +++ 2 files changed, 8 insertions(+) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 9446e99..9fe9316 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -84,6 +84,11 @@ in text = "#fdf6e3"; }; }; + + fonts = { + names = [ "DejaVu Sans Mono" "FontAwesome5Free" ]; + size = 8.0; + }; } ]; diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index b763b86..5cc1356 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -7,6 +7,7 @@ in home.packages = with pkgs; [ alsaUtils # Used by `sound` block lm_sensors # Used by `temperature` block + font-awesome # Icon font ]; programs.i3status-rust = { @@ -14,6 +15,8 @@ in bars = { top = { + icons = "awesome5"; + blocks = builtins.filter (attr: attr != { }) [ { block = "music"; From 91954e9a02353543fe825de4063c32ef098238a1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:54:27 +0200 Subject: [PATCH 0071/1588] home: add bluetooth --- home/bluetooth.nix | 19 +++++++++++++++++++ home/default.nix | 1 + 2 files changed, 20 insertions(+) create mode 100644 home/bluetooth.nix diff --git a/home/bluetooth.nix b/home/bluetooth.nix new file mode 100644 index 0000000..2a4f613 --- /dev/null +++ b/home/bluetooth.nix @@ -0,0 +1,19 @@ +{ config, lib, ... }: +let + cfg = config.my.home.bluetooth; +in +{ + options.my.home.bluetooth = with lib; { + enable = mkEnableOption "bluetooth configuration"; + }; + + config = lib.mkIf cfg.enable { + services.blueman-applet = { + enable = true; + }; + + services.mpris-proxy = { + enable = true; + }; + }; +} diff --git a/home/default.nix b/home/default.nix index 91a6e51..7c5e807 100644 --- a/home/default.nix +++ b/home/default.nix @@ -2,6 +2,7 @@ { imports = [ ./bat.nix + ./bluetooth.nix ./direnv.nix ./documentation.nix ./firefox From c4bc609b7eb6ca8b7b11f2f31310ed52e5b668b8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 May 2021 12:54:40 +0200 Subject: [PATCH 0072/1588] machines: aramis: home: enable bluetooth --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 3520fc0..880ed35 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -1,6 +1,8 @@ { ... }: { my.home = { + # Bluetooth GUI & media keys + bluetooth.enable = true; # Firefo profile and extensions firefox.enable = true; # Blue light filter From 7e1ca1f3d5b2d71b920f77fc6f45dd1b96c90b94 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 6 May 2021 12:38:42 +0200 Subject: [PATCH 0073/1588] home: x: add cursor I would like to check out alternative themes. Notably Quintom [1], Volantes [2], and Vimix [3]. [1]: https://gitlab.com/Burning_Cube/quintom-cursor-theme [2]: https://github.com/varlesh/volantes-cursors [3]: https://github.com/vinceliuice/Vimix-cursors --- home/x/cursor.nix | 12 ++++++++++++ home/x/default.nix | 1 + 2 files changed, 13 insertions(+) create mode 100644 home/x/cursor.nix diff --git a/home/x/cursor.nix b/home/x/cursor.nix new file mode 100644 index 0000000..4bbff0c --- /dev/null +++ b/home/x/cursor.nix @@ -0,0 +1,12 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.x; +in +{ + config = lib.mkIf cfg.enable { + xsession.pointerCursor = { + package = pkgs.numix-cursor-theme; + name = "Numix-Cursor"; + }; + }; +} diff --git a/home/x/default.nix b/home/x/default.nix index 086c41b..f021ca0 100644 --- a/home/x/default.nix +++ b/home/x/default.nix @@ -4,6 +4,7 @@ let in { imports = [ + ./cursor.nix ./keyboard.nix ]; From 2b6399606af06ac873079b06bedc076a7d561c4e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 17:04:18 +0200 Subject: [PATCH 0074/1588] modules: documentation: use 'mkDisableOption' The documentation module already gates behind 'documentation.enable' for the other options. --- modules/documentation.nix | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/modules/documentation.nix b/modules/documentation.nix index 5f67197..093c4cd 100644 --- a/modules/documentation.nix +++ b/modules/documentation.nix @@ -1,23 +1,18 @@ { config, lib, ... }: let cfg = config.my.module.documentation; - - # I usually want everything enabled at once, but keep it customizable - defaultToGlobal = description: lib.mkEnableOption description // { - default = cfg.enable; - }; in { options.my.module.documentation = with lib.my; { enable = mkDisableOption "Documentation integration"; - dev.enable = defaultToGlobal "Documentation aimed at developers"; + dev.enable = mkDisableOption "Documentation aimed at developers"; - info.enable = defaultToGlobal "Documentation aimed at developers"; + info.enable = mkDisableOption "Documentation aimed at developers"; - man.enable = defaultToGlobal "Documentation aimed at developers"; + man.enable = mkDisableOption "Documentation aimed at developers"; - nixos.enable = defaultToGlobal "NixOS documentation"; + nixos.enable = mkDisableOption "NixOS documentation"; }; config.documentation = { From ddffa1f247346fa19b2c556edc01ab93ccc648e1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 17:12:48 +0200 Subject: [PATCH 0075/1588] modules: documentation: add linux man pages option I want to be able to read about syscalls or the C library. --- modules/documentation.nix | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/modules/documentation.nix b/modules/documentation.nix index 093c4cd..8948778 100644 --- a/modules/documentation.nix +++ b/modules/documentation.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.module.documentation; in @@ -10,23 +10,31 @@ in info.enable = mkDisableOption "Documentation aimed at developers"; - man.enable = mkDisableOption "Documentation aimed at developers"; + man = { + enable = mkDisableOption "Documentation aimed at developers"; + + linux = mkDisableOption "Linux man pages (section 2 & 3)"; + }; nixos.enable = mkDisableOption "NixOS documentation"; }; - config.documentation = { - enable = cfg.enable; + config = lib.mkIf cfg.enable { + documentation = { + enable = true; - dev.enable = cfg.dev.enable; + dev.enable = cfg.dev.enable; - info.enable = cfg.info.enable; + info.enable = cfg.info.enable; - man = { - enable = cfg.man.enable; - generateCaches = true; + man = { + enable = cfg.man.enable; + generateCaches = true; + }; + + nixos.enable = cfg.nixos.enable; }; - nixos.enable = cfg.nixos.enable; + environment.systemPackages = lib.optional cfg.man.linux pkgs.manpages; }; } From 0a8effa09ff51af112ab2158cde9087f9358c115 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 17:32:26 +0200 Subject: [PATCH 0076/1588] home: packages: add option for additional packages --- home/packages.nix | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/home/packages.nix b/home/packages.nix index b951f9e..7d87fc6 100644 --- a/home/packages.nix +++ b/home/packages.nix @@ -3,11 +3,21 @@ let cfg = config.my.home.packages; in { - options.my.home.packages = with lib.my; { - enable = mkDisableOption "user packages"; + options.my.home.packages = with lib; { + enable = my.mkDisableOption "user packages"; + + additionalPackages = mkOption { + type = with types; listOf package; + default = [ ]; + example = literalExample '' + with pkgs; [ + quasselClient + ] + ''; + }; }; - config.home.packages = with pkgs; lib.mkIf cfg.enable [ + config.home.packages = with pkgs; lib.mkIf cfg.enable ([ # Git related gitAndTools.git-absorb gitAndTools.git-revise @@ -16,5 +26,5 @@ in rr # Terminal prettiness termite.terminfo - ]; + ] ++ cfg.additionalPackages); } From 1bb93674707e8e8eb464918f1c37c4079c7090ac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 17:34:22 +0200 Subject: [PATCH 0077/1588] machines: aramis: add some additional packages --- machines/aramis/home.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 880ed35..b8fd278 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -1,4 +1,4 @@ -{ ... }: +{ pkgs, ... }: { my.home = { # Bluetooth GUI & media keys @@ -9,6 +9,11 @@ gammastep.enable = true; # Use a small popup to enter passwords gpg.pinentry = "gtk2"; + # Machine specific packages + packages.additionalPackages = with pkgs; [ + pavucontrol # Audio mixer GUI + quasselClient # IRC client + ]; # Network-Manager applet nm-applet.enable = true; # Termite terminal From d36cb23fa33ca498d250f1886ce890f4979420b5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 18:01:46 +0200 Subject: [PATCH 0078/1588] home: pager: add colored man page support --- home/pager.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/home/pager.nix b/home/pager.nix index 54ea3c4..74a4c3b 100644 --- a/home/pager.nix +++ b/home/pager.nix @@ -14,5 +14,20 @@ in PAGER = "less"; # Clear the screen on start and exit LESS = "-R -+X -c"; + + # Colored man pages + LESS_TERMCAP_mb = "$(tput bold; tput setaf 2)"; + LESS_TERMCAP_md = "$(tput bold; tput setaf 6)"; + LESS_TERMCAP_me = "$(tput sgr0)"; + LESS_TERMCAP_so = "$(tput bold; tput setaf 3; tput setab 4)"; + LESS_TERMCAP_se = "$(tput rmso; tput sgr0)"; + LESS_TERMCAP_us = "$(tput bold; tput setaf 2)"; + LESS_TERMCAP_ue = "$(tput rmul; tput sgr0)"; + LESS_TERMCAP_mr = "$(tput rev)"; + LESS_TERMCAP_mh = "$(tput dim)"; + LESS_TERMCAP_ZN = "$(tput ssubm)"; + LESS_TERMCAP_ZV = "$(tput rsubm)"; + LESS_TERMCAP_ZO = "$(tput ssupm)"; + LESS_TERMCAP_ZW = "$(tput rsupm)"; }; } From b2e0e8121659b95201d0ce42f7d99cfa9d209459 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 19:05:44 +0200 Subject: [PATCH 0079/1588] home: packages: add 'file' to common package set --- home/packages.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/home/packages.nix b/home/packages.nix index 7d87fc6..0d57840 100644 --- a/home/packages.nix +++ b/home/packages.nix @@ -18,13 +18,11 @@ in }; config.home.packages = with pkgs; lib.mkIf cfg.enable ([ - # Git related + file gitAndTools.git-absorb gitAndTools.git-revise gitAndTools.tig - # Dev work rr - # Terminal prettiness termite.terminfo ] ++ cfg.additionalPackages); } From 384e801553bfa168bdf141e85a80e9650d81cab0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 19:34:01 +0200 Subject: [PATCH 0080/1588] machines: aramis: home: set up background `i3` inherits its background from `lightdm`. --- machines/aramis/home.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index b8fd278..8980e9a 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -30,4 +30,10 @@ services.xserver.enable = true; # Enable i3 services.xserver.windowManager.i3.enable = true; + # Nice wallpaper + services.xserver.displayManager.lightdm.background = + let + wallpapers = "${pkgs.plasma-workspace-wallpapers}/share/wallpapers"; + in + "${wallpapers}/summer_1am/contents/images/2560x1600.jpg"; } From e82d510c0c53ffdd342afd1c3e6586299e05447c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 19:35:47 +0200 Subject: [PATCH 0081/1588] home: add feh --- home/default.nix | 1 + home/feh.nix | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 home/feh.nix diff --git a/home/default.nix b/home/default.nix index 7c5e807..45065c8 100644 --- a/home/default.nix +++ b/home/default.nix @@ -5,6 +5,7 @@ ./bluetooth.nix ./direnv.nix ./documentation.nix + ./feh.nix ./firefox ./flameshot.nix ./gammastep.nix diff --git a/home/feh.nix b/home/feh.nix new file mode 100644 index 0000000..3a952a2 --- /dev/null +++ b/home/feh.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.my.home.feh; +in +{ + options.my.home.feh = with lib; { + enable = mkEnableOption "feh configuration"; + }; + + config.programs.feh = lib.mkIf cfg.enable { + enable = true; + }; +} From a7839c63e0f4864bfe0e16e66628167934b5d85d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 May 2021 19:36:09 +0200 Subject: [PATCH 0082/1588] machines: aramis: home: enable feh --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 8980e9a..f4c7553 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -3,6 +3,8 @@ my.home = { # Bluetooth GUI & media keys bluetooth.enable = true; + # Image viewver + feh.enable = true; # Firefo profile and extensions firefox.enable = true; # Blue light filter From 2d21945670681d2c469e03d3cc2f58e1a26ffc53 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 8 May 2021 17:40:22 +0200 Subject: [PATCH 0083/1588] pkgs: add i3-get-window-criteria --- pkgs/default.nix | 2 + pkgs/i3-get-window-criteria/default.nix | 43 +++++++++++++++++++ .../i3-get-window-criteria | 30 +++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 pkgs/i3-get-window-criteria/default.nix create mode 100755 pkgs/i3-get-window-criteria/i3-get-window-criteria diff --git a/pkgs/default.nix b/pkgs/default.nix index 58f004a..164c0b3 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -4,6 +4,8 @@ rec { havm = pkgs.callPackage ./havm { }; + i3-get-window-criteria = pkgs.callPackage ./i3-get-window-criteria { }; + lohr = pkgs.callPackage ./lohr { }; nolimips = pkgs.callPackage ./nolimips { }; diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix new file mode 100644 index 0000000..185e1e4 --- /dev/null +++ b/pkgs/i3-get-window-criteria/default.nix @@ -0,0 +1,43 @@ +{ coreutils, gnused, makeWrapper, lib, shellcheck, stdenvNoCC, xorg }: +stdenvNoCC.mkDerivation rec { + pname = "i3-get-window-criteria"; + version = "0.1.0"; + + src = ./i3-get-window-criteria; + + phases = [ "buildPhase" "installPhase" "fixupPhase" ]; + + buildInputs = [ + makeWrapper + shellcheck + ]; + + buildPhase = '' + shellcheck $src + ''; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${pname} + chmod a+x $out/bin/${pname} + ''; + + wrapperPath = lib.makeBinPath [ + coreutils + gnused + xorg.xprop + xorg.xwininfo + ]; + + fixupPhase = '' + patchShebangs $out/bin/${pname} + wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = "Helper script to query i3 window criterions"; + homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/i3-get-window-criteria/i3-get-window-criteria b/pkgs/i3-get-window-criteria/i3-get-window-criteria new file mode 100755 index 0000000..e68641c --- /dev/null +++ b/pkgs/i3-get-window-criteria/i3-get-window-criteria @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +# i3-get-window-criteria - Get criteria for use with i3 config commands + +# To use, run this script, then click on a window. +# Output is in the format: [= = ...] + +# Known problem: when WM_NAME is used as fallback for the 'title=""' criterion, +# quotes in "" are not escaped properly. This is a problem with the output of `xprop`, +# reported upstream: https://bugs.freedesktop.org/show_bug.cgi?id=66807 + +match_int='[0-9][0-9]*' +match_string='".*"' +match_qstring='"[^"\\]*(\\.[^"\\]*)*"' # NOTE: Adds 1 backreference + +{ + # Run xwininfo, get window id + window_id=$(xwininfo -int | sed -nre "s/^xwininfo: Window id: ($match_int) .*$/\1/p") + echo "id=$window_id" + + # Run xprop, transform its output into i3 criteria. Handle fallback to + # WM_NAME when _NET_WM_NAME isn't set + xprop -id "$window_id" | + sed -nr \ + -e "s/^WM_CLASS\(STRING\) = ($match_qstring), ($match_qstring)$/instance=\1\nclass=\3/p" \ + -e "s/^WM_WINDOW_ROLE\(STRING\) = ($match_qstring)$/window_role=\1/p" \ + -e "/^WM_NAME\(STRING\) = ($match_string)$/ {s//title=\1/; h}" \ + -e "/^_NET_WM_NAME\(UTF8_STRING\) = ($match_qstring)$/ {s//title=\1/; h}" \ + -e '$ {g; p}' +} | sort | tr "\n" " " | sed -r 's/^(.*) $/[\1]\n/' From c7fccd3ed309e15f22a94df06efe684edf7342bf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 8 May 2021 17:41:42 +0200 Subject: [PATCH 0084/1588] home: wm: i3: add i3-get-window-criteria package --- home/wm/i3.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 9fe9316..c431be0 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -34,6 +34,7 @@ in }; home.packages = with pkgs; [ + ambroisie.i3-get-window-criteria # little helper for i3 configuration arandr # Used by a mapping playerctl # Used by a mapping ]; From 2daaaed37f08c9875a1ba4b9cf27368139758d67 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 8 May 2021 17:47:47 +0200 Subject: [PATCH 0085/1588] pkgs: i3-get-window-criteria: remove whitespace --- pkgs/i3-get-window-criteria/i3-get-window-criteria | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/i3-get-window-criteria/i3-get-window-criteria b/pkgs/i3-get-window-criteria/i3-get-window-criteria index e68641c..dba386e 100755 --- a/pkgs/i3-get-window-criteria/i3-get-window-criteria +++ b/pkgs/i3-get-window-criteria/i3-get-window-criteria @@ -27,4 +27,4 @@ match_qstring='"[^"\\]*(\\.[^"\\]*)*"' # NOTE: Adds 1 backreference -e "/^WM_NAME\(STRING\) = ($match_string)$/ {s//title=\1/; h}" \ -e "/^_NET_WM_NAME\(UTF8_STRING\) = ($match_qstring)$/ {s//title=\1/; h}" \ -e '$ {g; p}' -} | sort | tr "\n" " " | sed -r 's/^(.*) $/[\1]\n/' +} | sort | tr "\n" " " | sed -r 's/^ *(.*) $/[\1]\n/' From ec7f62f7bcb1701d97e07f0c24f1868e5f8fba4c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 8 May 2021 17:53:06 +0200 Subject: [PATCH 0086/1588] home: terminal: export TERMINAL when appropriate This is used by some programs, like 'rofi' to launch terminal programs. --- home/terminal/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/home/terminal/default.nix b/home/terminal/default.nix index 4c3f5cb..676eed9 100644 --- a/home/terminal/default.nix +++ b/home/terminal/default.nix @@ -1,10 +1,12 @@ -{ lib, ... }: +{ config, lib, ... }: let mkColorOption = with lib; description: default: mkOption { inherit description default; example = "#abcdef"; type = types.strMatching "#[0-9a-f]{6}"; }; + + cfg = config.my.home.terminal; in { imports = [ @@ -52,4 +54,8 @@ in }; }; }; + + config.home.sessionVariables = lib.mkIf (cfg.program != null) { + TERMINAL = "termite"; + }; } From a4b54f3630f77fcea1f4bbc7296ef54595a10711 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 8 May 2021 23:53:21 +0200 Subject: [PATCH 0087/1588] machines: aramis: home: add jellyfin-media-player --- machines/aramis/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index f4c7553..6591924 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -13,6 +13,7 @@ gpg.pinentry = "gtk2"; # Machine specific packages packages.additionalPackages = with pkgs; [ + jellyfin-media-player # Wraps the webui and mpv together pavucontrol # Audio mixer GUI quasselClient # IRC client ]; From 96c9b1b57d14a4d7c02d66bca5147924895c399b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 00:06:12 +0200 Subject: [PATCH 0088/1588] flake: add overlays folder --- flake.nix | 2 +- overlays/default.nix | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 overlays/default.nix diff --git a/flake.nix b/flake.nix index 404b2c0..8f55618 100644 --- a/flake.nix +++ b/flake.nix @@ -103,7 +103,7 @@ }) // { overlay = self.overlays.pkgs; - overlays = { + overlays = import ./overlays // { lib = final: prev: { inherit lib; }; pkgs = final: prev: { ambroisie = import ./pkgs { pkgs = prev; }; }; }; diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..413c3b4 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,3 @@ +{ + # FIXME: add overlays +} From 9ecdc7c1ed89170840d46ad80a4e579a6d960702 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 00:06:52 +0200 Subject: [PATCH 0089/1588] overlays: add transgui-fix-duplicate-status Upstream is being slow in merging the patch... --- overlays/default.nix | 2 +- overlays/transgui-fix-duplicate-status/default.nix | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 overlays/transgui-fix-duplicate-status/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index 413c3b4..d52dcd3 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - # FIXME: add overlays + transgui-fix-duplicate-status = import ./transgui-fix-duplicate-status; } diff --git a/overlays/transgui-fix-duplicate-status/default.nix b/overlays/transgui-fix-duplicate-status/default.nix new file mode 100644 index 0000000..6190306 --- /dev/null +++ b/overlays/transgui-fix-duplicate-status/default.nix @@ -0,0 +1,11 @@ +final: prev: +{ + transgui = prev.transgui.overrideAttrs (oldAttrs: { + patches = [ + (final.fetchpatch { + url = "https://patch-diff.githubusercontent.com/raw/transmission-remote-gui/transgui/pull/1354.patch"; + sha256 = "sha256-Q4DAduqnTtNI0Zw9NIWpE8L0G8RusvPbZ3iW29k7XXA="; + }) + ]; + }); +} From e12b3a9599564aa60d8a5d6d9f37c60e6b507568 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 00:07:27 +0200 Subject: [PATCH 0090/1588] machines: aramis: home: add transgui --- machines/aramis/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 6591924..d226149 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -16,6 +16,7 @@ jellyfin-media-player # Wraps the webui and mpv together pavucontrol # Audio mixer GUI quasselClient # IRC client + transgui # Transmission remote ]; # Network-Manager applet nm-applet.enable = true; From c6ee3a03516debab49182bf9cc19e0d50fbde43e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 01:01:36 +0200 Subject: [PATCH 0091/1588] home: add gtk --- home/default.nix | 1 + home/gtk.nix | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 home/gtk.nix diff --git a/home/default.nix b/home/default.nix index 45065c8..f38aa10 100644 --- a/home/default.nix +++ b/home/default.nix @@ -11,6 +11,7 @@ ./gammastep.nix ./git ./gpg.nix + ./gtk.nix ./htop.nix ./jq.nix ./nm-applet.nix diff --git a/home/gtk.nix b/home/gtk.nix new file mode 100644 index 0000000..71bf264 --- /dev/null +++ b/home/gtk.nix @@ -0,0 +1,34 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.gtk; +in +{ + options.my.home.gtk = with lib; { + enable = mkEnableOption "GTK configuration"; + }; + + config.gtk = lib.mkIf cfg.enable { + enable = true; + + font = { + package = pkgs.dejavu_fonts; + name = "DejaVu Sans"; + size = 8; + }; + + gtk2 = { + # That sweet, sweet clean home that I am always aiming for... + configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc"; + }; + + iconTheme = { + package = pkgs.gnome3.gnome_themes_standard; + name = "Adwaita"; + }; + + theme = { + package = pkgs.gnome3.gnome_themes_standard; + name = "Adwaita"; + }; + }; +} From 229ecd18ce97f38935744a09d8b2651206a411de Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 01:01:53 +0200 Subject: [PATCH 0092/1588] machines: aramis: home: enable GTK In order to not have an error at activation, dconf must be made available to the dbus service. --- machines/aramis/home.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index d226149..9893ced 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -11,6 +11,8 @@ gammastep.enable = true; # Use a small popup to enter passwords gpg.pinentry = "gtk2"; + # GTK theme configuration + gtk.enable = true; # Machine specific packages packages.additionalPackages = with pkgs; [ jellyfin-media-player # Wraps the webui and mpv together @@ -40,4 +42,9 @@ wallpapers = "${pkgs.plasma-workspace-wallpapers}/share/wallpapers"; in "${wallpapers}/summer_1am/contents/images/2560x1600.jpg"; + + services.dbus.packages = with pkgs; [ + # Allow setting GTK configuration using home-manager + gnome3.dconf + ]; } From 104a7a8d463fba2bdd4a49fc3959b5ca18d6c1fd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 01:15:18 +0200 Subject: [PATCH 0093/1588] home: gtk: do not set font size Turns out that I do not like how it interferes with Firefox's rendering... I should probably investigate this in the future if I want to use this option. --- home/gtk.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/gtk.nix b/home/gtk.nix index 71bf264..77ca477 100644 --- a/home/gtk.nix +++ b/home/gtk.nix @@ -13,7 +13,6 @@ in font = { package = pkgs.dejavu_fonts; name = "DejaVu Sans"; - size = 8; }; gtk2 = { From d2c9b72eb6050804aae0039ee1c64725a235a20f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:30:49 +0200 Subject: [PATCH 0094/1588] flake: add profiles folder This will be used for configurations that either consolidates multiple options that make sens to use together, or span accross system and home configuration. --- flake.nix | 2 ++ profiles/default.nix | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 profiles/default.nix diff --git a/flake.nix b/flake.nix index 8f55618..f54c252 100644 --- a/flake.nix +++ b/flake.nix @@ -60,6 +60,8 @@ } # Include generic settings ./modules + # Include bundles of settings + ./profiles # Include my secrets ./secrets # Include my services diff --git a/profiles/default.nix b/profiles/default.nix new file mode 100644 index 0000000..d726f32 --- /dev/null +++ b/profiles/default.nix @@ -0,0 +1,7 @@ +# Configuration that spans accross system and home, or are almagations of modules +{ ... }: +{ + imports = [ + # FIXME + ]; +} From 4fbb3d53e9e604f6978a0eaa4711d2c7bf60cfeb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:39:20 +0200 Subject: [PATCH 0095/1588] profiles: add bluetooth --- profiles/bluetooth.nix | 15 +++++++++++++++ profiles/default.nix | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 profiles/bluetooth.nix diff --git a/profiles/bluetooth.nix b/profiles/bluetooth.nix new file mode 100644 index 0000000..33792d7 --- /dev/null +++ b/profiles/bluetooth.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let + cfg = config.my.profiles.bluetooth; +in +{ + options.my.profiles.bluetooth = with lib; { + enable = mkEnableOption "bluetooth profile"; + }; + + config = lib.mkIf cfg.enable { + my.modules.bluetooth.enable = true; + + my.home.bluetooth.enable = true; + }; +} diff --git a/profiles/default.nix b/profiles/default.nix index d726f32..30d76c2 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -2,6 +2,6 @@ { ... }: { imports = [ - # FIXME + ./bluetooth.nix ]; } From 28cc5b64b43ce380f8b47ffa9b8f6dff086d737d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:39:51 +0200 Subject: [PATCH 0096/1588] machines: aramis: enable bluetooth profile --- machines/aramis/bluetooth.nix | 5 ----- machines/aramis/default.nix | 2 +- machines/aramis/home.nix | 2 -- machines/aramis/profiles.nix | 7 +++++++ 4 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 machines/aramis/bluetooth.nix create mode 100644 machines/aramis/profiles.nix diff --git a/machines/aramis/bluetooth.nix b/machines/aramis/bluetooth.nix deleted file mode 100644 index 0255a72..0000000 --- a/machines/aramis/bluetooth.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ ... }: -{ - # Bluetooth integration - my.modules.bluetooth.enable = true; -} diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index 221da9e..1af2dd6 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -6,11 +6,11 @@ { imports = [ - ./bluetooth.nix ./boot.nix ./hardware.nix ./home.nix ./networking.nix + ./profiles.nix ./services.nix ./sound.nix ]; diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 9893ced..a63bf3b 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -1,8 +1,6 @@ { pkgs, ... }: { my.home = { - # Bluetooth GUI & media keys - bluetooth.enable = true; # Image viewver feh.enable = true; # Firefo profile and extensions diff --git a/machines/aramis/profiles.nix b/machines/aramis/profiles.nix new file mode 100644 index 0000000..f9aa2aa --- /dev/null +++ b/machines/aramis/profiles.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + my.profiles = { + # Bluetooth configuration and GUI + bluetooth.enable = true; + }; +} From 4650c47974da6cc78c532cdedc9de3a3da095c7c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:40:37 +0200 Subject: [PATCH 0097/1588] modules: bluetooth: fix documentation --- modules/bluetooth.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix index 811dd94..661ed60 100644 --- a/modules/bluetooth.nix +++ b/modules/bluetooth.nix @@ -4,7 +4,7 @@ let in { options.my.modules.bluetooth = with lib; { - enable = mkEnableOption "wireless configuration"; + enable = mkEnableOption "bluetooth configuration"; enableHeadsetIntegration = my.mkDisableOption "A2DP sink configuration"; From 8c7d5cdb309d82aa0b9dd4949f796b5af2c10421 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:45:23 +0200 Subject: [PATCH 0098/1588] profiles: add wm --- profiles/default.nix | 1 + profiles/wm.nix | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 profiles/wm.nix diff --git a/profiles/default.nix b/profiles/default.nix index 30d76c2..c012eee 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -3,5 +3,6 @@ { imports = [ ./bluetooth.nix + ./wm.nix ]; } diff --git a/profiles/wm.nix b/profiles/wm.nix new file mode 100644 index 0000000..a2e9dd2 --- /dev/null +++ b/profiles/wm.nix @@ -0,0 +1,23 @@ +{ config, lib, ... }: +let + cfg = config.my.profiles.wm; +in +{ + options.my.profiles.wm = with lib; { + windowManager = mkOption { + type = with types; nullOr (enum [ "i3" ]); + default = null; + example = "i3"; + description = "Which window manager to use"; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf (cfg.windowManager == "i3") { + # Enable i3 + services.xserver.windowManager.i3.enable = true; + # i3 settings + my.home.wm.windowManager = "i3"; + }) + ]; +} From 4960179f9d6461a2b58dd232c3ce07fa4a1f871a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:45:46 +0200 Subject: [PATCH 0099/1588] machines: aramis: use wm profile --- machines/aramis/home.nix | 4 ---- machines/aramis/profiles.nix | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index a63bf3b..a5a936c 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -22,8 +22,6 @@ nm-applet.enable = true; # Termite terminal terminal.program = "termite"; - # i3 settings - wm.windowManager = "i3"; # Keyboard settings x.enable = true; # Zathura document viewer @@ -32,8 +30,6 @@ # Enable the X11 windowing system. services.xserver.enable = true; - # Enable i3 - services.xserver.windowManager.i3.enable = true; # Nice wallpaper services.xserver.displayManager.lightdm.background = let diff --git a/machines/aramis/profiles.nix b/machines/aramis/profiles.nix index f9aa2aa..1eb73e8 100644 --- a/machines/aramis/profiles.nix +++ b/machines/aramis/profiles.nix @@ -3,5 +3,7 @@ my.profiles = { # Bluetooth configuration and GUI bluetooth.enable = true; + # i3 configuration + wm.windowManager = "i3"; }; } From 7f945f86a63f6d1933caf10fe3f7a6980f42ea13 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:48:27 +0200 Subject: [PATCH 0100/1588] profiles: add gtk --- profiles/default.nix | 1 + profiles/gtk.nix | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 profiles/gtk.nix diff --git a/profiles/default.nix b/profiles/default.nix index c012eee..fb3d4f4 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -3,6 +3,7 @@ { imports = [ ./bluetooth.nix + ./gtk.nix ./wm.nix ]; } diff --git a/profiles/gtk.nix b/profiles/gtk.nix new file mode 100644 index 0000000..9eebe23 --- /dev/null +++ b/profiles/gtk.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.profiles.gtk; +in +{ + options.my.profiles.gtk = with lib; { + enable = mkEnableOption "bluetooth profile"; + }; + + config = lib.mkIf cfg.enable { + # Allow setting GTK configuration using home-manager + services.dbus.packages = with pkgs; [ + gnome3.dconf + ]; + + # GTK theme configuration + my.home.gtk.enable = true; + }; +} From 10adc232233f7b8eb955364406dc1a427884c1d6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:51:00 +0200 Subject: [PATCH 0101/1588] machines: aramis: use gtk profile --- machines/aramis/home.nix | 7 ------- machines/aramis/profiles.nix | 2 ++ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index a5a936c..aca7978 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -9,8 +9,6 @@ gammastep.enable = true; # Use a small popup to enter passwords gpg.pinentry = "gtk2"; - # GTK theme configuration - gtk.enable = true; # Machine specific packages packages.additionalPackages = with pkgs; [ jellyfin-media-player # Wraps the webui and mpv together @@ -36,9 +34,4 @@ wallpapers = "${pkgs.plasma-workspace-wallpapers}/share/wallpapers"; in "${wallpapers}/summer_1am/contents/images/2560x1600.jpg"; - - services.dbus.packages = with pkgs; [ - # Allow setting GTK configuration using home-manager - gnome3.dconf - ]; } diff --git a/machines/aramis/profiles.nix b/machines/aramis/profiles.nix index 1eb73e8..6001918 100644 --- a/machines/aramis/profiles.nix +++ b/machines/aramis/profiles.nix @@ -3,6 +3,8 @@ my.profiles = { # Bluetooth configuration and GUI bluetooth.enable = true; + # GTK theme configuration + gtk.enable = true; # i3 configuration wm.windowManager = "i3"; }; From e7d8548b80971ac60dff48c72245320b46a7e48f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:56:28 +0200 Subject: [PATCH 0102/1588] profiles: add X --- profiles/default.nix | 1 + profiles/x.nix | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 profiles/x.nix diff --git a/profiles/default.nix b/profiles/default.nix index fb3d4f4..eea1a11 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -5,5 +5,6 @@ ./bluetooth.nix ./gtk.nix ./wm.nix + ./x.nix ]; } diff --git a/profiles/x.nix b/profiles/x.nix new file mode 100644 index 0000000..e9d9cfd --- /dev/null +++ b/profiles/x.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.profiles.x; +in +{ + options.my.profiles.x = with lib; { + enable = mkEnableOption "X profile"; + }; + + config = lib.mkIf cfg.enable { + # Enable the X11 windowing system. + services.xserver.enable = true; + # Nice wallpaper + services.xserver.displayManager.lightdm.background = + let + wallpapers = "${pkgs.plasma-workspace-wallpapers}/share/wallpapers"; + in + "${wallpapers}/summer_1am/contents/images/2560x1600.jpg"; + + # X configuration + my.home.x.enable = true; + }; +} From 4fb46a6c5879c1c8602398cf055bc4e59bb6bef8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 11:57:10 +0200 Subject: [PATCH 0103/1588] machines: aramis: use X profile --- machines/aramis/home.nix | 11 ----------- machines/aramis/profiles.nix | 2 ++ 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index aca7978..c889272 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -20,18 +20,7 @@ nm-applet.enable = true; # Termite terminal terminal.program = "termite"; - # Keyboard settings - x.enable = true; # Zathura document viewer zathura.enable = true; }; - - # Enable the X11 windowing system. - services.xserver.enable = true; - # Nice wallpaper - services.xserver.displayManager.lightdm.background = - let - wallpapers = "${pkgs.plasma-workspace-wallpapers}/share/wallpapers"; - in - "${wallpapers}/summer_1am/contents/images/2560x1600.jpg"; } diff --git a/machines/aramis/profiles.nix b/machines/aramis/profiles.nix index 6001918..e8701aa 100644 --- a/machines/aramis/profiles.nix +++ b/machines/aramis/profiles.nix @@ -7,5 +7,7 @@ gtk.enable = true; # i3 configuration wm.windowManager = "i3"; + # X configuration + x.enable = true; }; } From cd967ccf99f2f93d2a71ce33cdaffe95c215a15b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 12:04:04 +0200 Subject: [PATCH 0104/1588] profiles: add laptop --- profiles/default.nix | 1 + profiles/laptop.nix | 14 ++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 profiles/laptop.nix diff --git a/profiles/default.nix b/profiles/default.nix index eea1a11..30ec900 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -4,6 +4,7 @@ imports = [ ./bluetooth.nix ./gtk.nix + ./laptop.nix ./wm.nix ./x.nix ]; diff --git a/profiles/laptop.nix b/profiles/laptop.nix new file mode 100644 index 0000000..188619c --- /dev/null +++ b/profiles/laptop.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: +let + cfg = config.my.profiles.laptop; +in +{ + options.my.profiles.laptop = with lib; { + enable = mkEnableOption "laptop profile"; + }; + + config = lib.mkIf cfg.enable { + # Enable touchpad support + services.xserver.libinput.enable = true; + }; +} From 6c4f494a424eee58f957c5700cad602d3e2c9e5b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 12:04:26 +0200 Subject: [PATCH 0105/1588] machines: aramis: use laptop profile --- machines/aramis/default.nix | 3 --- machines/aramis/profiles.nix | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index 1af2dd6..bb78127 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -21,9 +21,6 @@ # Enable CUPS to print documents. services.printing.enable = true; - # Enable touchpad support (enabled default in most desktopManager). - services.xserver.libinput.enable = true; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave diff --git a/machines/aramis/profiles.nix b/machines/aramis/profiles.nix index e8701aa..6d2bef7 100644 --- a/machines/aramis/profiles.nix +++ b/machines/aramis/profiles.nix @@ -5,6 +5,8 @@ bluetooth.enable = true; # GTK theme configuration gtk.enable = true; + # Laptop specific configuration + laptop.enable = true; # i3 configuration wm.windowManager = "i3"; # X configuration From 62cee0be619cc7e952a0a57fd0e84521642ed737 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 12:05:04 +0200 Subject: [PATCH 0106/1588] machines: porthos: set timezone --- machines/porthos/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/machines/porthos/default.nix b/machines/porthos/default.nix index ec29917..abfc01a 100644 --- a/machines/porthos/default.nix +++ b/machines/porthos/default.nix @@ -10,6 +10,9 @@ ./users.nix ]; + # Set your time zone. + time.timeZone = "Europe/Paris"; + # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave From 996d61b0f424e0b6ea0fabbe927b856b02451047 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 12:14:50 +0200 Subject: [PATCH 0107/1588] modules: users: simplify 'groupsIfExist' --- modules/users.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/users.nix b/modules/users.nix index 3bc1c37..15896e0 100644 --- a/modules/users.nix +++ b/modules/users.nix @@ -2,11 +2,8 @@ { config, lib, pkgs, ... }: let my = config.my; - groupIfExists = grp: - lib.lists.optional - (builtins.hasAttr grp config.users.groups) - grp; - groupsIfExist = builtins.concatMap groupIfExists; + groupExists = grp: builtins.hasAttr grp config.users.groups; + groupsIfExist = builtins.filter groupExists; in { users.mutableUsers = false; # I want it to be declarative. From 27c11b9b67714495774fec8cc8af46f6f2d558c7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 17:27:43 +0200 Subject: [PATCH 0108/1588] home: wm: i3: fix screen-related mappings --- home/wm/i3.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index c431be0..261a282 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -240,11 +240,11 @@ in ''; in { - "XF86Display" = "arandr"; - "XF86MonBrightnessUp" = "${changeBacklight} up 10"; - "XF86MonBrightnessDown" = "${changeBacklight} down 10"; - "Control+XF86MonBrightnessUp" = "${changeBacklight} up 1"; - "Control+XF86MonBrightnessDown" = "${changeBacklight} down 1"; + "XF86Display" = "exec arandr"; + "XF86MonBrightnessUp" = "exec ${changeBacklight} up 10"; + "XF86MonBrightnessDown" = "exec ${changeBacklight} down 10"; + "Control+XF86MonBrightnessUp" = "exec ${changeBacklight} up 1"; + "Control+XF86MonBrightnessDown" = "exec ${changeBacklight} down 1"; } ) { From 62ac22a8c5f279170557ab46448414d45947c602 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 17:28:05 +0200 Subject: [PATCH 0109/1588] home: wm: i3: use 'brightnessctl' --- home/wm/i3.nix | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 261a282..05c381d 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -222,20 +222,19 @@ in } ( let - xbacklight = "${pkgs.xorg.xbacklight}/bin/xbacklight"; + brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; changeBacklight = pkgs.writeScript "change-backlight" '' #!/bin/sh if [ "$1" = "up" ]; then - upDown=-inc + upDown="+$2%" else - upDown=-dec + upDown="$2%-" fi - ${xbacklight} "$upDown" "$2" - newBrightness="$(printf '$.0f' "$(${xbacklight} -get)")" + newBrightness="$(${brightnessctl} -m set "$upDown" | cut -d, -f4)" ${pkgs.libnotify}/bin/notify-send -u low \ -h string:x-canonical-private-synchronous:change-backlight \ - -h "int:value:$newBrightness" \ + -h "int:value:''${newBrightness/\%/}" \ -- "Set brightness to $newBrightness" ''; in From 226b8f7b6aeaaae177fc0908d9f3b32fda9ca0d2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 17:45:05 +0200 Subject: [PATCH 0110/1588] home: wm: i3bar: remove gammastep block It doesn't seem to be working well with my setup... --- home/wm/i3bar.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index 5cc1356..dec72e5 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -34,12 +34,6 @@ in block = "net"; format = "{ssid} {ip} {signal_strength}"; } - (lib.optionalAttrs (config.my.home.gammastep.enable) { - block = "hueshift"; - hue_shifter = "gammastep"; - step = 100; - click_temp = config.my.home.gammastep.temperature.day; - }) { block = "battery"; format = "{percentage}% ({time})"; From d87f37c572c0075f7a88decbf95a802aca169725 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 17:45:24 +0200 Subject: [PATCH 0111/1588] home: wm: i3bar: add 'backlight' block --- home/wm/i3bar.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index dec72e5..3e74bde 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -34,6 +34,9 @@ in block = "net"; format = "{ssid} {ip} {signal_strength}"; } + { + block = "backlight"; + } { block = "battery"; format = "{percentage}% ({time})"; From abdba0a223441238ef15be85beaa90d76f923501 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 May 2021 21:13:24 +0200 Subject: [PATCH 0112/1588] home: pager: fix colorized man pages Turns out that sessionVariables are not being set at the proper time for use with `tput`. This commit also cleans up a bit how the config was being set. --- home/pager.nix | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/home/pager.nix b/home/pager.nix index 74a4c3b..9f0dc5e 100644 --- a/home/pager.nix +++ b/home/pager.nix @@ -7,27 +7,32 @@ in enable = mkDisableOption "pager configuration"; }; - config.programs.lesspipe.enable = cfg.enable; - config.home.sessionVariables = lib.mkIf cfg.enable { - # My default pager - PAGER = "less"; - # Clear the screen on start and exit - LESS = "-R -+X -c"; + config = lib.mkIf cfg.enable { + programs.lesspipe.enable = true; - # Colored man pages - LESS_TERMCAP_mb = "$(tput bold; tput setaf 2)"; - LESS_TERMCAP_md = "$(tput bold; tput setaf 6)"; - LESS_TERMCAP_me = "$(tput sgr0)"; - LESS_TERMCAP_so = "$(tput bold; tput setaf 3; tput setab 4)"; - LESS_TERMCAP_se = "$(tput rmso; tput sgr0)"; - LESS_TERMCAP_us = "$(tput bold; tput setaf 2)"; - LESS_TERMCAP_ue = "$(tput rmul; tput sgr0)"; - LESS_TERMCAP_mr = "$(tput rev)"; - LESS_TERMCAP_mh = "$(tput dim)"; - LESS_TERMCAP_ZN = "$(tput ssubm)"; - LESS_TERMCAP_ZV = "$(tput rsubm)"; - LESS_TERMCAP_ZO = "$(tput ssupm)"; - LESS_TERMCAP_ZW = "$(tput rsupm)"; + home.sessionVariables = { + # My default pager + PAGER = "less"; + # Clear the screen on start and exit + LESS = "-R -+X -c"; + }; + + programs.zsh.localVariables = { + # Colored man pages + LESS_TERMCAP_mb = "$(tput bold; tput setaf 2)"; + LESS_TERMCAP_md = "$(tput bold; tput setaf 6)"; + LESS_TERMCAP_me = "$(tput sgr0)"; + LESS_TERMCAP_so = "$(tput bold; tput setaf 3; tput setab 4)"; + LESS_TERMCAP_se = "$(tput rmso; tput sgr0)"; + LESS_TERMCAP_us = "$(tput bold; tput setaf 2)"; + LESS_TERMCAP_ue = "$(tput rmul; tput sgr0)"; + LESS_TERMCAP_mr = "$(tput rev)"; + LESS_TERMCAP_mh = "$(tput dim)"; + LESS_TERMCAP_ZN = "$(tput ssubm)"; + LESS_TERMCAP_ZV = "$(tput rsubm)"; + LESS_TERMCAP_ZO = "$(tput ssupm)"; + LESS_TERMCAP_ZW = "$(tput rsupm)"; + }; }; } From 853bb7a0ce5d2c18e9dba23d9798fee8cd1ec5bf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 10 May 2021 17:47:47 +0200 Subject: [PATCH 0113/1588] modules: add upower --- modules/default.nix | 1 + modules/upower.nix | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 modules/upower.nix diff --git a/modules/default.nix b/modules/default.nix index c25a426..a5ffc91 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -12,6 +12,7 @@ ./networking.nix ./nix.nix ./packages.nix + ./upower.nix ./users.nix ]; } diff --git a/modules/upower.nix b/modules/upower.nix new file mode 100644 index 0000000..8c46c1d --- /dev/null +++ b/modules/upower.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.modules.upower; +in +{ + options.my.modules.upower = with lib; { + enable = mkEnableOption "upower configuration"; + + levels = { + low = mkOption { + type = types.ints.unsigned; + default = 25; + example = 10; + description = "Low percentage"; + }; + + critical = mkOption { + type = types.ints.unsigned; + default = 15; + example = 5; + description = "Critical percentage"; + }; + + action = mkOption { + type = types.ints.unsigned; + default = 5; + example = 3; + description = "Percentage at which point an action must be taken"; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services.upower = { + enable = true; + + percentageLow = cfg.levels.low; + + percentageCritical = cfg.levels.critical; + + percentageAction = cfg.levels.action; + }; + }; +} From 212828677951857e0508bf84988e11ff3700e6c1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 10 May 2021 17:48:00 +0200 Subject: [PATCH 0114/1588] profiles: laptop: enable upower --- profiles/laptop.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/profiles/laptop.nix b/profiles/laptop.nix index 188619c..f02360b 100644 --- a/profiles/laptop.nix +++ b/profiles/laptop.nix @@ -10,5 +10,8 @@ in config = lib.mkIf cfg.enable { # Enable touchpad support services.xserver.libinput.enable = true; + + # Enable upower power management + my.modules.upower.enable = true; }; } From 2ba551f1b0cf4012e5dfbbcbf6db74f85df7b8f8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 10 May 2021 17:49:37 +0200 Subject: [PATCH 0115/1588] home: add power-alert --- home/default.nix | 1 + home/power-alert.nix | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 home/power-alert.nix diff --git a/home/default.nix b/home/default.nix index f38aa10..9b33d23 100644 --- a/home/default.nix +++ b/home/default.nix @@ -17,6 +17,7 @@ ./nm-applet.nix ./packages.nix ./pager.nix + ./power-alert.nix ./secrets # Home-manager specific secrets ./ssh.nix ./terminal diff --git a/home/power-alert.nix b/home/power-alert.nix new file mode 100644 index 0000000..8dbb5e6 --- /dev/null +++ b/home/power-alert.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let + cfg = config.my.home.power-alert; +in +{ + options.my.home.power-alert = with lib; { + enable = mkEnableOption "power-alert configuration"; + }; + + config = lib.mkIf cfg.enable { + services.poweralertd = { + enable = true; + }; + }; +} From 467cfaa066a57f43cb123d2ba3e3d08c378ef931 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 10 May 2021 17:51:44 +0200 Subject: [PATCH 0116/1588] profiles: laptop: enable power-alert --- profiles/laptop.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/profiles/laptop.nix b/profiles/laptop.nix index f02360b..055c0b2 100644 --- a/profiles/laptop.nix +++ b/profiles/laptop.nix @@ -13,5 +13,8 @@ in # Enable upower power management my.modules.upower.enable = true; + + # Enable battery notifications + my.home.power-alert.enable = true; }; } From 684dac5904a8c56d99803ba95ee1bbe4377c99fb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 12 May 2021 19:55:59 +0200 Subject: [PATCH 0117/1588] home: zsh: make history ten times bigger --- home/zsh/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 4657c4e..8d25552 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -13,7 +13,7 @@ in enableCompletion = true; history = { - size = 50000; + size = 500000; ignoreSpace = true; ignoreDups = true; share = true; From ec73ed2f10cabb5462eafbbfa3be35b79b09649e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 12 May 2021 21:36:30 +0200 Subject: [PATCH 0118/1588] home: x: add 'xsel' package I like it better than 'xclip'. --- home/x/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/home/x/default.nix b/home/x/default.nix index f021ca0..a2820ba 100644 --- a/home/x/default.nix +++ b/home/x/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.home.x; in @@ -14,5 +14,9 @@ in config = lib.mkIf cfg.enable { xsession.enable = true; + + home.packages = with pkgs; [ + xsel + ]; }; } From 797387f5718d3324476df4b6fd3c4f97b0c84cdb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 12 May 2021 21:39:26 +0200 Subject: [PATCH 0119/1588] machines: aramis: services: remove gnupg-agent The one configured by home-manager is more appropriate. --- machines/porthos/services.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 9bc99e7..910987d 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -106,9 +106,4 @@ in startAtBoot = true; # Server must be started to ensure clients can connect }; }; - - programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; } From 7087ce32a622f92219fe44f8c76e56e447f0a02b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 May 2021 09:52:50 +0200 Subject: [PATCH 0120/1588] pkgs: add comma --- pkgs/comma/comma | 33 +++++++++++++++++++++++++++++++++ pkgs/comma/default.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ pkgs/default.nix | 2 ++ 3 files changed, 77 insertions(+) create mode 100755 pkgs/comma/comma create mode 100644 pkgs/comma/default.nix diff --git a/pkgs/comma/comma b/pkgs/comma/comma new file mode 100755 index 0000000..5c347d6 --- /dev/null +++ b/pkgs/comma/comma @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +set -euo pipefail + +print_err() { + printf "%s\n" "$1" >&2 +} + +usage() { + print_err "Usage: , [argument]..." +} + +find_program() { + local CANDIDATE + CANDIDATE="$(nix-locate --top-level --minimal --at-root --whole-name "/bin/$1")" + if [ "$(printf '%s\n' "$CANDIDATE" | wc -l)" -gt 1 ]; then + CANDIDATE="$(printf '%s' "$CANDIDATE" | fzf-tmux)" + fi + printf '%s' "$CANDIDATE" +} + +if [ $# -lt 1 ]; then + usage + exit 1 +fi + +PROGRAM="$(find_program "$1")" +if [ -z "$PROGRAM" ]; then + print_err "No match found for $1" + exit 1 +fi + +nix shell "nixpkgs#$PROGRAM" -c "$@" diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix new file mode 100644 index 0000000..73756d0 --- /dev/null +++ b/pkgs/comma/default.nix @@ -0,0 +1,42 @@ +{ fzf, lib, makeWrapper, nix-index, shellcheck, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "comma"; + version = "0.1.0"; + + src = ./. + "/comma"; + + phases = [ "buildPhase" "installPhase" "fixupPhase" ]; + + buildInputs = [ + makeWrapper + shellcheck + ]; + + buildPhase = '' + shellcheck $src + ''; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${meta.mainProgram} + chmod a+x $out/bin/${meta.mainProgram} + ''; + + wrapperPath = lib.makeBinPath [ + fzf + nix-index + ]; + + fixupPhase = '' + patchShebangs $out/bin/${meta.mainProgram} + wrapProgram $out/bin/${meta.mainProgram} --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + mainProgram = ","; + description = "A simple script inspired by Shopify's comma, for modern Nix"; + homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 164c0b3..82aa254 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,7 @@ { pkgs }: rec { + comma = pkgs.callPackage ./comma { }; + diff-flake = pkgs.callPackage ./diff-flake { }; havm = pkgs.callPackage ./havm { }; From 1d97eb22bf6fbf0d9e6ab7138383c841a1479fc8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 May 2021 09:53:39 +0200 Subject: [PATCH 0121/1588] home: packages: add 'comma' to common package set --- home/packages.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/packages.nix b/home/packages.nix index 0d57840..90111a2 100644 --- a/home/packages.nix +++ b/home/packages.nix @@ -18,6 +18,7 @@ in }; config.home.packages = with pkgs; lib.mkIf cfg.enable ([ + ambroisie.comma file gitAndTools.git-absorb gitAndTools.git-revise From 9e5d616d16cff1f7f685f7e43f72585cbe89c653 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 May 2021 10:19:10 +0200 Subject: [PATCH 0122/1588] home: firefox: tridactyl: fix parent URL on Reddit --- home/firefox/tridactylrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/firefox/tridactylrc b/home/firefox/tridactylrc index edb595e..20a67e3 100644 --- a/home/firefox/tridactylrc +++ b/home/firefox/tridactylrc @@ -15,7 +15,7 @@ set editorcmd termite --class tridactyl_editor -e 'vim %f' bind ;c hint -c [class*="expand"],[class="togg"],[class="comment_folder"] " Make `gu` take me back to subreddit from comments -bindurl reddit.com gu urlparent 4 +bindurl reddit.com gu urlparent 3 " Only hint search results on Google bindurl www.google.com f hint -Jc #search div:not(.action-menu) > a @@ -27,7 +27,7 @@ bindurl ^https://duckduckgo.com F hint -Jbc [class=result__a] " Only hint item pages on Hacker News bindurl news.ycombinator.com ;f hint -Jc .age > a -bindurl news.ycombinator.com ;f hint -Jtc .age > a +bindurl news.ycombinator.com ;F hint -Jtc .age > a " }}} " Better bindings {{{ From f376059027e779009e84809c27309d8c3dae40cd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 20 May 2021 17:55:14 +0200 Subject: [PATCH 0123/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 9e21b7a..4599275 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "futils": { "locked": { - "lastModified": 1619345332, - "narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=", + "lastModified": 1620759905, + "narHash": "sha256-WiyWawrgmyN0EdmiHyG2V+fqReiVi8bM9cRdMaKQOFg=", "owner": "numtide", "repo": "flake-utils", - "rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28", + "rev": "b543720b25df6ffdfcf9227afafc5b8c1fabfae8", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1620138697, - "narHash": "sha256-8Mgj+Fj4zGEI7oA9wbyqvdwq+46kAyd3barMIedWkho=", + "lastModified": 1621417094, + "narHash": "sha256-Csk4p8jFUma7FtMnjEJGTPGxCOnTbb30xr8AXwrUTMM=", "owner": "nix-community", "repo": "home-manager", - "rev": "64c5228c0828fff0c94c1d42f7225115c299ae08", + "rev": "3d18912f5ae7c98bd5249411d98cdf3b28fe1f09", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1620074890, - "narHash": "sha256-4Z8Zwpg0gPvqKbSsck1g9ql4E5NClGZdjyxbYoaXA4s=", + "lastModified": 1621160191, + "narHash": "sha256-5xaEDqmmDsJnd2agtmEIrbUHSuNjTqidJPkBrmls6Ek=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7cb76200088f45cd24a9aa67fd2f9657943d78a4", + "rev": "7a1fbc38a4b538450ac0d42aec8a3e513b4d723e", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nur": { "locked": { - "lastModified": 1620140064, - "narHash": "sha256-WiQxLQEyYkmeHv/oB89LfyIjLqNWvI+7ZWBX0Ygb9pM=", + "lastModified": 1621525236, + "narHash": "sha256-aJh5wvoHB15CBMXNYEqbJuOuU3sETaJS9UFSgESF8zs=", "owner": "nix-community", "repo": "NUR", - "rev": "ac217b9a764d5352db9ccfb5cc39bdd3ff74d4ec", + "rev": "ba113338c358c6b939dd269b1c89f0b43392f30b", "type": "github" }, "original": { From 05f291f72ae7f8e4bcc02ba5be6af4e7e6d9c134 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 20 May 2021 15:31:04 +0000 Subject: [PATCH 0124/1588] services: adblock: use new 'settings' option This shows that I have not upgraded the server in a while... --- services/adblock.nix | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/services/adblock.nix b/services/adblock.nix index 23d63c8..45e4d6e 100644 --- a/services/adblock.nix +++ b/services/adblock.nix @@ -45,21 +45,28 @@ in services.unbound = { enable = true; - allowedAccess = [ - "127.0.0.0/24" - "${wgCfg.net.v4.subnet}.0/${toString wgCfg.net.v4.mask}" - "${wgCfg.net.v6.subnet}::0/${toString wgCfg.net.v6.mask}" - ]; + settings = { + server = { + access-control = [ + "127.0.0.0/24 allow" + "${wgCfg.net.v4.subnet}.0/${toString wgCfg.net.v4.mask} allow" + "${wgCfg.net.v6.subnet}::0/${toString wgCfg.net.v6.mask} allow" + ]; - inherit (cfg) forwardAddresses interfaces; + interface = cfg.interfaces; - extraConfig = '' - so-reuseport: yes - tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt - tls-upstream: yes + so-reuseport = true; + tls-cert-bundle = "/etc/ssl/certs/ca-certificates.crt"; + tls-upstream = true; - include: "${pkgs.ambroisie.unbound-zones-adblock}/hosts" - ''; + include = "${pkgs.ambroisie.unbound-zones-adblock}/hosts"; + }; + + forward-zone = [{ + name = "."; + forward-addr = cfg.forwardAddresses; + }]; + }; }; }; } From 0dc9495fda2f1b494888794d3af4ef561fce2359 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 10 May 2021 18:02:42 +0200 Subject: [PATCH 0125/1588] home: add nix-index --- home/default.nix | 1 + home/nix-index.nix | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 home/nix-index.nix diff --git a/home/default.nix b/home/default.nix index 9b33d23..7f0e587 100644 --- a/home/default.nix +++ b/home/default.nix @@ -14,6 +14,7 @@ ./gtk.nix ./htop.nix ./jq.nix + ./nix-index.nix ./nm-applet.nix ./packages.nix ./pager.nix diff --git a/home/nix-index.nix b/home/nix-index.nix new file mode 100644 index 0000000..ae6f338 --- /dev/null +++ b/home/nix-index.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.my.home.nix-index; +in +{ + options.my.home.nix-index = with lib.my; { + enable = mkDisableOption "nix-index configuration"; + }; + + config.programs.nix-index = lib.mkIf cfg.enable { + enable = true; + }; +} From faad0c062483e0d20e84e53c94df2d9ec5bc853a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 May 2021 10:27:19 +0200 Subject: [PATCH 0126/1588] pkgs: add myself as maintainer to all packages --- pkgs/comma/default.nix | 1 + pkgs/diff-flake/default.nix | 1 + pkgs/havm/default.nix | 1 + pkgs/i3-get-window-criteria/default.nix | 1 + pkgs/lohr/default.nix | 1 + pkgs/nolimips/default.nix | 1 + pkgs/podgrab/default.nix | 1 + pkgs/unbound-zones-adblock/default.nix | 1 + pkgs/unified-hosts-lists/default.nix | 1 + 9 files changed, 9 insertions(+) diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix index 73756d0..deab009 100644 --- a/pkgs/comma/default.nix +++ b/pkgs/comma/default.nix @@ -38,5 +38,6 @@ stdenvNoCC.mkDerivation rec { homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.unix; + maintainers = with maintainers; [ ambroisie ]; }; } diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 9511952..4cd7777 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -38,5 +38,6 @@ stdenvNoCC.mkDerivation rec { homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.unix; + maintainers = with maintainers; [ ambroisie ]; }; } diff --git a/pkgs/havm/default.nix b/pkgs/havm/default.nix index 20817fc..97a708f 100644 --- a/pkgs/havm/default.nix +++ b/pkgs/havm/default.nix @@ -26,5 +26,6 @@ stdenv.mkDerivation rec { homepage = "https://www.lrde.epita.fr/wiki/Havm"; license = licenses.gpl2Plus; platforms = platforms.all; + maintainers = with maintainers; [ ambroisie ]; }; } diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix index 185e1e4..65cdb0e 100644 --- a/pkgs/i3-get-window-criteria/default.nix +++ b/pkgs/i3-get-window-criteria/default.nix @@ -39,5 +39,6 @@ stdenvNoCC.mkDerivation rec { homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.unix; + maintainers = with maintainers; [ ambroisie ]; }; } diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix index 1ceb018..34182dd 100644 --- a/pkgs/lohr/default.nix +++ b/pkgs/lohr/default.nix @@ -17,5 +17,6 @@ rustPlatform.buildRustPackage rec { homepage = "https://github.com/alarsyo/lohr"; license = with licenses; [ mit asl20 ]; platforms = platforms.unix; + maintainers = with maintainers; [ ambroisie ]; }; } diff --git a/pkgs/nolimips/default.nix b/pkgs/nolimips/default.nix index ff5c9b0..49cd1b0 100644 --- a/pkgs/nolimips/default.nix +++ b/pkgs/nolimips/default.nix @@ -19,5 +19,6 @@ stdenv.mkDerivation rec { homepage = "https://www.lrde.epita.fr/wiki/Nolimips"; license = licenses.gpl2; platforms = platforms.all; + maintainers = with maintainers; [ ambroisie ]; }; } diff --git a/pkgs/podgrab/default.nix b/pkgs/podgrab/default.nix index 7f18416..aa7f981 100644 --- a/pkgs/podgrab/default.nix +++ b/pkgs/podgrab/default.nix @@ -25,5 +25,6 @@ buildGoModule rec { ''; homepage = "https://github.com/akhilrex/podgrab"; license = licenses.gpl3; + maintainers = with maintainers; [ ambroisie ]; }; } diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index c4309bd..e8afbe1 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -33,5 +33,6 @@ stdenvNoCC.mkDerivation rec { homepage = "https://github.com/StevenBlack/hosts"; license = licenses.mit; platforms = platforms.all; + maintainers = with maintainers; [ ambroisie ]; }; } diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index af55994..2c49924 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -29,5 +29,6 @@ stdenvNoCC.mkDerivation rec { homepage = "https://github.com/StevenBlack/hosts"; license = licenses.mit; platforms = platforms.all; + maintainers = with maintainers; [ ambroisie ]; }; } From 9a9d0ba266f3d78f8edf816d4944d5ec8bd450b0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 May 2021 15:05:57 +0200 Subject: [PATCH 0127/1588] services: add TLP --- services/default.nix | 1 + services/tlp.nix | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 services/tlp.nix diff --git a/services/default.nix b/services/default.nix index fc377d9..6096454 100644 --- a/services/default.nix +++ b/services/default.nix @@ -22,6 +22,7 @@ ./rss-bridge.nix ./sabnzbd.nix ./ssh-server.nix + ./tlp.nix ./transmission.nix ./wireguard.nix ]; diff --git a/services/tlp.nix b/services/tlp.nix new file mode 100644 index 0000000..a560319 --- /dev/null +++ b/services/tlp.nix @@ -0,0 +1,22 @@ +# TLP power management +{ config, lib, ... }: +let + cfg = config.my.services.tlp; +in +{ + options.my.services.tlp = { + enable = lib.mkEnableOption "TLP power management configuration"; + }; + + config = lib.mkIf cfg.enable { + services.tlp = { + enable = true; + + settings = { + # Keep charge between 60% and 80% to preserve battery life + START_CHARGE_THRESH_BAT0 = 60; + STOP_CHARGE_THRESH_BAT0 = 80; + }; + }; + }; +} From bbddf086ec6cd45e2e9afff12a8a2951bdcbeaf5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 May 2021 15:06:13 +0200 Subject: [PATCH 0128/1588] profiles: laptop: enable TLP --- profiles/laptop.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/profiles/laptop.nix b/profiles/laptop.nix index 055c0b2..f834ac8 100644 --- a/profiles/laptop.nix +++ b/profiles/laptop.nix @@ -11,6 +11,9 @@ in # Enable touchpad support services.xserver.libinput.enable = true; + # Enable TLP power management + my.services.tlp.enable = true; + # Enable upower power management my.modules.upower.enable = true; From 7f0c595ae8403321dbc32d5fea8a4dc4524651de Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 May 2021 17:57:01 +0200 Subject: [PATCH 0129/1588] home: wm: rofi: configure terminal --- home/wm/rofi.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/wm/rofi.nix b/home/wm/rofi.nix index 87f167a..9707ed7 100644 --- a/home/wm/rofi.nix +++ b/home/wm/rofi.nix @@ -7,6 +7,8 @@ in programs.rofi = { enable = true; + terminal = config.my.home.terminal.program; # null by default + package = pkgs.rofi.override { plugins = with pkgs; [ rofi-emoji From 6b50f906fab34384230ff196bb03ccc8dad2354f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 May 2021 20:25:02 +0200 Subject: [PATCH 0130/1588] flake: inject 'inputs' into NixOS configuration --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index f54c252..6fa7b2a 100644 --- a/flake.nix +++ b/flake.nix @@ -76,6 +76,8 @@ specialArgs = { # Use my extended lib in NixOS configuration inherit lib; + # Inject inputs to use them in global registry + inherit inputs; }; }; in From 4fcad6026a3e73d5a9a9c70fb3424818012315a4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 May 2021 20:25:09 +0200 Subject: [PATCH 0131/1588] modules: nix: pin flake registry to common inputs --- modules/nix.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/nix.nix b/modules/nix.nix index fb601a5..6cba363 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -1,9 +1,17 @@ # Nix related settings -{ pkgs, ... }: +{ inputs, pkgs, ... }: { nix = { package = pkgs.nixFlakes; + registry = { + # Allow me to use my custom package using `nix run self#pkg` + self.flake = inputs.self; + # Do not follow master, use pinned revision instead + nixpkgs.flake = inputs.nixpkgs; + # Add NUR to run some packages that are only present there + nur.flake = inputs.nur; + }; extraOptions = '' experimental-features = nix-command flakes ''; From 8e278e0f995dcaa3e8cbab416a3a3e1c3cd0c89a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 May 2021 20:57:18 +0200 Subject: [PATCH 0132/1588] pkgs: remove podgrab Now that it has been merged upstream, no reason to keep it. --- pkgs/default.nix | 2 -- pkgs/podgrab/default.nix | 30 ------------------------------ services/podgrab.nix | 2 +- 3 files changed, 1 insertion(+), 33 deletions(-) delete mode 100644 pkgs/podgrab/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 82aa254..2f21e7f 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -12,8 +12,6 @@ rec { nolimips = pkgs.callPackage ./nolimips { }; - podgrab = pkgs.callPackage ./podgrab { }; - unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { inherit unified-hosts-lists; }; diff --git a/pkgs/podgrab/default.nix b/pkgs/podgrab/default.nix deleted file mode 100644 index aa7f981..0000000 --- a/pkgs/podgrab/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ buildGoModule, fetchFromGitHub, lib }: - -buildGoModule rec { - pname = "podgrab"; - version = "2021-03-26"; - - src = fetchFromGitHub { - owner = "akhilrex"; - repo = "podgrab"; - rev = "3179a875b8b638fb86d0e829d12a9761c1cd7f90"; - sha256 = "sha256-vhxIm20ZUi+RusrAsSY54tv/D570/oMO5qLz9dNqgqo="; - }; - - vendorSha256 = "sha256-xY9xNuJhkWPgtqA/FBVIp7GuWOv+3nrz6l3vaZVLlIE="; - - postInstall = '' - mkdir -p $out/share/ - cp -r "$src/client" "$out/share/" - cp -r "$src/webassets" "$out/share/" - ''; - - meta = with lib; { - description = '' - A self-hosted podcast manager to download episodes as soon as they become live - ''; - homepage = "https://github.com/akhilrex/podgrab"; - license = licenses.gpl3; - maintainers = with maintainers; [ ambroisie ]; - }; -} diff --git a/services/podgrab.nix b/services/podgrab.nix index 556ffff..bfccc72 100644 --- a/services/podgrab.nix +++ b/services/podgrab.nix @@ -8,7 +8,7 @@ let domain = config.networking.domain; podgrabDomain = "podgrab.${domain}"; - podgrabPkg = pkgs.ambroisie.podgrab; + podgrabPkg = pkgs.podgrab; in { options.my.services.podgrab = with lib; { From 2c8770ad70191ea8924ea67f901c9644033274cd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 22 May 2021 22:50:05 +0200 Subject: [PATCH 0133/1588] services: podgrab: switch to upstream service --- services/podgrab.nix | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/services/podgrab.nix b/services/podgrab.nix index bfccc72..47b0b73 100644 --- a/services/podgrab.nix +++ b/services/podgrab.nix @@ -7,8 +7,6 @@ let domain = config.networking.domain; podgrabDomain = "podgrab.${domain}"; - - podgrabPkg = pkgs.podgrab; in { options.my.services.podgrab = with lib; { @@ -33,24 +31,9 @@ in }; config = lib.mkIf cfg.enable { - systemd.services.podgrab = { - description = "Podgrab podcast manager"; - wantedBy = [ "multi-user.target" ]; - environment = { - CONFIG = "/var/lib/podgrab/config"; - DATA = "/var/lib/podgrab/data"; - GIN_MODE = "release"; - PORT = toString cfg.port; - }; - serviceConfig = { - DynamicUser = true; - EnvironmentFile = lib.optional (cfg.passwordFile != null) [ - cfg.passwordFile - ]; - ExecStart = "${podgrabPkg}/bin/podgrab"; - WorkingDirectory = "${podgrabPkg}/share"; - StateDirectory = [ "podgrab/config" "podgrab/data" ]; - }; + services.podgrab = { + enable = true; + inherit (cfg) passwordFile port; }; services.nginx.virtualHosts."${podgrabDomain}" = { From 4d0ab2e5a6e8978a857f2fd9f5a66aeb6ef5be5d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 11 May 2021 18:46:43 +0200 Subject: [PATCH 0134/1588] pkgs: add ff2mpv-go --- pkgs/default.nix | 2 ++ pkgs/ff2mpv-go/default.nix | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 pkgs/ff2mpv-go/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 2f21e7f..58e65cd 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -4,6 +4,8 @@ rec { diff-flake = pkgs.callPackage ./diff-flake { }; + ff2mpv-go = pkgs.callPackage ./ff2mpv-go { }; + havm = pkgs.callPackage ./havm { }; i3-get-window-criteria = pkgs.callPackage ./i3-get-window-criteria { }; diff --git a/pkgs/ff2mpv-go/default.nix b/pkgs/ff2mpv-go/default.nix new file mode 100644 index 0000000..9efcf13 --- /dev/null +++ b/pkgs/ff2mpv-go/default.nix @@ -0,0 +1,30 @@ +{ buildGoModule, fetchgit, lib, mpv }: +buildGoModule rec { + pname = "ff2mpv-go"; + version = "1.0.1"; + + src = fetchgit { + url = "https://git.clsr.net/util/ff2mpv-go/"; + rev = "v${version}"; + sha256 = "sha256-e/AuOA3isFTyBf97Zwtr16yo49UdYzvktV5PKB/eH/s="; + }; + + vendorSha256 = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo="; + + postPatch = '' + sed -i -e 's,"mpv","${mpv}/bin/mpv",' ff2mpv.go + ''; + + postInstall = '' + mkdir -p "$out/lib/mozilla/native-messaging-hosts" + $out/bin/ff2mpv-go --manifest > "$out/lib/mozilla/native-messaging-hosts/ff2mpv.json" + ''; + + meta = with lib; { + description = '' + Native messaging host for ff2mpv written in Go. + ''; + homepage = "https://git.clsr.net/util/ff2mpv-go/"; + license = licenses.publicDomain; + }; +} From 82099b19f3de8c2f9313426ad715c21525a92d32 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 May 2021 21:20:28 +0200 Subject: [PATCH 0135/1588] home: add mpv --- home/default.nix | 1 + home/mpv.nix | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 home/mpv.nix diff --git a/home/default.nix b/home/default.nix index 7f0e587..ddbf1ca 100644 --- a/home/default.nix +++ b/home/default.nix @@ -14,6 +14,7 @@ ./gtk.nix ./htop.nix ./jq.nix + ./mpv.nix ./nix-index.nix ./nm-applet.nix ./packages.nix diff --git a/home/mpv.nix b/home/mpv.nix new file mode 100644 index 0000000..9aef379 --- /dev/null +++ b/home/mpv.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.mpv; +in +{ + options.my.home.mpv = with lib; { + enable = mkEnableOption "mpv configuration"; + }; + + config = lib.mkIf cfg.enable { + programs.mpv = { + enable = true; + + scripts = [ + pkgs.mpvScripts.mpris # Allow controlling using media keys + ]; + }; + }; +} From 93f173d0caf511dd497321e7843f43a351035b84 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 May 2021 21:20:39 +0200 Subject: [PATCH 0136/1588] machines: aramis: home: enable mpv --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index c889272..404a4d0 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -16,6 +16,8 @@ quasselClient # IRC client transgui # Transmission remote ]; + # Minimal video player + mpv.enable = true; # Network-Manager applet nm-applet.enable = true; # Termite terminal From cfa59614f107c76608adf75eea5e5a69a6b0545f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 May 2021 21:28:10 +0200 Subject: [PATCH 0137/1588] home: firefox: add ff2mpv This allows watching videos using mpv via a simple button. --- home/firefox/default.nix | 9 +++++++++ home/firefox/firefox.nix | 12 ++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index fd7d5ba..601644b 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -11,6 +11,15 @@ default = config.my.home.firefox.enable; }; }; + + ff2mpv = { + enable = mkOption { + type = types.bool; + description = "ff2mpv configuration"; + example = false; + default = config.my.home.mpv.enable; + }; + }; }; imports = [ diff --git a/home/firefox/firefox.nix b/home/firefox/firefox.nix index 68a8337..d5ecd53 100644 --- a/home/firefox/firefox.nix +++ b/home/firefox/firefox.nix @@ -10,6 +10,11 @@ in cfg = { enableTridactylNative = cfg.tridactyl.enable; }; + + extraNativeMessagingHosts = with pkgs; ([ ] + # Watch videos using mpv + ++ lib.optional cfg.ff2mpv.enable ambroisie.ff2mpv-go + ); }; profiles = { @@ -35,13 +40,16 @@ in }; }; - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + extensions = with pkgs.nur.repos.rycee.firefox-addons; ([ bitwarden form-history-control https-everywhere i-dont-care-about-cookies reddit-enhancement-suite ublock-origin - ] ++ lib.optional (cfg.tridactyl.enable) tridactyl; + ] + ++ lib.optional (cfg.tridactyl.enable) tridactyl + ++ lib.optional (cfg.ff2mpv.enable) ff2mpv + ); }; } From bab605871d44033a640d1dc4d29b0ae6b12ed971 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 16 May 2021 19:12:20 +0200 Subject: [PATCH 0138/1588] home: firefox: tridactyl: fix Reddit URL rewriter --- home/firefox/tridactylrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/firefox/tridactylrc b/home/firefox/tridactylrc index 20a67e3..869d6e5 100644 --- a/home/firefox/tridactylrc +++ b/home/firefox/tridactylrc @@ -61,7 +61,7 @@ unbind " Redirections {{{ " Always redirect Reddit to the old site -autocmd DocStart ^http(s?)://www.redit.com js tri.excmds.urlmodify("-t", "www", "old") +autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www", "old") " }}} " Disabled websites {{{ From 1647ab4ac783d2d86b8e739b46204016d15a20ae Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 20 May 2021 19:12:20 +0200 Subject: [PATCH 0139/1588] modules: nix: expose pinned nixpkgs as 'pkgs' That way if I do want to use that latest version, I can still use `nixpkgs#`. --- modules/nix.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nix.nix b/modules/nix.nix index 6cba363..bfde967 100644 --- a/modules/nix.nix +++ b/modules/nix.nix @@ -7,8 +7,8 @@ registry = { # Allow me to use my custom package using `nix run self#pkg` self.flake = inputs.self; - # Do not follow master, use pinned revision instead - nixpkgs.flake = inputs.nixpkgs; + # Use pinned nixpkgs when using `nix run pkgs#` + pkgs.flake = inputs.nixpkgs; # Add NUR to run some packages that are only present there nur.flake = inputs.nur; }; From 153f919485923150e6546fbd7b8988964e0c8e17 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 21 May 2021 23:46:07 +0200 Subject: [PATCH 0140/1588] pkgs: add bw-pass Until `rbw` gets support for Yubikey 2FA, I still need a decent way to query for my passwords on the command line... This wrapper program should be good enough for basic usage with programs that need a password command. --- pkgs/bw-pass/bw-pass | 74 ++++++++++++++++++++++++++++++++++++++++ pkgs/bw-pass/default.nix | 45 ++++++++++++++++++++++++ pkgs/default.nix | 2 ++ 3 files changed, 121 insertions(+) create mode 100755 pkgs/bw-pass/bw-pass create mode 100644 pkgs/bw-pass/default.nix diff --git a/pkgs/bw-pass/bw-pass b/pkgs/bw-pass/bw-pass new file mode 100755 index 0000000..16c931e --- /dev/null +++ b/pkgs/bw-pass/bw-pass @@ -0,0 +1,74 @@ +#!/usr/bin/env bash + +AUTO_LOCK=900 # 15min timeout by default + +usage() { + printf '%s\n' "Usage: bw-pass [directory name] " >&2 +} + +prompt_pass() { + rofi -dmenu -password -no-fixed-num-lines -p "$1" +} + +error_out() { + rofi -dmenu -no-fixed-num-lines -p "$1" + exit 1 +} + +login() { + local PASSWORD + PASSWORD="$(prompt_pass "Password")" || error_out "Cannot prompt password" + export BW_SESSION + BW_SESSION="$(bw unlock "$PASSWORD" --raw)" || error_out "Cannot unlock" +} + +ensure_logged_in() { + # Use the same keyring as bitwarden-rofi for this + + local KEY_ID + keyctl link @u @s + if ! KEY_ID="$(keyctl request user bw_session 2>/dev/null)"; then + login + KEY_ID="$(keyctl add user bw_session "$BW_SESSION" @u)" + fi + + if [ "$AUTO_LOCK" -gt 0 ]; then + keyctl timeout "$KEY_ID" "$AUTO_LOCK" + fi + export BW_SESSION + BW_SESSION="$(keyctl pipe "$KEY_ID")" + keyctl unlink @u @s +} + +query_password() { + # Either use with `query_password + # Or `query_password ` when the account has no directory + + local FOLDER_ID + local PASSWORD + + if [ $# -eq 2 ]; then + FOLDER_ID="$(bw list folders | + jq '.[] | select(.name == "'"$1"'") | .id' | + cut -d'"' -f2)" + shift + else + FOLDER_ID=null + fi + PASSWORD="$(bw list items --folderid "$FOLDER_ID" | + jq '.[] | select(.name == "'"$1"'") | .login.password' | + cut -d'"' -f2)" + + if [ -z "$PASSWORD" ]; then + error_out "Did not find password for '$1'" + fi + printf '%s\n' "$PASSWORD" +} + +if [ $# -lt 1 ] || [ $# -gt 2 ]; then + usage + exit 1 +fi + +ensure_logged_in +query_password "$@" diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix new file mode 100644 index 0000000..a5297d5 --- /dev/null +++ b/pkgs/bw-pass/default.nix @@ -0,0 +1,45 @@ +{ bitwarden-cli, coreutils, jq, keyutils, lib, makeWrapper, rofi, shellcheck, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "bw-pass"; + version = "0.1.0"; + + src = ./bw-pass; + + phases = [ "buildPhase" "installPhase" "fixupPhase" ]; + + buildInputs = [ + makeWrapper + shellcheck + ]; + + buildPhase = '' + shellcheck $src + ''; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${pname} + chmod a+x $out/bin/${pname} + ''; + + wrapperPath = lib.makeBinPath [ + bitwarden-cli + coreutils + jq + keyutils + rofi + ]; + + fixupPhase = '' + patchShebangs $out/bin/${pname} + wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = "A simple script to query a password from bitwarden"; + homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.unix; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 58e65cd..197acfb 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,7 @@ { pkgs }: rec { + bw-pass = pkgs.callPackage ./bw-pass { }; + comma = pkgs.callPackage ./comma { }; diff-flake = pkgs.callPackage ./diff-flake { }; From 7a91bf390691642541bea5b15533d4e9d7127588 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 May 2021 13:56:07 +0200 Subject: [PATCH 0141/1588] home: terminal: use 'cfg.terminal' for TERMINAL --- home/terminal/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/terminal/default.nix b/home/terminal/default.nix index 676eed9..5d32556 100644 --- a/home/terminal/default.nix +++ b/home/terminal/default.nix @@ -56,6 +56,6 @@ in }; config.home.sessionVariables = lib.mkIf (cfg.program != null) { - TERMINAL = "termite"; + TERMINAL = cfg.program; }; } From 0452d696aed39617b51d647486facd887bfac3be Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 22 May 2021 16:04:46 +0200 Subject: [PATCH 0142/1588] home: add mail and accounts configuration --- home/default.nix | 1 + home/mail/accounts.nix | 95 ++++++++++++++++++++++++++++++++++++++++++ home/mail/default.nix | 12 ++++++ 3 files changed, 108 insertions(+) create mode 100644 home/mail/accounts.nix create mode 100644 home/mail/default.nix diff --git a/home/default.nix b/home/default.nix index ddbf1ca..8b638aa 100644 --- a/home/default.nix +++ b/home/default.nix @@ -14,6 +14,7 @@ ./gtk.nix ./htop.nix ./jq.nix + ./mail ./mpv.nix ./nix-index.nix ./nm-applet.nix diff --git a/home/mail/accounts.nix b/home/mail/accounts.nix new file mode 100644 index 0000000..8a3e1eb --- /dev/null +++ b/home/mail/accounts.nix @@ -0,0 +1,95 @@ +{ lib, pkgs, ... }: +let + mkAddress = address: domain: "${address}@${domain}"; + + mkConfig = { domain, address, passName, aliases ? [ ], primary ? false }: { + realName = lib.mkDefault "Bruno BELANYI"; + userName = lib.mkDefault (mkAddress address domain); + passwordCommand = + lib.mkDefault [ "${pkgs.ambroisie.bw-pass}/bin/bw-pass" "Mail" passName ]; + + address = mkAddress address domain; + aliases = builtins.map (lib.flip mkAddress domain) aliases; + + inherit primary; + }; + + migaduConfig = { + imap = { + host = "imap.migadu.com"; + port = 993; + tls = { + enable = true; + }; + }; + smtp = { + host = "smtp.migadu.com"; + port = 465; + tls = { + enable = true; + }; + }; + }; + + gmailConfig = { + flavor = "gmail.com"; + folders = { + drafts = "[Gmail]/Drafts"; + sent = "[Gmail]/Sent Mail"; + trash = "[Gmail]/Trash"; + }; + }; + + office365Config = { + imap = { + host = "outlook.office365.com"; + port = 993; + tls = { + enable = true; + }; + }; + smtp = { + host = "outlook.office365.com"; + port = 587; + tls = { + enable = true; + useStartTls = true; + }; + }; + }; +in +{ + config.accounts.email.accounts = { + personal = lib.mkMerge [ + # Common configuraton + (mkConfig { + domain = "belanyi.fr"; + address = "bruno"; + passName = "Migadu"; + aliases = [ "admin" "postmaster" ]; + primary = true; # This is my primary email + }) + migaduConfig + ]; + + gmail = lib.mkMerge [ + # Common configuraton + (mkConfig { + domain = "gmail.com"; + address = "brunobelanyi"; + passName = "GMail"; + }) + gmailConfig + ]; + + epita = lib.mkMerge [ + # Common configuration + (mkConfig { + domain = "epita.fr"; + address = "bruno.belanyi"; + passName = "EPITA"; + }) + office365Config + ]; + }; +} diff --git a/home/mail/default.nix b/home/mail/default.nix new file mode 100644 index 0000000..32c918e --- /dev/null +++ b/home/mail/default.nix @@ -0,0 +1,12 @@ +{ config, lib, ... }: +{ + imports = [ + ./accounts.nix + ]; + + config = { + accounts.email = { + maildirBasePath = "mail"; + }; + }; +} From b3653a63bd40aabbc965cec708e0322c2ed85088 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 22 May 2021 16:09:11 +0200 Subject: [PATCH 0143/1588] home: mail: add msmtp --- home/mail/accounts.nix | 8 +++++++- home/mail/default.nix | 14 ++++++++++++++ home/mail/msmtp.nix | 9 +++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 home/mail/msmtp.nix diff --git a/home/mail/accounts.nix b/home/mail/accounts.nix index 8a3e1eb..7f1ad02 100644 --- a/home/mail/accounts.nix +++ b/home/mail/accounts.nix @@ -1,5 +1,7 @@ -{ lib, pkgs, ... }: +{ config, lib, pkgs, ... }: let + cfg = config.my.home.mail; + mkAddress = address: domain: "${address}@${domain}"; mkConfig = { domain, address, passName, aliases ? [ ], primary ? false }: { @@ -12,6 +14,10 @@ let aliases = builtins.map (lib.flip mkAddress domain) aliases; inherit primary; + + msmtp = { + enable = cfg.msmtp.enable; + }; }; migaduConfig = { diff --git a/home/mail/default.nix b/home/mail/default.nix index 32c918e..cc81d0c 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -1,9 +1,23 @@ { config, lib, ... }: +let + cfg = config.my.home.mail; + + mkRelatedOption = desc: lib.mkEnableOption desc // { default = cfg.enable; }; +in { imports = [ ./accounts.nix + ./msmtp.nix ]; + options.my.home.mail = with lib; { + enable = my.mkDisableOption "email configuration"; + + msmtp = { + enable = mkRelatedOption "msmtp configuration"; + }; + }; + config = { accounts.email = { maildirBasePath = "mail"; diff --git a/home/mail/msmtp.nix b/home/mail/msmtp.nix new file mode 100644 index 0000000..3e725e8 --- /dev/null +++ b/home/mail/msmtp.nix @@ -0,0 +1,9 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.mail.msmtp; +in +{ + config.programs.msmtp = lib.mkIf cfg.enable { + enable = true; + }; +} From d43a224da0d9077abc93e9d6754955604aaeed61 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 22 May 2021 16:23:39 +0200 Subject: [PATCH 0144/1588] home: wm: i3bar: invert baclight icon Because I am using an emoji font, it looks better that way. --- home/wm/i3bar.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index 3e74bde..e9c85de 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -36,6 +36,7 @@ in } { block = "backlight"; + invert_icons = true; } { block = "battery"; From beb35737d94d1a31919fb17bff0a6294f794233b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 22 May 2021 22:45:05 +0200 Subject: [PATCH 0145/1588] services: add flood --- services/default.nix | 1 + services/flood.nix | 53 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 services/flood.nix diff --git a/services/default.nix b/services/default.nix index 6096454..424e26f 100644 --- a/services/default.nix +++ b/services/default.nix @@ -7,6 +7,7 @@ ./blog.nix ./calibre-web.nix ./drone.nix + ./flood.nix ./gitea.nix ./indexers.nix ./jellyfin.nix diff --git a/services/flood.nix b/services/flood.nix new file mode 100644 index 0000000..70988cb --- /dev/null +++ b/services/flood.nix @@ -0,0 +1,53 @@ +# A nice UI for various torrent clients +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.flood; + + domain = config.networking.domain; + webuiDomain = "flood.${domain}"; +in +{ + options.my.services.flood = with lib; { + enable = mkEnableOption "Flood UI"; + + port = mkOption { + type = types.port; + default = 9092; + example = 3000; + description = "Internal port for Flood UI"; + }; + + stateDir = mkOption { + type = types.str; + default = "flood"; + example = "floodUI"; + description = "Directory under `/var/run` for storing Flood's files"; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.services.flood = { + description = "Flood torrent UI"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + serviceConfig = { + ExecStart = lib.concatStringsSep " " [ + "${pkgs.flood}/bin/flood" + "--port ${builtins.toString cfg.port}" + "--rundir /var/lib/${cfg.stateDir}" + ]; + DynamicUser = true; + StateDirectory = cfg.stateDir; + ReadWritePaths = ""; + }; + }; + + services.nginx.virtualHosts."${webuiDomain}" = { + forceSSL = true; + useACMEHost = domain; + + locations."/".proxyPass = "http://127.0.0.1:${toString cfg.port}"; + }; + }; +} From d18fc252a491fe55093c9304d1b98e4a11ea2743 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 22 May 2021 22:45:47 +0200 Subject: [PATCH 0146/1588] machines: porthos: services: enable flood --- machines/porthos/services.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 910987d..9773007 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -40,6 +40,10 @@ in sharedSecretFile = builtins.toFile "rpc.env" my.secrets.drone.secret; }; + # Flood UI for transmission + flood = { + enable = true; + }; # Gitea forge gitea.enable = true; # Meta-indexers From ec36d1c1b7120f3b4fab4b0fdd23b33184445ea0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 May 2021 00:14:26 +0200 Subject: [PATCH 0147/1588] project: readme: mention manual flood config --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8d84109..a68f7dc 100644 --- a/README.md +++ b/README.md @@ -21,3 +21,4 @@ Secondly, take care of a few manual steps: * Configure Sonarr, Radarr, Bazarr * Configure Transmission's webui port * Configure Quassel user +* Configure Flood account From d986f2f90663b9904bb1980e7d522e1d5475afd6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 May 2021 00:32:59 +0200 Subject: [PATCH 0148/1588] services: podgrab: remove mention of merged PR --- services/podgrab.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/podgrab.nix b/services/podgrab.nix index 47b0b73..7926fc2 100644 --- a/services/podgrab.nix +++ b/services/podgrab.nix @@ -1,6 +1,4 @@ -# A simple podcast fetcher. See [1] -# -# [1]: https://github.com/NixOS/nixpkgs/pull/106008 +# A simple podcast fetcher { config, lib, pkgs, ... }: let cfg = config.my.services.podgrab; From 20513ab3a2fe1f073de6549b97e3b1fa3e0ae947 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 May 2021 17:59:18 +0200 Subject: [PATCH 0149/1588] modules: add sound I will probably want to share this configuration between multiple machines in the future. --- modules/default.nix | 1 + modules/sound.nix | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 modules/sound.nix diff --git a/modules/default.nix b/modules/default.nix index a5ffc91..32b5b6f 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -12,6 +12,7 @@ ./networking.nix ./nix.nix ./packages.nix + ./sound.nix ./upower.nix ./users.nix ]; diff --git a/modules/sound.nix b/modules/sound.nix new file mode 100644 index 0000000..5e5ca63 --- /dev/null +++ b/modules/sound.nix @@ -0,0 +1,25 @@ +{ config, lib, ... }: +let + cfg = config.my.modules.sound; +in +{ + options.my.modules.sound = with lib; { + enable = mkEnableOption "sound configuration"; + + pulse = { + enable = mkEnableOption "pulseaudio configuration"; + }; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + # Basic configuration + { + sound.enable = true; + } + + # Pulseaudio setup + (lib.mkIf cfg.pulse.enable { + hardware.pulseaudio.enable = true; + }) + ]); +} From 941913e213fabcacefb0431b9356c7d9436c72d6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 May 2021 17:59:45 +0200 Subject: [PATCH 0150/1588] machines: aramis: sound: use common module --- machines/aramis/sound.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/machines/aramis/sound.nix b/machines/aramis/sound.nix index 38365f6..586f3ff 100644 --- a/machines/aramis/sound.nix +++ b/machines/aramis/sound.nix @@ -1,5 +1,10 @@ { ... }: { - sound.enable = true; - hardware.pulseaudio.enable = true; + my.modules.sound = { + enable = true; + + pulse = { + enable = true; + }; + }; } From 10434bdbfc7eaa9cf0419557f0035571639f2497 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 May 2021 18:17:39 +0200 Subject: [PATCH 0151/1588] modules: sound: add pipewire configuration --- modules/sound.nix | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/modules/sound.nix b/modules/sound.nix index 5e5ca63..567a974 100644 --- a/modules/sound.nix +++ b/modules/sound.nix @@ -6,6 +6,10 @@ in options.my.modules.sound = with lib; { enable = mkEnableOption "sound configuration"; + pipewire = { + enable = mkEnableOption "pipewire configuration"; + }; + pulse = { enable = mkEnableOption "pulseaudio configuration"; }; @@ -17,6 +21,32 @@ in sound.enable = true; } + (lib.mkIf cfg.pipewire.enable { + # RealtimeKit is recommended + security.rtkit.enable = true; + + services.pipewire = { + enable = true; + + alsa = { + enable = true; + support32Bit = true; + }; + + pulse = { + enable = true; + }; + + jack = { + enable = true; + }; + + media-session = { + enable = true; + }; + }; + }) + # Pulseaudio setup (lib.mkIf cfg.pulse.enable { hardware.pulseaudio.enable = true; From da6c160baf7efffb5d48007d433139d6924a7d47 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 May 2021 18:18:40 +0200 Subject: [PATCH 0152/1588] modules: bluetooth: add pipewire codecs --- modules/bluetooth.nix | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix index 661ed60..b4b8362 100644 --- a/modules/bluetooth.nix +++ b/modules/bluetooth.nix @@ -24,6 +24,43 @@ in extraModules = [ pkgs.pulseaudio-modules-bt ]; package = pkgs.pulseaudioFull; }; + + services.pipewire = { + media-session.config.bluez-monitor.rules = [ + { + # Matches all cards + matches = [{ "device.name" = "~bluez_card.*"; }]; + actions = { + "update-props" = { + "bluez5.reconnect-profiles" = [ + "hfp_hf" + "hsp_hs" + "a2dp_sink" + ]; + # mSBC provides better audio + microphone + "bluez5.msbc-support" = true; + # SBC XQ provides better audio + "bluez5.sbc-xq-support" = true; + }; + }; + } + { + matches = [ + # Matches all sources + { + "node.name" = "~bluez_input.*"; + } + # Matches all outputs + { + "node.name" = "~bluez_output.*"; + } + ]; + actions = { + "node.pause-on-idle" = false; + }; + } + ]; + }; }) # Support for A2DP audio profile From a648fc6d0f877e3a4195ddb2a29674abf1930d0b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 May 2021 18:35:06 +0200 Subject: [PATCH 0153/1588] home: wm: i3: use pamixer for audio control This can be used with either pipewire and pulseaudio without having to install all of pulseaudio. --- home/wm/i3.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 05c381d..853be11 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -36,6 +36,7 @@ in home.packages = with pkgs; [ ambroisie.i3-get-window-criteria # little helper for i3 configuration arandr # Used by a mapping + pamixer # Used by a mapping playerctl # Used by a mapping ]; @@ -209,12 +210,12 @@ in ) { # Media keys - "XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +5%"; - "XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -5%"; - "Control+XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +1%"; - "Control+XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -1%"; - "XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle"; - "XF86AudioMicMute" = "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle"; + "XF86AudioRaiseVolume" = "exec pamixer --allow-boost -i 5"; + "XF86AudioLowerVolume" = "exec pamixer --allow-boost -d 5"; + "Control+XF86AudioRaiseVolume" = "exec pamixer --allow-boost -i 1"; + "Control+XF86AudioLowerVolume" = "exec pamixer --allow-boost -d 1"; + "XF86AudioMute" = "exec pamixer --toggle-mute"; + "XF86AudioMicMute" = "exec pamixer --default-source --toggle-mute"; "XF86AudioPlay" = "exec playerctl play-pause"; "XF86AudioNext" = "exec playerctl next"; From d5307ff551ca00cf62828d378123692777f97b1d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 May 2021 18:19:05 +0200 Subject: [PATCH 0154/1588] machines: aramis: sound: switch to pipewire The support for mSBC means I should get better audio on my QC35. --- machines/aramis/sound.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machines/aramis/sound.nix b/machines/aramis/sound.nix index 586f3ff..97537e3 100644 --- a/machines/aramis/sound.nix +++ b/machines/aramis/sound.nix @@ -3,7 +3,7 @@ my.modules.sound = { enable = true; - pulse = { + pipewire = { enable = true; }; }; From a223ca6072c8d929d237d22251ef409b1e1d1219 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 May 2021 20:26:37 +0200 Subject: [PATCH 0155/1588] home: git: add 'pick' alias I wanted to name it 'pickaxe' but for a curious reason, it does not seem to be working when I use that alias... I am trying to find a second alias name for `git log -p -S`, which only shows commits that change the number of occurrences of its pickaxe in the file. Whereas `-G` shows any commit involving the pickaxe in its diff. --- home/git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/git/default.nix b/home/git/default.nix index da5efae..718ff27 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -23,6 +23,7 @@ in assume = "update-index --assume-unchanged"; unassume = "update-index --no-assume-unchanged"; assumed = "!git ls-files -v | grep ^h | cut -c 3-"; + pick = "log -p -G"; push-new = "!git push -u origin " + ''"$(git branch | grep '^* ' | cut -f2- -d' ')"''; }; From bcdb6dbe64acbe7d288ac11360348a788f9aa0a7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 27 May 2021 19:05:17 +0200 Subject: [PATCH 0156/1588] pkgs: add vimix-cursors --- pkgs/default.nix | 2 ++ pkgs/vimix-cursors/default.nix | 44 ++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 pkgs/vimix-cursors/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 197acfb..380ee0b 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -16,6 +16,8 @@ rec { nolimips = pkgs.callPackage ./nolimips { }; + vimix-cursors = pkgs.callPackage ./vimix-cursors { }; + unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { inherit unified-hosts-lists; }; diff --git a/pkgs/vimix-cursors/default.nix b/pkgs/vimix-cursors/default.nix new file mode 100644 index 0000000..78057ef --- /dev/null +++ b/pkgs/vimix-cursors/default.nix @@ -0,0 +1,44 @@ +{ python3, fetchFromGitHub, inkscape, lib, stdenvNoCC, xcursorgen }: +let + py = python3.withPackages (ps: with ps; [ cairosvg ]); +in +stdenvNoCC.mkDerivation rec { + pname = "vimix-cursors"; + version = "unstable-2020-04-28"; + + src = fetchFromGitHub { + owner = "vinceliuice"; + repo = pname; + rev = "27ebb1935944bc986bf8ae85ee3343b8351d9823"; + sha256 = "sha256-bIPRrKaNQ2Eo+T6zv7qeA1z7uRHXezM0yxh+uqA01Gs="; + }; + + nativeBuildInputs = [ + inkscape + py + xcursorgen + ]; + + postPatch = '' + patchShebangs . + ''; + + buildPhase = '' + HOME="$NIX_BUILD_ROOT" ./build.sh + ''; + + installPhase = '' + install -dm 755 $out/share/icons + for color in "" "-white"; do + cp -pr dist''${color}/ "$out/share/icons/Vimix''${color}-cursors" + done + ''; + + meta = with lib; { + description = "An X cursor theme inspired by Materia design"; + homepage = "https://github.com/vinceliuice/Vimix-cursors"; + license = licenses.gpl3Only; + platforms = platforms.linux; + maintainers = with maintainers; [ ambroisie ]; + }; +} From 8bb4948eec1677600259cf1d35604225365b0258 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 27 May 2021 19:05:38 +0200 Subject: [PATCH 0157/1588] home: x: cursor: switch to Vimix --- home/x/cursor.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/x/cursor.nix b/home/x/cursor.nix index 4bbff0c..4762199 100644 --- a/home/x/cursor.nix +++ b/home/x/cursor.nix @@ -5,8 +5,8 @@ in { config = lib.mkIf cfg.enable { xsession.pointerCursor = { - package = pkgs.numix-cursor-theme; - name = "Numix-Cursor"; + package = pkgs.ambroisie.vimix-cursors; + name = "Vimix-cursors"; }; }; } From b8f1f85bc269245dbb2d7446efaa00e3eb7ffe71 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 27 May 2021 19:57:31 +0200 Subject: [PATCH 0158/1588] pkgs: add volantes-cursors --- pkgs/default.nix | 2 ++ pkgs/volantes-cursors/default.nix | 44 +++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 pkgs/volantes-cursors/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 380ee0b..7419501 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -18,6 +18,8 @@ rec { vimix-cursors = pkgs.callPackage ./vimix-cursors { }; + volantes-cursors = pkgs.callPackage ./volantes-cursors { }; + unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { inherit unified-hosts-lists; }; diff --git a/pkgs/volantes-cursors/default.nix b/pkgs/volantes-cursors/default.nix new file mode 100644 index 0000000..08cec66 --- /dev/null +++ b/pkgs/volantes-cursors/default.nix @@ -0,0 +1,44 @@ +{ fetchFromGitHub, inkscape, lib, stdenvNoCC, xcursorgen }: +stdenvNoCC.mkDerivation rec { + pname = "volantes-cursors"; + version = "unstable-2020-06-06"; + + src = fetchFromGitHub { + owner = "varlesh"; + repo = pname; + rev = "d1d290ff42cc4fa643716551bd0b02582b90fd2f"; + sha256 = "sha256-irMN/enoo90nYLfvSOScZoYdvhZKvqqp+grZB2BQD9o="; + }; + + nativeBuildInputs = [ + inkscape + xcursorgen + ]; + + postPatch = '' + patchShebangs . + # The script tries to build in its source directory... + substituteInPlace build.sh --replace \ + ': "''${BUILD_DIR:="$SCRIPT_DIR"/build}"' \ + "BUILD_DIR=$(pwd)/build" + substituteInPlace build.sh --replace \ + ': "''${OUT_DIR:="$SCRIPT_DIR"/dist}"' \ + "OUT_DIR=$(pwd)/dist" + ''; + + buildPhase = '' + HOME="$NIX_BUILD_ROOT" ./build.sh + ''; + + installPhase = '' + make install PREFIX= DESTDIR=$out/ + ''; + + meta = with lib; { + description = "Classic cursor with a flying style"; + homepage = "https://github.com/varlesh/volantes-cursors"; + license = licenses.gpl2Only; + platforms = platforms.linux; + maintainers = with maintainers; [ ambroisie ]; + }; +} From 60309fad02accc8b5991b636f7d391ab3307c715 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 27 May 2021 21:37:29 +0200 Subject: [PATCH 0159/1588] pkgs: comma: allow override which nixpkgs is used This is useful for me to use my pinned `pkgs` instead. --- pkgs/comma/comma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/comma/comma b/pkgs/comma/comma index 5c347d6..ba5c6ae 100755 --- a/pkgs/comma/comma +++ b/pkgs/comma/comma @@ -30,4 +30,4 @@ if [ -z "$PROGRAM" ]; then exit 1 fi -nix shell "nixpkgs#$PROGRAM" -c "$@" +nix shell "${COMMA_PKGS_FLAKE:-nixpkgs}#$PROGRAM" -c "$@" From b95b357251de02da17a99af5058c39e025cd3a1e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 27 May 2021 21:49:24 +0200 Subject: [PATCH 0160/1588] home: extract 'comma' into its own module --- home/comma.nix | 15 +++++++++++++++ home/default.nix | 1 + home/packages.nix | 1 - 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 home/comma.nix diff --git a/home/comma.nix b/home/comma.nix new file mode 100644 index 0000000..60de863 --- /dev/null +++ b/home/comma.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.comma; +in +{ + options.my.home.comma = with lib; { + enable = my.mkDisableOption "comma configuration"; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + ambroisie.comma + ]; + }; +} diff --git a/home/default.nix b/home/default.nix index 8b638aa..efc4a81 100644 --- a/home/default.nix +++ b/home/default.nix @@ -3,6 +3,7 @@ imports = [ ./bat.nix ./bluetooth.nix + ./comma.nix ./direnv.nix ./documentation.nix ./feh.nix diff --git a/home/packages.nix b/home/packages.nix index 90111a2..0d57840 100644 --- a/home/packages.nix +++ b/home/packages.nix @@ -18,7 +18,6 @@ in }; config.home.packages = with pkgs; lib.mkIf cfg.enable ([ - ambroisie.comma file gitAndTools.git-absorb gitAndTools.git-revise From 90a89c56c8c018452991728f9fdfb435b093edc0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 27 May 2021 21:50:14 +0200 Subject: [PATCH 0161/1588] home: comma: configure custom 'nixpkgs' flake This makes use of my pinned `pkgs` flake from the registry by default. --- home/comma.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/home/comma.nix b/home/comma.nix index 60de863..cc6a0ad 100644 --- a/home/comma.nix +++ b/home/comma.nix @@ -5,11 +5,25 @@ in { options.my.home.comma = with lib; { enable = my.mkDisableOption "comma configuration"; + + pkgsFlake = mkOption { + type = types.str; + default = "pkgs"; + example = "nixpkgs"; + description = '' + Which flake from the registry should be used with + nix shell. + ''; + }; }; config = lib.mkIf cfg.enable { home.packages = with pkgs; [ ambroisie.comma ]; + + home.sessionVariables = { + COMMA_PKGS_FLAKE = cfg.pkgsFlake; + }; }; } From 1f861e4d5043441705f377edc996e999b9af4504 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 28 May 2021 11:38:28 +0200 Subject: [PATCH 0162/1588] services: jellyfin: fix proxy configuration --- services/jellyfin.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/jellyfin.nix b/services/jellyfin.nix index dc48354..122a70c 100644 --- a/services/jellyfin.nix +++ b/services/jellyfin.nix @@ -22,6 +22,13 @@ in useACMEHost = domain; locations."/" = { + proxyPass = "http://127.0.0.1:8096/"; + extraConfig = '' + proxy_buffering off; + ''; + }; + + locations."/socket" = { proxyPass = "http://127.0.0.1:8096/"; proxyWebsockets = true; }; From cdb8f0d0a794834ff92db4506b068f8cae5f8606 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 12:18:39 +0200 Subject: [PATCH 0163/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 4599275..23dd0be 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1621417094, - "narHash": "sha256-Csk4p8jFUma7FtMnjEJGTPGxCOnTbb30xr8AXwrUTMM=", + "lastModified": 1622145920, + "narHash": "sha256-/tt6IApLuVcGP5auy4zjLzfm5+MBHYLS3Nauvv2U2EQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "3d18912f5ae7c98bd5249411d98cdf3b28fe1f09", + "rev": "0e6c61a44092e98ba1d75b41f4f947843dc7814d", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1621160191, - "narHash": "sha256-5xaEDqmmDsJnd2agtmEIrbUHSuNjTqidJPkBrmls6Ek=", + "lastModified": 1622194753, + "narHash": "sha256-76qtvFp/vFEz46lz5iZMJ0mnsWQYmuGYlb0fHgKqqMg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7a1fbc38a4b538450ac0d42aec8a3e513b4d723e", + "rev": "540dccb2aeaffa9dc69bfdc41c55abd7ccc6baa3", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nur": { "locked": { - "lastModified": 1621525236, - "narHash": "sha256-aJh5wvoHB15CBMXNYEqbJuOuU3sETaJS9UFSgESF8zs=", + "lastModified": 1622221304, + "narHash": "sha256-aU/BdVGUverHNY9BOmDaAo21G8k9ndhzzjX1RSY1im0=", "owner": "nix-community", "repo": "NUR", - "rev": "ba113338c358c6b939dd269b1c89f0b43392f30b", + "rev": "8d8c59d767d854a1bc6fd08952529e10438eaa8d", "type": "github" }, "original": { From 36344fe924438d497e6facd56b4525b0d5bc8038 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:15:20 +0200 Subject: [PATCH 0164/1588] modules: ergodox: remove useless group clause The `zsa` module already add the group itself. --- modules/ergodox.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/ergodox.nix b/modules/ergodox.nix index cbc4957..a822eb7 100644 --- a/modules/ergodox.nix +++ b/modules/ergodox.nix @@ -10,7 +10,5 @@ in config = lib.mkIf cfg.enable { hardware.keyboard.zsa.enable = true; - - users.extraGroups = [ "plugdev" ]; }; } From 66cd746e538480e5bb2f35f982d19f22d20c9ff3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:35:27 +0200 Subject: [PATCH 0165/1588] modules: add 'hardware' directory --- modules/default.nix | 1 + modules/hardware/default.nix | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 modules/hardware/default.nix diff --git a/modules/default.nix b/modules/default.nix index 32b5b6f..6d3e065 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -6,6 +6,7 @@ ./bluetooth.nix ./documentation.nix ./ergodox.nix + ./hardware ./home.nix ./language.nix ./media.nix diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix new file mode 100644 index 0000000..26f40e3 --- /dev/null +++ b/modules/hardware/default.nix @@ -0,0 +1,8 @@ +# Hardware-related modules +{ ... }: + +{ + imports = [ + # FIXME: add modules + ]; +} From ec1bc63de75bba438216134693724793e24aa14f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:37:07 +0200 Subject: [PATCH 0166/1588] modules: hardware: move 'bluetooth' --- modules/default.nix | 1 - modules/{ => hardware}/bluetooth.nix | 4 ++-- modules/hardware/default.nix | 2 +- profiles/bluetooth.nix | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) rename modules/{ => hardware}/bluetooth.nix (95%) diff --git a/modules/default.nix b/modules/default.nix index 6d3e065..80bb699 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -3,7 +3,6 @@ { imports = [ - ./bluetooth.nix ./documentation.nix ./ergodox.nix ./hardware diff --git a/modules/bluetooth.nix b/modules/hardware/bluetooth.nix similarity index 95% rename from modules/bluetooth.nix rename to modules/hardware/bluetooth.nix index b4b8362..ffe0fbe 100644 --- a/modules/bluetooth.nix +++ b/modules/hardware/bluetooth.nix @@ -1,9 +1,9 @@ { config, lib, pkgs, ... }: let - cfg = config.my.modules.bluetooth; + cfg = config.my.hardware.bluetooth; in { - options.my.modules.bluetooth = with lib; { + options.my.hardware.bluetooth = with lib; { enable = mkEnableOption "bluetooth configuration"; enableHeadsetIntegration = my.mkDisableOption "A2DP sink configuration"; diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 26f40e3..383e1dd 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -3,6 +3,6 @@ { imports = [ - # FIXME: add modules + ./bluetooth.nix ]; } diff --git a/profiles/bluetooth.nix b/profiles/bluetooth.nix index 33792d7..292d0d1 100644 --- a/profiles/bluetooth.nix +++ b/profiles/bluetooth.nix @@ -8,7 +8,7 @@ in }; config = lib.mkIf cfg.enable { - my.modules.bluetooth.enable = true; + my.hardware.bluetooth.enable = true; my.home.bluetooth.enable = true; }; From abbe1bb203f84ff4bd823fc26fe89de97c014d3d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:38:54 +0200 Subject: [PATCH 0167/1588] modules: hardware: move 'ergodox' --- modules/default.nix | 1 - modules/hardware/default.nix | 1 + modules/{ => hardware}/ergodox.nix | 4 ++-- modules/{ => hardware}/networking.nix | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename modules/{ => hardware}/ergodox.nix (73%) rename modules/{ => hardware}/networking.nix (100%) diff --git a/modules/default.nix b/modules/default.nix index 80bb699..ddc434a 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -4,7 +4,6 @@ { imports = [ ./documentation.nix - ./ergodox.nix ./hardware ./home.nix ./language.nix diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 383e1dd..9c762aa 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -4,5 +4,6 @@ { imports = [ ./bluetooth.nix + ./ergodox.nix ]; } diff --git a/modules/ergodox.nix b/modules/hardware/ergodox.nix similarity index 73% rename from modules/ergodox.nix rename to modules/hardware/ergodox.nix index a822eb7..77f3ecb 100644 --- a/modules/ergodox.nix +++ b/modules/hardware/ergodox.nix @@ -1,10 +1,10 @@ # ZSA keyboard udev rules { config, lib, ... }: let - cfg = config.my.modules.ergodox; + cfg = config.my.hardware.ergodox; in { - options.my.modules.ergodox = with lib; { + options.my.hardware.ergodox = with lib; { enable = mkEnableOption "ZSA udev rules and user group configuration"; }; diff --git a/modules/networking.nix b/modules/hardware/networking.nix similarity index 100% rename from modules/networking.nix rename to modules/hardware/networking.nix From 5f0c1f6a7980bb93cfd8bd09d49ef06bc0366e14 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:41:59 +0200 Subject: [PATCH 0168/1588] modules: hardware: move 'networking' --- machines/aramis/networking.nix | 10 ++++++---- machines/porthos/networking.nix | 2 +- modules/default.nix | 1 - modules/hardware/default.nix | 1 + modules/hardware/networking.nix | 4 ++-- services/wireguard.nix | 2 +- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/machines/aramis/networking.nix b/machines/aramis/networking.nix index 929b44d..9322f1f 100644 --- a/machines/aramis/networking.nix +++ b/machines/aramis/networking.nix @@ -15,9 +15,11 @@ }; }; - # Which interface is used to connect to the internet - my.networking.externalInterface = "enp0s3"; + my.hardware.networking = { + # Which interface is used to connect to the internet + externalInterface = "enp0s3"; - # Enable WiFi integration - my.networking.wireless.enable = true; + # Enable WiFi integration + wireless.enable = true; + }; } diff --git a/machines/porthos/networking.nix b/machines/porthos/networking.nix index e593eeb..1e2c9cd 100644 --- a/machines/porthos/networking.nix +++ b/machines/porthos/networking.nix @@ -31,5 +31,5 @@ }; # Which interface is used to connect to the internet - my.networking.externalInterface = "eth0"; + my.hardware.networking.externalInterface = "eth0"; } diff --git a/modules/default.nix b/modules/default.nix index ddc434a..81ece11 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -8,7 +8,6 @@ ./home.nix ./language.nix ./media.nix - ./networking.nix ./nix.nix ./packages.nix ./sound.nix diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 9c762aa..773a6a7 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -5,5 +5,6 @@ imports = [ ./bluetooth.nix ./ergodox.nix + ./networking.nix ]; } diff --git a/modules/hardware/networking.nix b/modules/hardware/networking.nix index 99e1ef3..f0806fe 100644 --- a/modules/hardware/networking.nix +++ b/modules/hardware/networking.nix @@ -1,9 +1,9 @@ { config, lib, ... }: let - cfg = config.my.networking; + cfg = config.my.hardware.networking; in { - options.my.networking = with lib; { + options.my.hardware.networking = with lib; { externalInterface = mkOption { type = types.nullOr types.str; default = null; diff --git a/services/wireguard.nix b/services/wireguard.nix index fc948f6..977c6c5 100644 --- a/services/wireguard.nix +++ b/services/wireguard.nix @@ -18,7 +18,7 @@ let in lib.filterAttrs shouldConnectToPeer allOthers; - extIface = config.my.networking.externalInterface; + extIface = config.my.hardware.networking.externalInterface; mkInterface = clientAllowedIPs: { listenPort = cfg.port; From dd19b9dd924e20d1c6ebbc78cc13fbbc9e40ee5f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:43:32 +0200 Subject: [PATCH 0169/1588] modules: hardware: move 'sound' --- machines/aramis/sound.nix | 2 +- modules/default.nix | 1 - modules/hardware/default.nix | 1 + modules/{ => hardware}/sound.nix | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) rename modules/{ => hardware}/sound.nix (92%) diff --git a/machines/aramis/sound.nix b/machines/aramis/sound.nix index 97537e3..f9dd1b0 100644 --- a/machines/aramis/sound.nix +++ b/machines/aramis/sound.nix @@ -1,6 +1,6 @@ { ... }: { - my.modules.sound = { + my.hardware.sound = { enable = true; pipewire = { diff --git a/modules/default.nix b/modules/default.nix index 81ece11..6094ddd 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -10,7 +10,6 @@ ./media.nix ./nix.nix ./packages.nix - ./sound.nix ./upower.nix ./users.nix ]; diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 773a6a7..292bd3c 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -6,5 +6,6 @@ ./bluetooth.nix ./ergodox.nix ./networking.nix + ./sound.nix ]; } diff --git a/modules/sound.nix b/modules/hardware/sound.nix similarity index 92% rename from modules/sound.nix rename to modules/hardware/sound.nix index 567a974..3a12843 100644 --- a/modules/sound.nix +++ b/modules/hardware/sound.nix @@ -1,9 +1,9 @@ { config, lib, ... }: let - cfg = config.my.modules.sound; + cfg = config.my.hardware.sound; in { - options.my.modules.sound = with lib; { + options.my.hardware.sound = with lib; { enable = mkEnableOption "sound configuration"; pipewire = { From 274b909971b98b71bc6374ea545e25a8e508f698 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:44:34 +0200 Subject: [PATCH 0170/1588] modules: hardware: move 'upower' --- modules/default.nix | 1 - modules/hardware/default.nix | 1 + modules/{ => hardware}/upower.nix | 4 ++-- profiles/laptop.nix | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename modules/{ => hardware}/upower.nix (91%) diff --git a/modules/default.nix b/modules/default.nix index 6094ddd..f534f66 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -10,7 +10,6 @@ ./media.nix ./nix.nix ./packages.nix - ./upower.nix ./users.nix ]; } diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 292bd3c..1740080 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -7,5 +7,6 @@ ./ergodox.nix ./networking.nix ./sound.nix + ./upower.nix ]; } diff --git a/modules/upower.nix b/modules/hardware/upower.nix similarity index 91% rename from modules/upower.nix rename to modules/hardware/upower.nix index 8c46c1d..f21b9d2 100644 --- a/modules/upower.nix +++ b/modules/hardware/upower.nix @@ -1,9 +1,9 @@ { config, lib, pkgs, ... }: let - cfg = config.my.modules.upower; + cfg = config.my.hardware.upower; in { - options.my.modules.upower = with lib; { + options.my.hardware.upower = with lib; { enable = mkEnableOption "upower configuration"; levels = { diff --git a/profiles/laptop.nix b/profiles/laptop.nix index f834ac8..20a29d7 100644 --- a/profiles/laptop.nix +++ b/profiles/laptop.nix @@ -15,7 +15,7 @@ in my.services.tlp.enable = true; # Enable upower power management - my.modules.upower.enable = true; + my.hardware.upower.enable = true; # Enable battery notifications my.home.power-alert.enable = true; From 9b568beb9a7cac50e4eda2cd161712e10e69ca59 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:46:51 +0200 Subject: [PATCH 0171/1588] modules: move 'services' into subfolder --- flake.nix | 2 -- modules/default.nix | 1 + {services => modules/services}/adblock.nix | 0 {services => modules/services}/backup.nix | 0 {services => modules/services}/blog.nix | 0 {services => modules/services}/calibre-web.nix | 0 {services => modules/services}/default.nix | 0 {services => modules/services}/drone.nix | 0 {services => modules/services}/flood.nix | 0 {services => modules/services}/gitea.nix | 0 {services => modules/services}/indexers.nix | 0 {services => modules/services}/jellyfin.nix | 0 {services => modules/services}/lohr.nix | 0 {services => modules/services}/matrix.nix | 0 {services => modules/services}/miniflux.nix | 0 {services => modules/services}/nextcloud.nix | 0 {services => modules/services}/nginx.nix | 0 {services => modules/services}/pirate.nix | 0 {services => modules/services}/podgrab.nix | 0 {services => modules/services}/postgresql-backup.nix | 0 {services => modules/services}/quassel.nix | 0 {services => modules/services}/rss-bridge.nix | 0 {services => modules/services}/sabnzbd.nix | 0 {services => modules/services}/ssh-server.nix | 0 {services => modules/services}/tlp.nix | 0 {services => modules/services}/transmission.nix | 0 {services => modules/services}/wireguard.nix | 0 27 files changed, 1 insertion(+), 2 deletions(-) rename {services => modules/services}/adblock.nix (100%) rename {services => modules/services}/backup.nix (100%) rename {services => modules/services}/blog.nix (100%) rename {services => modules/services}/calibre-web.nix (100%) rename {services => modules/services}/default.nix (100%) rename {services => modules/services}/drone.nix (100%) rename {services => modules/services}/flood.nix (100%) rename {services => modules/services}/gitea.nix (100%) rename {services => modules/services}/indexers.nix (100%) rename {services => modules/services}/jellyfin.nix (100%) rename {services => modules/services}/lohr.nix (100%) rename {services => modules/services}/matrix.nix (100%) rename {services => modules/services}/miniflux.nix (100%) rename {services => modules/services}/nextcloud.nix (100%) rename {services => modules/services}/nginx.nix (100%) rename {services => modules/services}/pirate.nix (100%) rename {services => modules/services}/podgrab.nix (100%) rename {services => modules/services}/postgresql-backup.nix (100%) rename {services => modules/services}/quassel.nix (100%) rename {services => modules/services}/rss-bridge.nix (100%) rename {services => modules/services}/sabnzbd.nix (100%) rename {services => modules/services}/ssh-server.nix (100%) rename {services => modules/services}/tlp.nix (100%) rename {services => modules/services}/transmission.nix (100%) rename {services => modules/services}/wireguard.nix (100%) diff --git a/flake.nix b/flake.nix index 6fa7b2a..02c2147 100644 --- a/flake.nix +++ b/flake.nix @@ -64,8 +64,6 @@ ./profiles # Include my secrets ./secrets - # Include my services - ./services ]; buildHost = name: system: lib.nixosSystem { diff --git a/modules/default.nix b/modules/default.nix index f534f66..9e2a051 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -10,6 +10,7 @@ ./media.nix ./nix.nix ./packages.nix + ./services ./users.nix ]; } diff --git a/services/adblock.nix b/modules/services/adblock.nix similarity index 100% rename from services/adblock.nix rename to modules/services/adblock.nix diff --git a/services/backup.nix b/modules/services/backup.nix similarity index 100% rename from services/backup.nix rename to modules/services/backup.nix diff --git a/services/blog.nix b/modules/services/blog.nix similarity index 100% rename from services/blog.nix rename to modules/services/blog.nix diff --git a/services/calibre-web.nix b/modules/services/calibre-web.nix similarity index 100% rename from services/calibre-web.nix rename to modules/services/calibre-web.nix diff --git a/services/default.nix b/modules/services/default.nix similarity index 100% rename from services/default.nix rename to modules/services/default.nix diff --git a/services/drone.nix b/modules/services/drone.nix similarity index 100% rename from services/drone.nix rename to modules/services/drone.nix diff --git a/services/flood.nix b/modules/services/flood.nix similarity index 100% rename from services/flood.nix rename to modules/services/flood.nix diff --git a/services/gitea.nix b/modules/services/gitea.nix similarity index 100% rename from services/gitea.nix rename to modules/services/gitea.nix diff --git a/services/indexers.nix b/modules/services/indexers.nix similarity index 100% rename from services/indexers.nix rename to modules/services/indexers.nix diff --git a/services/jellyfin.nix b/modules/services/jellyfin.nix similarity index 100% rename from services/jellyfin.nix rename to modules/services/jellyfin.nix diff --git a/services/lohr.nix b/modules/services/lohr.nix similarity index 100% rename from services/lohr.nix rename to modules/services/lohr.nix diff --git a/services/matrix.nix b/modules/services/matrix.nix similarity index 100% rename from services/matrix.nix rename to modules/services/matrix.nix diff --git a/services/miniflux.nix b/modules/services/miniflux.nix similarity index 100% rename from services/miniflux.nix rename to modules/services/miniflux.nix diff --git a/services/nextcloud.nix b/modules/services/nextcloud.nix similarity index 100% rename from services/nextcloud.nix rename to modules/services/nextcloud.nix diff --git a/services/nginx.nix b/modules/services/nginx.nix similarity index 100% rename from services/nginx.nix rename to modules/services/nginx.nix diff --git a/services/pirate.nix b/modules/services/pirate.nix similarity index 100% rename from services/pirate.nix rename to modules/services/pirate.nix diff --git a/services/podgrab.nix b/modules/services/podgrab.nix similarity index 100% rename from services/podgrab.nix rename to modules/services/podgrab.nix diff --git a/services/postgresql-backup.nix b/modules/services/postgresql-backup.nix similarity index 100% rename from services/postgresql-backup.nix rename to modules/services/postgresql-backup.nix diff --git a/services/quassel.nix b/modules/services/quassel.nix similarity index 100% rename from services/quassel.nix rename to modules/services/quassel.nix diff --git a/services/rss-bridge.nix b/modules/services/rss-bridge.nix similarity index 100% rename from services/rss-bridge.nix rename to modules/services/rss-bridge.nix diff --git a/services/sabnzbd.nix b/modules/services/sabnzbd.nix similarity index 100% rename from services/sabnzbd.nix rename to modules/services/sabnzbd.nix diff --git a/services/ssh-server.nix b/modules/services/ssh-server.nix similarity index 100% rename from services/ssh-server.nix rename to modules/services/ssh-server.nix diff --git a/services/tlp.nix b/modules/services/tlp.nix similarity index 100% rename from services/tlp.nix rename to modules/services/tlp.nix diff --git a/services/transmission.nix b/modules/services/transmission.nix similarity index 100% rename from services/transmission.nix rename to modules/services/transmission.nix diff --git a/services/wireguard.nix b/modules/services/wireguard.nix similarity index 100% rename from services/wireguard.nix rename to modules/services/wireguard.nix From 3ff50b1c22956ca72a83e151519e7cdf48f8471b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:48:32 +0200 Subject: [PATCH 0172/1588] modules: add 'system' directory --- modules/default.nix | 1 + modules/system/default.nix | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 modules/system/default.nix diff --git a/modules/default.nix b/modules/default.nix index 9e2a051..352f964 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -11,6 +11,7 @@ ./nix.nix ./packages.nix ./services + ./system ./users.nix ]; } diff --git a/modules/system/default.nix b/modules/system/default.nix new file mode 100644 index 0000000..0a79a43 --- /dev/null +++ b/modules/system/default.nix @@ -0,0 +1,8 @@ +# System-related modules +{ ... }: + +{ + imports = [ + # FIXME + ]; +} From 50a5347802cc1b17b1ad395156e120ac18e6eeac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:49:25 +0200 Subject: [PATCH 0173/1588] modules: system: move 'media' --- modules/default.nix | 1 - modules/system/default.nix | 2 +- modules/{ => system}/media.nix | 0 3 files changed, 1 insertion(+), 2 deletions(-) rename modules/{ => system}/media.nix (100%) diff --git a/modules/default.nix b/modules/default.nix index 352f964..173b621 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -7,7 +7,6 @@ ./hardware ./home.nix ./language.nix - ./media.nix ./nix.nix ./packages.nix ./services diff --git a/modules/system/default.nix b/modules/system/default.nix index 0a79a43..b651ebe 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -3,6 +3,6 @@ { imports = [ - # FIXME + ./media.nix ]; } diff --git a/modules/media.nix b/modules/system/media.nix similarity index 100% rename from modules/media.nix rename to modules/system/media.nix From 7f285ab9cf2c288b1c178d2f742c54ce019465ad Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:51:17 +0200 Subject: [PATCH 0174/1588] modules: system: move 'users' --- modules/default.nix | 1 - modules/system/default.nix | 1 + modules/{ => system}/ssh/aramis.pub | 0 modules/{ => system}/ssh/shared.pub | 0 modules/{ => system}/users.nix | 0 5 files changed, 1 insertion(+), 1 deletion(-) rename modules/{ => system}/ssh/aramis.pub (100%) rename modules/{ => system}/ssh/shared.pub (100%) rename modules/{ => system}/users.nix (100%) diff --git a/modules/default.nix b/modules/default.nix index 173b621..fbdbfb4 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -11,6 +11,5 @@ ./packages.nix ./services ./system - ./users.nix ]; } diff --git a/modules/system/default.nix b/modules/system/default.nix index b651ebe..24edcbe 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -4,5 +4,6 @@ { imports = [ ./media.nix + ./users.nix ]; } diff --git a/modules/ssh/aramis.pub b/modules/system/ssh/aramis.pub similarity index 100% rename from modules/ssh/aramis.pub rename to modules/system/ssh/aramis.pub diff --git a/modules/ssh/shared.pub b/modules/system/ssh/shared.pub similarity index 100% rename from modules/ssh/shared.pub rename to modules/system/ssh/shared.pub diff --git a/modules/users.nix b/modules/system/users.nix similarity index 100% rename from modules/users.nix rename to modules/system/users.nix From 377c97ea9f1112b73cdd3873fc99cf0565ce7590 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:52:14 +0200 Subject: [PATCH 0175/1588] modules: system: move 'language' --- modules/default.nix | 1 - modules/system/default.nix | 1 + modules/{ => system}/language.nix | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename modules/{ => system}/language.nix (100%) diff --git a/modules/default.nix b/modules/default.nix index fbdbfb4..65c8be1 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -6,7 +6,6 @@ ./documentation.nix ./hardware ./home.nix - ./language.nix ./nix.nix ./packages.nix ./services diff --git a/modules/system/default.nix b/modules/system/default.nix index 24edcbe..621b79d 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -3,6 +3,7 @@ { imports = [ + ./language.nix ./media.nix ./users.nix ]; diff --git a/modules/language.nix b/modules/system/language.nix similarity index 100% rename from modules/language.nix rename to modules/system/language.nix From 43ef533ae1ad8d9c1df3789f27da860505b7ff57 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:53:44 +0200 Subject: [PATCH 0176/1588] modules: system: move 'documentation' --- modules/default.nix | 1 - modules/system/default.nix | 1 + modules/{ => system}/documentation.nix | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) rename modules/{ => system}/documentation.nix (90%) diff --git a/modules/default.nix b/modules/default.nix index 65c8be1..0ec07af 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -3,7 +3,6 @@ { imports = [ - ./documentation.nix ./hardware ./home.nix ./nix.nix diff --git a/modules/system/default.nix b/modules/system/default.nix index 621b79d..4d4173a 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -3,6 +3,7 @@ { imports = [ + ./documentation.nix ./language.nix ./media.nix ./users.nix diff --git a/modules/documentation.nix b/modules/system/documentation.nix similarity index 90% rename from modules/documentation.nix rename to modules/system/documentation.nix index 8948778..5f58680 100644 --- a/modules/documentation.nix +++ b/modules/system/documentation.nix @@ -1,9 +1,9 @@ { config, lib, pkgs, ... }: let - cfg = config.my.module.documentation; + cfg = config.my.system.documentation; in { - options.my.module.documentation = with lib.my; { + options.my.system.documentation = with lib.my; { enable = mkDisableOption "Documentation integration"; dev.enable = mkDisableOption "Documentation aimed at developers"; From 130e04a1525e8c50320540780d2578284c5fa1e8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:54:50 +0200 Subject: [PATCH 0177/1588] modules: system: move 'nix' --- modules/default.nix | 1 - modules/system/default.nix | 1 + modules/{ => system}/nix.nix | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename modules/{ => system}/nix.nix (100%) diff --git a/modules/default.nix b/modules/default.nix index 0ec07af..4996a78 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -5,7 +5,6 @@ imports = [ ./hardware ./home.nix - ./nix.nix ./packages.nix ./services ./system diff --git a/modules/system/default.nix b/modules/system/default.nix index 4d4173a..55fb95f 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -6,6 +6,7 @@ ./documentation.nix ./language.nix ./media.nix + ./nix.nix ./users.nix ]; } diff --git a/modules/nix.nix b/modules/system/nix.nix similarity index 100% rename from modules/nix.nix rename to modules/system/nix.nix From a3eaa6d97ef3188cee7c6cece8f05a932a8d4e13 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 16:56:05 +0200 Subject: [PATCH 0178/1588] modules: system: move 'packages' --- modules/default.nix | 1 - modules/system/default.nix | 1 + modules/{ => system}/packages.nix | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename modules/{ => system}/packages.nix (100%) diff --git a/modules/default.nix b/modules/default.nix index 4996a78..69c0bdc 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -5,7 +5,6 @@ imports = [ ./hardware ./home.nix - ./packages.nix ./services ./system ]; diff --git a/modules/system/default.nix b/modules/system/default.nix index 55fb95f..48a0770 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -7,6 +7,7 @@ ./language.nix ./media.nix ./nix.nix + ./packages.nix ./users.nix ]; } diff --git a/modules/packages.nix b/modules/system/packages.nix similarity index 100% rename from modules/packages.nix rename to modules/system/packages.nix From 565d40fefbbe2b46977b82f3f844cc79b5bff00f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 20:23:19 +0200 Subject: [PATCH 0179/1588] modules: system: language: make it configurable --- modules/system/language.nix | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/modules/system/language.nix b/modules/system/language.nix index 48d9f30..f2bbcde 100644 --- a/modules/system/language.nix +++ b/modules/system/language.nix @@ -1,7 +1,22 @@ # Language settings -{ ... }: - +{ config, lib, ... }: +let + cfg = config.my.system.language; +in { - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; + options.my.system.language = with lib; { + enable = my.mkDisableOption "language configuration"; + + locale = mkOption { + type = types.str; + default = "en_US.UTF-8"; + example = "fr_FR.UTF-8"; + description = "Which locale to use for the system"; + }; + }; + + config = lib.mkIf cfg.enable { + # Select internationalisation properties. + i18n.defaultLocale = cfg.locale; + }; } From 7916a26a58310f6b6c15defae6ccf8d73fe152a2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 20:28:27 +0200 Subject: [PATCH 0180/1588] modules: system: nix: make it configurable --- modules/system/nix.nix | 46 ++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/modules/system/nix.nix b/modules/system/nix.nix index bfde967..0f2f8c3 100644 --- a/modules/system/nix.nix +++ b/modules/system/nix.nix @@ -1,19 +1,35 @@ # Nix related settings -{ inputs, pkgs, ... }: - +{ config, inputs, lib, pkgs, ... }: +let + cfg = config.my.system.nix; +in { - nix = { - package = pkgs.nixFlakes; - registry = { - # Allow me to use my custom package using `nix run self#pkg` - self.flake = inputs.self; - # Use pinned nixpkgs when using `nix run pkgs#` - pkgs.flake = inputs.nixpkgs; - # Add NUR to run some packages that are only present there - nur.flake = inputs.nur; - }; - extraOptions = '' - experimental-features = nix-command flakes - ''; + options.my.system.nix = with lib; { + enable = my.mkDisableOption "nix configuration"; + + addToRegistry = my.mkDisableOption "add inputs and self to registry"; }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + nix = { + package = pkgs.nixFlakes; + + extraOptions = '' + experimental-features = nix-command flakes + ''; + }; + } + + (lib.mkIf cfg.addToRegistry { + nix.registry = { + # Allow me to use my custom package using `nix run self#pkg` + self.flake = inputs.self; + # Use pinned nixpkgs when using `nix run pkgs#` + pkgs.flake = inputs.nixpkgs; + # Add NUR to run some packages that are only present there + nur.flake = inputs.nur; + }; + }) + ]); } From c23d89dcb2209666cd332afc53b7eb2552fc8646 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 20:34:38 +0200 Subject: [PATCH 0181/1588] modules: system: packages: make it configurable --- modules/system/packages.nix | 47 +++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/modules/system/packages.nix b/modules/system/packages.nix index 4560ab1..faee86b 100644 --- a/modules/system/packages.nix +++ b/modules/system/packages.nix @@ -1,23 +1,36 @@ # Common packages -{ config, pkgs, ... }: - +{ config, lib, pkgs, ... }: +let + cfg = config.my.system.packages; +in { - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - git - git-crypt - mosh - vim - wget - ]; + options.my.system.packages = with lib; { + enable = my.mkDisableOption "packages configuration"; - programs.vim.defaultEditor = true; # Modal editing is life - programs.zsh = { - enable = true; # Use integrations - # Disable global compinit when a user config exists - enableGlobalCompInit = !config.my.home.zsh.enable; + allowUnfree = my.mkDisableOption "allow unfree packages"; }; - nixpkgs.config.allowUnfree = true; # Because I don't care *that* much. + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + git + git-crypt + mosh + vim + wget + ]; + + programs = { + vim.defaultEditor = true; # Modal editing is life + + zsh = { + enable = true; # Use integrations + # Disable global compinit when a user config exists + enableGlobalCompInit = !config.my.home.zsh.enable; + }; + }; + + nixpkgs.config = { + allowUnfree = cfg.allowUnfree; # Because I don't care *that* much. + }; + }; } From 558f9b39199bcdabcf4fb5579a8c69c385bf9b54 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 21:13:44 +0200 Subject: [PATCH 0182/1588] modules: add option to specify username Given that I use it in plenty of places, it makes sense to place it there for reference in other modules. --- modules/default.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/default.nix b/modules/default.nix index 69c0bdc..46c2e8e 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,5 +1,5 @@ # Common modules -{ ... }: +{ lib, ... }: { imports = [ @@ -8,4 +8,13 @@ ./services ./system ]; + + options.my = with lib; { + username = mkOption { + type = types.str; + default = "ambroisie"; + example = "alice"; + description = "my username"; + }; + }; } From 22a01eeadf33f7fe2c1d2ebc4e8492a1f7b45cb0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 21:14:28 +0200 Subject: [PATCH 0183/1588] modules: system: users: make it configurable Notably, make use of my global 'username' option. --- modules/system/users.nix | 65 ++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/modules/system/users.nix b/modules/system/users.nix index 15896e0..4493c75 100644 --- a/modules/system/users.nix +++ b/modules/system/users.nix @@ -1,36 +1,49 @@ # User setup { config, lib, pkgs, ... }: let - my = config.my; + secrets = config.my.secrets; + cfg = config.my.system.users; groupExists = grp: builtins.hasAttr grp config.users.groups; groupsIfExist = builtins.filter groupExists; in { - users.mutableUsers = false; # I want it to be declarative. + options.my.system.users = with lib; { + enable = my.mkDisableOption "user configuration"; + }; - # Define user accounts and passwords. - users.users.root.hashedPassword = my.secrets.users.root.hashedPassword; - users.users.ambroisie = { - hashedPassword = my.secrets.users.ambroisie.hashedPassword; - description = "Bruno BELANYI"; - isNormalUser = true; - shell = pkgs.zsh; - extraGroups = groupsIfExist [ - "audio" # sound control - "media" # access to media files - "networkmanager" # wireless configuration - "plugdev" # usage of ZSA keyboard tools - "video" # screen control - "wheel" # `sudo` for the user. - ]; - openssh.authorizedKeys.keys = with builtins; - let - keyDir = ./ssh; - contents = readDir keyDir; - names = attrNames contents; - files = filter (name: contents.${name} == "regular") names; - keys = map (basename: readFile (keyDir + "/${basename}")) files; - in - keys; + config = lib.mkIf cfg.enable { + users = { + mutableUsers = false; # I want it to be declarative. + + users = { + root = { + inherit (secrets.users.root) hashedPassword; + }; + + ${config.my.username} = { + inherit (secrets.users.${config.my.username}) hashedPassword; + description = "Bruno BELANYI"; + isNormalUser = true; + shell = pkgs.zsh; + extraGroups = groupsIfExist [ + "audio" # sound control + "media" # access to media files + "networkmanager" # wireless configuration + "plugdev" # usage of ZSA keyboard tools + "video" # screen control + "wheel" # `sudo` for the user. + ]; + openssh.authorizedKeys.keys = with builtins; + let + keyDir = ./ssh; + contents = readDir keyDir; + names = attrNames contents; + files = filter (name: contents.${name} == "regular") names; + keys = map (basename: readFile (keyDir + "/${basename}")) files; + in + keys; + }; + }; + }; }; } From 3cc933de819a779b44c4e29e98ee986956a307aa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 29 May 2021 21:19:51 +0200 Subject: [PATCH 0184/1588] home: zsh: remove trailing whitespace --- home/zsh/extra-mappings.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index abd6e58..8f7cc4a 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -1,4 +1,4 @@ -# Fix delete key not working +# Fix delete key not working bindkey "\e[3~" delete-char # Fix Ctrl+u killing from the cursor instead of the whole line From ba15ad96747b3774227d7ee8f8babeadfe4f182f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 30 May 2021 01:20:14 +0200 Subject: [PATCH 0185/1588] flake: use 'username' config value --- flake.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index 02c2147..826ce73 100644 --- a/flake.nix +++ b/flake.nix @@ -52,12 +52,12 @@ ]; } home-manager.nixosModules.home-manager - { - home-manager.users.ambroisie = import ./home; + ({ config, ... }: { + home-manager.users.${config.my.username} = import ./home; # Nix Flakes compatibility home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - } + }) # Include generic settings ./modules # Include bundles of settings From 9d96899065ba618e8470b21cbcfc6ae9ce25b669 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 30 May 2021 01:31:05 +0200 Subject: [PATCH 0186/1588] modules: home: use 'username' config value --- modules/home.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home.nix b/modules/home.nix index f5314b9..a6fbc80 100644 --- a/modules/home.nix +++ b/modules/home.nix @@ -1,7 +1,7 @@ # Simplify setting home options -{ lib, ... }: +{ config, lib, ... }: let - actualPath = [ "home-manager" "users" "ambroisie" "my" "home" ]; + actualPath = [ "home-manager" "users" config.my.username "my" "home" ]; aliasPath = [ "my" "home" ]; in { From cd0fe40c94254bcae4a2d55f5e7d32531f5c1bd4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 31 May 2021 20:30:36 +0200 Subject: [PATCH 0187/1588] machines: aramis: hardware: enable trackpoint --- machines/aramis/hardware.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/machines/aramis/hardware.nix b/machines/aramis/hardware.nix index 86eaf28..3ca556c 100644 --- a/machines/aramis/hardware.nix +++ b/machines/aramis/hardware.nix @@ -22,5 +22,13 @@ powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; - hardware.cpu.intel.updateMicrocode = true; + hardware = { + cpu.intel.updateMicrocode = true; + + trackpoint = { + enable = true; + + emulateWheel = true; # Holding middle buttons allows scrolling + }; + }; } From 21fa1ccdacc9556e081eb2fd9153ef317dc2a9e9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 31 May 2021 23:01:21 +0200 Subject: [PATCH 0188/1588] flake: change format --- flake.nix | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/flake.nix b/flake.nix index 826ce73..3ff11ba 100644 --- a/flake.nix +++ b/flake.nix @@ -33,7 +33,14 @@ }; }; - outputs = { self, futils, home-manager, nixpkgs, nur } @ inputs: + outputs = + inputs @ + { self + , futils + , home-manager + , nixpkgs + , nur + }: let inherit (futils.lib) eachDefaultSystem; @@ -81,28 +88,29 @@ in eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages.${system}; - in - rec { - apps = { - diff-flake = futils.lib.mkApp { drv = packages.diff-flake; }; - }; + let + pkgs = nixpkgs.legacyPackages.${system}; + in + rec { + apps = { + diff-flake = futils.lib.mkApp { drv = packages.diff-flake; }; + }; - defaultApp = apps.diff-flake; + defaultApp = apps.diff-flake; - devShell = pkgs.mkShell { - name = "NixOS-config"; - buildInputs = with pkgs; [ - git-crypt - gitAndTools.pre-commit - gnupg - nixpkgs-fmt - ]; - }; + devShell = pkgs.mkShell { + name = "NixOS-config"; - packages = import ./pkgs { inherit pkgs; }; - }) // { + buildInputs = with pkgs; [ + git-crypt + gitAndTools.pre-commit + gnupg + nixpkgs-fmt + ]; + }; + + packages = import ./pkgs { inherit pkgs; }; + }) // { overlay = self.overlays.pkgs; overlays = import ./overlays // { From 1699382e4e30864e532330dc5184d858f694ac90 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 31 May 2021 23:04:08 +0200 Subject: [PATCH 0189/1588] flake: add pre-commit-hooks Instead of havin the tool manage versions, use a pinned version. --- .pre-commit-config.yaml | 21 --------------------- flake.lock | 27 ++++++++++++++++++++++++++- flake.nix | 26 ++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 22 deletions(-) delete mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 0543253..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,21 +0,0 @@ -repos: -- repo: 'https://github.com/pre-commit/pre-commit-hooks' - rev: 'v2.3.0' - hooks: - - id: 'trailing-whitespace' - - id: 'end-of-file-fixer' - - id: 'check-yaml' - - id: 'check-added-large-files' -- repo: 'https://github.com/jumanjihouse/pre-commit-hooks' - rev: '2.1.4' - hooks: - - id: 'forbid-binary' -- repo: 'local' - hooks: - - id: 'nixpkgs-fmt' - name: 'nixpkgs-fmt' - description: 'Format nix code with nixpkgs-fmt' - entry: 'nixpkgs-fmt' - language: 'system' - files: '\.nix$' - always_run: true diff --git a/flake.lock b/flake.lock index 23dd0be..29aabff 100644 --- a/flake.lock +++ b/flake.lock @@ -69,12 +69,37 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-utils": [ + "futils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1621411868, + "narHash": "sha256-R+7OQ2JYFCb3E7Jl7LhRifzMVCR6Gl8R98zYsNhZtJ8=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "2e7fac06108b4fc81f5ff9ed9a02bc4f6ede7001", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "master", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "futils": "futils", "home-manager": "home-manager", "nixpkgs": "nixpkgs", - "nur": "nur" + "nur": "nur", + "pre-commit-hooks": "pre-commit-hooks" } } }, diff --git a/flake.nix b/flake.nix index 3ff11ba..b11dbed 100644 --- a/flake.nix +++ b/flake.nix @@ -31,6 +31,17 @@ repo = "NUR"; ref = "master"; }; + + pre-commit-hooks = { + type = "github"; + owner = "cachix"; + repo = "pre-commit-hooks.nix"; + ref = "master"; + inputs = { + flake-utils.follows = "futils"; + nixpkgs.follows = "nixpkgs"; + }; + }; }; outputs = @@ -40,6 +51,7 @@ , home-manager , nixpkgs , nur + , pre-commit-hooks }: let inherit (futils.lib) eachDefaultSystem; @@ -96,6 +108,18 @@ diff-flake = futils.lib.mkApp { drv = packages.diff-flake; }; }; + checks = { + pre-commit = pre-commit-hooks.lib.${system}.run { + src = ./.; + + hooks = { + nixpkgs-fmt = { + enable = true; + }; + }; + }; + }; + defaultApp = apps.diff-flake; devShell = pkgs.mkShell { @@ -107,6 +131,8 @@ gnupg nixpkgs-fmt ]; + + inherit (self.checks.${system}.pre-commit) shellHook; }; packages = import ./pkgs { inherit pkgs; }; From 4b9d686c97daabf148e527b570d70fd49534d5d4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 31 May 2021 23:06:20 +0200 Subject: [PATCH 0190/1588] nix: evaluate shell hooks This activates the pre-commit-hook configuration. --- .envrc | 1 + 1 file changed, 1 insertion(+) diff --git a/.envrc b/.envrc index 9556665..4b297a5 100644 --- a/.envrc +++ b/.envrc @@ -6,3 +6,4 @@ use_flake() { ulimit -s unlimited # Bypass current bug in `nix` flakes evaluation use flake +eval "$shellHooks" From a465955a28eb8f3fc3dcf26f07a952e3aebc78e0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 31 May 2021 23:06:37 +0200 Subject: [PATCH 0191/1588] git: ignore generated pre-commit configuration --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a10705 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.pre-commit-config.yaml +.pre-commit-config.yaml From 0cf077012db7810dbaba633c5129ee1f2e9903bf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Jun 2021 17:18:33 +0200 Subject: [PATCH 0192/1588] home: wm: i3: move script generation out-of-line This makes for a cleaner configuration file. --- home/wm/i3.nix | 91 ++++++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 43 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 853be11..4c763df 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -25,6 +25,45 @@ let addVimKeyBindings = bindings: bindings // (toVimKeyBindings bindings); # Generate an attrset of movement bindings, using the mapper function genMovementBindings = f: addVimKeyBindings (lib.my.genAttrs' movementKeys f); + + # Screen backlight management + changeBacklight = + let + brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; + in + pkgs.writeScript "change-backlight" '' + #!/bin/sh + if [ "$1" = "up" ]; then + upDown="+$2%" + else + upDown="$2%-" + fi + + newBrightness="$(${brightnessctl} -m set "$upDown" | cut -d, -f4)" + ${pkgs.libnotify}/bin/notify-send -u low \ + -h string:x-canonical-private-synchronous:change-backlight \ + -h "int:value:''${newBrightness/\%/}" \ + -- "Set brightness to $newBrightness" + ''; + + # Lock management + toggleXautolock = + let + systemctlUser = "${pkgs.systemd}/bin/systemctl --user"; + notify-send = "${pkgs.libnotify}/bin/notify-send"; + notify = "${notify-send} -u low" + + " -h string:x-canonical-private-synchronous:xautolock-toggle"; + in + pkgs.writeScript "toggle-xautolock" '' + #!/bin/sh + if ${systemctlUser} is-active xautolock-session.service; then + ${systemctlUser} stop --user xautolock-session.service + ${notify} "Disabled Xautolock" + else + ${systemctlUser} start xautolock-session.service + ${notify} "Enabled Xautolock" + fi + ''; in { config = lib.mkIf isEnabled { @@ -221,55 +260,21 @@ in "XF86AudioNext" = "exec playerctl next"; "XF86AudioPrev" = "exec playerctl previous"; } - ( - let - brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; - changeBacklight = pkgs.writeScript "change-backlight" '' - #!/bin/sh - if [ "$1" = "up" ]; then - upDown="+$2%" - else - upDown="$2%-" - fi - - newBrightness="$(${brightnessctl} -m set "$upDown" | cut -d, -f4)" - ${pkgs.libnotify}/bin/notify-send -u low \ - -h string:x-canonical-private-synchronous:change-backlight \ - -h "int:value:''${newBrightness/\%/}" \ - -- "Set brightness to $newBrightness" - ''; - in - { - "XF86Display" = "exec arandr"; - "XF86MonBrightnessUp" = "exec ${changeBacklight} up 10"; - "XF86MonBrightnessDown" = "exec ${changeBacklight} down 10"; - "Control+XF86MonBrightnessUp" = "exec ${changeBacklight} up 1"; - "Control+XF86MonBrightnessDown" = "exec ${changeBacklight} down 1"; - } - ) + { + # Screen management + "XF86Display" = "exec arandr"; + "XF86MonBrightnessUp" = "exec ${changeBacklight} up 10"; + "XF86MonBrightnessDown" = "exec ${changeBacklight} down 10"; + "Control+XF86MonBrightnessUp" = "exec ${changeBacklight} up 1"; + "Control+XF86MonBrightnessDown" = "exec ${changeBacklight} down 1"; + } { # Sub-modes "${modifier}+r" = "mode resize"; "${modifier}+Shift+space" = "mode floating"; } (lib.optionalAttrs config.my.home.wm.screen-lock.enable { - "${modifier}+x" = - let - systemctlUser = "${pkgs.systemd}/bin/systemctl --user"; - notify = "${pkgs.libnotify}/bin/notify-send -u low " + - "-h string:x-canonical-private-synchronous:xautolock-toggle"; - toggleXautolock = pkgs.writeScript "toggle-xautolock" '' - #!/bin/sh - if ${systemctlUser} is-active xautolock-session.service; then - ${systemctlUser} stop --user xautolock-session.service - ${notify} "Disabled Xautolock" - else - ${systemctlUser} start xautolock-session.service - ${notify} "Enabled Xautolock" - fi - ''; - in - "exec ${toggleXautolock}"; + "${modifier}+x" = "exec ${toggleXautolock}"; }) ( let From 4ec380e1286525afadc0616c69b0b0ad6a04eb3b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Jun 2021 17:33:09 +0200 Subject: [PATCH 0193/1588] profiles: wm: enable 'i3' helpers `flameshot` and `udiskie` provide some functionnality that would usually be found in an actual DE. It makes more sense to activate them here instead of in the home configuration, so I will remove it in the next commit. --- profiles/wm.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/profiles/wm.nix b/profiles/wm.nix index a2e9dd2..473d49d 100644 --- a/profiles/wm.nix +++ b/profiles/wm.nix @@ -18,6 +18,10 @@ in services.xserver.windowManager.i3.enable = true; # i3 settings my.home.wm.windowManager = "i3"; + # Screenshot tool + my.home.flameshot.enable = true; + # Auto disk mounter + my.home.udiskie.enable = true; }) ]; } From e7723d52759670875a235b4d7a899aeecc9a35cb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Jun 2021 17:34:16 +0200 Subject: [PATCH 0194/1588] home: wm: i3: remove 'udiskie' and 'flameshot' It makes more sense to activate those at the `profile` level. --- home/wm/i3.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 4c763df..f7a477c 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -67,11 +67,6 @@ let in { config = lib.mkIf isEnabled { - my.home = { - flameshot.enable = true; - udiskie.enable = true; - }; - home.packages = with pkgs; [ ambroisie.i3-get-window-criteria # little helper for i3 configuration arandr # Used by a mapping From a5d63dcf65bfb9020ecabb8225879229ed181298 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Jun 2021 18:10:37 +0200 Subject: [PATCH 0195/1588] modules: hardware: add mx-ergo This adds the ability to scroll using the ball, which is way better. --- modules/hardware/default.nix | 1 + modules/hardware/mx-ergo.nix | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 modules/hardware/mx-ergo.nix diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 1740080..8e5e003 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -5,6 +5,7 @@ imports = [ ./bluetooth.nix ./ergodox.nix + ./mx-ergo.nix ./networking.nix ./sound.nix ./upower.nix diff --git a/modules/hardware/mx-ergo.nix b/modules/hardware/mx-ergo.nix new file mode 100644 index 0000000..e4e55a1 --- /dev/null +++ b/modules/hardware/mx-ergo.nix @@ -0,0 +1,26 @@ +# Hold down the `next page` button to scroll using the ball +{ config, lib, ... }: +let + cfg = config.my.hardware.mx-ergo; +in +{ + options.my.hardware.mx-ergo = with lib; { + enable = mkEnableOption "MX Ergo configuration"; + }; + + config = lib.mkIf cfg.enable { + services.xserver = { + # This section must be *after* the one configured by `libinput` + # for the `ScrollMethod` configuration to not be overriden + inputClassSections = lib.mkAfter [ + '' + Identifier "MX Ergo scroll button configuration" + MatchProduct "MX Ergo" + MatchIsPointer "on" + Option "ScrollMethod" "button" + Option "ScrollButton" "9" + '' + ]; + }; + }; +} From 851da6b72f02289639a0253bcc291f253ff66dd0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Jun 2021 18:10:54 +0200 Subject: [PATCH 0196/1588] profiles: add devices --- profiles/default.nix | 1 + profiles/devices.nix | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 profiles/devices.nix diff --git a/profiles/default.nix b/profiles/default.nix index 30ec900..0ea4094 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -3,6 +3,7 @@ { imports = [ ./bluetooth.nix + ./devices.nix ./gtk.nix ./laptop.nix ./wm.nix diff --git a/profiles/devices.nix b/profiles/devices.nix new file mode 100644 index 0000000..54088b3 --- /dev/null +++ b/profiles/devices.nix @@ -0,0 +1,17 @@ +{ config, lib, ... }: +let + cfg = config.my.profiles.devices; +in +{ + options.my.profiles.devices = with lib; { + enable = mkEnableOption "devices profile"; + }; + + config = lib.mkIf cfg.enable { + my.hardware = { + ergodox.enable = true; + + mx-ergo.enable = true; + }; + }; +} From c6ab0e1b0078069a5494cb6f471ff245b88c9cd7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Jun 2021 18:11:42 +0200 Subject: [PATCH 0197/1588] machines: aramis: profiles: enable devices --- machines/aramis/profiles.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/profiles.nix b/machines/aramis/profiles.nix index 6d2bef7..4d2ac7d 100644 --- a/machines/aramis/profiles.nix +++ b/machines/aramis/profiles.nix @@ -3,6 +3,8 @@ my.profiles = { # Bluetooth configuration and GUI bluetooth.enable = true; + # Mouse and keyboard configuration + devices.enable = true; # GTK theme configuration gtk.enable = true; # Laptop specific configuration From 5bb28a9396da1423f83da383b55a03c03e24dabb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Jun 2021 18:29:08 +0200 Subject: [PATCH 0198/1588] home: firefox: tridactyl: add tabduplicate mapping --- home/firefox/tridactylrc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/firefox/tridactylrc b/home/firefox/tridactylrc index 869d6e5..d43965f 100644 --- a/home/firefox/tridactylrc +++ b/home/firefox/tridactylrc @@ -35,6 +35,9 @@ bindurl news.ycombinator.com ;F hint -Jtc .age > a bind gd tabdetach bind gD composite tabduplicate; tabdetach +" Duplicate a tab without detaching window +bind d tabduplicate + " Make yy use canonical links on the few websites that support them bind yy clipboard yankcanon " }}} From ce8138eb07918b6cf65a21083d71029f2ec71c84 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 9 Jun 2021 18:32:59 +0200 Subject: [PATCH 0199/1588] modules: services: matrix: add SMS verification --- modules/services/matrix.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/services/matrix.nix b/modules/services/matrix.nix index 8dc6cad..8e4c9a1 100644 --- a/modules/services/matrix.nix +++ b/modules/services/matrix.nix @@ -66,6 +66,8 @@ in resources = [{ names = [ "client" ]; compress = false; }]; } ]; + + account_threepid_delegates.msisdn = "https://vector.im"; }; services.nginx.virtualHosts = { From 4c4c8ea4e521be8d351ccdc7eee7bc627e1aed9c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 9 Jun 2021 18:33:54 +0200 Subject: [PATCH 0200/1588] modules: services: matrix: enable spaces --- modules/services/matrix.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/services/matrix.nix b/modules/services/matrix.nix index 8e4c9a1..68468f0 100644 --- a/modules/services/matrix.nix +++ b/modules/services/matrix.nix @@ -68,6 +68,11 @@ in ]; account_threepid_delegates.msisdn = "https://vector.im"; + + extraConfig = '' + experimental_features: + spaces_enabled: true + ''; }; services.nginx.virtualHosts = { From 4601a5525315f5c60e2c936be6a85f7d75ba8050 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 9 Jun 2021 18:53:04 +0200 Subject: [PATCH 0201/1588] secrets: matrix: add mail configuration --- secrets/default.nix | 5 ++++- secrets/matrix/mail.nix | Bin 0 -> 179 bytes 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 secrets/matrix/mail.nix diff --git a/secrets/default.nix b/secrets/default.nix index 0028899..8c34abe 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -32,7 +32,10 @@ else { lohr.secret = fileContents ./lohr/secret.txt; - matrix.secret = fileContents ./matrix/secret.txt; + matrix = { + mail = import ./matrix/mail.nix; + secret = fileContents ./matrix/secret.txt; + }; miniflux.password = fileContents ./miniflux/password.txt; diff --git a/secrets/matrix/mail.nix b/secrets/matrix/mail.nix new file mode 100644 index 0000000000000000000000000000000000000000..333f8b2aa31ee5f82ae1072b0e2a84aa5616fa8a GIT binary patch literal 179 zcmZQ@_Y83kiVO&0I4;eqE+@4AA3HVOMDeN{!Z|d n#GV7DtZVFx{B+-mDm+|J%xRa+_eA}PzUP8@2Y*;ipSv6Y(gjlV literal 0 HcmV?d00001 From 23e5ddd7f3f84a57978649303fdc9491e6722157 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 9 Jun 2021 18:54:16 +0200 Subject: [PATCH 0202/1588] modules: services: matrix: add mail configuration --- machines/porthos/services.nix | 1 + modules/services/matrix.nix | 44 +++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 9773007..44c0b50 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -65,6 +65,7 @@ in # Matrix backend and Element chat front-end matrix = { enable = true; + mail = my.secrets.matrix.mail; secret = my.secrets.matrix.secret; }; miniflux = { diff --git a/modules/services/matrix.nix b/modules/services/matrix.nix index 68468f0..fd4e90c 100644 --- a/modules/services/matrix.nix +++ b/modules/services/matrix.nix @@ -18,11 +18,46 @@ in { options.my.services.matrix = with lib; { enable = mkEnableOption "Matrix Synapse"; + secret = mkOption { type = types.str; example = "deadbeef"; description = "Shared secret to register users"; }; + + mail = { + host = mkOption { + type = types.str; + default = "smtp.migadu.com"; + example = "smtp.example.com"; + description = "Which host should be used for SMTP"; + }; + + port = mkOption { + type = types.port; + default = 587; + example = 25; + description = "Which port should be used for SMTP"; + }; + + username = mkOption { + type = types.str; + example = "matrix@example.com"; + description = "Which username should be used to connect"; + }; + + password = mkOption { + type = types.str; + example = "password"; + description = "Which password should be used to connect"; + }; + + notifFrom = mkOption { + type = types.str; + example = ""; + description = "Which address should be used for `From` field"; + }; + }; }; config = lib.mkIf cfg.enable { @@ -72,6 +107,15 @@ in extraConfig = '' experimental_features: spaces_enabled: true + + email: + smtp_host: "${cfg.mail.host}" + smtp_port: ${toString cfg.mail.port} + smtp_user: "${cfg.mail.username}" + smtp_pass: "${cfg.mail.password}" + notif_from: "${cfg.mail.notifFrom}" + # Refuse to connect unless the server supports STARTTLS. + require_transport_security: true ''; }; From 902539ea6db10d7bcc418fb248aa2bf0e0febad8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 12 Jun 2021 12:42:55 +0200 Subject: [PATCH 0203/1588] modules: system: documentation: include POSIX man --- modules/system/documentation.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/system/documentation.nix b/modules/system/documentation.nix index 5f58680..74886ad 100644 --- a/modules/system/documentation.nix +++ b/modules/system/documentation.nix @@ -35,6 +35,9 @@ in nixos.enable = cfg.nixos.enable; }; - environment.systemPackages = lib.optional cfg.man.linux pkgs.manpages; + environment.systemPackages = with pkgs; lib.optionals cfg.man.linux [ + man-pages + man-pages-posix + ]; }; } From 5d3204715aebb58a1673ccd12dc8bd7a77bdde67 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 12 Jun 2021 19:29:38 +0200 Subject: [PATCH 0204/1588] pkgs: bw-pass: fix 'meta.platforms' This makes use of 'keyutils' which only works on Linux. --- pkgs/bw-pass/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix index a5297d5..6f27bd3 100644 --- a/pkgs/bw-pass/default.nix +++ b/pkgs/bw-pass/default.nix @@ -39,7 +39,7 @@ stdenvNoCC.mkDerivation rec { description = "A simple script to query a password from bitwarden"; homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.unix; + platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; }; } From aec2e0806279c0faae6ebdbfa8f3c586bf3d63ba Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 12 Jun 2021 19:55:54 +0200 Subject: [PATCH 0205/1588] flake: filter 'packages' on system --- flake.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index b11dbed..b7fd152 100644 --- a/flake.nix +++ b/flake.nix @@ -135,7 +135,13 @@ inherit (self.checks.${system}.pre-commit) shellHook; }; - packages = import ./pkgs { inherit pkgs; }; + packages = + let + packages = import ./pkgs { inherit pkgs; }; + isSystem = pkg: builtins.elem system pkg.meta.platforms; + finalPackages = lib.flip lib.filterAttrs packages (_: isSystem); + in + finalPackages; }) // { overlay = self.overlays.pkgs; From a4cce8a561d065c601e682aba52c7b6e0488bc30 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 12 Jun 2021 20:12:19 +0200 Subject: [PATCH 0206/1588] secrets: clean-up 'default.nix' --- secrets/default.nix | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/secrets/default.nix b/secrets/default.nix index 8c34abe..754483d 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -1,14 +1,18 @@ -{ lib, pkgs, ... }: +{ lib, ... }: with lib; let - canaryHash = builtins.hashFile "sha256" ./canary; - expectedHash = - "9df8c065663197b5a1095122d48e140d3677d860343256abd5ab6e4fb4c696ab"; + throwOnCanary = + let + canaryHash = builtins.hashFile "sha256" ./canary; + expectedHash = + "9df8c065663197b5a1095122d48e140d3677d860343256abd5ab6e4fb4c696ab"; + in + if canaryHash != expectedHash + then throw "Secrets are not readable. Have you run `git-crypt unlock`?" + else id; in -if canaryHash != expectedHash then - abort "Secrets are not readable. Have you run `git-crypt unlock`?" -else { +throwOnCanary { options.my.secrets = mkOption { type = types.attrs; }; @@ -50,6 +54,6 @@ else { root.hashedPassword = fileContents ./users/root/password.txt; }; - wireguard = pkgs.callPackage ./wireguard { }; + wireguard = import ./wireguard { inherit lib; }; }; } From ecae28a72fcb81e6078a86a61b562cc970d5043a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 12 Jun 2021 20:35:28 +0200 Subject: [PATCH 0207/1588] home: secrets: clean-up 'default.nix' --- home/secrets/default.nix | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/home/secrets/default.nix b/home/secrets/default.nix index 3624472..ac0e5b5 100644 --- a/home/secrets/default.nix +++ b/home/secrets/default.nix @@ -2,13 +2,17 @@ with lib; let - canaryHash = builtins.hashFile "sha256" ./canary; - expectedHash = - "9df8c065663197b5a1095122d48e140d3677d860343256abd5ab6e4fb4c696ab"; + throwOnCanary = + let + canaryHash = builtins.hashFile "sha256" ./canary; + expectedHash = + "9df8c065663197b5a1095122d48e140d3677d860343256abd5ab6e4fb4c696ab"; + in + if canaryHash != expectedHash + then throw "Secrets are not readable. Have you run `git-crypt unlock`?" + else id; in -if canaryHash != expectedHash then - abort "Secrets are not readable. Have you run `git-crypt unlock`?" -else { +throwOnCanary { options.my.secrets = mkOption { type = types.attrs; }; From 40380be1392cad9228344159accd4594b0f1b434 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 13 Jun 2021 18:37:11 +0200 Subject: [PATCH 0208/1588] pkgs: add matrix-notifier --- pkgs/default.nix | 2 ++ pkgs/matrix-notifier/default.nix | 45 ++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 pkgs/matrix-notifier/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 7419501..ede7620 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -14,6 +14,8 @@ rec { lohr = pkgs.callPackage ./lohr { }; + matrix-notifier = pkgs.callPackage ./matrix-notifier { }; + nolimips = pkgs.callPackage ./nolimips { }; vimix-cursors = pkgs.callPackage ./vimix-cursors { }; diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix new file mode 100644 index 0000000..3f60455 --- /dev/null +++ b/pkgs/matrix-notifier/default.nix @@ -0,0 +1,45 @@ +{ curl, jq, fetchFromGitHub, lib, makeWrapper, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "matrix-notifier"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "ambroisie"; + repo = "matrix-notifier"; + rev = "v${version}"; + sha256 = "sha256-MbtxLUVL4bBS66TJTXky/0blR9lFKzLkRccck7Um2Co="; + }; + + phases = [ "installPhase" "fixupPhase" ]; + + nativeBuildInputs = [ + makeWrapper + ]; + + installPhase = '' + mkdir -p $out/bin + cp $src/${pname} $out/bin/${pname} + chmod a+x $out/bin/${pname} + ''; + + wrapperPath = lib.makeBinPath [ + curl + jq + ]; + + fixupPhase = '' + patchShebangs $out/bin/${pname} + wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = '' + A very simple bash script that can be used to send a message to + a Matrix room + ''; + homepage = "https://gitea.belanyi.fr/ambroisie/${pname}"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ ambroisie ]; + }; +} From dd1742b5b8a92be604fe9dce7758ec9a01793678 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 13 Jun 2021 18:38:06 +0200 Subject: [PATCH 0209/1588] ci: migrate to 'exec' runner Now that I have written a script to do the Matrix notification, I can do that. --- .drone.yml | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/.drone.yml b/.drone.yml index 7ad1c78..9c5d85d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,24 +1,27 @@ +--- kind: pipeline -name: check config +type: exec +name: NixOS config check steps: - - name: format check - image: nixos/nix - commands: - - nix-shell -p nixpkgs-fmt --run 'nixpkgs-fmt . --check' +- name: format check + commands: + - nix develop -c nixpkgs-fmt . - - name: notify - image: plugins/matrix - settings: - homeserver: - from_secret: matrix_homeserver - roomid: - from_secret: matrix_roomid - username: - from_secret: matrix_username - password: - from_secret: matrix_password - trigger: - status: - - failure - - success +- name: notifiy + commands: + - nix run .#matrix-notifier + environment: + ADDRESS: + from_secret: matrix_homeserver + ROOM: + from_secret: matrix_roomid + USER: + from_secret: matrix_username + PASS: + from_secret: matrix_password + when: + status: + - failure + - success +... From e4d3d8a9499271d6a6c9d5c8b2744c4610788b02 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 14 Jun 2021 16:41:28 +0200 Subject: [PATCH 0210/1588] modules: system: add boot And enable mounting `/tmp` as tmpfs by default. --- modules/system/boot.nix | 21 +++++++++++++++++++++ modules/system/default.nix | 1 + 2 files changed, 22 insertions(+) create mode 100644 modules/system/boot.nix diff --git a/modules/system/boot.nix b/modules/system/boot.nix new file mode 100644 index 0000000..0fed267 --- /dev/null +++ b/modules/system/boot.nix @@ -0,0 +1,21 @@ +{ config, lib, ... }: +let + cfg = config.my.system.boot; +in +{ + options.my.system.boot = with lib; { + tmp = { + clean = mkEnableOption "clean `/tmp` on boot."; + + tmpfs = my.mkDisableOption "mount `/tmp` as a tmpfs on boot."; + }; + }; + + config = { + boot = { + cleanTmpDir = cfg.tmp.clean; + + tmpOnTmpfs = cfg.tmp.tmpfs; + }; + }; +} diff --git a/modules/system/default.nix b/modules/system/default.nix index 48a0770..a9b251b 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -3,6 +3,7 @@ { imports = [ + ./boot.nix ./documentation.nix ./language.nix ./media.nix From 48859859ebaed24c3b314ea41e04c7485478274e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 15 Jun 2021 17:45:17 +0200 Subject: [PATCH 0211/1588] home: wm: screen-lock: use actual assertion Instead of hijacking the type verification, use an assertion. --- home/wm/default.nix | 8 +------- home/wm/screen-lock.nix | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/home/wm/default.nix b/home/wm/default.nix index 508fe76..2547a4e 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -65,13 +65,7 @@ in enable = my.mkDisableOption "Notify when about to lock the screen"; delay = mkOption { - type = with types; - addCheck int (x: - let - cfg = config.my.home.wm.screen-lock.notify; - cornerCfg = config.my.home.wm.screen-lock.cornerLock; - in - (cfg.enable && cornerCfg.enable) -> cornerCfg.delay >= x); + type = types.int; default = 5; example = 15; description = '' diff --git a/home/wm/screen-lock.nix b/home/wm/screen-lock.nix index 720e73a..9201f40 100644 --- a/home/wm/screen-lock.nix +++ b/home/wm/screen-lock.nix @@ -12,6 +12,22 @@ let in { config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = + let + inherit (cfg) cornerLock notify; + bothEnabled = cornerLock.enable && notify.enable; + cornerLockHigherThanNotify = cornerLock.delay >= notify.delay; + in + bothEnabled -> cornerLockHigherThanNotify; + message = '' + `config.my.home.wm.notify.delay` cannot have a value higher than + `config.my.home.wm.cornerLock.delay`. + ''; + } + ]; + services.screen-locker = { enable = true; From b7301b54c0cc61a21e0d6c4e3287b2219109ab6b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 15 Jun 2021 18:33:16 +0200 Subject: [PATCH 0212/1588] pkgs: matrix-notifier: 0.1.0 -> 0.1.2 --- pkgs/matrix-notifier/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index 3f60455..e4d4c54 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -1,13 +1,13 @@ { curl, jq, fetchFromGitHub, lib, makeWrapper, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "matrix-notifier"; - version = "0.1.0"; + version = "0.1.2"; src = fetchFromGitHub { owner = "ambroisie"; repo = "matrix-notifier"; rev = "v${version}"; - sha256 = "sha256-MbtxLUVL4bBS66TJTXky/0blR9lFKzLkRccck7Um2Co="; + sha256 = "sha256-kEOwROIBzjet0R82/IknRSfCLf56Pp2LBSn3QzCigAM="; }; phases = [ "installPhase" "fixupPhase" ]; From 9bb09ee8f4e08dc4ad58d955f4434b480aa621d6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 15 Jun 2021 18:17:37 +0200 Subject: [PATCH 0213/1588] modules: services: indexers: limit Jackett memory --- modules/services/indexers.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/services/indexers.nix b/modules/services/indexers.nix index 07e0f52..11d525c 100644 --- a/modules/services/indexers.nix +++ b/modules/services/indexers.nix @@ -21,6 +21,15 @@ in enable = true; }; + # Jackett wants to eat *all* my RAM if left to its own devices + systemd.services.jackett = { + serviceConfig = { + MemoryHigh = "15%"; + MemoryMax = "25%"; + }; + }; + + services.nginx.virtualHosts."${jackettDomain}" = lib.mkIf cfg.jackett.enable { forceSSL = true; From 5fa2b1fed9b049e56889bb4fde5e0a3b71c55ea8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 16 Jun 2021 20:08:44 +0200 Subject: [PATCH 0214/1588] pkgs: use 'lib' as first input This is the idiomatic style in nixpkgs. --- pkgs/bw-pass/default.nix | 2 +- pkgs/comma/default.nix | 2 +- pkgs/diff-flake/default.nix | 2 +- pkgs/ff2mpv-go/default.nix | 2 +- pkgs/havm/default.nix | 2 +- pkgs/i3-get-window-criteria/default.nix | 2 +- pkgs/lohr/default.nix | 2 +- pkgs/matrix-notifier/default.nix | 2 +- pkgs/nolimips/default.nix | 2 +- pkgs/unbound-zones-adblock/default.nix | 2 +- pkgs/unified-hosts-lists/default.nix | 2 +- pkgs/vimix-cursors/default.nix | 2 +- pkgs/volantes-cursors/default.nix | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix index 6f27bd3..95ae0da 100644 --- a/pkgs/bw-pass/default.nix +++ b/pkgs/bw-pass/default.nix @@ -1,4 +1,4 @@ -{ bitwarden-cli, coreutils, jq, keyutils, lib, makeWrapper, rofi, shellcheck, stdenvNoCC }: +{ lib, bitwarden-cli, coreutils, jq, keyutils, makeWrapper, rofi, shellcheck, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "bw-pass"; version = "0.1.0"; diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix index deab009..f932863 100644 --- a/pkgs/comma/default.nix +++ b/pkgs/comma/default.nix @@ -1,4 +1,4 @@ -{ fzf, lib, makeWrapper, nix-index, shellcheck, stdenvNoCC }: +{ lib, fzf, makeWrapper, nix-index, shellcheck, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "comma"; version = "0.1.0"; diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 4cd7777..090aa6d 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -1,4 +1,4 @@ -{ coreutils, git, gnused, makeWrapper, lib, shellcheck, stdenvNoCC }: +{ lib, coreutils, git, gnused, makeWrapper, shellcheck, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "diff-flake"; version = "0.1.0"; diff --git a/pkgs/ff2mpv-go/default.nix b/pkgs/ff2mpv-go/default.nix index 9efcf13..3dc229c 100644 --- a/pkgs/ff2mpv-go/default.nix +++ b/pkgs/ff2mpv-go/default.nix @@ -1,4 +1,4 @@ -{ buildGoModule, fetchgit, lib, mpv }: +{ lib, buildGoModule, fetchgit, mpv }: buildGoModule rec { pname = "ff2mpv-go"; version = "1.0.1"; diff --git a/pkgs/havm/default.nix b/pkgs/havm/default.nix index 97a708f..d8856a5 100644 --- a/pkgs/havm/default.nix +++ b/pkgs/havm/default.nix @@ -1,4 +1,4 @@ -{ fetchurl, ghc, lib, stdenv, which }: +{ lib, fetchurl, ghc, stdenv, which }: stdenv.mkDerivation rec { pname = "havm"; version = "0.28"; diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix index 65cdb0e..2e7ce03 100644 --- a/pkgs/i3-get-window-criteria/default.nix +++ b/pkgs/i3-get-window-criteria/default.nix @@ -1,4 +1,4 @@ -{ coreutils, gnused, makeWrapper, lib, shellcheck, stdenvNoCC, xorg }: +{ lib, coreutils, gnused, makeWrapper, shellcheck, stdenvNoCC, xorg }: stdenvNoCC.mkDerivation rec { pname = "i3-get-window-criteria"; version = "0.1.0"; diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix index 34182dd..c71dbd0 100644 --- a/pkgs/lohr/default.nix +++ b/pkgs/lohr/default.nix @@ -1,4 +1,4 @@ -{ fetchFromGitHub, lib, rustPlatform }: +{ lib, fetchFromGitHub, rustPlatform }: rustPlatform.buildRustPackage rec { pname = "lohr"; version = "0.4.0"; diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index e4d4c54..92cc964 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -1,4 +1,4 @@ -{ curl, jq, fetchFromGitHub, lib, makeWrapper, stdenvNoCC }: +{ lib, curl, jq, fetchFromGitHub, makeWrapper, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "matrix-notifier"; version = "0.1.2"; diff --git a/pkgs/nolimips/default.nix b/pkgs/nolimips/default.nix index 49cd1b0..2a1dc33 100644 --- a/pkgs/nolimips/default.nix +++ b/pkgs/nolimips/default.nix @@ -1,4 +1,4 @@ -{ fetchurl, gnulib, lib, stdenv }: +{ lib, fetchurl, gnulib, stdenv }: stdenv.mkDerivation rec { pname = "nolimips"; version = "0.11"; diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index e8afbe1..2f7ac3f 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -1,4 +1,4 @@ -{ fetchFromGitHub, gawk, lib, stdenvNoCC, unified-hosts-lists }: +{ lib, fetchFromGitHub, gawk, stdenvNoCC, unified-hosts-lists }: stdenvNoCC.mkDerivation rec { name = "unbound-zones-adblock"; version = unified-hosts-lists.version; diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index 2c49924..4801ad0 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -1,4 +1,4 @@ -{ fetchFromGitHub, lib, stdenvNoCC }: +{ lib, fetchFromGitHub, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "unified-hosts-lists"; version = "3.6.4"; diff --git a/pkgs/vimix-cursors/default.nix b/pkgs/vimix-cursors/default.nix index 78057ef..1bbbe4e 100644 --- a/pkgs/vimix-cursors/default.nix +++ b/pkgs/vimix-cursors/default.nix @@ -1,4 +1,4 @@ -{ python3, fetchFromGitHub, inkscape, lib, stdenvNoCC, xcursorgen }: +{ lib, python3, fetchFromGitHub, inkscape, stdenvNoCC, xcursorgen }: let py = python3.withPackages (ps: with ps; [ cairosvg ]); in diff --git a/pkgs/volantes-cursors/default.nix b/pkgs/volantes-cursors/default.nix index 08cec66..e300a36 100644 --- a/pkgs/volantes-cursors/default.nix +++ b/pkgs/volantes-cursors/default.nix @@ -1,4 +1,4 @@ -{ fetchFromGitHub, inkscape, lib, stdenvNoCC, xcursorgen }: +{ lib, fetchFromGitHub, inkscape, stdenvNoCC, xcursorgen }: stdenvNoCC.mkDerivation rec { pname = "volantes-cursors"; version = "unstable-2020-06-06"; From 54d7c713a8e20903df5e096504fc74a0f7228b22 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 16 Jun 2021 21:17:45 +0200 Subject: [PATCH 0215/1588] pkgs: matrix-notifier: 0.1.2 -> 0.2.0 `pandoc` is now a dependency. --- pkgs/matrix-notifier/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index 92cc964..a7b3a3c 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -1,13 +1,13 @@ -{ lib, curl, jq, fetchFromGitHub, makeWrapper, stdenvNoCC }: +{ lib, curl, jq, fetchFromGitHub, makeWrapper, pandoc, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "matrix-notifier"; - version = "0.1.2"; + version = "0.2.0"; src = fetchFromGitHub { owner = "ambroisie"; repo = "matrix-notifier"; rev = "v${version}"; - sha256 = "sha256-kEOwROIBzjet0R82/IknRSfCLf56Pp2LBSn3QzCigAM="; + sha256 = "sha256-JiKPDrr9wyD2q5Vsac+OkFdvrDkx6mj/oC7XDVnka74="; }; phases = [ "installPhase" "fixupPhase" ]; @@ -25,6 +25,7 @@ stdenvNoCC.mkDerivation rec { wrapperPath = lib.makeBinPath [ curl jq + pandoc ]; fixupPhase = '' From 1d26e5146c7af3ba35ff9d4b218b2dd2385d877b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 22 Jun 2021 19:39:35 +0200 Subject: [PATCH 0216/1588] home: wm: dunst: add max icon size Otherwise I end up with icons that are way too big... --- home/wm/dunst.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/dunst.nix b/home/wm/dunst.nix index 334396c..60e8604 100644 --- a/home/wm/dunst.nix +++ b/home/wm/dunst.nix @@ -16,6 +16,7 @@ in frame_width = 3; # small frame geometry = "300x50-15+49"; markup = "full"; # subset of HTML + max_icon_size = 32; # avoid icons that are too big padding = 6; # distance between text and bubble border progress_bar = true; # show a progress bar in notification bubbles separator_color = "frame"; # use frame color to separate bubbles From 2b200fc98e4b79fbc7d77fe715b50f11f0058e16 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 22 Jun 2021 19:47:53 +0200 Subject: [PATCH 0217/1588] home: wm: dunst: add line wrapping Once again, trying to make them actually readable. --- home/wm/dunst.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/dunst.nix b/home/wm/dunst.nix index 60e8604..2c3d2f4 100644 --- a/home/wm/dunst.nix +++ b/home/wm/dunst.nix @@ -21,6 +21,7 @@ in progress_bar = true; # show a progress bar in notification bubbles separator_color = "frame"; # use frame color to separate bubbles sort = true; # sort messages by urgency + word_wrap = true; # Break long lines to make them readable }; urgency_low = { From 43786904b42fab97e8aeafeda9cfe75cf9b8d0b0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 23 Jun 2021 23:06:15 +0200 Subject: [PATCH 0218/1588] home: wm: i3: enable rofi bindings when applicable --- home/wm/i3.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index f7a477c..7b95e4a 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -187,13 +187,13 @@ in # Focus child container "${modifier}+a" = "focus child"; } - { + (lib.optionalAttrs config.my.home.wm.rofi.enable { # Rofi tools "${modifier}+d" = "exec rofi -show drun -disable-history"; "${modifier}+Shift+d" = "exec rofi -show run -disable-history"; "${modifier}+p" = "exec --no-startup-id flameshot gui"; "${modifier}+Shift+p" = "exec rofi -show emoji"; - } + }) ( # Changing container focus genMovementBindings ( From e8f664c94932041cf30a72e935b45a305c5a7aa2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 23 Jun 2021 23:08:19 +0200 Subject: [PATCH 0219/1588] home: wm: dunst: use rofi as 'dmenu' when enabled --- home/wm/dunst.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/wm/dunst.nix b/home/wm/dunst.nix index 2c3d2f4..e90362a 100644 --- a/home/wm/dunst.nix +++ b/home/wm/dunst.nix @@ -11,6 +11,10 @@ in global = { alignment = "center"; # Put message in the middle of the box browser = "xdg-open"; # use default browser to open links + dmenu = + lib.mkIf + config.my.home.wm.rofi.enable + "rofi -p dunst -dmenu"; # use rofi for menu follow = "keyboard"; # follow keyboard focus font = "Monospace 8"; # Simple looking font frame_width = 3; # small frame From 0970ab71ebffb8820e35c007b1644e53b7f18c38 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 23 Jun 2021 23:13:39 +0200 Subject: [PATCH 0220/1588] home: zsh: explicitly opt out of extended history --- home/zsh/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 8d25552..b602149 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -14,6 +14,7 @@ in history = { size = 500000; + extended = false; ignoreSpace = true; ignoreDups = true; share = true; From 0ff730bf44e067e48b93d93deee4fb79c232a6a8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 23 Jun 2021 23:14:01 +0200 Subject: [PATCH 0221/1588] home: zsh: explicitly set history save size Turns out the `history.save` limit is for what is *loaded into memory*, not what is written to disk. --- home/zsh/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index b602149..96ec251 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -14,6 +14,7 @@ in history = { size = 500000; + save = 500000; extended = false; ignoreSpace = true; ignoreDups = true; From 76cac9af51269fc9cf94c89d71071ab132a520bc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Jun 2021 20:40:34 +0200 Subject: [PATCH 0222/1588] modules: change username configuration option It makes more sense to have a `my.user` option. --- flake.nix | 2 +- modules/default.nix | 12 +++++++----- modules/home.nix | 2 +- modules/system/users.nix | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/flake.nix b/flake.nix index b7fd152..4f0460f 100644 --- a/flake.nix +++ b/flake.nix @@ -72,7 +72,7 @@ } home-manager.nixosModules.home-manager ({ config, ... }: { - home-manager.users.${config.my.username} = import ./home; + home-manager.users.${config.my.user.name} = import ./home; # Nix Flakes compatibility home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; diff --git a/modules/default.nix b/modules/default.nix index 46c2e8e..061da01 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -10,11 +10,13 @@ ]; options.my = with lib; { - username = mkOption { - type = types.str; - default = "ambroisie"; - example = "alice"; - description = "my username"; + user = { + name = mkOption { + type = types.str; + default = "ambroisie"; + example = "alice"; + description = "my username"; + }; }; }; } diff --git a/modules/home.nix b/modules/home.nix index a6fbc80..be0aedf 100644 --- a/modules/home.nix +++ b/modules/home.nix @@ -1,7 +1,7 @@ # Simplify setting home options { config, lib, ... }: let - actualPath = [ "home-manager" "users" config.my.username "my" "home" ]; + actualPath = [ "home-manager" "users" config.my.user.name "my" "home" ]; aliasPath = [ "my" "home" ]; in { diff --git a/modules/system/users.nix b/modules/system/users.nix index 4493c75..3897ad7 100644 --- a/modules/system/users.nix +++ b/modules/system/users.nix @@ -20,8 +20,8 @@ in inherit (secrets.users.root) hashedPassword; }; - ${config.my.username} = { - inherit (secrets.users.${config.my.username}) hashedPassword; + ${config.my.user.name} = { + inherit (secrets.users.${config.my.user.name}) hashedPassword; description = "Bruno BELANYI"; isNormalUser = true; shell = pkgs.zsh; From 85ff634331f424624a32bf30d856a58e4d243e55 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Jun 2021 20:43:19 +0200 Subject: [PATCH 0223/1588] modules: move home configuration from flake --- flake.nix | 7 ------- modules/default.nix | 4 ++++ modules/home.nix | 19 ++++++++++++++++--- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/flake.nix b/flake.nix index 4f0460f..2b0052a 100644 --- a/flake.nix +++ b/flake.nix @@ -70,13 +70,6 @@ nur.overlay ]; } - home-manager.nixosModules.home-manager - ({ config, ... }: { - home-manager.users.${config.my.user.name} = import ./home; - # Nix Flakes compatibility - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - }) # Include generic settings ./modules # Include bundles of settings diff --git a/modules/default.nix b/modules/default.nix index 061da01..798fb0d 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -17,6 +17,10 @@ example = "alice"; description = "my username"; }; + + home = { + enable = my.mkDisableOption "home-manager configuration"; + }; }; }; } diff --git a/modules/home.nix b/modules/home.nix index be0aedf..8ae1b3e 100644 --- a/modules/home.nix +++ b/modules/home.nix @@ -1,11 +1,24 @@ -# Simplify setting home options -{ config, lib, ... }: +{ config, inputs, lib, ... }: let actualPath = [ "home-manager" "users" config.my.user.name "my" "home" ]; aliasPath = [ "my" "home" ]; + + cfg = config.my.user.home; in { imports = [ - (lib.mkAliasOptionModule aliasPath actualPath) + inputs.home-manager.nixosModule # enable home-manager options + (lib.mkAliasOptionModule aliasPath actualPath) # simplify setting home options ]; + + config = lib.mkIf cfg.enable { + home-manager = { + # Not a fan of out-of-directory imports, but this is a good exception + users.${config.my.user.name} = import ../home; + + # Nix Flakes compatibility + useGlobalPkgs = true; + useUserPackages = true; + }; + }; } From a5d3f7f861d9424ead0b39a2ab139f96c9c1b432 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Jun 2021 18:38:11 +0200 Subject: [PATCH 0224/1588] home: wm: i3: also toggle xss-lock --- home/wm/i3.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 7b95e4a..14ec64e 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -58,9 +58,11 @@ let #!/bin/sh if ${systemctlUser} is-active xautolock-session.service; then ${systemctlUser} stop --user xautolock-session.service + xset s off ${notify} "Disabled Xautolock" else ${systemctlUser} start xautolock-session.service + xset s on ${notify} "Enabled Xautolock" fi ''; From 4b6f6423db86f0222bb2472925a29597b9f25e0f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Jun 2021 23:35:31 +0200 Subject: [PATCH 0225/1588] modules: hardware: sound: refactor options Do not enable ALSA when using pipewire. Ensure that both pulseaudio and pipewire are not configured at the same time. --- machines/aramis/sound.nix | 2 -- modules/hardware/sound.nix | 22 +++++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/machines/aramis/sound.nix b/machines/aramis/sound.nix index f9dd1b0..41ff7f7 100644 --- a/machines/aramis/sound.nix +++ b/machines/aramis/sound.nix @@ -1,8 +1,6 @@ { ... }: { my.hardware.sound = { - enable = true; - pipewire = { enable = true; }; diff --git a/modules/hardware/sound.nix b/modules/hardware/sound.nix index 3a12843..3a48641 100644 --- a/modules/hardware/sound.nix +++ b/modules/hardware/sound.nix @@ -4,8 +4,6 @@ let in { options.my.hardware.sound = with lib; { - enable = mkEnableOption "sound configuration"; - pipewire = { enable = mkEnableOption "pipewire configuration"; }; @@ -15,10 +13,21 @@ in }; }; - config = lib.mkIf cfg.enable (lib.mkMerge [ - # Basic configuration + config = (lib.mkMerge [ + # Sanity check { - sound.enable = true; + assertions = [ + { + assertion = builtins.all (lib.id) [ + (cfg.pipewire.enable -> !cfg.pulse.enable) + (cfg.pulse.enable -> !cfg.pipewire.enable) + ]; + message = '' + `config.my.hardware.sound.pipewire.enable` and + `config.my.hardware.sound.pulse.enable` are incompatible. + ''; + } + ]; } (lib.mkIf cfg.pipewire.enable { @@ -49,6 +58,9 @@ in # Pulseaudio setup (lib.mkIf cfg.pulse.enable { + # ALSA + sound.enable = true; + hardware.pulseaudio.enable = true; }) ]); From 7f8b6613097b6cd63c493dfa7a2b5750ca233499 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 27 Jun 2021 19:48:26 +0200 Subject: [PATCH 0226/1588] secrets: use more specific type I will amend it if I need more types, but for now this is fine. --- secrets/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/secrets/default.nix b/secrets/default.nix index 754483d..4a4aa68 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -14,7 +14,15 @@ let in throwOnCanary { options.my.secrets = mkOption { - type = types.attrs; + type = + let + valueType = with types; oneOf [ + int + str + (attrsOf valueType) + ]; + in + valueType; }; config.my.secrets = { From fb2ec8cd6bc1a6294059942f05ff490f095db940 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 27 Jun 2021 19:48:42 +0200 Subject: [PATCH 0227/1588] home: secrets: use more specific type I will amend it if I need more types, but for now this is fine. --- home/secrets/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/home/secrets/default.nix b/home/secrets/default.nix index ac0e5b5..76ec2cf 100644 --- a/home/secrets/default.nix +++ b/home/secrets/default.nix @@ -14,7 +14,15 @@ let in throwOnCanary { options.my.secrets = mkOption { - type = types.attrs; + type = + let + valueType = with types; oneOf [ + int + str + (attrsOf valueType) + ]; + in + valueType; }; config.my.secrets = { From 62488bc6710acdca201ec6491e3e1999c515a779 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 27 Jun 2021 19:51:04 +0200 Subject: [PATCH 0228/1588] home: firefox: add sponsorblock --- home/firefox/firefox.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/firefox/firefox.nix b/home/firefox/firefox.nix index d5ecd53..723ecc8 100644 --- a/home/firefox/firefox.nix +++ b/home/firefox/firefox.nix @@ -46,6 +46,7 @@ in https-everywhere i-dont-care-about-cookies reddit-enhancement-suite + sponsorblock ublock-origin ] ++ lib.optional (cfg.tridactyl.enable) tridactyl From 8d5c9c58d80bc6ca6078a5c734cb7d59c5031eab Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 30 Jun 2021 20:07:55 +0200 Subject: [PATCH 0229/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 29aabff..1fead41 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "futils": { "locked": { - "lastModified": 1620759905, - "narHash": "sha256-WiyWawrgmyN0EdmiHyG2V+fqReiVi8bM9cRdMaKQOFg=", + "lastModified": 1623875721, + "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", "owner": "numtide", "repo": "flake-utils", - "rev": "b543720b25df6ffdfcf9227afafc5b8c1fabfae8", + "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1622145920, - "narHash": "sha256-/tt6IApLuVcGP5auy4zjLzfm5+MBHYLS3Nauvv2U2EQ=", + "lastModified": 1625016439, + "narHash": "sha256-zHf7iCU9nYd6/7xwYx5gwDzXdXcJ9RUagdy0IgX39sQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "0e6c61a44092e98ba1d75b41f4f947843dc7814d", + "rev": "9ad0024d4d292c628d4c9a50c2347f23418d7000", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1622194753, - "narHash": "sha256-76qtvFp/vFEz46lz5iZMJ0mnsWQYmuGYlb0fHgKqqMg=", + "lastModified": 1624922035, + "narHash": "sha256-OiIxJQuMRkICxaUwY3xMBbrPPu20de/n7tVYnWzLvS4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "540dccb2aeaffa9dc69bfdc41c55abd7ccc6baa3", + "rev": "3a8d7958a610cd3fec3a6f424480f91a1b259185", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nur": { "locked": { - "lastModified": 1622221304, - "narHash": "sha256-aU/BdVGUverHNY9BOmDaAo21G8k9ndhzzjX1RSY1im0=", + "lastModified": 1625064961, + "narHash": "sha256-ErII8vNW+04+eIGtViN8sSZs573I8PQiw6TWd1E0zoo=", "owner": "nix-community", "repo": "NUR", - "rev": "8d8c59d767d854a1bc6fd08952529e10438eaa8d", + "rev": "5f0603506c26d7c97c91e8c6ae27e07f3ab2f0e8", "type": "github" }, "original": { @@ -79,11 +79,11 @@ ] }, "locked": { - "lastModified": 1621411868, - "narHash": "sha256-R+7OQ2JYFCb3E7Jl7LhRifzMVCR6Gl8R98zYsNhZtJ8=", + "lastModified": 1624971177, + "narHash": "sha256-Amf/nBj1E77RmbSSmV+hg6YOpR+rddCbbVgo5C7BS0I=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "2e7fac06108b4fc81f5ff9ed9a02bc4f6ede7001", + "rev": "397f0713d007250a2c7a745e555fa16c5dc8cadb", "type": "github" }, "original": { From 6ff1a53a353d92f01dd3751c817c7ac6ce42f90f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 22 Jun 2021 17:59:47 +0200 Subject: [PATCH 0230/1588] home: mail: add himalaya This mail client is very KISS. I like it. --- home/mail/accounts.nix | 4 ++++ home/mail/default.nix | 5 +++++ home/mail/himalaya.nix | 23 +++++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 home/mail/himalaya.nix diff --git a/home/mail/accounts.nix b/home/mail/accounts.nix index 7f1ad02..2eecb6d 100644 --- a/home/mail/accounts.nix +++ b/home/mail/accounts.nix @@ -15,6 +15,10 @@ let inherit primary; + himalaya = { + enable = cfg.himalaya.enable; + }; + msmtp = { enable = cfg.msmtp.enable; }; diff --git a/home/mail/default.nix b/home/mail/default.nix index cc81d0c..3ec0c9a 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -7,12 +7,17 @@ in { imports = [ ./accounts.nix + ./himalaya.nix ./msmtp.nix ]; options.my.home.mail = with lib; { enable = my.mkDisableOption "email configuration"; + himalaya = { + enable = mkRelatedOption "himalaya configuration"; + }; + msmtp = { enable = mkRelatedOption "msmtp configuration"; }; diff --git a/home/mail/himalaya.nix b/home/mail/himalaya.nix new file mode 100644 index 0000000..c2d3b05 --- /dev/null +++ b/home/mail/himalaya.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.mail.himalaya; +in +{ + config.programs.himalaya = lib.mkIf cfg.enable { + enable = true; + + settings = { + notify-cmd = + let + notify-send = "${pkgs.libnotify}/bin/notify-send"; + in + pkgs.writeScript "mail-notifier" '' + SENDER="$1" + SUBJECT="$2" + ${notify-send} \ + -c himalaya \ + -- "$(printf 'Received email from %s\n\n%s' "$SENDER" "$SUBJECT")" + ''; + }; + }; +} From 1a492c6eb87bd5a8dcfb5c7203eb73a1ef0e40e1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 27 Jun 2021 00:54:55 +0200 Subject: [PATCH 0231/1588] home: direnv: update to new option name And enable the flakes option. I don't actually use this on my own projects, but it could be useful for other projects that I contribute to. --- home/direnv.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/home/direnv.nix b/home/direnv.nix index d81cf46..cf32628 100644 --- a/home/direnv.nix +++ b/home/direnv.nix @@ -9,7 +9,11 @@ in config.programs.direnv = lib.mkIf cfg.enable { enable = true; - # A better `use_nix` - enableNixDirenvIntegration = true; + nix-direnv = { + # A better `use_nix` + enable = true; + # And `use_flake` + enableFlakes = true; + }; }; } From 222d9f789dd47d6072f039a34355b8bd90fdd16e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 3 Jul 2021 20:46:24 +0200 Subject: [PATCH 0232/1588] overlays: transgui: correctly use previous patches --- overlays/transgui-fix-duplicate-status/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/overlays/transgui-fix-duplicate-status/default.nix b/overlays/transgui-fix-duplicate-status/default.nix index 6190306..85036ce 100644 --- a/overlays/transgui-fix-duplicate-status/default.nix +++ b/overlays/transgui-fix-duplicate-status/default.nix @@ -1,7 +1,7 @@ final: prev: { transgui = prev.transgui.overrideAttrs (oldAttrs: { - patches = [ + patches = (oldAttrs.patches or [ ]) ++ [ (final.fetchpatch { url = "https://patch-diff.githubusercontent.com/raw/transmission-remote-gui/transgui/pull/1354.patch"; sha256 = "sha256-Q4DAduqnTtNI0Zw9NIWpE8L0G8RusvPbZ3iW29k7XXA="; From cdbd37b506e4e4987916501b4243dcb4151db200 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 3 Jul 2021 21:42:45 +0200 Subject: [PATCH 0233/1588] pkgs: bw-pass: change password prompt --- pkgs/bw-pass/bw-pass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/bw-pass/bw-pass b/pkgs/bw-pass/bw-pass index 16c931e..3fddf1f 100755 --- a/pkgs/bw-pass/bw-pass +++ b/pkgs/bw-pass/bw-pass @@ -17,7 +17,7 @@ error_out() { login() { local PASSWORD - PASSWORD="$(prompt_pass "Password")" || error_out "Cannot prompt password" + PASSWORD="$(prompt_pass "Bitwarden Password")" || error_out "Cannot prompt password" export BW_SESSION BW_SESSION="$(bw unlock "$PASSWORD" --raw)" || error_out "Cannot unlock" } From 5fcc96ab779c175bcfa6496b139f9dc6bd833e18 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 13 Jul 2021 17:43:26 +0200 Subject: [PATCH 0234/1588] modules: services: matrix: SSL only for server This is a requirement anyway for homeservers, and the `forceSSL` option tried to create a redirect for non-SSL traffic, except the `listen` option only provided SSL endpoints anyway, so this resulted in additional rules in the nginx config looking like this: ```nginx server { server_name matrix.belanyi.fr ; location /.well-known/acme-challenge { root /var/lib/acme/acme-challenge; auth_basic off; } location / { return 301 https://$host$request_uri; } } ``` --- modules/services/matrix.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/services/matrix.nix b/modules/services/matrix.nix index fd4e90c..8f8c82e 100644 --- a/modules/services/matrix.nix +++ b/modules/services/matrix.nix @@ -121,7 +121,7 @@ in services.nginx.virtualHosts = { "matrix.${domain}" = { - forceSSL = true; + onlySSL = true; useACMEHost = domain; locations = @@ -149,7 +149,7 @@ in # same as above, but listening on the federation port "matrix.${domain}_federation" = rec { - forceSSL = true; + onlySSL = true; serverName = "matrix.${domain}"; useACMEHost = domain; From 7469fe0063f63621d9ac8877b95812994839b02a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 13 Jul 2021 17:50:41 +0200 Subject: [PATCH 0235/1588] home: git: use topological order in log It is the one that makes most sense, rather than some kind of date order... --- home/git/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/git/default.nix b/home/git/default.nix index 718ff27..156731e 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -18,7 +18,7 @@ in package = pkgs.gitAndTools.gitFull; aliases = { - lol = "log --graph --decorate --pretty=oneline --abbrev-commit"; + lol = "log --graph --decorate --pretty=oneline --abbrev-commit --topo-order"; lola = "lol --all"; assume = "update-index --assume-unchanged"; unassume = "update-index --no-assume-unchanged"; From 9fa16a9b334b8602a3861cb7a8ba5835eea2626a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 13 Jul 2021 19:08:54 +0200 Subject: [PATCH 0236/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 1fead41..075d5a4 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1625016439, - "narHash": "sha256-zHf7iCU9nYd6/7xwYx5gwDzXdXcJ9RUagdy0IgX39sQ=", + "lastModified": 1626073055, + "narHash": "sha256-vocByfpVu6m9zvtJugDvmd6/9iT2HJuG4tmDICKd0lI=", "owner": "nix-community", "repo": "home-manager", - "rev": "9ad0024d4d292c628d4c9a50c2347f23418d7000", + "rev": "775cb20bd4af7781fbf336fb201df02ee3d544bb", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1624922035, - "narHash": "sha256-OiIxJQuMRkICxaUwY3xMBbrPPu20de/n7tVYnWzLvS4=", + "lastModified": 1626046891, + "narHash": "sha256-Zt8saH+hAehXskW0iFAzk+iMillYoFBxvLReYNqGT9E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3a8d7958a610cd3fec3a6f424480f91a1b259185", + "rev": "d8f8f31af9d77a48220e4e8a301d1e79774cb7d2", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nur": { "locked": { - "lastModified": 1625064961, - "narHash": "sha256-ErII8vNW+04+eIGtViN8sSZs573I8PQiw6TWd1E0zoo=", + "lastModified": 1626192709, + "narHash": "sha256-REQ9ByMk4crAX37e8YDZOBl9Kxn+nTfnnLwwxczcoP0=", "owner": "nix-community", "repo": "NUR", - "rev": "5f0603506c26d7c97c91e8c6ae27e07f3ab2f0e8", + "rev": "564ec91b61dab796f1af44502ff3a9c124f4d6da", "type": "github" }, "original": { From c910b643da35010d056c265d0e65b26620619191 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 13 Jul 2021 19:09:27 +0200 Subject: [PATCH 0237/1588] modules: services: add monitoring This includes a dashboard to monitor system ressources, using Prometheus. --- modules/services/default.nix | 1 + modules/services/monitoring.nix | 116 ++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 modules/services/monitoring.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 424e26f..a0f11fd 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -14,6 +14,7 @@ ./lohr.nix ./matrix.nix ./miniflux.nix + ./monitoring.nix ./nextcloud.nix ./nginx.nix ./pirate.nix diff --git a/modules/services/monitoring.nix b/modules/services/monitoring.nix new file mode 100644 index 0000000..8146eca --- /dev/null +++ b/modules/services/monitoring.nix @@ -0,0 +1,116 @@ +# Grafana dashboards for all the things! +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.monitoring; + + domain = config.networking.domain; + grafanaDomain = "monitoring.${config.networking.domain}"; +in +{ + options.my.services.monitoring = with lib; { + enable = mkEnableOption "monitoring"; + + grafana = { + port = mkOption { + type = types.port; + default = 9500; + example = 3001; + description = "Internal port"; + }; + + username = mkOption { + type = types.str; + default = "ambroisie"; + example = "admin"; + description = "Admin username"; + }; + + passwordFile = mkOption { + type = types.str; + example = "/var/lib/grafana/password.txt"; + description = "Admin password stored in a file"; + }; + }; + + prometheus = { + port = mkOption { + type = types.port; + default = 9501; + example = 3002; + description = "Internal port"; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services.grafana = { + enable = true; + domain = grafanaDomain; + port = cfg.grafana.port; + addr = "127.0.0.1"; # Proxied through Nginx + + security = { + adminUser = cfg.grafana.username; + adminPasswordFile = cfg.grafana.passwordFile; + }; + + provision = { + enable = true; + + datasources = [ + { + name = "Prometheus"; + type = "prometheus"; + url = "http://localhost:${toString cfg.prometheus.port}"; + } + ]; + + dashboards = [ + { + name = "Node Exporter"; + options.path = pkgs.nur.repos.alarsyo.grafana-dashboards.node-exporter; + disableDeletion = true; + } + ]; + }; + }; + + services.prometheus = { + enable = true; + port = cfg.prometheus.port; + listenAddress = "127.0.0.1"; + + retentionTime = "2y"; + + exporters = { + node = { + enable = true; + enabledCollectors = [ "systemd" ]; + port = 9100; + listenAddress = "127.0.0.1"; + }; + }; + + scrapeConfigs = [ + { + job_name = config.networking.hostName; + static_configs = [{ + targets = [ "127.0.0.1:${toString config.services.prometheus.exporters.node.port}" ]; + }]; + } + ]; + }; + + services.nginx = { + virtualHosts.${grafanaDomain} = { + forceSSL = true; + useACMEHost = domain; + + locations."/" = { + proxyPass = "http://127.0.0.1:${toString cfg.grafana.port}"; + proxyWebsockets = true; + }; + }; + }; + }; +} From 24028669f4c35555a2fcba6c46caf9036f023f62 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 13 Jul 2021 19:10:17 +0200 Subject: [PATCH 0238/1588] modules: services: add monitoring dashboard --- modules/services/nginx.nix | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix index ab90760..b5d49c1 100644 --- a/modules/services/nginx.nix +++ b/modules/services/nginx.nix @@ -1,7 +1,7 @@ # Configuration shamelessly stolen from [1] # # [1]: https://github.com/delroth/infra.delroth.net/blob/master/common/nginx.nix -{ config, pkgs, lib, ... }: +{ config, lib, pkgs, ... }: { # Whenever something defines an nginx vhost, ensure that nginx defaults are @@ -40,5 +40,34 @@ }; }; }; + # Setup monitoring + services.grafana.provision.dashboards = [ + { + name = "NGINX"; + options.path = pkgs.nur.repos.alarsyo.grafana-dashboards.nginx; + disableDeletion = true; + } + ]; + + services.prometheus = { + exporters.nginx = { + enable = true; + listenAddress = "127.0.0.1"; + }; + + scrapeConfigs = [ + { + job_name = "nginx"; + static_configs = [ + { + targets = [ "127.0.0.1:${toString config.services.prometheus.exporters.nginx.port}" ]; + labels = { + instance = config.networking.hostName; + }; + } + ]; + } + ]; + }; }; } From e3429347182276fc40e38006dc7d7385df969fa1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 13 Jul 2021 19:11:03 +0200 Subject: [PATCH 0239/1588] secrets: add monitoring password --- secrets/default.nix | 2 ++ secrets/monitoring/password.txt | Bin 0 -> 55 bytes 2 files changed, 2 insertions(+) create mode 100644 secrets/monitoring/password.txt diff --git a/secrets/default.nix b/secrets/default.nix index 4a4aa68..1f2fae8 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -51,6 +51,8 @@ throwOnCanary { miniflux.password = fileContents ./miniflux/password.txt; + monitoring.password = fileContents ./monitoring/password.txt; + nextcloud.password = fileContents ./nextcloud/password.txt; podgrab.password = fileContents ./podgrab/password.txt; diff --git a/secrets/monitoring/password.txt b/secrets/monitoring/password.txt new file mode 100644 index 0000000000000000000000000000000000000000..98d0972e616531b77412a557d98029f6ea66be2c GIT binary patch literal 55 zcmZQ@_Y83kiVO&0@VY)J{Oq~qYyOw9U0L+}U)G-V!(1%aUEiOtv=frPWyTazJax)0 M!|Y Date: Tue, 13 Jul 2021 19:11:15 +0200 Subject: [PATCH 0240/1588] machines: porthos: services: enable monitoring --- machines/porthos/services.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 44c0b50..c702c84 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -72,6 +72,14 @@ in enable = true; password = my.secrets.miniflux.password; }; + # Various monitoring dashboards + monitoring = { + enable = true; + grafana = { + passwordFile = + builtins.toFile "grafana.txt" my.secrets.monitoring.password; # Insecure, I don't care + }; + }; # Nextcloud self-hosted cloud nextcloud = { enable = true; From 2bfbda9942205cf6adecd6b42a26a8bdc9765ed0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 14 Jul 2021 21:48:50 +0200 Subject: [PATCH 0241/1588] flake: flatten and filter packages w/ flake-utils Instead of my home-grown solution, use one that has been upstreamed. --- flake.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 2b0052a..252e7bd 100644 --- a/flake.nix +++ b/flake.nix @@ -130,9 +130,10 @@ packages = let + inherit (futils.lib) filterPackages flattenTree; packages = import ./pkgs { inherit pkgs; }; - isSystem = pkg: builtins.elem system pkg.meta.platforms; - finalPackages = lib.flip lib.filterAttrs packages (_: isSystem); + flattenedPackages = flattenTree packages; + finalPackages = filterPackages system flattenedPackages; in finalPackages; }) // { From eba977b582d2c21330d95197227d4451f3a7b1f2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 15 Jul 2021 18:50:04 +0200 Subject: [PATCH 0242/1588] modules: services: monitoring: add scrape interval --- modules/services/monitoring.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/services/monitoring.nix b/modules/services/monitoring.nix index 8146eca..f76337a 100644 --- a/modules/services/monitoring.nix +++ b/modules/services/monitoring.nix @@ -39,6 +39,13 @@ in example = 3002; description = "Internal port"; }; + + scrapeInterval = mkOption { + type = types.str; + default = "15s"; + example = "1m"; + description = "Scrape interval"; + }; }; }; @@ -62,6 +69,9 @@ in name = "Prometheus"; type = "prometheus"; url = "http://localhost:${toString cfg.prometheus.port}"; + jsonData = { + timeInterval = cfg.prometheus.scrapeInterval; + }; } ]; @@ -91,6 +101,10 @@ in }; }; + globalConfig = { + scrape_interval = cfg.prometheus.scrapeInterval; + }; + scrapeConfigs = [ { job_name = config.networking.hostName; From 99c33cd7ad05d0c7a8964cd85d59ded913a81667 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 29 Jul 2021 12:05:51 +0200 Subject: [PATCH 0243/1588] modules: services: add postgresql Enable the service itself in other modules when needed, but pin the package in a single place. --- modules/services/default.nix | 1 + modules/services/drone.nix | 1 + modules/services/matrix.nix | 1 - modules/services/postgresql.nix | 18 ++++++++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 modules/services/postgresql.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index a0f11fd..29ae034 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -20,6 +20,7 @@ ./pirate.nix ./podgrab.nix ./postgresql-backup.nix + ./postgresql.nix ./quassel.nix ./rss-bridge.nix ./sabnzbd.nix diff --git a/modules/services/drone.nix b/modules/services/drone.nix index 50119ac..b1e80ea 100644 --- a/modules/services/drone.nix +++ b/modules/services/drone.nix @@ -81,6 +81,7 @@ in users.groups.drone = { }; services.postgresql = { + enable = true; ensureDatabases = [ "drone" ]; ensureUsers = [{ name = "drone"; diff --git a/modules/services/matrix.nix b/modules/services/matrix.nix index 8f8c82e..5d81448 100644 --- a/modules/services/matrix.nix +++ b/modules/services/matrix.nix @@ -63,7 +63,6 @@ in config = lib.mkIf cfg.enable { services.postgresql = { enable = true; - package = pkgs.postgresql_12; initialScript = pkgs.writeText "synapse-init.sql" '' CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD 'synapse'; CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse" diff --git a/modules/services/postgresql.nix b/modules/services/postgresql.nix new file mode 100644 index 0000000..8da9ab7 --- /dev/null +++ b/modules/services/postgresql.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.postgresql; +in +{ + options.my.services.postgresql = with lib; { + enable = my.mkDisableOption "postgres configuration"; + }; + + config = lib.mkMerge [ + # Let other services enable postgres when they need it + (lib.mkIf cfg.enable { + services.postgresql = { + package = pkgs.postgresql_12; + }; + }) + ]; +} From 5d21cecee78141c2a79106b188fcb986153fba56 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 29 Jul 2021 12:44:42 +0200 Subject: [PATCH 0244/1588] modules: services: postgres: add migration script The process to upgrade is: * Make sure the version number of the script is one major version over the service version. * Activate the script, rebuild configuration. * Run `upgrade-pg-cluster` as `root`. One can give arguments like `--link` or `--jobs 4` to speedup the process. See documentation for some details. * Change package to new version once the upgrade is finished, rebuild configuration. * Optionally, `ANALYZE` the new database. --- modules/services/postgresql.nix | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/modules/services/postgresql.nix b/modules/services/postgresql.nix index 8da9ab7..3c06098 100644 --- a/modules/services/postgresql.nix +++ b/modules/services/postgresql.nix @@ -5,6 +5,9 @@ in { options.my.services.postgresql = with lib; { enable = my.mkDisableOption "postgres configuration"; + + # Transient option to be enabled for migrations + upgradeScript = mkEnableOption "postgres upgrade script"; }; config = lib.mkMerge [ @@ -14,5 +17,45 @@ in package = pkgs.postgresql_12; }; }) + + # Taken from the manual + (lib.mkIf cfg.upgradeScript { + containers.temp-pg.config.services.postgresql = { + enable = true; + package = pkgs.postgresql_13; + }; + + environment.systemPackages = + let + newpg = config.containers.temp-pg.config.services.postgresql; + in + [ + (pkgs.writeScriptBin "upgrade-pg-cluster" '' + #!/usr/bin/env bash + + set -x + export OLDDATA="${config.services.postgresql.dataDir}" + export NEWDATA="${newpg.dataDir}" + export OLDBIN="${config.services.postgresql.package}/bin" + export NEWBIN="${newpg.package}/bin" + + if [ "$OLDDATA" -ef "$NEWDATA" ]; then + echo "Cannot migrate to same data directory" >&2 + exit 1 + fi + + install -d -m 0700 -o postgres -g postgres "$NEWDATA" + cd "$NEWDATA" + sudo -u postgres $NEWBIN/initdb -D "$NEWDATA" + + systemctl stop postgresql # old one + + sudo -u postgres $NEWBIN/pg_upgrade \ + --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ + --old-bindir $OLDBIN --new-bindir $NEWBIN \ + "$@" + '') + ]; + }) ]; } From 3459067cd4b6ae47f9487a76c4235f692b935277 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 29 Jul 2021 13:03:10 +0200 Subject: [PATCH 0245/1588] modules: services: postgres: upgrade version --- modules/services/postgresql.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/postgresql.nix b/modules/services/postgresql.nix index 3c06098..6f51f3e 100644 --- a/modules/services/postgresql.nix +++ b/modules/services/postgresql.nix @@ -14,7 +14,7 @@ in # Let other services enable postgres when they need it (lib.mkIf cfg.enable { services.postgresql = { - package = pkgs.postgresql_12; + package = pkgs.postgresql_13; }; }) From 522d1f49dffa305026735d4945dfc45bdebf474b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 29 Jul 2021 13:17:42 +0200 Subject: [PATCH 0246/1588] flake: bump inputs And update package names for grafana dashboards to avoid breaking the config. --- flake.lock | 18 +++++++++--------- modules/services/monitoring.nix | 2 +- modules/services/nginx.nix | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/flake.lock b/flake.lock index 075d5a4..92fe63d 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1626073055, - "narHash": "sha256-vocByfpVu6m9zvtJugDvmd6/9iT2HJuG4tmDICKd0lI=", + "lastModified": 1627501942, + "narHash": "sha256-rG2PUTgzmXvf/fSDCWKhlRwZjZs1/0TySC5eYHVJrmg=", "owner": "nix-community", "repo": "home-manager", - "rev": "775cb20bd4af7781fbf336fb201df02ee3d544bb", + "rev": "2272fc312d5dc477e70816d94e550d08729b307b", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1626046891, - "narHash": "sha256-Zt8saH+hAehXskW0iFAzk+iMillYoFBxvLReYNqGT9E=", + "lastModified": 1627391865, + "narHash": "sha256-tPoWBO9Nzu3wuX37WcnctzL6LoDCErJLnfLGqqmXCm4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d8f8f31af9d77a48220e4e8a301d1e79774cb7d2", + "rev": "8ecc61c91a596df7d3293603a9c2384190c1b89a", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nur": { "locked": { - "lastModified": 1626192709, - "narHash": "sha256-REQ9ByMk4crAX37e8YDZOBl9Kxn+nTfnnLwwxczcoP0=", + "lastModified": 1627534577, + "narHash": "sha256-cGVIlBkZZA9VvhXRRrWsTpkesJ/bSlGSPYPxafQVjSU=", "owner": "nix-community", "repo": "NUR", - "rev": "564ec91b61dab796f1af44502ff3a9c124f4d6da", + "rev": "0e1a91ef1d0460adfb5c669a9c0114f46e67956c", "type": "github" }, "original": { diff --git a/modules/services/monitoring.nix b/modules/services/monitoring.nix index f76337a..a86e2ce 100644 --- a/modules/services/monitoring.nix +++ b/modules/services/monitoring.nix @@ -78,7 +78,7 @@ in dashboards = [ { name = "Node Exporter"; - options.path = pkgs.nur.repos.alarsyo.grafana-dashboards.node-exporter; + options.path = pkgs.nur.repos.alarsyo.grafanaDashboards.node-exporter; disableDeletion = true; } ]; diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix index b5d49c1..ac70c48 100644 --- a/modules/services/nginx.nix +++ b/modules/services/nginx.nix @@ -44,7 +44,7 @@ services.grafana.provision.dashboards = [ { name = "NGINX"; - options.path = pkgs.nur.repos.alarsyo.grafana-dashboards.nginx; + options.path = pkgs.nur.repos.alarsyo.grafanaDashboards.nginx; disableDeletion = true; } ]; From 19c5cd0e13bc4df49268b64e72211bf375d8fec0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 29 Jul 2021 13:14:55 +0200 Subject: [PATCH 0247/1588] modules: services: nextcloud: upgrade version --- modules/services/nextcloud.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nextcloud.nix b/modules/services/nextcloud.nix index d52e32a..eb2e14e 100644 --- a/modules/services/nextcloud.nix +++ b/modules/services/nextcloud.nix @@ -30,7 +30,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud21; + package = pkgs.nextcloud22; hostName = nextcloudDomain; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From 6c3662dbb3778598b02fb0fa0430930f262e45c8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 31 Jul 2021 16:56:20 +0200 Subject: [PATCH 0248/1588] modules: services: tlp: add power scaling --- modules/services/tlp.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/services/tlp.nix b/modules/services/tlp.nix index a560319..8c9edd6 100644 --- a/modules/services/tlp.nix +++ b/modules/services/tlp.nix @@ -13,6 +13,10 @@ in enable = true; settings = { + # Set CPU scaling aggressively when power is not an issue + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + # Keep charge between 60% and 80% to preserve battery life START_CHARGE_THRESH_BAT0 = 60; STOP_CHARGE_THRESH_BAT0 = 80; From e1fddb0b1fe112edd6a319d13fafb2ff7e0af9bb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 31 Jul 2021 20:17:37 +0200 Subject: [PATCH 0249/1588] pkgs: bw-pass: report errors to stderr Useful in case the script can't prompt using `rofi`. --- pkgs/bw-pass/bw-pass | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/bw-pass/bw-pass b/pkgs/bw-pass/bw-pass index 3fddf1f..124714a 100755 --- a/pkgs/bw-pass/bw-pass +++ b/pkgs/bw-pass/bw-pass @@ -11,6 +11,7 @@ prompt_pass() { } error_out() { + printf '%s\n' "$1" >&2 rofi -dmenu -no-fixed-num-lines -p "$1" exit 1 } From d679262c6ff995162320fa3563120eaf848229fa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 7 Aug 2021 12:29:41 +0200 Subject: [PATCH 0250/1588] pkgs: unified-hosts-lists: 3.6.4 -> 3.8.5 --- pkgs/unified-hosts-lists/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index 4801ad0..9fb052a 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -1,13 +1,13 @@ { lib, fetchFromGitHub, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "unified-hosts-lists"; - version = "3.6.4"; + version = "3.8.5"; src = fetchFromGitHub { owner = "StevenBlack"; repo = "hosts"; rev = version; - sha256 = "sha256-U6vRwbFSYka2VS8M1z0n+FaTkKKwdV/cCWIKxp487/I="; + sha256 = "sha256-7oYuGegrHVUvAvA16iR8OEe5eTMeSybShSa1PJOe5No="; }; phases = [ "installPhase" ]; From cf2747a98fe792e57b139c32aa4f167e993a056f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 8 Aug 2021 18:03:19 +0200 Subject: [PATCH 0251/1588] pkgs: add drone-scp --- pkgs/default.nix | 2 ++ pkgs/drone-scp/default.nix | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 pkgs/drone-scp/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index ede7620..f307304 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -6,6 +6,8 @@ rec { diff-flake = pkgs.callPackage ./diff-flake { }; + drone-scp = pkgs.callPackage ./drone-scp { }; + ff2mpv-go = pkgs.callPackage ./ff2mpv-go { }; havm = pkgs.callPackage ./havm { }; diff --git a/pkgs/drone-scp/default.nix b/pkgs/drone-scp/default.nix new file mode 100644 index 0000000..863befd --- /dev/null +++ b/pkgs/drone-scp/default.nix @@ -0,0 +1,24 @@ +{ lib, buildGoModule, fetchFromGitHub }: +buildGoModule rec { + pname = "drone-scp"; + version = "1.6.2"; + + src = fetchFromGitHub { + owner = "appleboy"; + repo = "drone-scp"; + rev = "v${version}"; + sha256 = "sha256-PNy1HA2qW4RY/VRHhuj/tIrdTuB7COr0Cuzurku+DZw="; + }; + + vendorSha256 = "sha256-7Aro6g3Tka0Cbi9LpqvKpQXlbxnHQWsMOkkNpENKh0U="; + + doCheck = false; # Needs a specific user... + + meta = with lib; { + description = '' + Copy files and artifacts via SSH using a binary, docker or Drone CI + ''; + homepage = "https://github.com/appleboy/drone-scp"; + license = licenses.mit; + }; +} From 7d0967779232668a63797ebb1958989f8f5b2dc6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 9 Aug 2021 19:55:45 +0200 Subject: [PATCH 0252/1588] modules: services: backup: fix exclude files I was using the wrong option... Somehow it didn't error out. --- modules/services/backup.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/services/backup.nix b/modules/services/backup.nix index da45b5e..8462289 100644 --- a/modules/services/backup.nix +++ b/modules/services/backup.nix @@ -92,9 +92,9 @@ in services.restic.backups.backblaze = { # Take care of included and excluded files paths = cfg.paths; - extraOptions = with builtins; with lib;[ - (optionalString ((length cfg.exclude) != 0) excludeArg) - ]; + extraBackupArgs = [ ] + ++ lib.optional (builtins.length cfg.exclude != 0) excludeArg + ; # Take care of creating the repository if it doesn't exist initialize = true; # Hijack S3-related env to give B2 API key From 414e181a8bac1489544a7b17c05ada044326b5fb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 19 Aug 2021 11:23:51 +0200 Subject: [PATCH 0253/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 92fe63d..faf9162 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "futils": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1629284811, + "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1627501942, - "narHash": "sha256-rG2PUTgzmXvf/fSDCWKhlRwZjZs1/0TySC5eYHVJrmg=", + "lastModified": 1629347633, + "narHash": "sha256-FGZJ7lmTAMIkjdrh6dIPck5HuB4KMT2GgDV5ZjiCWoc=", "owner": "nix-community", "repo": "home-manager", - "rev": "2272fc312d5dc477e70816d94e550d08729b307b", + "rev": "bf6b85136b47ab1a76df4a90ea4850871147494a", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1627391865, - "narHash": "sha256-tPoWBO9Nzu3wuX37WcnctzL6LoDCErJLnfLGqqmXCm4=", + "lastModified": 1629292755, + "narHash": "sha256-5xMo32NVLnloY9DveqwJO/Cab1+PbTMPqU4WMmawX5M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8ecc61c91a596df7d3293603a9c2384190c1b89a", + "rev": "253aecf69ed7595aaefabde779aa6449195bebb7", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nur": { "locked": { - "lastModified": 1627534577, - "narHash": "sha256-cGVIlBkZZA9VvhXRRrWsTpkesJ/bSlGSPYPxafQVjSU=", + "lastModified": 1629359626, + "narHash": "sha256-of3obB9km+QnrBpWHm1b1k33qQOqNB0c8grkVcXNP7o=", "owner": "nix-community", "repo": "NUR", - "rev": "0e1a91ef1d0460adfb5c669a9c0114f46e67956c", + "rev": "805c0d529efe652fa85f92527bec68ce26a08723", "type": "github" }, "original": { From c22891607288cfc02fa508dc1366b01236018092 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 19 Aug 2021 11:56:32 +0200 Subject: [PATCH 0254/1588] modules: services: add navidrome --- modules/services/default.nix | 1 + modules/services/navidrome.nix | 62 ++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 modules/services/navidrome.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 29ae034..4760ab1 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -15,6 +15,7 @@ ./matrix.nix ./miniflux.nix ./monitoring.nix + ./navidrome.nix ./nextcloud.nix ./nginx.nix ./pirate.nix diff --git a/modules/services/navidrome.nix b/modules/services/navidrome.nix new file mode 100644 index 0000000..779884e --- /dev/null +++ b/modules/services/navidrome.nix @@ -0,0 +1,62 @@ +# A FLOSS self-hosted, subsonic compatible music server +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.navidrome; + domain = config.networking.domain; + navidromeDomain = "music.${config.networking.domain}"; +in +{ + options.my.services.navidrome = with lib; { + enable = mkEnableOption "Navidrome Music Server"; + + settings = mkOption { + type = (pkgs.formats.json { }).type; + default = { }; + example = { + "LastFM.ApiKey" = "MYKEY"; + "LastFM.Secret" = "MYSECRET"; + "Spotify.ID" = "MYKEY"; + "Spotify.Secret" = "MYSECRET"; + }; + description = '' + Additional settings. + ''; + }; + + privatePort = mkOption { + type = types.port; + default = 4533; + example = 8080; + description = "Internal port for webui"; + }; + + musicFolder = mkOption { + type = types.str; + example = "/mnt/music/"; + description = "Music folder"; + }; + }; + + config = lib.mkIf cfg.enable { + services.navidrome = { + enable = true; + + settings = cfg.settings // { + Port = cfg.privatePort; + Address = "127.0.0.1"; # Behind reverse proxy, so only loopback + MusicFolder = cfg.musicFolder; + LogLevel = "info"; + }; + }; + + services.nginx.virtualHosts."${navidromeDomain}" = { + forceSSL = true; + useACMEHost = domain; + + locations."/" = { + proxyPass = "http://127.0.0.1:${toString cfg.privatePort}/"; + proxyWebsockets = true; + }; + }; + }; +} From 0fe9a5745886d13e4c8e686687f4948cf8b76c33 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 19 Aug 2021 11:57:11 +0200 Subject: [PATCH 0255/1588] machines: porthos: services: enable navidrome --- machines/porthos/services.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index c702c84..ac33819 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -80,6 +80,11 @@ in builtins.toFile "grafana.txt" my.secrets.monitoring.password; # Insecure, I don't care }; }; + # FLOSS music streaming server + navidrome = { + enable = true; + musicFolder = "/data/media/music"; + }; # Nextcloud self-hosted cloud nextcloud = { enable = true; From 98c2f16eb227971d21b78b2b65abe1e9e8dc044a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 19 Aug 2021 14:26:32 +0200 Subject: [PATCH 0256/1588] modules: services: backup: make it verbose --- modules/services/backup.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/backup.nix b/modules/services/backup.nix index 8462289..88c7fde 100644 --- a/modules/services/backup.nix +++ b/modules/services/backup.nix @@ -92,7 +92,7 @@ in services.restic.backups.backblaze = { # Take care of included and excluded files paths = cfg.paths; - extraBackupArgs = [ ] + extraBackupArgs = [ "--verbose=2" ] ++ lib.optional (builtins.length cfg.exclude != 0) excludeArg ; # Take care of creating the repository if it doesn't exist From 087794433ebbd9e846b172e7ede7167c4584a90f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 19 Aug 2021 14:27:06 +0200 Subject: [PATCH 0257/1588] modules: services: nextcloud: exclude previews --- modules/services/nextcloud.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/services/nextcloud.nix b/modules/services/nextcloud.nix index eb2e14e..d615903 100644 --- a/modules/services/nextcloud.nix +++ b/modules/services/nextcloud.nix @@ -70,6 +70,10 @@ in paths = [ config.services.nextcloud.home ]; + exclude = [ + # image previews can take up a lot of space + "${config.services.nextcloud.home}/data/appdata_*/preview" + ]; }; }; } From bc6761bdc9d6bd315187c3c2c371435486012b23 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 20 Aug 2021 20:03:30 +0200 Subject: [PATCH 0258/1588] home: add gdb --- home/default.nix | 1 + home/gdb/default.nix | 17 +++++++++++++++++ home/gdb/gdbinit | 22 ++++++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 home/gdb/default.nix create mode 100644 home/gdb/gdbinit diff --git a/home/default.nix b/home/default.nix index efc4a81..2668156 100644 --- a/home/default.nix +++ b/home/default.nix @@ -10,6 +10,7 @@ ./firefox ./flameshot.nix ./gammastep.nix + ./gdb ./git ./gpg.nix ./gtk.nix diff --git a/home/gdb/default.nix b/home/gdb/default.nix new file mode 100644 index 0000000..da9434e --- /dev/null +++ b/home/gdb/default.nix @@ -0,0 +1,17 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.gdb; +in +{ + options.my.home.gdb = with lib; { + enable = my.mkDisableOption "gdb configuration"; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + gdb + ]; + + xdg.configFile."gdb/gdbinit".source = ./gdbinit; + }; +} diff --git a/home/gdb/gdbinit b/home/gdb/gdbinit new file mode 100644 index 0000000..8f55b9a --- /dev/null +++ b/home/gdb/gdbinit @@ -0,0 +1,22 @@ + # Keep a history of all commands in each directory +set history save on + +# Enable those pretty-printers +enable pretty-printer + +# Pretty formatting of structures +set print pretty on +# Show derived type based on VTable +set print object on +# Show static members +set print static-members on +# Show VTable +set print vtbl on +# Demangle types +set print demangle on + +# Read python scrips in the load path +set auto-load python-scripts + +# Allow autoloading project-local .gdbinit files +add-auto-load-safe-path ~/git/ From 5edffcd21ddcaff2d32ac61068b9bd2c68f3e5b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 20 Aug 2021 21:22:27 +0200 Subject: [PATCH 0259/1588] home: gdb: fix auto-load safe path --- home/gdb/gdbinit | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/gdb/gdbinit b/home/gdb/gdbinit index 8f55b9a..c45c6d2 100644 --- a/home/gdb/gdbinit +++ b/home/gdb/gdbinit @@ -19,4 +19,4 @@ set print demangle on set auto-load python-scripts # Allow autoloading project-local .gdbinit files -add-auto-load-safe-path ~/git/ +set auto-load safe-path ~/git/ From b20ef7f80917045ea3b66f5eb80dcd9c1d69b56d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 21 Aug 2021 01:13:14 +0200 Subject: [PATCH 0260/1588] home: gdb: add rr --- home/gdb/default.nix | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/home/gdb/default.nix b/home/gdb/default.nix index da9434e..c498048 100644 --- a/home/gdb/default.nix +++ b/home/gdb/default.nix @@ -5,13 +5,34 @@ in { options.my.home.gdb = with lib; { enable = my.mkDisableOption "gdb configuration"; + + rr = { + enable = my.mkDisableOption "rr configuration"; + + package = mkOption { + type = types.package; + default = pkgs.rr; + defaultText = literalExample "pkgs.rr"; + description = '' + Package providing rr + ''; + }; + }; }; - config = lib.mkIf cfg.enable { - home.packages = with pkgs; [ - gdb - ]; + config = lib.mkMerge [ + (lib.mkIf cfg.enable { + home.packages = with pkgs; [ + gdb + ]; - xdg.configFile."gdb/gdbinit".source = ./gdbinit; - }; + xdg.configFile."gdb/gdbinit".source = ./gdbinit; + }) + + (lib.mkIf cfg.rr.enable { + home.packages = [ + cfg.rr.package + ]; + }) + ]; } From fcc3089e77892a8ef7d9b57ca070e181370c7a10 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 22 Aug 2021 15:02:54 +0200 Subject: [PATCH 0261/1588] home: gdb: fix configuration path Turns out the latest version of `gdb` does not yet look for its configuration in `XDG_CONFIG_HOME`... --- home/gdb/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/gdb/default.nix b/home/gdb/default.nix index c498048..f6db2e7 100644 --- a/home/gdb/default.nix +++ b/home/gdb/default.nix @@ -26,7 +26,11 @@ in gdb ]; + # FIXME: waiting for commit 64aaad6349d2b2c45063a5383f877ce9a3a0c354 xdg.configFile."gdb/gdbinit".source = ./gdbinit; + + # FIXME: remove once `gdb` is updated from version 10.2 + home.file.".gdbinit".source = ./gdbinit; }) (lib.mkIf cfg.rr.enable { From 3d7420210a92977dfde0cb5554931a9bd4ed3b4b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 25 Aug 2021 12:22:21 +0200 Subject: [PATCH 0262/1588] home: zsh: do not share history accross shells It's more annoying than helpful... --- home/zsh/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 96ec251..27077cf 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -18,7 +18,7 @@ in extended = false; ignoreSpace = true; ignoreDups = true; - share = true; + share = false; path = "${config.xdg.dataHome}/zsh/zsh_history"; }; From e2546bd958cb37beece360e3c9bd303ce5df92eb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 25 Aug 2021 12:44:42 +0200 Subject: [PATCH 0263/1588] home: zsh: append to history Otherwise the file is replaced rather than appended to. --- home/zsh/options.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/zsh/options.zsh b/home/zsh/options.zsh index b02ca54..6187f46 100644 --- a/home/zsh/options.zsh +++ b/home/zsh/options.zsh @@ -8,5 +8,7 @@ setopt autopushd pushdminus pushdsilent setopt rcquotes # Single word commands can resume an existing job setopt autoresume +# Append commands to history as they are exectuted +setopt inc_append_history_time # Those options aren't wanted unsetopt beep extendedglob notify From 3736e3a41547fafbe9283407ecef0d42519eff2f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 25 Aug 2021 12:51:38 +0200 Subject: [PATCH 0264/1588] home: zsh: clean-up blank in history --- home/zsh/options.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/zsh/options.zsh b/home/zsh/options.zsh index 6187f46..e1e31f4 100644 --- a/home/zsh/options.zsh +++ b/home/zsh/options.zsh @@ -10,5 +10,7 @@ setopt rcquotes setopt autoresume # Append commands to history as they are exectuted setopt inc_append_history_time +# Remove useless whitespace from commands +setopt hist_reduce_blanks # Those options aren't wanted unsetopt beep extendedglob notify From 7d2c43d157e4f957e0767faaaba820ade95a816b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 24 Aug 2021 22:25:12 +0200 Subject: [PATCH 0265/1588] lib: lists: add 'mapFilter' --- lib/lists.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/lists.nix diff --git a/lib/lists.nix b/lib/lists.nix new file mode 100644 index 0000000..a3720bf --- /dev/null +++ b/lib/lists.nix @@ -0,0 +1,13 @@ +{ lib, ... }: +let + inherit (lib) filter; +in +{ + # Filter a list using a predicate function after applying a map. + # + # mapFilter :: + # (value -> bool) + # (any -> value) + # [ any ] + mapFilter = pred: f: attrs: filter pred (map f attrs); +} From 906202b22253deb7eb3bf78bf6e274129b9c0a74 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 24 Aug 2021 22:26:06 +0200 Subject: [PATCH 0266/1588] lib: lists: add countValues --- lib/lists.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/lists.nix b/lib/lists.nix index a3720bf..190198e 100644 --- a/lib/lists.nix +++ b/lib/lists.nix @@ -1,8 +1,22 @@ { lib, ... }: let - inherit (lib) filter; + inherit (lib) filter foldl'; in { + # Count the number of appararitions of each value in a list. + # + # countValues :: + # [ any ] -> ({ any = int; }) + countValues = + let + addToCount = acc: x: + let + v = toString x; + in + acc // { ${v} = (acc.${v} or 0) + 1; }; + in + foldl' addToCount { }; + # Filter a list using a predicate function after applying a map. # # mapFilter :: From a8514dcdf144b138b49ecd9571bf1977df1ed145 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 24 Aug 2021 22:30:44 +0200 Subject: [PATCH 0267/1588] modules: services: nginx: overhaul modularity This should be all that's needed for almost all my services. --- machines/porthos/services.nix | 3 + modules/services/nginx.nix | 182 ++++++++++++++++++++++++++++++++-- 2 files changed, 175 insertions(+), 10 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index ac33819..cc8672d 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -90,6 +90,9 @@ in enable = true; password = my.secrets.nextcloud.password; }; + nginx = { + enable = true; # FIXME: remove this when done migrating + }; # The whole *arr software suite pirate.enable = true; # Podcast automatic downloader diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix index ac70c48..2a64c65 100644 --- a/modules/services/nginx.nix +++ b/modules/services/nginx.nix @@ -1,12 +1,147 @@ -# Configuration shamelessly stolen from [1] -# -# [1]: https://github.com/delroth/infra.delroth.net/blob/master/common/nginx.nix +# A simple abstraction layer for almost all of my services' needs { config, lib, pkgs, ... }: +let + cfg = config.my.services.nginx; + virtualHostOption = with lib; types.submodule { + options = { + subdomain = mkOption { + type = types.str; + example = "dev"; + description = '' + Which subdomain, under config.networking.domain, to use + for this virtual host. + ''; + }; + + port = mkOption { + type = with types; nullOr port; + default = null; + example = 8080; + description = '' + Which port to proxy to, through 127.0.0.1, for this virtual host. + This option is incompatible with `root`. + ''; + }; + + root = mkOption { + type = with types; nullOr path; + default = null; + example = "/var/www/blog"; + description = '' + The root folder for this virtual host. This option is incompatible + with `port`. + ''; + }; + + extraConfig = mkOption { + type = types.attrs; # FIXME: forward type of virtualHosts + example = litteralExample '' + { + locations."/socket" = { + proxyPass = "http://127.0.0.1:8096/"; + proxyWebsockets = true; + }; + } + ''; + default = { }; + description = '' + Any extra configuration that should be applied to this virtual host. + ''; + }; + }; + }; +in { - # Whenever something defines an nginx vhost, ensure that nginx defaults are - # properly set. - config = lib.mkIf ((builtins.attrNames config.services.nginx.virtualHosts) != [ ]) { + options.my.services.nginx = with lib; { + enable = + mkEnableOption "Nginx, activates when `virtualHosts` is not empty" // { + default = builtins.length cfg.virtualHosts != 0; + }; + + monitoring = { + enable = my.mkDisableOption "monitoring through grafana and prometheus"; + }; + + virtualHosts = mkOption { + type = types.listOf virtualHostOption; + default = [ ]; + example = litteralExample '' + [ + { + subdomain = "gitea"; + port = 8080; + } + { + subdomain = "dev"; + root = "/var/www/dev"; + } + { + subdomain = "jellyfin"; + port = 8096; + extraConfig = { + locations."/socket" = { + proxyPass = "http://127.0.0.1:8096/"; + proxyWebsockets = true; + }; + }; + } + ] + ''; + description = '' + List of virtual hosts to set-up using default settings. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ ] + ++ (lib.flip builtins.map cfg.virtualHosts ({ subdomain, ... } @ args: + let + conflicts = [ "port" "root" ]; + optionsNotNull = builtins.map (v: args.${v} != null) conflicts; + optionsSet = lib.filter lib.id optionsNotNull; + in + { + assertion = builtins.length optionsSet == 1; + message = '' + Subdomain '${subdomain}' must have exactly one of ${ + lib.concatStringsSep ", " (builtins.map (v: "'${v}'") conflicts) + } configured. + ''; + })) + ++ ( + let + ports = lib.my.mapFilter + (v: v != null) + ({ port, ... }: port) + cfg.virtualHosts; + portCounts = lib.my.countValues ports; + nonUniquesCounts = lib.filterAttrs (_: v: v != 1) portCounts; + nonUniques = builtins.attrNames nonUniquesCounts; + mkAssertion = port: { + assertion = false; + message = "Port ${port} cannot appear in multiple virtual hosts."; + }; + in + map mkAssertion nonUniques + ) ++ ( + let + subs = map ({ subdomain, ... }: subdomain) cfg.virtualHosts; + subsCounts = lib.my.countValues subs; + nonUniquesCounts = lib.filterAttrs (_: v: v != 1) subsCounts; + nonUniques = builtins.attrNames nonUniquesCounts; + mkAssertion = v: { + assertion = false; + message = '' + Subdomain '${v}' cannot appear in multiple virtual hosts. + ''; + }; + in + map mkAssertion nonUniques + ) + ; + services.nginx = { enable = true; statusPage = true; # For monitoring scraping. @@ -15,6 +150,33 @@ recommendedOptimisation = true; recommendedTlsSettings = true; recommendedProxySettings = true; + + virtualHosts = + let + domain = config.networking.domain; + mkVHost = ({ subdomain, ... } @ args: lib.nameValuePair + "${subdomain}.${domain}" + (builtins.foldl' lib.recursiveUpdate { } [ + # Base configuration + { + forceSSL = true; + useACMEHost = domain; + } + # Proxy to port + (lib.optionalAttrs (args.port != null) { + locations."/".proxyPass = + "http://127.0.0.1:${toString args.port}"; + }) + # Serve filesystem content + (lib.optionalAttrs (args.root != null) { + inherit (args) root; + }) + # VHost specific configuration + args.extraConfig + ]) + ); + in + lib.my.genAttrs' cfg.virtualHosts mkVHost; }; networking.firewall.allowedTCPPorts = [ 80 443 ]; @@ -22,10 +184,10 @@ # Nginx needs to be able to read the certificates users.users.nginx.extraGroups = [ "acme" ]; - # Use DNS wildcard certificate security.acme = { email = "bruno.acme@belanyi.fr"; acceptTerms = true; + # Use DNS wildcard certificate certs = let domain = config.networking.domain; @@ -40,8 +202,8 @@ }; }; }; - # Setup monitoring - services.grafana.provision.dashboards = [ + + services.grafana.provision.dashboards = lib.mkIf cfg.monitoring.enable [ { name = "NGINX"; options.path = pkgs.nur.repos.alarsyo.grafanaDashboards.nginx; @@ -49,7 +211,7 @@ } ]; - services.prometheus = { + services.prometheus = lib.mkIf cfg.monitoring.enable { exporters.nginx = { enable = true; listenAddress = "127.0.0.1"; From 77cf3430ae8a18e1f6e200635dda48a77af98987 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 24 Aug 2021 23:05:10 +0200 Subject: [PATCH 0268/1588] modules: services: use new nginx wrapper And when not possible, document why. Note for the future: there is some repetition in some modules to configure the correct value of the subdomain, which I happen to know will line up correctly thanks to the nginx wrapper. A good way to refactor this in the future would involve avoiding this repetition, allowing use to query the correct domain in some way... --- machines/porthos/services.nix | 3 -- modules/services/blog.nix | 38 +++++++++----------- modules/services/calibre-web.nix | 14 ++++---- modules/services/drone.nix | 21 +++++------ modules/services/flood.nix | 15 ++++---- modules/services/gitea.nix | 60 ++++++++++++++++--------------- modules/services/indexers.nix | 30 ++++++---------- modules/services/jellyfin.nix | 37 ++++++++++--------- modules/services/lohr.nix | 17 ++++----- modules/services/matrix.nix | 57 ++++++++++++++--------------- modules/services/miniflux.nix | 22 +++++------- modules/services/monitoring.nix | 22 ++++-------- modules/services/navidrome.nix | 21 +++++------ modules/services/nextcloud.nix | 11 +++--- modules/services/pirate.nix | 15 +++----- modules/services/podgrab.nix | 15 ++++---- modules/services/rss-bridge.nix | 9 +++-- modules/services/sabnzbd.nix | 15 ++++---- modules/services/transmission.nix | 19 +++++----- 19 files changed, 187 insertions(+), 254 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index cc8672d..ac33819 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -90,9 +90,6 @@ in enable = true; password = my.secrets.nextcloud.password; }; - nginx = { - enable = true; # FIXME: remove this when done migrating - }; # The whole *arr software suite pirate.enable = true; # Podcast automatic downloader diff --git a/modules/services/blog.nix b/modules/services/blog.nix index 0a5fcf1..9149917 100644 --- a/modules/services/blog.nix +++ b/modules/services/blog.nix @@ -4,28 +4,12 @@ let cfg = config.my.services.blog; domain = config.networking.domain; - makeHostInfo = name: { - name = "${name}.${domain}"; - value = "/var/www/${name}"; + makeHostInfo = subdomain: { + inherit subdomain; + root = "/var/www/${subdomain}"; }; - hostsInfo = [ - { - name = domain; - value = "/var/www/blog"; - } - ] ++ builtins.map makeHostInfo [ "cv" "dev" "key" ]; - - hosts = builtins.listToAttrs hostsInfo; - - makeVirtualHost = with lib.attrsets; - name: root: nameValuePair "${name}" { - forceSSL = true; - useACMEHost = domain; - inherit root; - # Make my blog the default landing site - default = (name == domain); - }; + hostsInfo = map makeHostInfo [ "cv" "dev" "key" ]; in { options.my.services.blog = { @@ -33,7 +17,17 @@ in }; config = lib.mkIf cfg.enable { - services.nginx.virtualHosts = with lib.attrsets; - mapAttrs' makeVirtualHost hosts; + services.nginx.virtualHosts = { + # This is not a subdomain, cannot use my nginx wrapper module + ${domain} = { + forceSSL = true; + useACMEHost = domain; + root = "/var/www/blog"; + default = true; # Redirect to my blog + }; + }; + + # Those are all subdomains, no problem + my.services.nginx.virtualHosts = hostsInfo; }; } diff --git a/modules/services/calibre-web.nix b/modules/services/calibre-web.nix index d4d7ece..a62b74c 100644 --- a/modules/services/calibre-web.nix +++ b/modules/services/calibre-web.nix @@ -1,8 +1,6 @@ { config, lib, ... }: let cfg = config.my.services.calibre-web; - domain = config.networking.domain; - calibreDomain = "library.${domain}"; in { options.my.services.calibre-web = with lib; { @@ -39,12 +37,12 @@ in }; }; - services.nginx.virtualHosts."${calibreDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString cfg.port}/"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "library"; + inherit (cfg) port; + } + ]; my.services.backup = { paths = [ diff --git a/modules/services/drone.nix b/modules/services/drone.nix index b1e80ea..7a9b668 100644 --- a/modules/services/drone.nix +++ b/modules/services/drone.nix @@ -6,9 +6,6 @@ let cfg = config.my.services.drone; - domain = config.networking.domain; - droneDomain = "drone.${domain}"; - hasRunner = (name: builtins.elem name cfg.runners); execPkg = pkgs.drone-runner-exec; @@ -59,7 +56,7 @@ in ]; Environment = [ "DRONE_DATABASE_DATASOURCE=postgres:///drone?host=/run/postgresql" - "DRONE_SERVER_HOST=${droneDomain}" + "DRONE_SERVER_HOST=drone.${config.networking.domain}" "DRONE_SERVER_PROTO=https" "DRONE_DATABASE_DRIVER=postgres" "DRONE_SERVER_PORT=:${toString cfg.port}" @@ -91,12 +88,12 @@ in }]; }; - services.nginx.virtualHosts."${droneDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString cfg.port}"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "drone"; + inherit (cfg) port; + } + ]; # Docker runner systemd.services.drone-runner-docker = lib.mkIf (hasRunner "docker") { @@ -107,7 +104,7 @@ in confinement.enable = true; serviceConfig = { Environment = [ - "DRONE_SERVER_HOST=${droneDomain}" + "DRONE_SERVER_HOST=drone.${config.networking.domain}" "DRONE_SERVER_PROTO=https" "DRONE_RUNNER_CAPACITY=10" "CLIENT_DRONE_RPC_HOST=127.0.0.1:${toString cfg.port}" @@ -156,7 +153,7 @@ in ]; serviceConfig = { Environment = [ - "DRONE_SERVER_HOST=${droneDomain}" + "DRONE_SERVER_HOST=drone.${config.networking.domain}" "DRONE_SERVER_PROTO=https" "DRONE_RUNNER_CAPACITY=10" "CLIENT_DRONE_RPC_HOST=127.0.0.1:${toString cfg.port}" diff --git a/modules/services/flood.nix b/modules/services/flood.nix index 70988cb..ae8e219 100644 --- a/modules/services/flood.nix +++ b/modules/services/flood.nix @@ -2,9 +2,6 @@ { config, lib, pkgs, ... }: let cfg = config.my.services.flood; - - domain = config.networking.domain; - webuiDomain = "flood.${domain}"; in { options.my.services.flood = with lib; { @@ -43,11 +40,11 @@ in }; }; - services.nginx.virtualHosts."${webuiDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString cfg.port}"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "flood"; + inherit (cfg) port; + } + ]; }; } diff --git a/modules/services/gitea.nix b/modules/services/gitea.nix index ea739d5..0ece12c 100644 --- a/modules/services/gitea.nix +++ b/modules/services/gitea.nix @@ -2,8 +2,6 @@ { config, lib, ... }: let cfg = config.my.services.gitea; - domain = config.networking.domain; - giteaDomain = "gitea.${config.networking.domain}"; in { options.my.services.gitea = with lib; { @@ -17,34 +15,38 @@ in }; config = lib.mkIf cfg.enable { - services.gitea = { - enable = true; + services.gitea = + let + giteaDomain = "gitea.${config.networking.domain}"; + in + { + enable = true; - appName = "Ambroisie's forge"; - httpPort = cfg.port; - domain = giteaDomain; - rootUrl = "https://${giteaDomain}"; + appName = "Ambroisie's forge"; + httpPort = cfg.port; + domain = giteaDomain; + rootUrl = "https://${giteaDomain}"; - user = "git"; - lfs.enable = true; + user = "git"; + lfs.enable = true; - useWizard = false; - disableRegistration = true; + useWizard = false; + disableRegistration = true; - # only send cookies via HTTPS - cookieSecure = true; + # only send cookies via HTTPS + cookieSecure = true; - database = { - type = "postgres"; # Automatic setup - user = "git"; # User needs to be the same as gitea user + database = { + type = "postgres"; # Automatic setup + user = "git"; # User needs to be the same as gitea user + }; + + # NixOS module uses `gitea dump` to backup repositories and the database, + # but it produces a single .zip file that's not very backup friendly. + # I configure my backup system manually below. + dump.enable = false; }; - # NixOS module uses `gitea dump` to backup repositories and the database, - # but it produces a single .zip file that's not very backup friendly. - # I configure my backup system manually below. - dump.enable = false; - }; - users.users.git = { description = "Gitea Service"; home = config.services.gitea.stateDir; @@ -60,12 +62,12 @@ in users.groups.git = { }; # Proxy to Gitea - services.nginx.virtualHosts."${giteaDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString cfg.port}/"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "gitea"; + inherit (cfg) port; + } + ]; my.services.backup = { paths = [ diff --git a/modules/services/indexers.nix b/modules/services/indexers.nix index 11d525c..6ee32c0 100644 --- a/modules/services/indexers.nix +++ b/modules/services/indexers.nix @@ -3,10 +3,6 @@ let cfg = config.my.services.indexers; - domain = config.networking.domain; - jackettDomain = "jackett.${config.networking.domain}"; - nzbhydraDomain = "nzbhydra.${config.networking.domain}"; - jackettPort = 9117; nzbhydraPort = 5076; in @@ -29,25 +25,19 @@ in }; }; - - services.nginx.virtualHosts."${jackettDomain}" = - lib.mkIf cfg.jackett.enable { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString jackettPort}/"; - }; - services.nzbhydra2 = lib.mkIf cfg.nzbhydra.enable { enable = true; }; - services.nginx.virtualHosts."${nzbhydraDomain}" = - lib.mkIf cfg.nzbhydra.enable { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString nzbhydraPort}/"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "jackett"; + port = jackettPort; + } + { + subdomain = "nzbhydra"; + port = nzbhydraPort; + } + ]; }; } diff --git a/modules/services/jellyfin.nix b/modules/services/jellyfin.nix index 122a70c..771f2c5 100644 --- a/modules/services/jellyfin.nix +++ b/modules/services/jellyfin.nix @@ -2,8 +2,6 @@ { config, lib, ... }: let cfg = config.my.services.jellyfin; - domain = config.networking.domain; - jellyfinDomain = "jellyfin.${config.networking.domain}"; in { options.my.services.jellyfin = { @@ -16,22 +14,23 @@ in group = "media"; }; - # Proxy to Jellyfin - services.nginx.virtualHosts."${jellyfinDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/" = { - proxyPass = "http://127.0.0.1:8096/"; - extraConfig = '' - proxy_buffering off; - ''; - }; - - locations."/socket" = { - proxyPass = "http://127.0.0.1:8096/"; - proxyWebsockets = true; - }; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "jellyfin"; + port = 8096; + extraConfig = { + locations."/" = { + extraConfig = '' + proxy_buffering off; + ''; + }; + # Too bad for the repetition... + locations."/socket" = { + proxyPass = "http://127.0.0.1:8096/"; + proxyWebsockets = true; + }; + }; + } + ]; }; } diff --git a/modules/services/lohr.nix b/modules/services/lohr.nix index 57f4feb..45ae3d7 100644 --- a/modules/services/lohr.nix +++ b/modules/services/lohr.nix @@ -4,9 +4,6 @@ let cfg = config.my.services.lohr; settingsFormat = pkgs.formats.yaml { }; - domain = config.networking.domain; - lohrDomain = "lohr.${config.networking.domain}"; - lohrPkg = pkgs.ambroisie.lohr; in { @@ -75,13 +72,11 @@ in }; users.groups.lohr = { }; - services.nginx.virtualHosts."${lohrDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/" = { - proxyPass = "http://127.0.0.1:${toString cfg.port}/"; - }; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "lohr"; + inherit (cfg) port; + } + ]; }; } diff --git a/modules/services/matrix.nix b/modules/services/matrix.nix index 5d81448..4d6394e 100644 --- a/modules/services/matrix.nix +++ b/modules/services/matrix.nix @@ -118,6 +118,35 @@ in ''; }; + my.services.nginx.virtualHosts = [ + # Element Web app deployment + { + subdomain = "chat"; + root = pkgs.element-web.override { + conf = { + default_server_config = { + "m.homeserver" = { + "base_url" = "https://matrix.${domain}"; + "server_name" = domain; + }; + "m.identity_server" = { + "base_url" = "https://vector.im"; + }; + }; + showLabsSettings = true; + defaultCountryCode = "FR"; # cocorico + roomDirectory = { + "servers" = [ + "matrix.org" + "mozilla.org" + ]; + }; + }; + }; + } + ]; + + # Those are too complicated to use my wrapper... services.nginx.virtualHosts = { "matrix.${domain}" = { onlySSL = true; @@ -192,34 +221,6 @@ in return 200 '${builtins.toJSON client}'; ''; }; - - # Element Web app deployment - "chat.${domain}" = { - useACMEHost = domain; - forceSSL = true; - - root = pkgs.element-web.override { - conf = { - default_server_config = { - "m.homeserver" = { - "base_url" = "https://matrix.${domain}"; - "server_name" = domain; - }; - "m.identity_server" = { - "base_url" = "https://vector.im"; - }; - }; - showLabsSettings = true; - defaultCountryCode = "FR"; # cocorico - roomDirectory = { - "servers" = [ - "matrix.org" - "mozilla.org" - ]; - }; - }; - }; - }; }; # For administration tools. diff --git a/modules/services/miniflux.nix b/modules/services/miniflux.nix index 035bfaf..d223850 100644 --- a/modules/services/miniflux.nix +++ b/modules/services/miniflux.nix @@ -2,9 +2,6 @@ { config, lib, ... }: let cfg = config.my.services.miniflux; - - domain = config.networking.domain; - minifluxDomain = "reader.${config.networking.domain}"; in { options.my.services.miniflux = with lib; { @@ -23,7 +20,7 @@ in description = "Password of the admin user"; }; - privatePort = mkOption { + port = mkOption { type = types.port; default = 9876; example = 8080; @@ -45,8 +42,8 @@ in config = { # Virtual hosts settings - BASE_URL = "https://${minifluxDomain}"; - LISTEN_ADDR = "localhost:${toString cfg.privatePort}"; + BASE_URL = "https://reader.${config.networking.domain}"; + LISTEN_ADDR = "localhost:${toString cfg.port}"; # I want fast updates POLLING_FREQUENCY = "30"; BATCH_SIZE = "50"; @@ -56,12 +53,11 @@ in }; }; - # Proxy to Jellyfin - services.nginx.virtualHosts."${minifluxDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString cfg.privatePort}/"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "reader"; + inherit (cfg) port; + } + ]; }; } diff --git a/modules/services/monitoring.nix b/modules/services/monitoring.nix index a86e2ce..ba5adf3 100644 --- a/modules/services/monitoring.nix +++ b/modules/services/monitoring.nix @@ -2,9 +2,6 @@ { config, lib, pkgs, ... }: let cfg = config.my.services.monitoring; - - domain = config.networking.domain; - grafanaDomain = "monitoring.${config.networking.domain}"; in { options.my.services.monitoring = with lib; { @@ -52,7 +49,7 @@ in config = lib.mkIf cfg.enable { services.grafana = { enable = true; - domain = grafanaDomain; + domain = "monitoring.${config.networking.domain}"; port = cfg.grafana.port; addr = "127.0.0.1"; # Proxied through Nginx @@ -115,16 +112,11 @@ in ]; }; - services.nginx = { - virtualHosts.${grafanaDomain} = { - forceSSL = true; - useACMEHost = domain; - - locations."/" = { - proxyPass = "http://127.0.0.1:${toString cfg.grafana.port}"; - proxyWebsockets = true; - }; - }; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "monitoring"; + inherit (cfg.grafana) port; + } + ]; }; } diff --git a/modules/services/navidrome.nix b/modules/services/navidrome.nix index 779884e..6c001fd 100644 --- a/modules/services/navidrome.nix +++ b/modules/services/navidrome.nix @@ -2,8 +2,6 @@ { config, lib, pkgs, ... }: let cfg = config.my.services.navidrome; - domain = config.networking.domain; - navidromeDomain = "music.${config.networking.domain}"; in { options.my.services.navidrome = with lib; { @@ -23,7 +21,7 @@ in ''; }; - privatePort = mkOption { + port = mkOption { type = types.port; default = 4533; example = 8080; @@ -42,21 +40,18 @@ in enable = true; settings = cfg.settings // { - Port = cfg.privatePort; + Port = cfg.port; Address = "127.0.0.1"; # Behind reverse proxy, so only loopback MusicFolder = cfg.musicFolder; LogLevel = "info"; }; }; - services.nginx.virtualHosts."${navidromeDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/" = { - proxyPass = "http://127.0.0.1:${toString cfg.privatePort}/"; - proxyWebsockets = true; - }; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "music"; + inherit (cfg) port; + } + ]; }; } diff --git a/modules/services/nextcloud.nix b/modules/services/nextcloud.nix index d615903..b66b8ff 100644 --- a/modules/services/nextcloud.nix +++ b/modules/services/nextcloud.nix @@ -2,8 +2,6 @@ { config, lib, pkgs, ... }: let cfg = config.my.services.nextcloud; - domain = config.networking.domain; - nextcloudDomain = "nextcloud.${config.networking.domain}"; in { options.my.services.nextcloud = with lib; { @@ -31,7 +29,7 @@ in services.nextcloud = { enable = true; package = pkgs.nextcloud22; - hostName = nextcloudDomain; + hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; config = { @@ -59,11 +57,10 @@ in after = [ "postgresql.service" ]; }; - services.nginx.virtualHosts."${nextcloudDomain}" = { + # The service above configures the domain, no need for my wrapper + services.nginx.virtualHosts."nextcloud.${config.networking.domain}" = { forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:3000/"; + useACMEHost = config.networking.domain; }; my.services.backup = { diff --git a/modules/services/pirate.nix b/modules/services/pirate.nix index 2eb490b..a2c62ca 100644 --- a/modules/services/pirate.nix +++ b/modules/services/pirate.nix @@ -5,7 +5,6 @@ { config, lib, ... }: let cfg = config.my.services.pirate; - domain = config.networking.domain; ports = { sonarr = 8989; @@ -22,15 +21,8 @@ let }) ports); - redirections = with lib.attrsets; - (mapAttrs' - (service: port: nameValuePair "${service}.${domain}" { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${builtins.toString port}/"; - }) - ports); + redirections = lib.flip lib.mapAttrsToList ports + (subdomain: port: { inherit subdomain port; }); in { options.my.services.pirate = { @@ -38,6 +30,7 @@ in }; config = lib.mkIf cfg.enable { - services = managers // { nginx.virtualHosts = redirections; }; + services = managers; + my.services.nginx.virtualHosts = redirections; }; } diff --git a/modules/services/podgrab.nix b/modules/services/podgrab.nix index 7926fc2..bc16178 100644 --- a/modules/services/podgrab.nix +++ b/modules/services/podgrab.nix @@ -2,9 +2,6 @@ { config, lib, pkgs, ... }: let cfg = config.my.services.podgrab; - - domain = config.networking.domain; - podgrabDomain = "podgrab.${domain}"; in { options.my.services.podgrab = with lib; { @@ -34,11 +31,11 @@ in inherit (cfg) passwordFile port; }; - services.nginx.virtualHosts."${podgrabDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString cfg.port}"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "podgrab"; + inherit (cfg) port; + } + ]; }; } diff --git a/modules/services/rss-bridge.nix b/modules/services/rss-bridge.nix index ad5141b..85e37c2 100644 --- a/modules/services/rss-bridge.nix +++ b/modules/services/rss-bridge.nix @@ -2,8 +2,6 @@ { config, lib, ... }: let cfg = config.my.services.rss-bridge; - domain = config.networking.domain; - rss-bridgeDomain = "rss-bridge.${config.networking.domain}"; in { options.my.services.rss-bridge = { @@ -14,12 +12,13 @@ in services.rss-bridge = { enable = true; whitelist = [ "*" ]; # Whitelist all - virtualHost = rss-bridgeDomain; # Setup virtual host + virtualHost = "rss-bridge.${config.networking.domain}"; }; - services.nginx.virtualHosts."${rss-bridgeDomain}" = { + # The service above configures the domain, no need for my wrapper + services.nginx.virtualHosts."rss-bridge.${config.networking.domain}" = { forceSSL = true; - useACMEHost = domain; + useACMEHost = config.networking.domain; }; }; } diff --git a/modules/services/sabnzbd.nix b/modules/services/sabnzbd.nix index ebeef8b..653f853 100644 --- a/modules/services/sabnzbd.nix +++ b/modules/services/sabnzbd.nix @@ -2,9 +2,6 @@ { config, lib, ... }: let cfg = config.my.services.sabnzbd; - - domain = config.networking.domain; - sabnzbdDomain = "sabnzbd.${domain}"; port = 9090; # NOTE: not declaratively set... in { @@ -18,11 +15,11 @@ in group = "media"; }; - services.nginx.virtualHosts."${sabnzbdDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString port}"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "sabnzbd"; + inherit port; + } + ]; }; } diff --git a/modules/services/transmission.nix b/modules/services/transmission.nix index 29e181b..2f27990 100644 --- a/modules/services/transmission.nix +++ b/modules/services/transmission.nix @@ -6,9 +6,6 @@ { config, lib, ... }: let cfg = config.my.services.transmission; - - domain = config.networking.domain; - webuiDomain = "transmission.${domain}"; in { options.my.services.transmission = with lib; { @@ -34,7 +31,7 @@ in description = "Download base directory"; }; - privatePort = mkOption { + port = mkOption { type = types.port; default = 9091; example = 8080; @@ -63,7 +60,7 @@ in peer-port = cfg.peerPort; rpc-enabled = true; - rpc-port = cfg.privatePort; + rpc-port = cfg.port; rpc-authentication-required = true; rpc-username = cfg.username; @@ -77,12 +74,12 @@ in # Default transmission webui, I prefer combustion but its development # seems to have stalled - services.nginx.virtualHosts."${webuiDomain}" = { - forceSSL = true; - useACMEHost = domain; - - locations."/".proxyPass = "http://127.0.0.1:${toString cfg.privatePort}"; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "transmission"; + inherit (cfg) port; + } + ]; networking.firewall = { allowedTCPPorts = [ cfg.peerPort ]; From fd526b674b6ee544b073e60ebd99bb97ffe92ba4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 15:34:52 +0200 Subject: [PATCH 0269/1588] secrets: allow lists in types --- secrets/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/secrets/default.nix b/secrets/default.nix index 1f2fae8..d0c891c 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -20,6 +20,7 @@ throwOnCanary { int str (attrsOf valueType) + (listOf valueType) ]; in valueType; From 878759cb7740908613e20f09a5fa9ce36a4c0546 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 14:17:18 +0200 Subject: [PATCH 0270/1588] secrets: add sso --- secrets/default.nix | 2 ++ secrets/sso/.gitattributes | 1 + secrets/sso/ambroisie/password-hash.txt | Bin 0 -> 83 bytes secrets/sso/ambroisie/totp-secret.txt | Bin 0 -> 75 bytes secrets/sso/auth-key.txt | Bin 0 -> 151 bytes secrets/sso/default.nix | 21 +++++++++++++++++++++ 6 files changed, 24 insertions(+) create mode 100644 secrets/sso/.gitattributes create mode 100644 secrets/sso/ambroisie/password-hash.txt create mode 100644 secrets/sso/ambroisie/totp-secret.txt create mode 100644 secrets/sso/auth-key.txt create mode 100644 secrets/sso/default.nix diff --git a/secrets/default.nix b/secrets/default.nix index d0c891c..5b6c94b 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -58,6 +58,8 @@ throwOnCanary { podgrab.password = fileContents ./podgrab/password.txt; + sso = import ./sso { inherit lib; }; + transmission.password = fileContents ./transmission/password.txt; users = { diff --git a/secrets/sso/.gitattributes b/secrets/sso/.gitattributes new file mode 100644 index 0000000..d4bba55 --- /dev/null +++ b/secrets/sso/.gitattributes @@ -0,0 +1 @@ +/default.nix filter diff diff --git a/secrets/sso/ambroisie/password-hash.txt b/secrets/sso/ambroisie/password-hash.txt new file mode 100644 index 0000000000000000000000000000000000000000..9b2c759b3116766d1b2f9ca81a6cf31c5e1dbb1b GIT binary patch literal 83 zcmZQ@_Y83kiVO&0_~w0~*lm5ox%#Dbp^FJF0%WZi5(NorN i<1gKBc5fmS{Zf}WC!ew0x#iu_PsJhsGUM*QHvs@n^Cr>& literal 0 HcmV?d00001 diff --git a/secrets/sso/auth-key.txt b/secrets/sso/auth-key.txt new file mode 100644 index 0000000000000000000000000000000000000000..785d8d0f92f43a3dfa95dd856655a33beb176a20 GIT binary patch literal 151 zcmZQ@_Y83kiVO&0nETx9_6DP~zyD=$CBJ*{*f)!L&+Ibw1DiideehSh?)j`t_{(+y zj-I5Cmpfc$+Hih6!SwOhso#28?=MU_y3JRsek->ekDE^5%y%cI+x#ec)g)SSRLEn6 zC#%?Rw?`HVdLDb{h|Y' | base32 | tr -d =` + totpSecret = fileContents (./. + "/${user}/totp-secret.txt"); + }); +in +{ + auth_key = fileContents ./auth-key.txt; + + users = lib.flip lib.genAttrs importUser [ + "ambroisie" + ]; + + groups = { + root = [ "ambroisie" ]; + }; +} From 52079bf1e7caf0e93e8128a189656edc96a33a92 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 15:37:31 +0200 Subject: [PATCH 0271/1588] modules: services: nginx: enable explicitly --- machines/porthos/services.nix | 3 +++ modules/services/nginx.nix | 5 +---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index ac33819..28b2494 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -90,6 +90,9 @@ in enable = true; password = my.secrets.nextcloud.password; }; + nginx = { + enable = true; + }; # The whole *arr software suite pirate.enable = true; # Podcast automatic downloader diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix index 2a64c65..c2c3a4d 100644 --- a/modules/services/nginx.nix +++ b/modules/services/nginx.nix @@ -54,10 +54,7 @@ let in { options.my.services.nginx = with lib; { - enable = - mkEnableOption "Nginx, activates when `virtualHosts` is not empty" // { - default = builtins.length cfg.virtualHosts != 0; - }; + enable = mkEnableOption "Nginx"; monitoring = { enable = my.mkDisableOption "monitoring through grafana and prometheus"; From fd898df5903e459982426a61a6e1b4d8e989baa3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 14:53:13 +0200 Subject: [PATCH 0272/1588] modules: services: nginx: add SSO --- modules/services/nginx.nix | 125 +++++++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix index c2c3a4d..f78c2df 100644 --- a/modules/services/nginx.nix +++ b/modules/services/nginx.nix @@ -34,6 +34,10 @@ let ''; }; + sso = { + enable = mkEnableOption "SSO authentication"; + }; + extraConfig = mkOption { type = types.attrs; # FIXME: forward type of virtualHosts example = litteralExample '' @@ -89,6 +93,22 @@ in List of virtual hosts to set-up using default settings. ''; }; + + sso = { + subdomain = mkOption { + type = types.str; + default = "login"; + example = "auth"; + description = "Which subdomain, to use for SSO."; + }; + + port = mkOption { + type = types.port; + default = 8082; + example = 8080; + description = "Port to use for internal webui."; + }; + }; }; config = lib.mkIf cfg.enable { @@ -170,12 +190,117 @@ in }) # VHost specific configuration args.extraConfig + # SSO configuration + (lib.optionalAttrs args.sso.enable { + extraConfig = (args.extraConfig.extraConfig or "") + '' + error_page 401 = @error401; + ''; + + locations."@error401".return = '' + 302 https://${cfg.sso.subdomain}.${config.networking.domain}/login?go=$scheme://$http_host$request_uri + ''; + + locations."/" = { + extraConfig = + (args.extraConfig.locations."/".extraConfig or "") + '' + # Use SSO + auth_request /sso-auth; + + # Set username through header + auth_request_set $username $upstream_http_x_username; + proxy_set_header X-User $username; + + # Renew SSO cookie on request + auth_request_set $cookie $upstream_http_set_cookie; + add_header Set-Cookie $cookie; + ''; + }; + + locations."/sso-auth" = { + proxyPass = "http://localhost:${toString cfg.sso.port}/auth"; + extraConfig = '' + # Do not allow requests from outside + internal; + + # Do not forward the request body + proxy_pass_request_body off; + proxy_set_header Content-Length ""; + + # Set X-Application according to subdomain for matching + proxy_set_header X-Application "${subdomain}"; + + # Set origin URI for matching + proxy_set_header X-Origin-URI $request_uri; + ''; + }; + }) ]) ); in lib.my.genAttrs' cfg.virtualHosts mkVHost; + + sso = { + enable = true; + + configuration = { + listen = { + addr = "127.0.0.1"; + inherit (cfg.sso) port; + }; + + cookie = { + domain = ".${config.networking.domain}"; + secure = true; + authentication_key = config.my.secrets.sso.auth_key; + }; + + login = { + title = "Ambroisie's SSO"; + default_method = "simple"; + hide_mfa_field = false; + names = { + simple = "Username / Password"; + }; + }; + + providers = { + simple = + let + applyUsers = lib.flip lib.mapAttrs config.my.secrets.sso.users; + in + { + users = applyUsers (_: v: v.passwordHash); + + mfa = applyUsers (_: v: [{ + provider = "totp"; + attributes = { + secret = v.totpSecret; + }; + }]); + + inherit (config.my.secrets.sso) groups; + }; + }; + + acl = { + rule_sets = [ + { + rules = [{ field = "x-application"; present = true; }]; + allow = [ "@root" ]; + } + ]; + }; + }; + }; }; + my.services.nginx.virtualHosts = [ + { + subdomain = "login"; + inherit (cfg.sso) port; + } + ]; + networking.firewall.allowedTCPPorts = [ 80 443 ]; # Nginx needs to be able to read the certificates From 8319f0ea5c2b93c2b5841850095943397c2aed73 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 17:34:26 +0200 Subject: [PATCH 0273/1588] modules: services: nginx: nginx-sso verbose logs For some reason it still doesn't appear in the systemd log... --- modules/services/nginx.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix index f78c2df..e7ab566 100644 --- a/modules/services/nginx.nix +++ b/modules/services/nginx.nix @@ -248,6 +248,23 @@ in inherit (cfg.sso) port; }; + audit_log = { + target = [ + "fd://stdout" + ]; + events = [ + "access_denied" + "login_success" + "login_failure" + "logout" + "validate" + ]; + headers = [ + "x-origin-uri" + "x-application" + ]; + }; + cookie = { domain = ".${config.networking.domain}"; secure = true; From 187c35c448a54796e9fe4307aabfeba7832a6c44 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 21:22:37 +0200 Subject: [PATCH 0274/1588] home: pager: remove lesspipe I don't use it anymore. --- home/pager.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/home/pager.nix b/home/pager.nix index 9f0dc5e..00d29c0 100644 --- a/home/pager.nix +++ b/home/pager.nix @@ -9,8 +9,6 @@ in config = lib.mkIf cfg.enable { - programs.lesspipe.enable = true; - home.sessionVariables = { # My default pager PAGER = "less"; From 2d12211d3eabe86b442fa895d80de91dc2cc1041 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 17:54:15 +0200 Subject: [PATCH 0275/1588] flake: bump inputs --- flake.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/flake.lock b/flake.lock index faf9162..3125d0e 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "futils": { "locked": { - "lastModified": 1629284811, + "lastModified": 1629481132, "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c", + "rev": "997f7efcb746a9c140ce1f13c72263189225f482", "type": "github" }, "original": { @@ -23,11 +23,11 @@ ] }, "locked": { - "lastModified": 1629347633, - "narHash": "sha256-FGZJ7lmTAMIkjdrh6dIPck5HuB4KMT2GgDV5ZjiCWoc=", + "lastModified": 1630294974, + "narHash": "sha256-9e3AKxbCoexrsWFXxQ4QUETNxQlXaffnntEnPOO19oI=", "owner": "nix-community", "repo": "home-manager", - "rev": "bf6b85136b47ab1a76df4a90ea4850871147494a", + "rev": "61ca2fc1c00a275b8bd61582b23195d60fe0fa40", "type": "github" }, "original": { @@ -39,11 +39,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1629292755, - "narHash": "sha256-5xMo32NVLnloY9DveqwJO/Cab1+PbTMPqU4WMmawX5M=", + "lastModified": 1630248577, + "narHash": "sha256-9d/yq96TTrnF7qjA6wPYk+rYjWAXwfUmwk3qewezSeg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "253aecf69ed7595aaefabde779aa6449195bebb7", + "rev": "8d8a28b47b7c41aeb4ad01a2bd8b7d26986c3512", "type": "github" }, "original": { @@ -55,11 +55,11 @@ }, "nur": { "locked": { - "lastModified": 1629359626, - "narHash": "sha256-of3obB9km+QnrBpWHm1b1k33qQOqNB0c8grkVcXNP7o=", + "lastModified": 1630395220, + "narHash": "sha256-Nb5SppZmj+0MH33c2/qdRFqGTo/8g0CTfVtsGZ/sQf0=", "owner": "nix-community", "repo": "NUR", - "rev": "805c0d529efe652fa85f92527bec68ce26a08723", + "rev": "607b9cebfdbf57ec864aacf14efa64fac920016d", "type": "github" }, "original": { From 2ea68f705db40fc0252b86f7684889aa6f38de74 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 19 Aug 2021 13:07:51 +0200 Subject: [PATCH 0276/1588] secrets: add paperless --- secrets/default.nix | 2 ++ secrets/paperless/secretKey.txt | Bin 0 -> 87 bytes 2 files changed, 2 insertions(+) create mode 100644 secrets/paperless/secretKey.txt diff --git a/secrets/default.nix b/secrets/default.nix index 5b6c94b..97d9da0 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -56,6 +56,8 @@ throwOnCanary { nextcloud.password = fileContents ./nextcloud/password.txt; + paperless.secretKey = fileContents ./paperless/secretKey.txt; + podgrab.password = fileContents ./podgrab/password.txt; sso = import ./sso { inherit lib; }; diff --git a/secrets/paperless/secretKey.txt b/secrets/paperless/secretKey.txt new file mode 100644 index 0000000000000000000000000000000000000000..fe31bc4999a48ec5a37340217454c558fb360041 GIT binary patch literal 87 zcmZQ@_Y83kiVO&0aMfD6P4Vn^t+S8fUVr}knLjkQEB_u(4g2krpWZXcc{O)w*)nk% uAJlsim9ukkx0d^(%CL)WXE$4}Ge{|3wBYH_w>oG33$$Hh@HDCReE Date: Thu, 19 Aug 2021 13:05:08 +0200 Subject: [PATCH 0277/1588] modules: services: add paperless --- modules/services/default.nix | 1 + modules/services/paperless.nix | 113 +++++++++++++++++++++++++++++++++ modules/system/media.nix | 1 + 3 files changed, 115 insertions(+) create mode 100644 modules/services/paperless.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 4760ab1..9f132d0 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -18,6 +18,7 @@ ./navidrome.nix ./nextcloud.nix ./nginx.nix + ./paperless.nix ./pirate.nix ./podgrab.nix ./postgresql-backup.nix diff --git a/modules/services/paperless.nix b/modules/services/paperless.nix new file mode 100644 index 0000000..dd3a98b --- /dev/null +++ b/modules/services/paperless.nix @@ -0,0 +1,113 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.paperless; +in +{ + options.my.services.paperless = with lib; { + enable = mkEnableOption "Paperless service"; + + port = mkOption { + type = types.port; + default = 4535; + example = 8080; + description = "Internal port for webui"; + }; + + secretKey = mkOption { + type = types.str; + example = "e11fl1oa-*ytql8p)(06fbj4ukrlo+n7k&q5+$1md7i+mge=ee"; + description = "Secret key used for sessions tokens"; + }; + + documentPath = mkOption { + type = with types; nullOr str; + default = null; + example = "/mnt/paperless"; + description = '' + Path to the directory to store the documents. Use default if null + ''; + }; + + username = mkOption { + type = types.str; + default = "ambroisie"; + example = "username"; + description = "Name of the administrator"; + }; + }; + + config = lib.mkIf cfg.enable { + services.paperless-ng = { + enable = true; + + port = cfg.port; + + mediaDir = lib.mkIf (cfg.documentPath != null) cfg.documentPath; + + extraConfig = + let + paperlessDomain = "paperless.${config.networking.domain}"; + in + { + # Use SSO + PAPERLESS_ENABLE_HTTP_REMOTE_USER = true; + PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME = "HTTP_X_USER"; + + # Use PostgreSQL + PAPERLESS_DBHOST = "/run/postgresql"; + PAPERLESS_DBUSER = "paperless"; + PAPERLESS_DBNAME = "paperless"; + + # Security settings + PAPERLESS_SECRET_KEY = cfg.secretKey; # Insecure, I don't care + PAPERLESS_ALLOWED_HOSTS = paperlessDomain; + PAPERLESS_CORS_ALLOWED_HOSTS = "https://${paperlessDomain}"; + + # OCR settings + PAPERLESS_OCR_LANGUAGE = "fra+eng"; + + # Misc + PAPERLESS_TIME_ZONE = config.time.timeZone; + PAPERLESS_ADMIN_USER = cfg.username; + }; + }; + + # Set-up database + services.postgresql = { + enable = true; + ensureDatabases = [ "paperless" ]; + ensureUsers = [ + { + name = "paperless"; + ensurePermissions."DATABASE paperless" = "ALL PRIVILEGES"; + } + ]; + }; + + systemd.services.paperless-ng-server = { + # Make sure the DB is available + after = [ "postgresql.service" ]; + }; + + + users.users.${config.services.paperless-ng.user} = { + extraGroups = [ "media" ]; + }; + + my.services.nginx.virtualHosts = [ + { + subdomain = "paperless"; + inherit (cfg) port; + sso = { + enable = true; + }; + } + ]; + + my.services.backup = { + paths = [ + config.services.paperless-ng.mediaDir + ]; + }; + }; +} diff --git a/modules/system/media.nix b/modules/system/media.nix index 4ad2fee..630a351 100644 --- a/modules/system/media.nix +++ b/modules/system/media.nix @@ -5,6 +5,7 @@ let mediaServices = with config.my.services; [ calibre-web jellyfin + paperless pirate sabnzbd transmission From 197f371ca99f888d65e8098e2c9c3ca95c05f224 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 20:33:27 +0200 Subject: [PATCH 0278/1588] secrets: add paperless password To be used as a fallback. --- secrets/default.nix | 5 ++++- secrets/paperless/password.txt | Bin 0 -> 55 bytes 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 secrets/paperless/password.txt diff --git a/secrets/default.nix b/secrets/default.nix index 97d9da0..fbc1bfa 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -56,7 +56,10 @@ throwOnCanary { nextcloud.password = fileContents ./nextcloud/password.txt; - paperless.secretKey = fileContents ./paperless/secretKey.txt; + paperless = { + password = fileContents ./paperless/password.txt; + secretKey = fileContents ./paperless/secretKey.txt; + }; podgrab.password = fileContents ./podgrab/password.txt; diff --git a/secrets/paperless/password.txt b/secrets/paperless/password.txt new file mode 100644 index 0000000000000000000000000000000000000000..5e2cb81f855fcb4517cbd1f6ee8adb9b268574d0 GIT binary patch literal 55 zcmZQ@_Y83kiVO&0h}b1>v7hDrDYtK@-)r)9asBQ8<#yiZbkUJ{rUh=_Qtl^Z%YD0h M|F4v7G20q90H7)wBLDyZ literal 0 HcmV?d00001 From 23484989a6d24c7e7258a3c8778489aa94dcc950 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 20:37:18 +0200 Subject: [PATCH 0279/1588] modules: services: paperless: add admin password This is a fallback in case SSO stops working... --- modules/services/paperless.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/services/paperless.nix b/modules/services/paperless.nix index dd3a98b..ebb655f 100644 --- a/modules/services/paperless.nix +++ b/modules/services/paperless.nix @@ -34,6 +34,12 @@ in example = "username"; description = "Name of the administrator"; }; + + passwordFile = mkOption { + type = types.str; + example = "/var/lib/paperless/password.txt"; + description = "Read the administrator's password from this path"; + }; }; config = lib.mkIf cfg.enable { @@ -70,6 +76,9 @@ in PAPERLESS_TIME_ZONE = config.time.timeZone; PAPERLESS_ADMIN_USER = cfg.username; }; + + # Admin password + passwordFile = cfg.passwordFile; }; # Set-up database From 14d56a13378ecef795187bbbc3c7ce63bba42dc4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 19 Aug 2021 13:05:25 +0200 Subject: [PATCH 0280/1588] machines: porthos: services: enable paperless --- machines/porthos/services.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 28b2494..d26bb10 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -93,6 +93,14 @@ in nginx = { enable = true; }; + paperless = { + enable = true; + documentPath = "/data/media/paperless"; + # Insecure, I don't care + passwordFile = + builtins.toFile "paperless.env" my.secrets.paperless.password; + secretKey = my.secrets.paperless.secretKey; + }; # The whole *arr software suite pirate.enable = true; # Podcast automatic downloader From bf6af94bec38d6ad49637ea6687fc14f05c0a1b4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 30 Aug 2021 21:02:47 +0200 Subject: [PATCH 0281/1588] modules: services: paperless: proxy websockets --- modules/services/paperless.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/services/paperless.nix b/modules/services/paperless.nix index ebb655f..b22628f 100644 --- a/modules/services/paperless.nix +++ b/modules/services/paperless.nix @@ -110,6 +110,11 @@ in sso = { enable = true; }; + + # Enable websockets on root + extraConfig = { + locations."/".proxyWebsockets = true; + }; } ]; From 9a5bba7574f2679707409085c548dbbd3bf7f692 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 18:29:02 +0200 Subject: [PATCH 0282/1588] home: wm: i3bar: remove redundant '%' --- home/wm/i3bar.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/wm/i3bar.nix b/home/wm/i3bar.nix index e9c85de..62d0d7b 100644 --- a/home/wm/i3bar.nix +++ b/home/wm/i3bar.nix @@ -40,8 +40,8 @@ in } { block = "battery"; - format = "{percentage}% ({time})"; - full_format = "{percentage}%"; + format = "{percentage} ({time})"; + full_format = "{percentage}"; } { block = "temperature"; From 2c81416774ee6ef6948e8465c0aa11d73304f072 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 18:44:10 +0200 Subject: [PATCH 0283/1588] pkgs: havm: use 'checkInputs' for test dependency --- pkgs/havm/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/havm/default.nix b/pkgs/havm/default.nix index d8856a5..2e15de7 100644 --- a/pkgs/havm/default.nix +++ b/pkgs/havm/default.nix @@ -10,7 +10,10 @@ stdenv.mkDerivation rec { buildInputs = [ ghc - which # Used by tests + ]; + + checkInputs = [ + which ]; doCheck = true; From cc54fe90877565531924d262dc17f23cb87a1eea Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 18:59:05 +0200 Subject: [PATCH 0284/1588] pkgs: bw-pass: do not set 'phases' --- pkgs/bw-pass/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix index 95ae0da..b11e7ea 100644 --- a/pkgs/bw-pass/default.nix +++ b/pkgs/bw-pass/default.nix @@ -5,13 +5,13 @@ stdenvNoCC.mkDerivation rec { src = ./bw-pass; - phases = [ "buildPhase" "installPhase" "fixupPhase" ]; - buildInputs = [ makeWrapper shellcheck ]; + dontUnpack = true; + buildPhase = '' shellcheck $src ''; From 920e31c72f962ecc7730281b1156f836bd648f96 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 19:00:29 +0200 Subject: [PATCH 0285/1588] pkgs: comma: give path to source directly --- pkgs/comma/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix index f932863..b034b9a 100644 --- a/pkgs/comma/default.nix +++ b/pkgs/comma/default.nix @@ -3,7 +3,7 @@ stdenvNoCC.mkDerivation rec { pname = "comma"; version = "0.1.0"; - src = ./. + "/comma"; + src = ./comma; phases = [ "buildPhase" "installPhase" "fixupPhase" ]; From 2709c3751f8b52bb9c6ba450258b64fa407d5655 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 19:00:46 +0200 Subject: [PATCH 0286/1588] pkgs: comma: do not set 'phases' --- pkgs/comma/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix index b034b9a..1c10eb2 100644 --- a/pkgs/comma/default.nix +++ b/pkgs/comma/default.nix @@ -5,13 +5,13 @@ stdenvNoCC.mkDerivation rec { src = ./comma; - phases = [ "buildPhase" "installPhase" "fixupPhase" ]; - buildInputs = [ makeWrapper shellcheck ]; + dontUnpack = true; + buildPhase = '' shellcheck $src ''; From 1d41918d70e462270083be602abdbc7e035145be Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 19:01:18 +0200 Subject: [PATCH 0287/1588] pkgs: diff-flake: do not set 'phases' --- pkgs/diff-flake/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 090aa6d..c085e67 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -5,13 +5,13 @@ stdenvNoCC.mkDerivation rec { src = ./diff-flake; - phases = [ "buildPhase" "installPhase" "fixupPhase" ]; - buildInputs = [ makeWrapper shellcheck ]; + dontUnpack = true; + buildPhase = '' shellcheck $src ''; From 5accea2a33ad51074195d4da48716a10a526e048 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 19:50:44 +0200 Subject: [PATCH 0288/1588] pkgs: havm: use 'nativeBuildInputs' This is the correct one to use for a compiler like 'ghc'. --- pkgs/havm/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/havm/default.nix b/pkgs/havm/default.nix index 2e15de7..51eb9f0 100644 --- a/pkgs/havm/default.nix +++ b/pkgs/havm/default.nix @@ -8,7 +8,7 @@ stdenv.mkDerivation rec { sha256 = "sha256-FDi4FZ8rjGqRkFlROtcJsv+mks7MmIXQGV4bZrwkQrA="; }; - buildInputs = [ + nativeBuildInputs = [ ghc ]; From 2d40fc3d0043653ebf520f3888590dc2cfddb9cb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 20:08:22 +0200 Subject: [PATCH 0289/1588] pkgs: i3-get-window-criteria: do not set 'phases' --- pkgs/i3-get-window-criteria/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix index 2e7ce03..acfde93 100644 --- a/pkgs/i3-get-window-criteria/default.nix +++ b/pkgs/i3-get-window-criteria/default.nix @@ -5,13 +5,13 @@ stdenvNoCC.mkDerivation rec { src = ./i3-get-window-criteria; - phases = [ "buildPhase" "installPhase" "fixupPhase" ]; - buildInputs = [ makeWrapper shellcheck ]; + dontUnpack = true; + buildPhase = '' shellcheck $src ''; From 5fdf108c408f1b946afb564d7d4249e2bf3809bd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 20:10:41 +0200 Subject: [PATCH 0290/1588] pkgs: matrix-notifier: do not set 'phases' --- pkgs/matrix-notifier/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index a7b3a3c..76765a7 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -10,8 +10,6 @@ stdenvNoCC.mkDerivation rec { sha256 = "sha256-JiKPDrr9wyD2q5Vsac+OkFdvrDkx6mj/oC7XDVnka74="; }; - phases = [ "installPhase" "fixupPhase" ]; - nativeBuildInputs = [ makeWrapper ]; From 1690efc107f2acf1975b1c5292b52a36dd96f7a1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 20:11:00 +0200 Subject: [PATCH 0291/1588] pkgs: unbound-zones-adblock: do not set 'phases' --- pkgs/unbound-zones-adblock/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index 2f7ac3f..845c123 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = unified-hosts-lists; - phases = [ "installPhase" ]; + dontUnpack = true; installPhase = let From 0df212f877d002660b94dae98773d18841d9ef72 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 Aug 2021 20:11:11 +0200 Subject: [PATCH 0292/1588] pkgs: unified-hosts-lists: do not set 'phases' --- pkgs/unified-hosts-lists/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index 9fb052a..0da6354 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -10,7 +10,7 @@ stdenvNoCC.mkDerivation rec { sha256 = "sha256-7oYuGegrHVUvAvA16iR8OEe5eTMeSybShSa1PJOe5No="; }; - phases = [ "installPhase" ]; + dontUnpack = true; installPhase = '' mkdir -p $out From 4521cba5f0e1913938b353d02887a753157915f3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 1 Sep 2021 14:51:27 +0200 Subject: [PATCH 0293/1588] flake: use 'nativeBuildInputs' --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 252e7bd..5abaac9 100644 --- a/flake.nix +++ b/flake.nix @@ -118,7 +118,7 @@ devShell = pkgs.mkShell { name = "NixOS-config"; - buildInputs = with pkgs; [ + nativeBuildInputs = with pkgs; [ git-crypt gitAndTools.pre-commit gnupg From 9474a3b57b047833637cc71ed420a64117a2530a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 1 Sep 2021 14:52:38 +0200 Subject: [PATCH 0294/1588] git: remove duplicate ignore directive --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 0a10705..fcf7246 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -.pre-commit-config.yaml -.pre-commit-config.yaml +/.pre-commit-config.yaml From 02992d819e56130760d46749fd6b5171705b2c6a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 3 Sep 2021 17:34:34 +0200 Subject: [PATCH 0295/1588] home: gdb: add nix store to safe path For now, the nix store path is hard-coded rather than substituted. This is useful for pretty-printing C++ types compiled with a different C++ library from my gdb. --- home/gdb/gdbinit | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/gdb/gdbinit b/home/gdb/gdbinit index c45c6d2..bdf7bfd 100644 --- a/home/gdb/gdbinit +++ b/home/gdb/gdbinit @@ -20,3 +20,5 @@ set auto-load python-scripts # Allow autoloading project-local .gdbinit files set auto-load safe-path ~/git/ +# Allow autoloading from the Nix store +set auto-load safe-path /nix/store From 8c0b70dcb51e018a57086b99cb7da9218121254e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 15:33:18 +0200 Subject: [PATCH 0296/1588] pkgs: make use of scoping This is the way to make sure `callPackage` picks up my custom packages to be used in the set. --- pkgs/default.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index f307304..4e35cff 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,5 @@ { pkgs }: -rec { +pkgs.lib.makeScope pkgs.newScope (pkgs: { bw-pass = pkgs.callPackage ./bw-pass { }; comma = pkgs.callPackage ./comma { }; @@ -24,9 +24,7 @@ rec { volantes-cursors = pkgs.callPackage ./volantes-cursors { }; - unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { - inherit unified-hosts-lists; - }; + unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { }; -} +}) From 4ccf549e5850f9dcb9d84ecc9f3c8b0fe35e2970 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 15:57:23 +0200 Subject: [PATCH 0297/1588] modules: system: remove 'media' It was not the idiomatic way to do this. --- modules/services/calibre-web.nix | 3 +++ modules/services/jellyfin.nix | 3 +++ modules/services/paperless.nix | 3 +++ modules/services/pirate.nix | 2 ++ modules/services/sabnzbd.nix | 3 +++ modules/services/transmission.nix | 3 +++ modules/system/default.nix | 1 - modules/system/media.nix | 17 ----------------- 8 files changed, 17 insertions(+), 18 deletions(-) delete mode 100644 modules/system/media.nix diff --git a/modules/services/calibre-web.nix b/modules/services/calibre-web.nix index a62b74c..d4beff9 100644 --- a/modules/services/calibre-web.nix +++ b/modules/services/calibre-web.nix @@ -37,6 +37,9 @@ in }; }; + # Set-up media group + users.groups.media = { }; + my.services.nginx.virtualHosts = [ { subdomain = "library"; diff --git a/modules/services/jellyfin.nix b/modules/services/jellyfin.nix index 771f2c5..2fcf51e 100644 --- a/modules/services/jellyfin.nix +++ b/modules/services/jellyfin.nix @@ -14,6 +14,9 @@ in group = "media"; }; + # Set-up media group + users.groups.media = { }; + my.services.nginx.virtualHosts = [ { subdomain = "jellyfin"; diff --git a/modules/services/paperless.nix b/modules/services/paperless.nix index b22628f..b4e1f44 100644 --- a/modules/services/paperless.nix +++ b/modules/services/paperless.nix @@ -93,6 +93,9 @@ in ]; }; + # Set-up media group + users.groups.media = { }; + systemd.services.paperless-ng-server = { # Make sure the DB is available after = [ "postgresql.service" ]; diff --git a/modules/services/pirate.nix b/modules/services/pirate.nix index a2c62ca..89dba55 100644 --- a/modules/services/pirate.nix +++ b/modules/services/pirate.nix @@ -32,5 +32,7 @@ in config = lib.mkIf cfg.enable { services = managers; my.services.nginx.virtualHosts = redirections; + # Set-up media group + users.groups.media = { }; }; } diff --git a/modules/services/sabnzbd.nix b/modules/services/sabnzbd.nix index 653f853..b9b99cf 100644 --- a/modules/services/sabnzbd.nix +++ b/modules/services/sabnzbd.nix @@ -15,6 +15,9 @@ in group = "media"; }; + # Set-up media group + users.groups.media = { }; + my.services.nginx.virtualHosts = [ { subdomain = "sabnzbd"; diff --git a/modules/services/transmission.nix b/modules/services/transmission.nix index 2f27990..807fc0a 100644 --- a/modules/services/transmission.nix +++ b/modules/services/transmission.nix @@ -72,6 +72,9 @@ in }; }; + # Set-up media group + users.groups.media = { }; + # Default transmission webui, I prefer combustion but its development # seems to have stalled my.services.nginx.virtualHosts = [ diff --git a/modules/system/default.nix b/modules/system/default.nix index a9b251b..2b2bf97 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -6,7 +6,6 @@ ./boot.nix ./documentation.nix ./language.nix - ./media.nix ./nix.nix ./packages.nix ./users.nix diff --git a/modules/system/media.nix b/modules/system/media.nix deleted file mode 100644 index 630a351..0000000 --- a/modules/system/media.nix +++ /dev/null @@ -1,17 +0,0 @@ -# Abstracting away the need for a common 'media' group - -{ config, lib, ... }: -let - mediaServices = with config.my.services; [ - calibre-web - jellyfin - paperless - pirate - sabnzbd - transmission - ]; - needed = builtins.any (service: service.enable) mediaServices; -in -{ - config.users.groups.media = lib.mkIf needed { }; -} From 91489d5b71af4e5c9ad67231b1e4680bff9f33bf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 16:47:49 +0200 Subject: [PATCH 0298/1588] modules: add 'programs' directory --- modules/default.nix | 1 + modules/programs/default.nix | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 modules/programs/default.nix diff --git a/modules/default.nix b/modules/default.nix index 798fb0d..d9c6c68 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -5,6 +5,7 @@ imports = [ ./hardware ./home.nix + ./programs ./services ./system ]; diff --git a/modules/programs/default.nix b/modules/programs/default.nix new file mode 100644 index 0000000..85be70e --- /dev/null +++ b/modules/programs/default.nix @@ -0,0 +1,8 @@ +# Program-related modules +{ ... }: + +{ + imports = [ + # FIXME + ]; +} From 24b540d9483ef60d1e95b893b1711a7560b05f5c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 16:48:39 +0200 Subject: [PATCH 0299/1588] modules: programs: add steam --- modules/programs/default.nix | 2 +- modules/programs/steam.nix | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 modules/programs/steam.nix diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 85be70e..a6f14ed 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -3,6 +3,6 @@ { imports = [ - # FIXME + ./steam.nix ]; } diff --git a/modules/programs/steam.nix b/modules/programs/steam.nix new file mode 100644 index 0000000..e9f2a2b --- /dev/null +++ b/modules/programs/steam.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let + cfg = config.my.programs.steam; +in +{ + options.my.programs.steam = with lib; { + enable = mkEnableOption "steam configuration"; + }; + + config = lib.mkIf cfg.enable { + programs.steam = { + enable = true; + }; + }; +} From 7aa2a0f8faeb61c0af949984f2e811dc27c2e77a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 16:49:22 +0200 Subject: [PATCH 0300/1588] machines: aramis: programs: enable steam --- machines/aramis/default.nix | 1 + machines/aramis/programs.nix | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 machines/aramis/programs.nix diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index bb78127..878f2c9 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -11,6 +11,7 @@ ./home.nix ./networking.nix ./profiles.nix + ./programs.nix ./services.nix ./sound.nix ]; diff --git a/machines/aramis/programs.nix b/machines/aramis/programs.nix new file mode 100644 index 0000000..426ca2a --- /dev/null +++ b/machines/aramis/programs.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + my.programs = { + # Steam configuration + steam.enable = true; + }; +} From 27040532bdfa2dcfb5c557cfb2e50bc7c01d38cd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Sep 2021 18:13:47 +0200 Subject: [PATCH 0301/1588] modules: programs: steam: respect XDG conventions Steam wants to pollute HOME with `.steam*` files and folders, which are useless and annoying. We want to make sure the wrappers are preferred when installing, so use `lib.hiPrio` to ensure they get chosen. --- modules/programs/steam.nix | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/modules/programs/steam.nix b/modules/programs/steam.nix index e9f2a2b..dbdc0ce 100644 --- a/modules/programs/steam.nix +++ b/modules/programs/steam.nix @@ -1,15 +1,39 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.programs.steam; in { options.my.programs.steam = with lib; { enable = mkEnableOption "steam configuration"; + + dataDir = mkOption { + type = types.str; + default = "$XDG_DATA_HOME/steamlib"; + example = "/mnt/steam/"; + description = '' + Which directory should be used as HOME to run steam. + ''; + }; }; config = lib.mkIf cfg.enable { programs.steam = { enable = true; }; + + environment.systemPackages = builtins.map lib.hiPrio [ + # Respect XDG conventions, leave my HOME alone + (pkgs.writeScriptBin "steam" '' + #!/bin/sh + mkdir -p "${cfg.dataDir}" + HOME="${cfg.dataDir}" exec ${pkgs.steam}/bin/steam "$@" + '') + # Same, for GOG and other such games + (pkgs.writeScriptBin "steam-run" '' + #!/bin/sh + mkdir -p "${cfg.dataDir}" + HOME="${cfg.dataDir}" exec ${pkgs.steam-run-native}/bin/steam-run "$@" + '') + ]; }; } From 2f9d3417d432dd89edf08441bd202530bc8fbd03 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 23 Sep 2021 21:28:29 +0200 Subject: [PATCH 0302/1588] modules: system: users: use 'ambroisie' password Do not rely on `my.user.name` which could be changed to a value not available in the secrets. --- modules/system/users.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/users.nix b/modules/system/users.nix index 3897ad7..65c0ed5 100644 --- a/modules/system/users.nix +++ b/modules/system/users.nix @@ -21,7 +21,7 @@ in }; ${config.my.user.name} = { - inherit (secrets.users.${config.my.user.name}) hashedPassword; + inherit (secrets.users.ambroisie) hashedPassword; description = "Bruno BELANYI"; isNormalUser = true; shell = pkgs.zsh; From c13e57f584cc2eb67ff69827110e87223b39dde7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 23 Sep 2021 21:30:19 +0200 Subject: [PATCH 0303/1588] modules: system: users: use 'initialHashedPassword' This is the better option to use in case I want to have a stateless system. --- modules/system/users.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/system/users.nix b/modules/system/users.nix index 65c0ed5..32b46ca 100644 --- a/modules/system/users.nix +++ b/modules/system/users.nix @@ -17,11 +17,11 @@ in users = { root = { - inherit (secrets.users.root) hashedPassword; + initialHashedPassword = secrets.users.root.hashedPassword; }; ${config.my.user.name} = { - inherit (secrets.users.ambroisie) hashedPassword; + initialHashedPassword = secrets.users.ambroisie.hashedPassword; description = "Bruno BELANYI"; isNormalUser = true; shell = pkgs.zsh; From 8ce123c527360261674fa7fc299c451fca5d5b1c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 23 Sep 2021 21:55:17 +0200 Subject: [PATCH 0304/1588] lib: attrs: add 'recursiveMerge' --- lib/attrs.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/attrs.nix b/lib/attrs.nix index 84b63c7..75114b2 100644 --- a/lib/attrs.nix +++ b/lib/attrs.nix @@ -1,6 +1,13 @@ { lib, ... }: let - inherit (lib) filterAttrs listToAttrs mapAttrs' nameValuePair; + inherit (lib) + filterAttrs + foldl + listToAttrs + mapAttrs' + nameValuePair + recursiveUpdate + ; in { # Filter a generated set of attrs using a predicate function. @@ -19,6 +26,13 @@ in # attrs genAttrs' = values: f: listToAttrs (map f values); + # Merge a list of attrs recursively, later values override previous ones. + # + # recursiveMerge :: + # [ attrs ] + # attrs + recursiveMerge = foldl recursiveUpdate { }; + # Rename each of the attributes in an attribute set using the mapping function # # renameAttrs :: From 364ea0404a259df30c45b11d222a8c3f832d6be5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 23 Sep 2021 21:57:47 +0200 Subject: [PATCH 0305/1588] home: wm: i3: use 'recursiveMerge' --- home/wm/i3.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/wm/i3.nix b/home/wm/i3.nix index 14ec64e..f8080ad 100644 --- a/home/wm/i3.nix +++ b/home/wm/i3.nix @@ -154,7 +154,7 @@ in }; # I don't care for i3's default values, I specify them all explicitly - keybindings = builtins.foldl' (lhs: rhs: lhs // rhs) { } [ + keybindings = lib.my.recursiveMerge [ { # The basics "${modifier}+Return" = "exec ${terminal}"; @@ -298,7 +298,7 @@ in in lib.my.genAttrs' oneToNine createWorkspaceBinding; in - builtins.foldl' (lhs: rhs: lhs // rhs) { } [ + lib.my.recursiveMerge [ (createWorkspaceBindings modifier "workspace number") (createWorkspaceBindings "${modifier}+Shift" "move container to workspace number") { From 8852699c9ae5abcc02c193386c2fdb898e234f8b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 23 Sep 2021 22:11:14 +0200 Subject: [PATCH 0306/1588] modules: services: nginx: use 'recursiveMerge' --- modules/services/nginx.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix index e7ab566..a68c8b9 100644 --- a/modules/services/nginx.nix +++ b/modules/services/nginx.nix @@ -173,7 +173,7 @@ in domain = config.networking.domain; mkVHost = ({ subdomain, ... } @ args: lib.nameValuePair "${subdomain}.${domain}" - (builtins.foldl' lib.recursiveUpdate { } [ + (lib.my.recursiveMerge [ # Base configuration { forceSSL = true; From 2b0b6f2004d06a73212a40c77ad480155760df22 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 00:18:19 +0200 Subject: [PATCH 0307/1588] lib: modules: document 'mapModules' --- lib/modules.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/modules.nix b/lib/modules.nix index 92e8476..455015b 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -5,6 +5,14 @@ let inherit (self.attrs) mapFilterAttrs; in { + # Find all nix modules in a directory, discard any prefixed with "_", + # map a function to each resulting path, and generate an attribute set + # to associate module name to resulting value. + # + # mapModules :: + # path + # (path -> any) + # attrs mapModules = dir: fn: mapFilterAttrs (n: v: From 9473cff40820af0af213845ed102f3a941e46096 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 00:54:00 +0200 Subject: [PATCH 0308/1588] lib: modules: refactor 'mapModules' Introduce the recursive version of this function, then refactor to reduce repetition. --- lib/modules.nix | 49 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/lib/modules.nix b/lib/modules.nix index 455015b..5b8c4c3 100644 --- a/lib/modules.nix +++ b/lib/modules.nix @@ -3,6 +3,31 @@ let inherit (builtins) readDir pathExists; inherit (lib) hasPrefix hasSuffix nameValuePair removeSuffix; inherit (self.attrs) mapFilterAttrs; + + implOptionalRecursion = recurse: + let + recurseStep = + if recurse + then (n: path: fn: nameValuePair n (impl path fn)) + else (_: _: _: nameValuePair "" null); + impl = dir: fn: + mapFilterAttrs + (n: _: n != "" && !(hasPrefix "_" n)) + (n: v: + let + path = "${toString dir}/${n}"; + in + if v == "directory" + then + if pathExists "${path}/default.nix" + then nameValuePair n (fn path) + else recurseStep n path fn + else if v == "regular" && n != "default.nix" && hasSuffix ".nix" n + then nameValuePair (removeSuffix ".nix" n) (fn path) + else nameValuePair "" null) + (readDir dir); + in + impl; in { # Find all nix modules in a directory, discard any prefixed with "_", @@ -13,19 +38,13 @@ in # path # (path -> any) # attrs - mapModules = dir: fn: - mapFilterAttrs - (n: v: - v != null && - !(hasPrefix "_" n)) - (n: v: - let path = "${toString dir}/${n}"; in - if v == "directory" && pathExists "${path}/default.nix" - then nameValuePair n (fn path) - else if v == "regular" && - n != "default.nix" && - hasSuffix ".nix" n - then nameValuePair (removeSuffix ".nix" n) (fn path) - else nameValuePair "" null) - (readDir dir); + mapModules = implOptionalRecursion false; + + # Recursive version of mapModules. + # + # mapModulesRec :: + # path + # (path -> any) + # attrs + mapModulesRec = implOptionalRecursion true; } From d813d85af8d87f90559fdd246565a1d145c784fe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 00:57:46 +0200 Subject: [PATCH 0309/1588] lib: remove 'with self;' --- lib/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index 9014f85..fa37c23 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -12,8 +12,7 @@ let }; mylib = makeExtensible (self: - with self; mapModules ./. - (file: import file { inherit self lib pkgs inputs; }) + mapModules ./. (file: import file { inherit self lib pkgs inputs; }) ); in mylib.extend (self: super: From b398481ba3fb668957dabd51f6851cbe61480e07 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 01:01:29 +0200 Subject: [PATCH 0310/1588] pkgs: remove unused arguments --- pkgs/nolimips/default.nix | 2 +- pkgs/unbound-zones-adblock/default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/nolimips/default.nix b/pkgs/nolimips/default.nix index 2a1dc33..65d847d 100644 --- a/pkgs/nolimips/default.nix +++ b/pkgs/nolimips/default.nix @@ -1,4 +1,4 @@ -{ lib, fetchurl, gnulib, stdenv }: +{ lib, fetchurl, stdenv }: stdenv.mkDerivation rec { pname = "nolimips"; version = "0.11"; diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index 845c123..ecec917 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -1,4 +1,4 @@ -{ lib, fetchFromGitHub, gawk, stdenvNoCC, unified-hosts-lists }: +{ lib, gawk, stdenvNoCC, unified-hosts-lists }: stdenvNoCC.mkDerivation rec { name = "unbound-zones-adblock"; version = unified-hosts-lists.version; From 176d95d890f364ee054ae22904e58d1cf33f76a2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 01:04:34 +0200 Subject: [PATCH 0311/1588] machines: remove unused arguments --- machines/aramis/default.nix | 2 +- machines/aramis/services.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index 878f2c9..e2211f4 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -2,7 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, pkgs, ... }: +{ ... }: { imports = [ diff --git a/machines/aramis/services.nix b/machines/aramis/services.nix index 30dc47d..0287c30 100644 --- a/machines/aramis/services.nix +++ b/machines/aramis/services.nix @@ -1,4 +1,4 @@ -{ lib, ... }: +{ ... }: { config.my.services = { wireguard = { From 313b0c23a9ff4af36bf55e688f74edcc6c49a789 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 01:15:40 +0200 Subject: [PATCH 0312/1588] modules: remove unused arguments --- modules/hardware/upower.nix | 2 +- modules/services/paperless.nix | 2 +- modules/services/podgrab.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/hardware/upower.nix b/modules/hardware/upower.nix index f21b9d2..95fa282 100644 --- a/modules/hardware/upower.nix +++ b/modules/hardware/upower.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.hardware.upower; in diff --git a/modules/services/paperless.nix b/modules/services/paperless.nix index b4e1f44..0e29325 100644 --- a/modules/services/paperless.nix +++ b/modules/services/paperless.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.services.paperless; in diff --git a/modules/services/podgrab.nix b/modules/services/podgrab.nix index bc16178..9793d60 100644 --- a/modules/services/podgrab.nix +++ b/modules/services/podgrab.nix @@ -1,5 +1,5 @@ # A simple podcast fetcher -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.services.podgrab; in From 8ba1746be4d9a49d53db92f7c33f28bf9e82ef33 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 01:16:04 +0200 Subject: [PATCH 0313/1588] home: remove unused arguments --- home/mail/msmtp.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/mail/msmtp.nix b/home/mail/msmtp.nix index 3e725e8..c469982 100644 --- a/home/mail/msmtp.nix +++ b/home/mail/msmtp.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.home.mail.msmtp; in From f3519e845f1100af443a1595ea3719276a445802 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 01:13:23 +0200 Subject: [PATCH 0314/1588] home: ssh: add missing 'mkIf cfg.enable' --- home/ssh.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/ssh.nix b/home/ssh.nix index 22f85d3..3bd7f28 100644 --- a/home/ssh.nix +++ b/home/ssh.nix @@ -7,7 +7,7 @@ in enable = mkDisableOption "ssh configuration"; }; - config.programs.ssh = { + config.programs.ssh = lib.mkIf cfg.enable { enable = true; matchBlocks = { From 963c86c66f71f63942ee0d80387e03428e0118e7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 20:12:18 +0200 Subject: [PATCH 0315/1588] home: remove unused 'secrets' module --- home/default.nix | 1 - home/secrets/.gitattributes | 3 --- home/secrets/canary | Bin 32 -> 0 bytes home/secrets/default.nix | 31 ------------------------------- 4 files changed, 35 deletions(-) delete mode 100644 home/secrets/.gitattributes delete mode 100644 home/secrets/canary delete mode 100644 home/secrets/default.nix diff --git a/home/default.nix b/home/default.nix index 2668156..fee7a8b 100644 --- a/home/default.nix +++ b/home/default.nix @@ -23,7 +23,6 @@ ./packages.nix ./pager.nix ./power-alert.nix - ./secrets # Home-manager specific secrets ./ssh.nix ./terminal ./tmux.nix diff --git a/home/secrets/.gitattributes b/home/secrets/.gitattributes deleted file mode 100644 index a741d4d..0000000 --- a/home/secrets/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -* filter=git-crypt diff=git-crypt -.gitattributes !filter !diff -/default.nix !filter !diff diff --git a/home/secrets/canary b/home/secrets/canary deleted file mode 100644 index e910ea3aafe746337b1ea57a9ff37d62d58d350f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 ocmZQ@_Y83kiVO&0c*b>ed6DJsmgBoNPv87j#HqYCqGs6~0N0cb+yDRo diff --git a/home/secrets/default.nix b/home/secrets/default.nix deleted file mode 100644 index 76ec2cf..0000000 --- a/home/secrets/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ lib, ... }: - -with lib; -let - throwOnCanary = - let - canaryHash = builtins.hashFile "sha256" ./canary; - expectedHash = - "9df8c065663197b5a1095122d48e140d3677d860343256abd5ab6e4fb4c696ab"; - in - if canaryHash != expectedHash - then throw "Secrets are not readable. Have you run `git-crypt unlock`?" - else id; -in -throwOnCanary { - options.my.secrets = mkOption { - type = - let - valueType = with types; oneOf [ - int - str - (attrsOf valueType) - ]; - in - valueType; - }; - - config.my.secrets = { - # Home-manager secrets go here - }; -} From 7273f2102a525e4185f9ba9e3af3e033c4a3e59f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 13:30:51 +0200 Subject: [PATCH 0316/1588] flake: add 'agenix' --- flake.lock | 22 ++++++++++++++++++++++ flake.nix | 11 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/flake.lock b/flake.lock index 3125d0e..775651c 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,26 @@ { "nodes": { + "agenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1631896269, + "narHash": "sha256-DAyCxJ8JacayOzGgGSfzrn7ghtsfL/EsCyk1NEUaAR8=", + "owner": "ryantm", + "repo": "agenix", + "rev": "daf1d773989ac5d949aeef03fce0fe27e583dbca", + "type": "github" + }, + "original": { + "owner": "ryantm", + "ref": "master", + "repo": "agenix", + "type": "github" + } + }, "futils": { "locked": { "lastModified": 1629481132, @@ -95,6 +116,7 @@ }, "root": { "inputs": { + "agenix": "agenix", "futils": "futils", "home-manager": "home-manager", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index 5abaac9..84186e0 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,16 @@ { description = "NixOS configuration with flakes"; inputs = { + agenix = { + type = "github"; + owner = "ryantm"; + repo = "agenix"; + ref = "master"; + inputs = { + nixpkgs.follows = "nixpkgs"; + }; + }; + futils = { type = "github"; owner = "numtide"; @@ -47,6 +57,7 @@ outputs = inputs @ { self + , agenix , futils , home-manager , nixpkgs From abf526ae3c0d8e94d4ad7d58a47a8b7e680813e7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 13:31:43 +0200 Subject: [PATCH 0317/1588] secrets: import 'agenix' module --- secrets/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/secrets/default.nix b/secrets/default.nix index fbc1bfa..5baf964 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -1,4 +1,4 @@ -{ lib, ... }: +{ inputs, lib, ... }: with lib; let @@ -13,6 +13,10 @@ let else id; in throwOnCanary { + imports = [ + inputs.agenix.nixosModules.age + ]; + options.my.secrets = mkOption { type = let From 8664781da7c447a415d2d441f98313910e2de8b8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 18:52:26 +0200 Subject: [PATCH 0318/1588] secrets: migrate to agenix It is finally time to graduate to an actually secure, stateless solution. --- secrets/.gitattributes | 2 + secrets/acme/dns-key.age | 10 ++++ secrets/backup/credentials.age | 9 ++++ secrets/backup/password.age | 8 ++++ secrets/drone/gitea.age | 10 ++++ secrets/drone/secret.age | 9 ++++ secrets/drone/ssh/key.pub | Bin 765 -> 0 bytes secrets/drone/ssh/private-key.age | Bin 0 -> 3799 bytes secrets/lohr/secret.age | 9 ++++ secrets/matrix/mail.age | 9 ++++ secrets/matrix/secret.age | 9 ++++ secrets/miniflux/credentials.age | Bin 0 -> 477 bytes secrets/monitoring/password.age | 10 ++++ secrets/nextcloud/password.age | Bin 0 -> 440 bytes secrets/paperless/password.age | 10 ++++ secrets/paperless/secret-key.age | 10 ++++ secrets/podgrab/password.age | 9 ++++ secrets/secrets.nix | 49 ++++++++++++++++++++ secrets/sso/ambroisie/password-hash.age | Bin 0 -> 459 bytes secrets/sso/ambroisie/totp-secret.age | Bin 0 -> 442 bytes secrets/sso/auth-key.age | Bin 0 -> 483 bytes secrets/transmission/credentials.age | 10 ++++ secrets/users/ambroisie/hashed-password.age | 9 ++++ secrets/users/root/hashed-password.age | Bin 0 -> 581 bytes secrets/wireguard/.gitattributes | 1 + secrets/wireguard/aramis/private-key.age | Bin 0 -> 417 bytes secrets/wireguard/porthos/private-key.age | 10 ++++ secrets/wireguard/richelieu/private-key.age | 10 ++++ 28 files changed, 203 insertions(+) create mode 100644 secrets/acme/dns-key.age create mode 100644 secrets/backup/credentials.age create mode 100644 secrets/backup/password.age create mode 100644 secrets/drone/gitea.age create mode 100644 secrets/drone/secret.age delete mode 100644 secrets/drone/ssh/key.pub create mode 100644 secrets/drone/ssh/private-key.age create mode 100644 secrets/lohr/secret.age create mode 100644 secrets/matrix/mail.age create mode 100644 secrets/matrix/secret.age create mode 100644 secrets/miniflux/credentials.age create mode 100644 secrets/monitoring/password.age create mode 100644 secrets/nextcloud/password.age create mode 100644 secrets/paperless/password.age create mode 100644 secrets/paperless/secret-key.age create mode 100644 secrets/podgrab/password.age create mode 100644 secrets/secrets.nix create mode 100644 secrets/sso/ambroisie/password-hash.age create mode 100644 secrets/sso/ambroisie/totp-secret.age create mode 100644 secrets/sso/auth-key.age create mode 100644 secrets/transmission/credentials.age create mode 100644 secrets/users/ambroisie/hashed-password.age create mode 100644 secrets/users/root/hashed-password.age create mode 100644 secrets/wireguard/aramis/private-key.age create mode 100644 secrets/wireguard/porthos/private-key.age create mode 100644 secrets/wireguard/richelieu/private-key.age diff --git a/secrets/.gitattributes b/secrets/.gitattributes index a741d4d..7ca9979 100644 --- a/secrets/.gitattributes +++ b/secrets/.gitattributes @@ -1,3 +1,5 @@ * filter=git-crypt diff=git-crypt .gitattributes !filter !diff /default.nix !filter !diff +/secrets.nix !filter !diff +*.age !filter !diff diff --git a/secrets/acme/dns-key.age b/secrets/acme/dns-key.age new file mode 100644 index 0000000..97d397c --- /dev/null +++ b/secrets/acme/dns-key.age @@ -0,0 +1,10 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg 0bz3W8QcGaulxy+kDmM717jTthQpFOCwV9HkenFJEyo +NKeh1/JkX4WAWbOjUeKLMbsyCevnDf3a70FfYUav26c +-> ssh-ed25519 jPowng Q59ybJMMteOSB6hZ5m6UPP0N2p8jrDSu5vBYwPgGcRw +j420on2jSsfMsv4MDtiOTMIFjaXV7sIsrS+g4iab+68 +-> z}.q-grease s2W ssh-ed25519 cKojmg YlDuj9wwBKSHHvQOhfti1ah95vxDV3bLE+GElBkyTB0 +KsMyd3L4GaQa0eDQps+bJXj+cpy0zUNvFXU8NAmtThI +-> ssh-ed25519 jPowng JB4UtNyZab4ab4Pep3acyMjwCbluuEPuI6YOQ/045Fo +P9qnrPDGpHJL1TyNqYdNfqkd21Yjn/5mlovorWy60j4 +-> _6l|s-grease M ]2qMsa'w P] j0EE +W3CToUTg +--- 8aWYUi33mEIKFcFbphlDZumnBu9Xbj+j18dQbElx1v8 +3$m(TKeAZ>dn:-킥h.(U!rx D3493~Ȼf{L ƣ>^vl-=䣐U'(,#;H@M%|ʦ \ No newline at end of file diff --git a/secrets/backup/password.age b/secrets/backup/password.age new file mode 100644 index 0000000..3af9fbe --- /dev/null +++ b/secrets/backup/password.age @@ -0,0 +1,8 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg dgS4bezgtDi44R1A8am+J6zh80kUVYTo1heaxJCtzX4 +F3w/62xwtqYa40NU7OvF9pnZzYz/5hACAGJfMA4e2zw +-> ssh-ed25519 jPowng lx81CK3yeNp9RjHCUFJeKYZlRzxBmXuADVBvRc13zCI +P7e75t8xU+ZkYmeQ8mmMfyZZsRdG1J8yrvSUkiWzkFQ +-> *z4/`-grease S/)a{e sFd";= +--- 15FVhqRTkoPFEeETRRyFQhsv4Fn19Ozlax0u8Zy9mNA +#+vS4}R%ίF4fnDJZA,_ \ No newline at end of file diff --git a/secrets/drone/gitea.age b/secrets/drone/gitea.age new file mode 100644 index 0000000..d1c14e7 --- /dev/null +++ b/secrets/drone/gitea.age @@ -0,0 +1,10 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg vLLu1kbzyGxr5sU/Dl4xf0uGO+gVsvODiqEJU21lwyI +LbJO4Go+8G7/UtFWjv+x7Nqhn7n+kge/oHP8dGCBnM8 +-> ssh-ed25519 jPowng obxX4ojPwp/DaerFzVbK5hUnshebh/chriT3a7uqYEw +x9jpbBefJZHz8o1lEkr48XhT7sVAM5tq3tZ8M91CDDo +-> eZ.G`B3W-grease 6k|.\v +D0u3P4oCpPNnueqZAAYn71xEUGWlavwLTrEXJ+2tdYOX6BwwFReOlMZWIA+FikmZ +8Pg7dHnbYPWc33jMjv3UnNsxCGUsDw9C9NkI5vfZSLvUxQ +--- Cea09ivsGZeoWif7xbdrvfoGsoiD+tRh7HQsOL75cqE +tFa|G,o6$U"wi߹Swgh6^*=[g1%Vup-{`P(?&QV#KeX4dK:xt0LsbÆ6ޜ [ #E[>)|cwq+cw1$^I(wG9>jI(y!@OƉkEz]Pk \ No newline at end of file diff --git a/secrets/drone/secret.age b/secrets/drone/secret.age new file mode 100644 index 0000000..c529200 --- /dev/null +++ b/secrets/drone/secret.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg 1+cLlzctgcM0FnVDwMPOAqBkvMcDBRg8SvCw4djI93Y +oV2XI4f1AvM9P591kZZ6NgJXa+SDtqGzCSgc4psOmxM +-> ssh-ed25519 jPowng Ufjfh1p350XxRPg95+/DHdmnl4lC0bbzUUlaxd1Bmxc +/RHwFDSn2ov+60r1uHUigrsn99+GmmKmlk4h4T2gbA0 +-> *Lc$@-grease +pzVJAHy1qRq3jUrnFV0DDO7/hwV1US4Ogf0RsrVfX0xzbr73uJ003YjieVB25LqN +--- ME7/iVevyiguyhXugbkVFGzJV0yDccyKNlWbEZa/FmY +YXjb2und;i0X]0jLPT~^kc$DrufreOո+p&wϨ \ No newline at end of file diff --git a/secrets/drone/ssh/key.pub b/secrets/drone/ssh/key.pub deleted file mode 100644 index ca1b5e82b9728bd52f282384f892bd32fbc69e84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 765 zcmZQ@_Y83kiVO&0FxD;zapK5!HNVz-X+`miowIJU{Zwi;Jlk|kD}piMFsEGh(q*h& zjcaCaYvD~hWtgu| zQ-PFYM!%jVNtSy2lZp!B$ou#??uaPAb_~bWl>JMU1fD-AJ-G?rMje<+qXRV~;b$2Hk##m8&asSIq)T}LmRSitV(z4^k4 zy$|D~jDz;9OQ~B|!?8qS*~M)2u$>3D z`CVj>>b>-zx9R7XZm0AVj+2?#|M-o^^JXrCZFq+vj#~lXm^^Fs;-{ zz5OKz*X9kApT0Wz=kwm`z|-=6O8k+0`_`G6tyZ6q?R494Ca(n3x2_kz>?fb$?73qN$ z<@dL>AKv@VQ%$}9%(H81S6@Uuj<|P5N+daV&H4k%>1%jwId^$_T3tC_`%`HCxt0Af zvc3kl?tOjHQgtMcEqJk0yJYeXulOQ4^R$U&^CNdFioJNyT(luz9uHsVk?a5GM5uVy zAC{P*f2|{Dd;2z{h1b89NI$w*);>MJ+3L6X^Cb;|7frS^?8#?c^TcGEjGa;C4evAjhhTv$lJElIjtQ1)u^@q!jJ9k=A2 z=Tk-I{ohucx@UJ?+vKxXDyR7*RnK~75mD%VBwRJB&AGzVRwAYAv07h~_?@SP-`fB8 f*vU>0j@p#nyztKHbL)a8RK1k{d6u#7@$Ym1B7k_W diff --git a/secrets/drone/ssh/private-key.age b/secrets/drone/ssh/private-key.age new file mode 100644 index 0000000000000000000000000000000000000000..0211701ba0ee3d8ef341b6d69d70ccaa25b8379b GIT binary patch literal 3799 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;@NW2`?`+ zPsvL6@G|jp@hZ%UO3L;q%Zo4!s&bAj3-wF$O?S>MaP@c3%;t(nPc}*Rbj)*&2-45? zt$}K!Jt=vC5xwJIW zA|k`2FfTVh!ptQ@Kg1nMm~MJeYGQG!LVTr>LU~SJgonL}f|{R~t%47i zuTO=UkCS(1s;R4!M{bIDZc2V+MpAKpl!u|CpIMcUaam5TV^ErRS&nbENkv*vWk5<; zepp^|kcE-AYd}>lm#(g^LXd?~nR`)WzGJ3&MqX;Fe@I1;WkF!6nY&M+ziEzJc$sUk zn`LpaftPt8*MVa{E@+%JKU2KHS^m_5%||zQ+rRbaOg>X{_QmSIrWLO5UFA-5ewp!) zOSUxdeO!O3NZE|HhgF(a%uR4S^y^miX_>(81G^Qr{f;d;`E1?RdpiFwWGnh7Ik?^b zA7v8hwmQ0f%F*Rsd=ghVa?P9$OxSnP;KuPCEw3#;>xx?5SikVx7T*ekph=ADtS4~Z zm@#RKQbNz+i-%r*opJY{hDwJ`(}tv~n+*aL7cVq=nU-)u;2o$>Y^_xHqCU%njTxvV#L z$-CKi&g%5PmY){KuuP$l0hj~oKM@6Ir&!WrZZ=xDL&ccq58q`$HUlI`4vV{jc3Ca zyFc#{-0;lLuHcDJmf^wGXH3E^j@|5>E_i1(ukpb^VX1%}0`K4T-&_3t+(n*~Z=)ht z-l*kS>QsK-T%UQ}#VHy0ABRbwMY4{ulX| zDG9711~R9oZsXgc_O+HjIrz|a=QfMm-oi_j~>BZT__>%&v0J^c(V(dQ(}JtXUYoZV4kVd#>D!z_qN~1i5}1 zCa}!d!Lf+lFwt6(FWP>4{-=9qR&8_<_cXJd=$N)M{)@j#WkY-;~-%VQlvpG}G9 z%oYqkb^rde_D{3=QY}-I7%bPDZiu|MC1B|lwWYT2rmxz$t0i+s{F3jk(V4T2qE4Q? zS-=`SeYRqO_SeXJ7x)%P3!JF?xaTCd{yGiUzBghMV}8B+zbZqn$oRtAyM|J;I$o)* zWi`kQoI5q<&duZNPO$~vT03$dSm^7+q~PbXQs zglQ~w`}5iP;+-QMPqxYhBuudPdiN+;f!`=^p2^C0o4%gcvDl_Kjm>0f2kSDHNw*{Q zzr0tre-$>%{)pi3z&+(@%%QU4*7mG69~GGs8|Kg7{wVnPtOduKCU4%bO3H8T@8Fc{ z@`qkskKty$QTBABk%e1`$#>?G+Vbh|zVP;*{~T%}ulitu)C!iSna>>`ucF0{jn)F{jQ&(xL;JY1+n?LzDPm-}q`26+29KlTv z+iJ27d(2v~b}rY4KgL19M+}{F;y&b%4yZJ+Juj!;(il|Lj@c32ezbZ(e@-YEI3kd-Y-S_eFbgSq4tnFIL&{J?dlL*8R4z zWs4&Y1sT;Uv^f8jHQmG-=#(7YxcU@pr|`*s-lDA^&VLZ86XGrSDXOpWc%_P^-@B;^ z@>NV`*X>_g|7)4L{@(OFVY^vHrvztqd~$Jp_|`Im?Y&lSgWTfq|2tL*Z&>;G(yyzU zk-7^EX2+>b<=FJ`e1@QHU;DqD9V%6}Dy|uK?k1f1cX`RCh_;o!KWkR#Zq><YC%-|0chgCFCW)chikSi&s@CWj?kNZ762H_}nSsUiqA?t38|A^tGED zX1%hhnpAad?X!rJsSi$BhhN@y_uzW_Sw6a%52Y_eKMQvj-oVqWY@ws6bn+%&F6-y- zJLXudoPGMg56?Y6jf*}vB+rwK5Xj0;HLHOm#%RCeR93@>%8zIt?7NX zdAF*qcI>KNdTOJ}*6Vx^8dg`XogTHo-!D;p*_?CA39d@7XZI8bKCks_UnLe}+VFJF zbyuKKUow{pwXSqqutuZYP!y{pru+@kb2nQhPfh)u04KZaRv+tXt6#eh$lu`BY5 z+H&4W3Z6UcdXA+&@^to^Z^lM=*HZ{s`MmH4|Bu zEqU*%{7Gu&nN;5I{U>6+O;p^vZP(<$OQ-Trtuy@3)GBJ6aH_DUeaDuJ`TO5A_uUZ| z^Z8gcQDfK7qmEyn-L+QmGS6QoyudoOwQ%0<8NFR|`}u9#ORvXy{!Gb_4!&T=byGxp z#pMaMbJj*YT)28m%+f!yH#wA35+g&r8QlJrZ<#h=#EwT z{4P(QujkSWzFFGt{dY?K+J0oVx_;GpM?rj~xu!;l?H})Askg2FPCK+F75mw8FqW~i zdCPc|Zk%iR{{`ov5BJTMWkkKsGj+6Y{IS7Tq9*vawA`e5MOYZWXr zimX?k2{lyR!9TC^$>K>f@6hNrt(_5>&F7*^s{&5oH0ceA4gRW~Z{w4s#wkN0SaJBrpb!9JE!ul;pMLGZktQz=Sjam{-E_rO={(K_Z$1Zd}v#B;isfd z_0jZqPH#WyYc4<27T5E?Yn7a>(>j&+<=mbTGd)E07aB?J^Im#1-RJrzcl2Ycle|9 zs#n`57i7QAUU+FC<5N3}vsVS~owWXuy4cw4_;l+=`9+t-?yvD?nJKpR+kvxR%IC&( zRo+`#KX3Q3r(dqW5&5PSU>AGfhI4PWHFk;;Yqk-Egks>qE8v-Ul*&M6+!d5WDH0C-7p{ zqED@F&#l^X?s*mSOYRv>9l5pK;ft2O@D2F(_w9wnoEgcj)6YD;I@5D&(%i~h!E@iA zDZamFs&mQw#gCdly47-v9S_fPOyIm9J^kzvuf0-h93+cBpLr*Jc6sj7&86CAHIJ?* dKeP;5bk>p0qW`T_@y>laN{U{!uw>4i0{~1wH){X@ literal 0 HcmV?d00001 diff --git a/secrets/lohr/secret.age b/secrets/lohr/secret.age new file mode 100644 index 0000000..fa310b4 --- /dev/null +++ b/secrets/lohr/secret.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg HCVbkI26JjkBgm1L2cpunVui0PfHLNfnx6VczErF3A4 +3jEHfT6wUqNNFZFaVeiNBUhSKZmuKclPmubDMsda5O8 +-> ssh-ed25519 jPowng SyClv9kGtjRKSXdig27tiqp66wD1T8QsHeOD2JQl4QA +8zdtfSJEh5/bfu5tb6M8Jgy5CZPiWD8TLQDpzp6cTr0 +-> 3r2-grease +Lg/G911eZjeZTw5xhqje26vDfJkcSro+gKQ5SUboxLMnaibNi1qTeRLR +--- Q5/fikhVPoK+NFujTso5V7cty4k/dQlzFlz5z9DkzYk + t/WAMu"-!@ E1 R[eh3 ScoBt1Tb3mPTcfeP \ No newline at end of file diff --git a/secrets/matrix/mail.age b/secrets/matrix/mail.age new file mode 100644 index 0000000..1fe3a71 --- /dev/null +++ b/secrets/matrix/mail.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg lmu3MinmydRHD0A/YVRRtopermfoBC8M8cTHfVanY1s +ygrtpZZJ7aeQTblNazpoP7DdifmDxHsE3DFJsIrWX5M +-> ssh-ed25519 jPowng X0cihOc+fBtmtrkEivIHQngdYIobezXEF1x+pHqNzAw +/+sw9x1NWY0anZhDMpAywBPrR0F4XCHaF9e8j/Yo/kI +-> 32;%1s-grease +JafjuSZty6a4NSO/y4y5wHWL8Mw +--- dwCl66vdpsL0MR5NWWvg3JUnQ2QZQBeW0Dj0l5tvOKY +oi,`#uwW%Poubڭcy8 ><FqKÂk0k/h5势F+u eb>1Q2wnWb֖Bi^xur- /ll-=7;j0I%FiA;YUd]KI0( Ag^uG:pkJ:qWSaLw!M4L/ZD-XUbvbP0f9 J`XO!s{QAcc;4Mچݹ lxH&{}zZ9ûXܓg]V0gtw \ No newline at end of file diff --git a/secrets/matrix/secret.age b/secrets/matrix/secret.age new file mode 100644 index 0000000..a287435 --- /dev/null +++ b/secrets/matrix/secret.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg ociW6AZww4nfW0Dw0DB0WNgQbJ3MNkHPPZlA0z+o/mI +THAz89pjyrkxJB9tPQGgEwZrZX9OudWMnyzr0JiwzTA +-> ssh-ed25519 jPowng 1werbtuWK0DUFxq9mAWp/QzMHC1B8UfadutvK6+j9XE +YmAwYo3X00gMB9AyQfOsR82CUPAtxfuzCzP4OyYFxjc +-> 8g-grease N9DR4 .U< +--- Cwh2hPrM2RzRroJRw3XrP1khcpL0leTXfJ+T7WG57To +±jϰLDF xux1 +U/oGgo)*/d"L#RhWP \ No newline at end of file diff --git a/secrets/miniflux/credentials.age b/secrets/miniflux/credentials.age new file mode 100644 index 0000000000000000000000000000000000000000..979015965f433e63c6451fefcfa5511c614dc814 GIT binary patch literal 477 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;<2BOLB2? zDkwDcEH;ZOFex$cO-U|`vdk?FsdOvWPcL&1$hI^~PIS&F_vJE5^A7Mz3-)&P_DwBL z^r_78@pCQk_IJ;z2y=|A%rA*@w@5U#2=K`9^+mTWDWY!hlOZ!!sf)w9ueDsH!B`*)=NA*wfHc zJHpr{EIlCEG{Pg*&CjyJFeF3UJRM}4b4E%;wWV%)QEFmwszRuJRjpB-qJooOUbTXW zJ(qD|pkc66v2U2UsavAIc4}f!nOT`nc({IfVuXpKyJ@IJc9M~Pghg<8WM-&^b0n9p zuC9VXxvPh^WmZK)~+hXL2l4Nf-6 z2?ftxruwM9um2b2RTAG6a+vY1|N2`~l&ur$w=#tEFU`57ld*z#`RSY)tT*SCoZP*` zLt8l7D1TqnpKzY@;PN%{gpHLZ|nS@ Fe*sx+sqO#( literal 0 HcmV?d00001 diff --git a/secrets/monitoring/password.age b/secrets/monitoring/password.age new file mode 100644 index 0000000..410536f --- /dev/null +++ b/secrets/monitoring/password.age @@ -0,0 +1,10 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg OdLtFHbHbc28rUn47vgsVvXxFNg9nF+9y9R6XOK390Y +yQQYUPQGjN2+xrSqqBYa7/zS618KrVjX5Amw2MFuSLg +-> ssh-ed25519 jPowng NwUjiLtiXVi6XFmht5l1CxEs3gm0oN4vHYwDZyda7Q4 +di6znVjNRO6QdqteVNkeot5Ko2NwWLe6v+zVR3f+o10 +-> 4Vx%\(-grease ^^Z>EC91 R 2BJ d48Wip*s +yPiBgChRF31XgxccQFLO3MzRL7+5s29sfRoF3W1yUX6Bu59MpxD4D+n/jhLcxSH/ +CxW7KaiOctNmPm5tWh6qjmgQ+V4bcAji5vo4FKs40l56cfyueEJj+Q +--- WUGF28zqK9E1AlOeeCtSHxFg6ikRy85gOoLtBd4m0y0 +.|rr>12Sɞ.hww q%i *U^)'qO2ӜmQ7m` \ No newline at end of file diff --git a/secrets/nextcloud/password.age b/secrets/nextcloud/password.age new file mode 100644 index 0000000000000000000000000000000000000000..9fd3c53f866f5e1785e63ec681d2c37ca7762d10 GIT binary patch literal 440 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;>RBsI1aA ztMp8?FbcCU*Y*z%OiL^Yb#V$v%B##u4k}K~C@?G0H#H0j^X2jhC=M}o&niv~b@4Aq z*Eh;9PO=COt0?s;GxMlOjk5F(GfxT0H!}6kh(xz7Dh<$b_rXD=6GdKeE8Y$*{aEDKp$RE7{23 z+tfce&#ycnyDHz)(W1goyTZ%Y!USYnVu-D_m1Bf%dQoa(ajJr9yuNmLL8YNWM!15O zTA*`Ec??&!rFM` ssh-ed25519 cKojmg zhpo89xef68JoeOFWzhdFshrj2BXXUCFPMLVJzv6EyE +fmJxJi5rmyai9qGwDo7iHg4BrObGre96KCpl+g91O6I +-> ssh-ed25519 jPowng INA6EZdy4J1p3QY5mfVOQXiLdOjIDaZR+CZMP+GfkXM +8Nf5soaxY5SEzeJca5kaJkx7ByOvc4NkJVetB7wpEmo +-> xjK'w-grease +f5v0cvlt4JbHlAwDOob86qOInWdlN/oohTg +--- NTGv4rr+MhJ/YeZhVHOjoS1V+zCHFf2itJYfK36R+wE +חJ d o'YFU@ +r7_N$>]hq-F۰qX?| ? \ No newline at end of file diff --git a/secrets/paperless/secret-key.age b/secrets/paperless/secret-key.age new file mode 100644 index 0000000..eae5c56 --- /dev/null +++ b/secrets/paperless/secret-key.age @@ -0,0 +1,10 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg tZwn2usN6K62oS4vBa6boh9zEp/+cS4chP8boXG6SH4 +Fr3kV8gUDoiDqMxPYWsHyww8umYhQEKhqbVBiVw5NeI +-> ssh-ed25519 jPowng wRbJl4G85obH/GluQBBsXE7MOvooEui65eqHfurvuQs +KqVZMBSyHhkayEdwI6ocmA4qhHY9zYJvg1CEKM1SOa0 +-> 2E"/OFW-grease o Qp3HFe^ +bGhCNicPqt7txqxUiEWXCFs1OuQLqOqHmjHSqYQv919dqYep/xBXzi/aRf3dsdvh +TCJCTvZG31Qxvikp +--- xKJGbdVp+Z5h0vCBleSF2zYYYd2S5i0y4szNqjRwrDY +T /Ni7m4#MhiPޛ-gI%@E(i7Ygk"+㸠(]o@bާ+[Y"BCR[ >-.4db9v \ No newline at end of file diff --git a/secrets/podgrab/password.age b/secrets/podgrab/password.age new file mode 100644 index 0000000..90e2501 --- /dev/null +++ b/secrets/podgrab/password.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg 8rcBI7fYHuA3jO6EzJNFaAj2niIApKDt1HQEv61AKTs +ANxkIX/CeI7t7Zqp6wmjt/D194Z+xpeiidb+qvYzoQU +-> ssh-ed25519 jPowng oruewwTM9X/HjjcmOPcQVdp02rQBlgJPdzvlAffs3T0 +MrO0kaNhjgOkNHuz3NrIMWXNrXOHH9dT/Fk6hoQNKyY +-> COK%H7-grease +6yfI90QurOKlM+kgpW8KZ/iBzDYD9yhNmjG1LQ +--- uArz8eHg8sLO0sdlkM6cELFh+FHiI5BrM0+iXJxxiDo +vvNb@FMMY&/%mt֓dh|ߩ8 ڽ9C/ \ No newline at end of file diff --git a/secrets/secrets.nix b/secrets/secrets.nix new file mode 100644 index 0000000..dcaa6d6 --- /dev/null +++ b/secrets/secrets.nix @@ -0,0 +1,49 @@ +let + # FIXME: read them from directories + ambroisie = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMIVd6Oh08iUNb1vTULbxGpevnh++wxsWW9wqhaDryIq ambroisie@agenix"; + users = [ ambroisie ]; + + porthos = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGzznQ3LSmBYHx6fXthgMDiTcU5i/Nvj020SbmhzAFb root@porthos"; + machines = [ porthos ]; + + all = users ++ machines; +in +{ + "acme/dns-key.age".publicKeys = all; + + "backup/password.age".publicKeys = all; + "backup/credentials.age".publicKeys = all; + + "drone/gitea.age".publicKeys = all; + "drone/secret.age".publicKeys = all; + "drone/ssh/private-key.age".publicKeys = all; + + "lohr/secret.age".publicKeys = all; + + "matrix/mail.age".publicKeys = all; + "matrix/secret.age".publicKeys = all; + + "miniflux/credentials.age".publicKeys = all; + + "monitoring/password.age".publicKeys = all; + + "nextcloud/password.age".publicKeys = all; + + "paperless/password.age".publicKeys = all; + "paperless/secret-key.age".publicKeys = all; + + "podgrab/password.age".publicKeys = all; + + "sso/auth-key.age".publicKeys = all; + "sso/ambroisie/password-hash.age".publicKeys = all; + "sso/ambroisie/totp-secret.age".publicKeys = all; + + "transmission/credentials.age".publicKeys = all; + + "users/ambroisie/hashed-password.age".publicKeys = all; + "users/root/hashed-password.age".publicKeys = all; + + "wireguard/aramis/private-key.age".publicKeys = all; + "wireguard/porthos/private-key.age".publicKeys = all; + "wireguard/richelieu/private-key.age".publicKeys = all; +} diff --git a/secrets/sso/ambroisie/password-hash.age b/secrets/sso/ambroisie/password-hash.age new file mode 100644 index 0000000000000000000000000000000000000000..10d9eaa37c8cc1c8795083db6f5b34d20a30b9db GIT binary patch literal 459 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;?Btbqq^! zH7`vnFf~mNagGWPb}_E-(suR>HZ}0^@F?;$u&~TGEA%lmG~miI)=mnyaLP^2D2%EI zh_a|MNOyEJ3-T>=b15m#H&4pY*RD$PF3a_D3PraqDIO z*|?x2J<`m=Crmq}Al22h!YL`F+%wq7*ib*mIh`vx-BdfvH7X-Kqd3$eG14>5CoxFd z-_)(bGax^?B)h^fJTl8UDlyNy+Nc!sB0aA|&Wn4fEAp@FLfm#(g^LO_yh zNr+3jXPA4XcT{DtOO9o!d6uE8lb2UnKu)kraCWLsR#|{|iiM>s*WD%M^BT%y92Wlw zUe8gHbfWTm>zNlj^Nn7L2~SE`Fso)403Q;h(EtDd literal 0 HcmV?d00001 diff --git a/secrets/sso/ambroisie/totp-secret.age b/secrets/sso/ambroisie/totp-secret.age new file mode 100644 index 0000000000000000000000000000000000000000..c5ce19b60a266757ce1389831e273adcd6b6abba GIT binary patch literal 442 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;>O;a87n} z333k%aVfGakBG3$2nbIr^)2vl3XiDBN;kJO&T%U!O!KmIF6Z)0_bN>-sxS>OGY&Ql zwJ0(+4mB=u%*$|bF$i{yi0~|R@ps8{E^rI=a7DK*D7MMn{SkxiMeljig#vWs=HHpsA)QvuCA^^N|~ciQmB89L8?b~ zsIjkyud%shNT$9~rMr2Bd8DyHcyLO(OR$eoWN9SV#@2`>DfX4FU(4f-cgy`Yy%Cai zZJ)uuV~bz-ew)v*bb`yhD1}|GJ1_2N+`7Kn*t6%tkE9F%t2wFmb>d!;6_XD+-aZ>E WR1`eZjcH4{na!>bgS|-G)nO`^35tw zG^{dDD#*ymGz<%JO?7j3)y|Eqbgj&Fi*$E(G(op5D9 z%d)6EDKk5uFf^mW%fmZ8+&4QZ$4}qQG|?;4&6CThuqxQZ$=@g>#LvAjuPC`VBFE1> zC)6t=!ztC(q%74fsw6WwCEL`{B@|?vo>O*`NtJGTQEFmwDpy%RP ssh-ed25519 cKojmg mP2H3PWJN6Pv3q6C2wci3KnXjtFAIiuGy0YH0sGIy2g +f43QqyUQfTYznszub47kgc2Mz95zVScTDkwnG3INi9U +-> ssh-ed25519 jPowng fENbu7+FZ1mnQQHQCLm1spLHmsQGlRoJResUJtGzYkY +hX+AqCkLCca6m/aKtGCThi7/mCCz/TZQNJNOlOmlqyA +-> J<-grease +n7+CPRr4oazWnE7yzpJN2ZAI4QrGsAerloP4wNeebjQDx8+IxJq1JE0g3Yi0RxzN +chDccuSPLYk45Ov+SD/qqqFZlQ +--- p81HYw3LFj+qz2kiZsDcevM4ZBfvN743P9Jdi7J9XkM +۱S7VBOlEtq_D,PVFp\"AM}g?/\;y Ӛ(SK \ No newline at end of file diff --git a/secrets/users/ambroisie/hashed-password.age b/secrets/users/ambroisie/hashed-password.age new file mode 100644 index 0000000..09a80f4 --- /dev/null +++ b/secrets/users/ambroisie/hashed-password.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg vOaL2ZKsFEjX9mzQvw8Je7x2Dq8cMhrZEyBTXpH4QnE +HXO4fbWdJsbsRmGq0IYzq8/szObxzpsGfQNNTJ4vNzg +-> ssh-ed25519 jPowng WPxg0pP6O3ZS4dPc1WcDvzig22Fylk3mR/W9STaWbW4 +GuhFwt7M5Lc38q2LC/0eul0yP60UxmWwi9I8ToHv7bE +-> :;V8\-grease ZC#7~eR# P<'e?vI3 9R +lZlb44QiAaIxd0SYiRNT/QRnxxUt7npbksg +--- 9xv4lt8IcGR8jP0UcKYYnTuh1Ix/pqXgDmevkTH9j1A +]c3x w' ` h=XǑg3]~q.Xna*W:,zvyzI }DO=`w7:Rx5$6:",HM"_MMBJeF \ No newline at end of file diff --git a/secrets/users/root/hashed-password.age b/secrets/users/root/hashed-password.age new file mode 100644 index 0000000000000000000000000000000000000000..14986f1b48c218872964e33632da91cd5e7cc931 GIT binary patch literal 581 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;<1v_R4WD z%5Y8gum~#1Ft7;pcJa;%EJ?B~_4G+DGzthw)h{v*%*-nZF6Q!a%FFV}%k?fY%`;Cd z&Mqv|_V+DF&MQkd3ePj}^UQLON{$K*&vf+mD@V62D}G_@=;)7YyrJuoArMBm#nBE!YmDBL78FP+Pz$T&UC+dVSZ!!oV%`qh`%CagvGCefeD=F7MJQ8G^g}%3LdQoa(ajHTbRK9{%MID!`XGnHs zXrV!FPDpB)i(!SiUqw(wX_>jNiA!=$zE`HJN2pmgoUYPT8>Yoc49$E zuxqZdN1;=(VX1jaaZze{d0;k|uCA_vxqqldzK>sKpmw55ikne!Ku$rPhnsIipm|nt zxxTT!WqGKNc5$dnxpq2N+`*UG?asHaC^B2`)osydSZTX2HqPs5ud4F|ws3V3tJD_- z^KM@Go3=mLx7ofgJ?c!1p|+Dk;v~_M>o?~yeq<}*_YuEdYkybwtKVHY2Mwjbvq?|9 zJvxLmzMOLX__O+9&-=Z~;aBnurqS$S=(H$mc4LN{aBQ%y2UebSw-G z3C;8HEUZZKG>^;-&dSg?c5=3eEOT~Fc8YQgu|T&iD@x!G9}3`-7_+dJhVhV(-CA_vTk}&YGQG!g04bQ3|DBDWnh$PEuL2UlNzDuC79Il8b9@slHo@d2y1yVN`aKkw;mfNl=JkR$h8g zfN?~sZ(3lXzgeYYkOkMRps!+`jY^Vk=@}NPTe&WVT+`*c&ANA{LfnGc_Eic|yj5A( w&dE>Ou%<~f=FtLICX4nNsb3wuY~?-+95|eD^u|5!WdGR_7D ssh-ed25519 cKojmg +WwRpd2MzycutQFXyLsr2+GzSgF67Z6UuvyqYZaLd3w +sppt8HzaZP3yxnvnhzjl18Trnz8g3VyXJ6CaVBWd7jA +-> ssh-ed25519 jPowng wanoqGB7T8bim/WZ4IAYViFQoGzaIZSgeoTr3YKpeTY +ihDAdGa1XVW/qQz40V1v7a7iK7tu0EHMa7ayIogpcRw +-> l-grease |PIcZ NIr >0;* +4o8o0bevQZ6uDSx1WxxlDCURbFCM+yK1XPdrb9aztCSvG2a+ne78E42l5rBcoH7I +m51A8uWS4nSj36N/76v6K4kelxKzWUg +--- O6cGbTAVbDcdmPHf7UzfZiyiRtu1yfL4sBI+CkJA1qw +q$`w'SX]?6/N(BNa.H7Ioz/4:sK",7J \ No newline at end of file diff --git a/secrets/wireguard/richelieu/private-key.age b/secrets/wireguard/richelieu/private-key.age new file mode 100644 index 0000000..e796688 --- /dev/null +++ b/secrets/wireguard/richelieu/private-key.age @@ -0,0 +1,10 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg rYhrpoTaFjLBGtbCXxEK7jZa+KnriEV/kWViIEjmuQs +jHMSjxKIIqjUnpAcEo3JgsieI1iiA5/gKEx8+QFhDgY +-> ssh-ed25519 jPowng 6sQQFvSbWdjgDYSKmJ/CBG+BTzxFghX4SaJ4GyACKWc +OABJuh+Ta8q+G0onF/9bz3xxv4zTlHYlF4AjC5P6Y6I +-> xwW|#D`-grease $xYH C m8lBk9 +OBqgvLNIurE0qNaSB7dO2/6dQkVXeLgf/3l9gGlRJ6ynhqwmbXOUa0vyj+OBz27O +uI97+0y1TFAs3HN0Y8nj8LrwsafbDENu99JuVow2OuLKeSqc7sxOQQ +--- 9filSHStPTJJGDLY7AWzIXu/6tK4X0okT522sc4OJTc +M{$:N[ݶ2xy8&J_{RLX`Wͻx*Pr`UpJɔF#YXPS s \ No newline at end of file From 98034a54103f22761c762a51eb3a23e95ce5a8e9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Sep 2021 18:37:36 +0200 Subject: [PATCH 0319/1588] secrets: register agenix secrets automatically --- secrets/default.nix | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/secrets/default.nix b/secrets/default.nix index 5baf964..ed7cae5 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -1,4 +1,4 @@ -{ inputs, lib, ... }: +{ inputs, lib, options, ... }: with lib; let @@ -30,6 +30,25 @@ throwOnCanary { valueType; }; + config.age = { + secrets = + let + toName = removeSuffix ".age"; + toSecret = name: _: { + file = ./. + "/${name}"; + owner = mkDefault "root"; + }; + convertSecrets = n: v: nameValuePair (toName n) (toSecret n v); + secrets = import ./secrets.nix; + in + lib.mapAttrs' convertSecrets secrets; + + sshKeyPaths = options.age.sshKeyPaths.default ++ [ + # FIXME: hard-coded path, could be inexistent + "/home/ambroisie/.ssh/id_ed25519" + ]; + }; + config.my.secrets = { acme.key = fileContents ./acme/key.env; From da63787874950f3f65bfbffd756e0a18e026a2fe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 12:52:49 +0200 Subject: [PATCH 0320/1588] modules: services: transmission: secrets w/ file In preparation for the migration to using agenix. --- machines/porthos/services.nix | 8 ++++++-- modules/services/transmission.nix | 21 ++++++++------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index d26bb10..4c9ca7d 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -126,8 +126,12 @@ in # Torrent client and webui transmission = { enable = true; - username = "Ambroisie"; - password = my.secrets.transmission.password; + credentialsFile = builtins.toFile "transmission-creds.txt" '' + { + "rpc-username": "Ambroisie", + "rpc-password": "${my.secrets.transmission.password}" + } + ''; }; # Simple, in-kernel VPN wireguard = { diff --git a/modules/services/transmission.nix b/modules/services/transmission.nix index 807fc0a..cac075f 100644 --- a/modules/services/transmission.nix +++ b/modules/services/transmission.nix @@ -11,17 +11,13 @@ in options.my.services.transmission = with lib; { enable = mkEnableOption "Transmission torrent client"; - username = mkOption { + credentialsFile = mkOption { type = types.str; - default = "Ambroisie"; - example = "username"; - description = "Name of the transmission RPC user"; - }; - - password = mkOption { - type = types.str; - example = "password"; - description = "Password of the transmission RPC user"; + example = "/var/lib/transmission/creds.json"; + description = '' + Credential file as an json configuration file to be merged with + the main one. + ''; }; downloadBase = mkOption { @@ -53,6 +49,8 @@ in downloadDirPermissions = "775"; + inherit (cfg) credentialsFile; + settings = { download-dir = "${cfg.downloadBase}/complete"; incomplete-dir = "${cfg.downloadBase}/incomplete"; @@ -63,9 +61,6 @@ in rpc-port = cfg.port; rpc-authentication-required = true; - rpc-username = cfg.username; - rpc-password = cfg.password; # Insecure, but I don't care. - # Proxied behind Nginx. rpc-whitelist-enabled = true; rpc-whitelist = "127.0.0.1"; From 9d8da4d2b2e44a87ad9428e82f460cf6b3d06f63 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 12:59:24 +0200 Subject: [PATCH 0321/1588] modules: services: miniflux: use 'credentialsFiles' In preparation for the migration to agenix. --- machines/porthos/services.nix | 5 ++++- modules/services/miniflux.nix | 22 ++++++---------------- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 4c9ca7d..e5d5eed 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -70,7 +70,10 @@ in }; miniflux = { enable = true; - password = my.secrets.miniflux.password; + credentialsFiles = builtins.toFile "miniflux-creds.txt" '' + ADMIN_USERNAME=Ambroisie + ADMIN_PASSWORD=${my.secrets.miniflux.password} + ''; }; # Various monitoring dashboards monitoring = { diff --git a/modules/services/miniflux.nix b/modules/services/miniflux.nix index d223850..6d9ffc8 100644 --- a/modules/services/miniflux.nix +++ b/modules/services/miniflux.nix @@ -7,17 +7,12 @@ in options.my.services.miniflux = with lib; { enable = mkEnableOption "Miniflux feed reader"; - username = mkOption { + credentialsFiles = mkOption { type = types.str; - default = "Ambroisie"; - example = "username"; - description = "Name of the admin user"; - }; - - password = mkOption { - type = types.str; - example = "password"; - description = "Password of the admin user"; + example = "/var/lib/miniflux/creds.env"; + description = '' + Credential file as an 'EnvironmentFile' (see `systemd.exec(5)`) + ''; }; port = mkOption { @@ -33,12 +28,7 @@ in services.miniflux = { enable = true; - adminCredentialsFile = - # Insecure, I don't care. - builtins.toFile "credentials.env" '' - ADMIN_USERNAME=${cfg.username} - ADMIN_PASSWORD=${cfg.password} - ''; + adminCredentialsFile = cfg.credentialsFiles; config = { # Virtual hosts settings From 5579baecfbbb156ff81f5e1338eaffc59b6c4aaa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 13:02:13 +0200 Subject: [PATCH 0322/1588] modules: services: nextcloud: use 'credentialsfile' In preparation for the migration to agenix. --- machines/porthos/services.nix | 3 ++- modules/services/nextcloud.nix | 11 +++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index e5d5eed..bd92b14 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -91,7 +91,8 @@ in # Nextcloud self-hosted cloud nextcloud = { enable = true; - password = my.secrets.nextcloud.password; + passwordFile = + builtins.toFile "nextcloud-pass.txt" my.secrets.nextcloud.password; }; nginx = { enable = true; diff --git a/modules/services/nextcloud.nix b/modules/services/nextcloud.nix index b66b8ff..d1461b8 100644 --- a/modules/services/nextcloud.nix +++ b/modules/services/nextcloud.nix @@ -18,10 +18,13 @@ in example = "admin"; description = "Name of the admin user"; }; - password = mkOption { + passwordFile = mkOption { type = types.str; - example = "password"; - description = "The admin user's password"; + example = "/var/lib/nextcloud/password.txt"; + description = '' + Path to a file containing the admin's password, must be readable by + 'nextcloud' user. + ''; }; }; @@ -34,7 +37,7 @@ in maxUploadSize = cfg.maxSize; config = { adminuser = cfg.admin; - adminpass = cfg.password; # Insecure, but I don't care + adminpassFile = cfg.passwordFile; dbtype = "pgsql"; dbhost = "/run/postgresql"; overwriteProtocol = "https"; # Nginx only allows SSL From 4643690b43639b36ecef9dd926fcef839f180948 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 13:15:34 +0200 Subject: [PATCH 0323/1588] modules: services: paperless: use 'secretKeyFile' In preparation for the migration to agenix. --- machines/porthos/services.nix | 4 +++- modules/services/paperless.nix | 23 +++++++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index bd92b14..84f4d2f 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -103,7 +103,9 @@ in # Insecure, I don't care passwordFile = builtins.toFile "paperless.env" my.secrets.paperless.password; - secretKey = my.secrets.paperless.secretKey; + secretKeyFile = builtins.toFile "paperless-key.env" '' + PAPERLESS_SECRET_KEY=${my.secrets.paperless.secretKey} + ''; }; # The whole *arr software suite pirate.enable = true; diff --git a/modules/services/paperless.nix b/modules/services/paperless.nix index 0e29325..2f688ec 100644 --- a/modules/services/paperless.nix +++ b/modules/services/paperless.nix @@ -13,10 +13,12 @@ in description = "Internal port for webui"; }; - secretKey = mkOption { + secretKeyFile = mkOption { type = types.str; - example = "e11fl1oa-*ytql8p)(06fbj4ukrlo+n7k&q5+$1md7i+mge=ee"; - description = "Secret key used for sessions tokens"; + example = "/var/lib/paperless/secret-key.env"; + description = '' + Secret key as an 'EnvironmentFile' (see `systemd.exec(5)`) + ''; }; documentPath = mkOption { @@ -65,7 +67,6 @@ in PAPERLESS_DBNAME = "paperless"; # Security settings - PAPERLESS_SECRET_KEY = cfg.secretKey; # Insecure, I don't care PAPERLESS_ALLOWED_HOSTS = paperlessDomain; PAPERLESS_CORS_ALLOWED_HOSTS = "https://${paperlessDomain}"; @@ -81,6 +82,20 @@ in passwordFile = cfg.passwordFile; }; + systemd.services = { + paperless-ng-server.serviceConfig = { + EnvironmentFile = cfg.secretKeyFile; + }; + + paperless-ng-consumer.serviceConfig = { + EnvironmentFile = cfg.secretKeyFile; + }; + + paperless-ng-web.serviceConfig = { + EnvironmentFile = cfg.secretKeyFile; + }; + }; + # Set-up database services.postgresql = { enable = true; From 7d377018116f72037a8aea873e199f20b6c04aaf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 13:20:22 +0200 Subject: [PATCH 0324/1588] modules: services: matrix: use 'mailConfigFile' In preparation of the migration to agenix. --- machines/porthos/services.nix | 14 +++++++-- modules/services/matrix.nix | 54 ++++++++--------------------------- 2 files changed, 24 insertions(+), 44 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 84f4d2f..9c74276 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -65,8 +65,18 @@ in # Matrix backend and Element chat front-end matrix = { enable = true; - mail = my.secrets.matrix.mail; - secret = my.secrets.matrix.secret; + mailConfigFile = builtins.toFile "matrix-mail.yaml" '' + email: + smtp_host: "smtp.migadu.com" + smtp_port: 587 + smtp_user: "${my.secrets.matrix.mail.username}" + smtp_pass: "${my.secrets.matrix.mail.password}" + notif_from: "${my.secrets.matrix.mail.notifFrom}" + # Refuse to connect unless the server supports STARTTLS. + require_transport_security: true + ''; + # Only necessary when doing the initial registration + # secret = "change-me"; }; miniflux = { enable = true; diff --git a/modules/services/matrix.nix b/modules/services/matrix.nix index 4d6394e..af26a83 100644 --- a/modules/services/matrix.nix +++ b/modules/services/matrix.nix @@ -20,43 +20,18 @@ in enable = mkEnableOption "Matrix Synapse"; secret = mkOption { - type = types.str; + type = with types; nullOr str; + default = null; example = "deadbeef"; description = "Shared secret to register users"; }; - mail = { - host = mkOption { - type = types.str; - default = "smtp.migadu.com"; - example = "smtp.example.com"; - description = "Which host should be used for SMTP"; - }; - - port = mkOption { - type = types.port; - default = 587; - example = 25; - description = "Which port should be used for SMTP"; - }; - - username = mkOption { - type = types.str; - example = "matrix@example.com"; - description = "Which username should be used to connect"; - }; - - password = mkOption { - type = types.str; - example = "password"; - description = "Which password should be used to connect"; - }; - - notifFrom = mkOption { - type = types.str; - example = ""; - description = "Which address should be used for `From` field"; - }; + mailConfigFile = mkOption { + type = types.str; + example = "/var/lib/matrix/email-config.yaml"; + description = '' + Configuration file for mail setup. + ''; }; }; @@ -106,16 +81,11 @@ in extraConfig = '' experimental_features: spaces_enabled: true - - email: - smtp_host: "${cfg.mail.host}" - smtp_port: ${toString cfg.mail.port} - smtp_user: "${cfg.mail.username}" - smtp_pass: "${cfg.mail.password}" - notif_from: "${cfg.mail.notifFrom}" - # Refuse to connect unless the server supports STARTTLS. - require_transport_security: true ''; + + extraConfigFiles = [ + cfg.mailConfigFile + ]; }; my.services.nginx.virtualHosts = [ From 16d3cd9f8140f0e35c2f70f7e538252cd81dcc18 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 13:24:23 +0200 Subject: [PATCH 0325/1588] modules: services: nginx: use 'credentialsFile' In preparation for the migration to agenix. --- machines/porthos/services.nix | 3 +++ modules/services/nginx.nix | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 9c74276..824265c 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -106,6 +106,9 @@ in }; nginx = { enable = true; + acme = { + credentialsFile = builtins.toFile "gandi-key.env" my.secrets.acme.key; + }; }; paperless = { enable = true; diff --git a/modules/services/nginx.nix b/modules/services/nginx.nix index a68c8b9..bb773c9 100644 --- a/modules/services/nginx.nix +++ b/modules/services/nginx.nix @@ -60,6 +60,16 @@ in options.my.services.nginx = with lib; { enable = mkEnableOption "Nginx"; + acme = { + credentialsFile = mkOption { + type = types.str; + example = "/var/lib/acme/creds.env"; + description = '' + Gandi API key file as an 'EnvironmentFile' (see `systemd.exec(5)`) + ''; + }; + }; + monitoring = { enable = my.mkDisableOption "monitoring through grafana and prometheus"; }; @@ -330,14 +340,13 @@ in certs = let domain = config.networking.domain; - key = config.my.secrets.acme.key; in with pkgs; { "${domain}" = { extraDomainNames = [ "*.${domain}" ]; dnsProvider = "gandiv5"; - credentialsFile = writeText "key.env" key; # Unsecure, I don't care. + inherit (cfg.acme) credentialsFile; }; }; }; From 91abacd0f62d9244dd57cc58294265e4705d4694 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 14:41:43 +0200 Subject: [PATCH 0326/1588] modules: services: wireguard: use agenix secrets --- modules/services/wireguard.nix | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/modules/services/wireguard.nix b/modules/services/wireguard.nix index 977c6c5..d919803 100644 --- a/modules/services/wireguard.nix +++ b/modules/services/wireguard.nix @@ -5,9 +5,37 @@ { config, lib, pkgs, ... }: let cfg = config.my.services.wireguard; + secrets = config.age.secrets; hostName = config.networking.hostName; - peers = config.my.secrets.wireguard.peers; + peers = + let + mkPeer = name: attrs: { + inherit (attrs) clientNum publicKey; + privateKeyFile = secrets."wireguard/${name}/private-key".path; + } // lib.optionalAttrs (attrs ? externalIp) { + inherit (attrs) externalIp; + }; + in + lib.mapAttrs mkPeer { + # "Server" + porthos = { + clientNum = 1; + publicKey = "PLdgsizztddri0LYtjuNHr5r2E8D+yI+gM8cm5WDfHQ="; + externalIp = "91.121.177.163"; + }; + + # "Clients" + aramis = { + clientNum = 2; + publicKey = "QJSWIBS1mXTpxYybLlKu/Y5wy0GFbUfn4yPzpF1DZDc="; + }; + + richelieu = { + clientNum = 3; + publicKey = "w4IADAj2Tt7Qe95a0RxDv9ovg/Dr/f3q1LrVOPF48Rk="; + }; + }; thisPeer = peers."${hostName}"; thisPeerIsServer = thisPeer ? externalIp; # Only connect to clients from server, and only connect to server from clients @@ -26,8 +54,7 @@ let "${v4.subnet}.${toString thisPeer.clientNum}/${toString v4.mask}" "${v6.subnet}::${toString thisPeer.clientNum}/${toHexString v6.mask}" ]; - # Insecure, I don't care - privateKey = thisPeer.privateKey; + inherit (thisPeer) privateKeyFile; peers = let From 33d539ed4fadeb69b1052fd01a7582683f619ccf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 12:46:58 +0200 Subject: [PATCH 0327/1588] modules: system: users: use agenix secrets --- modules/system/users.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/system/users.nix b/modules/system/users.nix index 32b46ca..b36114f 100644 --- a/modules/system/users.nix +++ b/modules/system/users.nix @@ -1,7 +1,7 @@ # User setup { config, lib, pkgs, ... }: let - secrets = config.my.secrets; + secrets = config.age.secrets; cfg = config.my.system.users; groupExists = grp: builtins.hasAttr grp config.users.groups; groupsIfExist = builtins.filter groupExists; @@ -17,11 +17,11 @@ in users = { root = { - initialHashedPassword = secrets.users.root.hashedPassword; + passwordFile = secrets."users/root/hashed-password".path; }; ${config.my.user.name} = { - initialHashedPassword = secrets.users.ambroisie.hashedPassword; + passwordFile = secrets."users/ambroisie/hashed-password".path; description = "Bruno BELANYI"; isNormalUser = true; shell = pkgs.zsh; From f09ba6b5bedfdba386ab558853113c38342b8641 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 14:45:16 +0200 Subject: [PATCH 0328/1588] machines: porthos: users: use clear-text ssh key --- machines/porthos/ssh/drone.pub | 1 + machines/porthos/users.nix | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 machines/porthos/ssh/drone.pub diff --git a/machines/porthos/ssh/drone.pub b/machines/porthos/ssh/drone.pub new file mode 100644 index 0000000..d1f971c --- /dev/null +++ b/machines/porthos/ssh/drone.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDWVUvOT1/triPcj7wiLAmiVkPZ71crySbReetHaGxMYYdKNFurJQsP6BqsdCAwrGbduLUDJovLtjOM7SxghjkGqh2RZucj/zqpja8YoFqYTcLutlqa1NwUqQTq21azKBDSdvkBPWWyZhOKssnag+0bZRN3vVajoDrwAU6zJLhHh9eNESTEytAnZnllXsHB1dKF1p7FWVwYTGAc1PdHHSQNMkjg9aCM+VBzTHhp8nF+GOtGzt0A0XnoZGdhn6KqhKyH7KxwPMmeD3RNeCEmQY/TXjthOx/mBkgTEa8LWOBxdy/Rs6edUenvPcQ5tK5nX0GSxxqtbORlhT+tGiqq1UHeIUhXirBUaS7pnDo+Edc0m8ruLcwHwyQ5yVn2ts3daKxb87+PyjYiRxxeQXvbF84ef7ZOkLTEn0tnftFHLqszBfOjoV1DmMNSWPDULD3krObzNbr1I0xHE7bDRXw2t8L1cwHOLHTL9KwsTCw1d25JSxINp2wAZxlGVZLXoXVMKTjfx1xSGbUuRzA1Q6+1IH9WDvSSixDzvc2Dqnj91/xardivApK+T+OxTBurwWsxzEezIAbTCpoKW9ulzu06xWGWhxATkzUmVh/qhFUHAVlmhEvn0KqlYbWteEcUxgKS1uSAoA6+pZh5NMG1u1hLEktBQbDnS0VdyKYBUHZidLuR4w== ambroisie@porthos diff --git a/machines/porthos/users.nix b/machines/porthos/users.nix index 1a26e3c..645c942 100644 --- a/machines/porthos/users.nix +++ b/machines/porthos/users.nix @@ -10,6 +10,6 @@ in group = "nginx"; createHome = false; # Messes with permissions home = "/var/www/"; - openssh.authorizedKeys.keys = [ my.secrets.drone.ssh.publicKey ]; + openssh.authorizedKeys.keyFiles = [ ./ssh/drone.pub ]; }; } From c88fa9167105d2b25c15ff3335c288aecb624fd8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:10:20 +0200 Subject: [PATCH 0329/1588] modules: home: put into folder --- modules/default.nix | 2 +- modules/{home.nix => home/default.nix} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename modules/{home.nix => home/default.nix} (91%) diff --git a/modules/default.nix b/modules/default.nix index d9c6c68..d9b4ce2 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -4,7 +4,7 @@ { imports = [ ./hardware - ./home.nix + ./home ./programs ./services ./system diff --git a/modules/home.nix b/modules/home/default.nix similarity index 91% rename from modules/home.nix rename to modules/home/default.nix index 8ae1b3e..4745c0c 100644 --- a/modules/home.nix +++ b/modules/home/default.nix @@ -14,7 +14,7 @@ in config = lib.mkIf cfg.enable { home-manager = { # Not a fan of out-of-directory imports, but this is a good exception - users.${config.my.user.name} = import ../home; + users.${config.my.user.name} = import ../../home; # Nix Flakes compatibility useGlobalPkgs = true; From d5b09c48efda5070b166c73a4830dbce4ee0106a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:09:12 +0200 Subject: [PATCH 0330/1588] modules: programs: put modules into folders --- modules/programs/default.nix | 2 +- modules/programs/{steam.nix => steam/default.nix} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename modules/programs/{steam.nix => steam/default.nix} (100%) diff --git a/modules/programs/default.nix b/modules/programs/default.nix index a6f14ed..73f4e4b 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -3,6 +3,6 @@ { imports = [ - ./steam.nix + ./steam ]; } diff --git a/modules/programs/steam.nix b/modules/programs/steam/default.nix similarity index 100% rename from modules/programs/steam.nix rename to modules/programs/steam/default.nix From 7bec7ae0f944ed61181d9a72c1a9c0230d03019d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:07:55 +0200 Subject: [PATCH 0331/1588] modules: system: put modules into folders --- modules/system/{boot.nix => boot/default.nix} | 0 modules/system/default.nix | 12 ++++++------ .../{documentation.nix => documentation/default.nix} | 0 .../system/{language.nix => language/default.nix} | 0 modules/system/{nix.nix => nix/default.nix} | 0 .../system/{packages.nix => packages/default.nix} | 0 modules/system/{users.nix => users/default.nix} | 0 modules/system/{ => users}/ssh/aramis.pub | 0 modules/system/{ => users}/ssh/shared.pub | 0 9 files changed, 6 insertions(+), 6 deletions(-) rename modules/system/{boot.nix => boot/default.nix} (100%) rename modules/system/{documentation.nix => documentation/default.nix} (100%) rename modules/system/{language.nix => language/default.nix} (100%) rename modules/system/{nix.nix => nix/default.nix} (100%) rename modules/system/{packages.nix => packages/default.nix} (100%) rename modules/system/{users.nix => users/default.nix} (100%) rename modules/system/{ => users}/ssh/aramis.pub (100%) rename modules/system/{ => users}/ssh/shared.pub (100%) diff --git a/modules/system/boot.nix b/modules/system/boot/default.nix similarity index 100% rename from modules/system/boot.nix rename to modules/system/boot/default.nix diff --git a/modules/system/default.nix b/modules/system/default.nix index 2b2bf97..5165e64 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -3,11 +3,11 @@ { imports = [ - ./boot.nix - ./documentation.nix - ./language.nix - ./nix.nix - ./packages.nix - ./users.nix + ./boot + ./documentation + ./language + ./nix + ./packages + ./users ]; } diff --git a/modules/system/documentation.nix b/modules/system/documentation/default.nix similarity index 100% rename from modules/system/documentation.nix rename to modules/system/documentation/default.nix diff --git a/modules/system/language.nix b/modules/system/language/default.nix similarity index 100% rename from modules/system/language.nix rename to modules/system/language/default.nix diff --git a/modules/system/nix.nix b/modules/system/nix/default.nix similarity index 100% rename from modules/system/nix.nix rename to modules/system/nix/default.nix diff --git a/modules/system/packages.nix b/modules/system/packages/default.nix similarity index 100% rename from modules/system/packages.nix rename to modules/system/packages/default.nix diff --git a/modules/system/users.nix b/modules/system/users/default.nix similarity index 100% rename from modules/system/users.nix rename to modules/system/users/default.nix diff --git a/modules/system/ssh/aramis.pub b/modules/system/users/ssh/aramis.pub similarity index 100% rename from modules/system/ssh/aramis.pub rename to modules/system/users/ssh/aramis.pub diff --git a/modules/system/ssh/shared.pub b/modules/system/users/ssh/shared.pub similarity index 100% rename from modules/system/ssh/shared.pub rename to modules/system/users/ssh/shared.pub From 836b54b8eb874b93fb98bd9865da5c80edfd01d6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:08:43 +0200 Subject: [PATCH 0332/1588] modules: hardware: put modules into folders --- .../{bluetooth.nix => bluetooth/default.nix} | 0 modules/hardware/default.nix | 12 ++++++------ .../hardware/{ergodox.nix => ergodox/default.nix} | 0 .../hardware/{mx-ergo.nix => mx-ergo/default.nix} | 0 .../{networking.nix => networking/default.nix} | 0 modules/hardware/{sound.nix => sound/default.nix} | 0 modules/hardware/{upower.nix => upower/default.nix} | 0 7 files changed, 6 insertions(+), 6 deletions(-) rename modules/hardware/{bluetooth.nix => bluetooth/default.nix} (100%) rename modules/hardware/{ergodox.nix => ergodox/default.nix} (100%) rename modules/hardware/{mx-ergo.nix => mx-ergo/default.nix} (100%) rename modules/hardware/{networking.nix => networking/default.nix} (100%) rename modules/hardware/{sound.nix => sound/default.nix} (100%) rename modules/hardware/{upower.nix => upower/default.nix} (100%) diff --git a/modules/hardware/bluetooth.nix b/modules/hardware/bluetooth/default.nix similarity index 100% rename from modules/hardware/bluetooth.nix rename to modules/hardware/bluetooth/default.nix diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 8e5e003..9ab5d40 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -3,11 +3,11 @@ { imports = [ - ./bluetooth.nix - ./ergodox.nix - ./mx-ergo.nix - ./networking.nix - ./sound.nix - ./upower.nix + ./bluetooth + ./ergodox + ./mx-ergo + ./networking + ./sound + ./upower ]; } diff --git a/modules/hardware/ergodox.nix b/modules/hardware/ergodox/default.nix similarity index 100% rename from modules/hardware/ergodox.nix rename to modules/hardware/ergodox/default.nix diff --git a/modules/hardware/mx-ergo.nix b/modules/hardware/mx-ergo/default.nix similarity index 100% rename from modules/hardware/mx-ergo.nix rename to modules/hardware/mx-ergo/default.nix diff --git a/modules/hardware/networking.nix b/modules/hardware/networking/default.nix similarity index 100% rename from modules/hardware/networking.nix rename to modules/hardware/networking/default.nix diff --git a/modules/hardware/sound.nix b/modules/hardware/sound/default.nix similarity index 100% rename from modules/hardware/sound.nix rename to modules/hardware/sound/default.nix diff --git a/modules/hardware/upower.nix b/modules/hardware/upower/default.nix similarity index 100% rename from modules/hardware/upower.nix rename to modules/hardware/upower/default.nix From ac90c5b11a28b0e155378f1cea9399b5f290e107 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:09:54 +0200 Subject: [PATCH 0333/1588] modules: services: put modules into folders --- .../{adblock.nix => adblock/default.nix} | 0 .../{backup.nix => backup/default.nix} | 0 .../services/{blog.nix => blog/default.nix} | 0 .../default.nix} | 0 modules/services/default.nix | 56 +++++++++---------- .../services/{drone.nix => drone/default.nix} | 0 .../services/{flood.nix => flood/default.nix} | 0 .../services/{gitea.nix => gitea/default.nix} | 0 .../{indexers.nix => indexers/default.nix} | 0 .../{jellyfin.nix => jellyfin/default.nix} | 0 .../services/{lohr.nix => lohr/default.nix} | 0 .../{matrix.nix => matrix/default.nix} | 0 .../{miniflux.nix => miniflux/default.nix} | 0 .../default.nix} | 0 .../{navidrome.nix => navidrome/default.nix} | 0 .../{nextcloud.nix => nextcloud/default.nix} | 0 .../services/{nginx.nix => nginx/default.nix} | 0 .../{paperless.nix => paperless/default.nix} | 0 .../{pirate.nix => pirate/default.nix} | 0 .../{podgrab.nix => podgrab/default.nix} | 0 .../default.nix} | 0 .../default.nix} | 0 .../{quassel.nix => quassel/default.nix} | 0 .../default.nix} | 0 .../{sabnzbd.nix => sabnzbd/default.nix} | 0 .../default.nix} | 0 modules/services/{tlp.nix => tlp/default.nix} | 0 .../default.nix} | 0 .../{wireguard.nix => wireguard/default.nix} | 0 29 files changed, 28 insertions(+), 28 deletions(-) rename modules/services/{adblock.nix => adblock/default.nix} (100%) rename modules/services/{backup.nix => backup/default.nix} (100%) rename modules/services/{blog.nix => blog/default.nix} (100%) rename modules/services/{calibre-web.nix => calibre-web/default.nix} (100%) rename modules/services/{drone.nix => drone/default.nix} (100%) rename modules/services/{flood.nix => flood/default.nix} (100%) rename modules/services/{gitea.nix => gitea/default.nix} (100%) rename modules/services/{indexers.nix => indexers/default.nix} (100%) rename modules/services/{jellyfin.nix => jellyfin/default.nix} (100%) rename modules/services/{lohr.nix => lohr/default.nix} (100%) rename modules/services/{matrix.nix => matrix/default.nix} (100%) rename modules/services/{miniflux.nix => miniflux/default.nix} (100%) rename modules/services/{monitoring.nix => monitoring/default.nix} (100%) rename modules/services/{navidrome.nix => navidrome/default.nix} (100%) rename modules/services/{nextcloud.nix => nextcloud/default.nix} (100%) rename modules/services/{nginx.nix => nginx/default.nix} (100%) rename modules/services/{paperless.nix => paperless/default.nix} (100%) rename modules/services/{pirate.nix => pirate/default.nix} (100%) rename modules/services/{podgrab.nix => podgrab/default.nix} (100%) rename modules/services/{postgresql-backup.nix => postgresql-backup/default.nix} (100%) rename modules/services/{postgresql.nix => postgresql/default.nix} (100%) rename modules/services/{quassel.nix => quassel/default.nix} (100%) rename modules/services/{rss-bridge.nix => rss-bridge/default.nix} (100%) rename modules/services/{sabnzbd.nix => sabnzbd/default.nix} (100%) rename modules/services/{ssh-server.nix => ssh-server/default.nix} (100%) rename modules/services/{tlp.nix => tlp/default.nix} (100%) rename modules/services/{transmission.nix => transmission/default.nix} (100%) rename modules/services/{wireguard.nix => wireguard/default.nix} (100%) diff --git a/modules/services/adblock.nix b/modules/services/adblock/default.nix similarity index 100% rename from modules/services/adblock.nix rename to modules/services/adblock/default.nix diff --git a/modules/services/backup.nix b/modules/services/backup/default.nix similarity index 100% rename from modules/services/backup.nix rename to modules/services/backup/default.nix diff --git a/modules/services/blog.nix b/modules/services/blog/default.nix similarity index 100% rename from modules/services/blog.nix rename to modules/services/blog/default.nix diff --git a/modules/services/calibre-web.nix b/modules/services/calibre-web/default.nix similarity index 100% rename from modules/services/calibre-web.nix rename to modules/services/calibre-web/default.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 9f132d0..4ed40f0 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -2,33 +2,33 @@ { imports = [ - ./adblock.nix - ./backup.nix - ./blog.nix - ./calibre-web.nix - ./drone.nix - ./flood.nix - ./gitea.nix - ./indexers.nix - ./jellyfin.nix - ./lohr.nix - ./matrix.nix - ./miniflux.nix - ./monitoring.nix - ./navidrome.nix - ./nextcloud.nix - ./nginx.nix - ./paperless.nix - ./pirate.nix - ./podgrab.nix - ./postgresql-backup.nix - ./postgresql.nix - ./quassel.nix - ./rss-bridge.nix - ./sabnzbd.nix - ./ssh-server.nix - ./tlp.nix - ./transmission.nix - ./wireguard.nix + ./adblock + ./backup + ./blog + ./calibre-web + ./drone + ./flood + ./gitea + ./indexers + ./jellyfin + ./lohr + ./matrix + ./miniflux + ./monitoring + ./navidrome + ./nextcloud + ./nginx + ./paperless + ./pirate + ./podgrab + ./postgresql-backup + ./postgresql + ./quassel + ./rss-bridge + ./sabnzbd + ./ssh-server + ./tlp + ./transmission + ./wireguard ]; } diff --git a/modules/services/drone.nix b/modules/services/drone/default.nix similarity index 100% rename from modules/services/drone.nix rename to modules/services/drone/default.nix diff --git a/modules/services/flood.nix b/modules/services/flood/default.nix similarity index 100% rename from modules/services/flood.nix rename to modules/services/flood/default.nix diff --git a/modules/services/gitea.nix b/modules/services/gitea/default.nix similarity index 100% rename from modules/services/gitea.nix rename to modules/services/gitea/default.nix diff --git a/modules/services/indexers.nix b/modules/services/indexers/default.nix similarity index 100% rename from modules/services/indexers.nix rename to modules/services/indexers/default.nix diff --git a/modules/services/jellyfin.nix b/modules/services/jellyfin/default.nix similarity index 100% rename from modules/services/jellyfin.nix rename to modules/services/jellyfin/default.nix diff --git a/modules/services/lohr.nix b/modules/services/lohr/default.nix similarity index 100% rename from modules/services/lohr.nix rename to modules/services/lohr/default.nix diff --git a/modules/services/matrix.nix b/modules/services/matrix/default.nix similarity index 100% rename from modules/services/matrix.nix rename to modules/services/matrix/default.nix diff --git a/modules/services/miniflux.nix b/modules/services/miniflux/default.nix similarity index 100% rename from modules/services/miniflux.nix rename to modules/services/miniflux/default.nix diff --git a/modules/services/monitoring.nix b/modules/services/monitoring/default.nix similarity index 100% rename from modules/services/monitoring.nix rename to modules/services/monitoring/default.nix diff --git a/modules/services/navidrome.nix b/modules/services/navidrome/default.nix similarity index 100% rename from modules/services/navidrome.nix rename to modules/services/navidrome/default.nix diff --git a/modules/services/nextcloud.nix b/modules/services/nextcloud/default.nix similarity index 100% rename from modules/services/nextcloud.nix rename to modules/services/nextcloud/default.nix diff --git a/modules/services/nginx.nix b/modules/services/nginx/default.nix similarity index 100% rename from modules/services/nginx.nix rename to modules/services/nginx/default.nix diff --git a/modules/services/paperless.nix b/modules/services/paperless/default.nix similarity index 100% rename from modules/services/paperless.nix rename to modules/services/paperless/default.nix diff --git a/modules/services/pirate.nix b/modules/services/pirate/default.nix similarity index 100% rename from modules/services/pirate.nix rename to modules/services/pirate/default.nix diff --git a/modules/services/podgrab.nix b/modules/services/podgrab/default.nix similarity index 100% rename from modules/services/podgrab.nix rename to modules/services/podgrab/default.nix diff --git a/modules/services/postgresql-backup.nix b/modules/services/postgresql-backup/default.nix similarity index 100% rename from modules/services/postgresql-backup.nix rename to modules/services/postgresql-backup/default.nix diff --git a/modules/services/postgresql.nix b/modules/services/postgresql/default.nix similarity index 100% rename from modules/services/postgresql.nix rename to modules/services/postgresql/default.nix diff --git a/modules/services/quassel.nix b/modules/services/quassel/default.nix similarity index 100% rename from modules/services/quassel.nix rename to modules/services/quassel/default.nix diff --git a/modules/services/rss-bridge.nix b/modules/services/rss-bridge/default.nix similarity index 100% rename from modules/services/rss-bridge.nix rename to modules/services/rss-bridge/default.nix diff --git a/modules/services/sabnzbd.nix b/modules/services/sabnzbd/default.nix similarity index 100% rename from modules/services/sabnzbd.nix rename to modules/services/sabnzbd/default.nix diff --git a/modules/services/ssh-server.nix b/modules/services/ssh-server/default.nix similarity index 100% rename from modules/services/ssh-server.nix rename to modules/services/ssh-server/default.nix diff --git a/modules/services/tlp.nix b/modules/services/tlp/default.nix similarity index 100% rename from modules/services/tlp.nix rename to modules/services/tlp/default.nix diff --git a/modules/services/transmission.nix b/modules/services/transmission/default.nix similarity index 100% rename from modules/services/transmission.nix rename to modules/services/transmission/default.nix diff --git a/modules/services/wireguard.nix b/modules/services/wireguard/default.nix similarity index 100% rename from modules/services/wireguard.nix rename to modules/services/wireguard/default.nix From b46b9182955fb6fcd06b45c5955260885922232f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:22:52 +0200 Subject: [PATCH 0334/1588] modules: services: drone: split into files This is cleaner to read. --- modules/services/drone/default.nix | 162 +----------------- .../services/drone/runner-docker/default.nix | 44 +++++ .../services/drone/runner-exec/default.nix | 68 ++++++++ modules/services/drone/server/default.nix | 56 ++++++ 4 files changed, 174 insertions(+), 156 deletions(-) create mode 100644 modules/services/drone/runner-docker/default.nix create mode 100644 modules/services/drone/runner-exec/default.nix create mode 100644 modules/services/drone/server/default.nix diff --git a/modules/services/drone/default.nix b/modules/services/drone/default.nix index 7a9b668..3e84ddd 100644 --- a/modules/services/drone/default.nix +++ b/modules/services/drone/default.nix @@ -3,16 +3,13 @@ # Inspired by [1] # [1]: https://github.com/Mic92/dotfiles/blob/master/nixos/eve/modules/drone.nix { config, lib, pkgs, ... }: -let - cfg = config.my.services.drone; - - hasRunner = (name: builtins.elem name cfg.runners); - - execPkg = pkgs.drone-runner-exec; - - dockerPkg = pkgs.drone-runner-docker; -in { + imports = [ + ./runner-docker + ./runner-exec + ./server + ]; + options.my.services.drone = with lib; { enable = mkEnableOption "Drone CI"; runners = mkOption { @@ -44,151 +41,4 @@ in description = "Shared RPC secret to inject into server and runners"; }; }; - - config = lib.mkIf cfg.enable { - systemd.services.drone-server = { - wantedBy = [ "multi-user.target" ]; - after = [ "postgresql.service" ]; - serviceConfig = { - EnvironmentFile = [ - cfg.secretFile - cfg.sharedSecretFile - ]; - Environment = [ - "DRONE_DATABASE_DATASOURCE=postgres:///drone?host=/run/postgresql" - "DRONE_SERVER_HOST=drone.${config.networking.domain}" - "DRONE_SERVER_PROTO=https" - "DRONE_DATABASE_DRIVER=postgres" - "DRONE_SERVER_PORT=:${toString cfg.port}" - "DRONE_USER_CREATE=username:${cfg.admin},admin:true" - "DRONE_JSONNET_ENABLED=true" - "DRONE_STARLARK_ENABLED=true" - ]; - ExecStart = "${pkgs.drone}/bin/drone-server"; - User = "drone"; - Group = "drone"; - }; - }; - - users.users.drone = { - isSystemUser = true; - createHome = true; - group = "drone"; - }; - users.groups.drone = { }; - - services.postgresql = { - enable = true; - ensureDatabases = [ "drone" ]; - ensureUsers = [{ - name = "drone"; - ensurePermissions = { - "DATABASE drone" = "ALL PRIVILEGES"; - }; - }]; - }; - - my.services.nginx.virtualHosts = [ - { - subdomain = "drone"; - inherit (cfg) port; - } - ]; - - # Docker runner - systemd.services.drone-runner-docker = lib.mkIf (hasRunner "docker") { - wantedBy = [ "multi-user.target" ]; - after = [ "docker.socket" ]; # Needs the socket to be available - # might break deployment - restartIfChanged = false; - confinement.enable = true; - serviceConfig = { - Environment = [ - "DRONE_SERVER_HOST=drone.${config.networking.domain}" - "DRONE_SERVER_PROTO=https" - "DRONE_RUNNER_CAPACITY=10" - "CLIENT_DRONE_RPC_HOST=127.0.0.1:${toString cfg.port}" - ]; - BindPaths = [ - "/var/run/docker.sock" - ]; - EnvironmentFile = [ - cfg.sharedSecretFile - ]; - ExecStart = "${dockerPkg}/bin/drone-runner-docker"; - User = "drone-runner-docker"; - Group = "drone-runner-docker"; - }; - }; - - # Make sure it is activated in that case - virtualisation.docker.enable = lib.mkIf (hasRunner "docker") true; - - users.users.drone-runner-docker = lib.mkIf (hasRunner "docker") { - isSystemUser = true; - group = "drone-runner-docker"; - extraGroups = [ "docker" ]; # Give access to the daemon - }; - users.groups.drone-runner-docker = lib.mkIf (hasRunner "docker") { }; - - # Exec runner - systemd.services.drone-runner-exec = lib.mkIf (hasRunner "exec") { - wantedBy = [ "multi-user.target" ]; - # might break deployment - restartIfChanged = false; - confinement.enable = true; - confinement.packages = with pkgs; [ - git - gnutar - bash - nixUnstable - gzip - ]; - path = with pkgs; [ - git - gnutar - bash - nixUnstable - gzip - ]; - serviceConfig = { - Environment = [ - "DRONE_SERVER_HOST=drone.${config.networking.domain}" - "DRONE_SERVER_PROTO=https" - "DRONE_RUNNER_CAPACITY=10" - "CLIENT_DRONE_RPC_HOST=127.0.0.1:${toString cfg.port}" - "NIX_REMOTE=daemon" - "PAGER=cat" - ]; - BindPaths = [ - "/nix/var/nix/daemon-socket/socket" - "/run/nscd/socket" - ]; - BindReadOnlyPaths = [ - "/etc/resolv.conf:/etc/resolv.conf" - "/etc/resolvconf.conf:/etc/resolvconf.conf" - "/etc/passwd:/etc/passwd" - "/etc/group:/etc/group" - "/nix/var/nix/profiles/system/etc/nix:/etc/nix" - "${config.environment.etc."ssl/certs/ca-certificates.crt".source}:/etc/ssl/certs/ca-certificates.crt" - "${config.environment.etc."ssh/ssh_known_hosts".source}:/etc/ssh/ssh_known_hosts" - "/etc/machine-id" - # channels are dynamic paths in the nix store, therefore we need to bind mount the whole thing - "/nix/" - ]; - EnvironmentFile = [ - cfg.sharedSecretFile - ]; - ExecStart = "${execPkg}/bin/drone-runner-exec"; - User = "drone-runner-exec"; - Group = "drone-runner-exec"; - }; - }; - - users.users.drone-runner-exec = lib.mkIf (hasRunner "exec") { - isSystemUser = true; - group = "drone-runner-exec"; - }; - users.groups.drone-runner-exec = lib.mkIf (hasRunner "exec") { }; - }; } diff --git a/modules/services/drone/runner-docker/default.nix b/modules/services/drone/runner-docker/default.nix new file mode 100644 index 0000000..0f2e3b3 --- /dev/null +++ b/modules/services/drone/runner-docker/default.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.drone; + hasRunner = (name: builtins.elem name cfg.runners); + dockerPkg = pkgs.drone-runner-docker; +in +{ + config = lib.mkIf (cfg.enable && hasRunner "docker") { + systemd.services.drone-runner-docker = { + wantedBy = [ "multi-user.target" ]; + after = [ "docker.socket" ]; # Needs the socket to be available + # might break deployment + restartIfChanged = false; + confinement.enable = true; + serviceConfig = { + Environment = [ + "DRONE_SERVER_HOST=drone.${config.networking.domain}" + "DRONE_SERVER_PROTO=https" + "DRONE_RUNNER_CAPACITY=10" + "CLIENT_DRONE_RPC_HOST=127.0.0.1:${toString cfg.port}" + ]; + BindPaths = [ + "/var/run/docker.sock" + ]; + EnvironmentFile = [ + cfg.sharedSecretFile + ]; + ExecStart = "${dockerPkg}/bin/drone-runner-docker"; + User = "drone-runner-docker"; + Group = "drone-runner-docker"; + }; + }; + + # Make sure it is activated in that case + virtualisation.docker.enable = true; + + users.users.drone-runner-docker = { + isSystemUser = true; + group = "drone-runner-docker"; + extraGroups = [ "docker" ]; # Give access to the daemon + }; + users.groups.drone-runner-docker = { }; + }; +} diff --git a/modules/services/drone/runner-exec/default.nix b/modules/services/drone/runner-exec/default.nix new file mode 100644 index 0000000..6c776b4 --- /dev/null +++ b/modules/services/drone/runner-exec/default.nix @@ -0,0 +1,68 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.drone; + hasRunner = (name: builtins.elem name cfg.runners); + execPkg = pkgs.drone-runner-exec; +in +{ + config = lib.mkIf (cfg.enable && hasRunner "exec") { + systemd.services.drone-runner-exec = { + wantedBy = [ "multi-user.target" ]; + # might break deployment + restartIfChanged = false; + confinement.enable = true; + confinement.packages = with pkgs; [ + git + gnutar + bash + nixUnstable + gzip + ]; + path = with pkgs; [ + git + gnutar + bash + nixUnstable + gzip + ]; + serviceConfig = { + Environment = [ + "DRONE_SERVER_HOST=drone.${config.networking.domain}" + "DRONE_SERVER_PROTO=https" + "DRONE_RUNNER_CAPACITY=10" + "CLIENT_DRONE_RPC_HOST=127.0.0.1:${toString cfg.port}" + "NIX_REMOTE=daemon" + "PAGER=cat" + ]; + BindPaths = [ + "/nix/var/nix/daemon-socket/socket" + "/run/nscd/socket" + ]; + BindReadOnlyPaths = [ + "/etc/resolv.conf:/etc/resolv.conf" + "/etc/resolvconf.conf:/etc/resolvconf.conf" + "/etc/passwd:/etc/passwd" + "/etc/group:/etc/group" + "/nix/var/nix/profiles/system/etc/nix:/etc/nix" + "${config.environment.etc."ssl/certs/ca-certificates.crt".source}:/etc/ssl/certs/ca-certificates.crt" + "${config.environment.etc."ssh/ssh_known_hosts".source}:/etc/ssh/ssh_known_hosts" + "/etc/machine-id" + # channels are dynamic paths in the nix store, therefore we need to bind mount the whole thing + "/nix/" + ]; + EnvironmentFile = [ + cfg.sharedSecretFile + ]; + ExecStart = "${execPkg}/bin/drone-runner-exec"; + User = "drone-runner-exec"; + Group = "drone-runner-exec"; + }; + }; + + users.users.drone-runner-exec = { + isSystemUser = true; + group = "drone-runner-exec"; + }; + users.groups.drone-runner-exec = { }; + }; +} diff --git a/modules/services/drone/server/default.nix b/modules/services/drone/server/default.nix new file mode 100644 index 0000000..1202010 --- /dev/null +++ b/modules/services/drone/server/default.nix @@ -0,0 +1,56 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.drone; +in +{ + config = lib.mkIf cfg.enable { + systemd.services.drone-server = { + wantedBy = [ "multi-user.target" ]; + after = [ "postgresql.service" ]; + serviceConfig = { + EnvironmentFile = [ + cfg.secretFile + cfg.sharedSecretFile + ]; + Environment = [ + "DRONE_DATABASE_DATASOURCE=postgres:///drone?host=/run/postgresql" + "DRONE_SERVER_HOST=drone.${config.networking.domain}" + "DRONE_SERVER_PROTO=https" + "DRONE_DATABASE_DRIVER=postgres" + "DRONE_SERVER_PORT=:${toString cfg.port}" + "DRONE_USER_CREATE=username:${cfg.admin},admin:true" + "DRONE_JSONNET_ENABLED=true" + "DRONE_STARLARK_ENABLED=true" + ]; + ExecStart = "${pkgs.drone}/bin/drone-server"; + User = "drone"; + Group = "drone"; + }; + }; + + users.users.drone = { + isSystemUser = true; + createHome = true; + group = "drone"; + }; + users.groups.drone = { }; + + services.postgresql = { + enable = true; + ensureDatabases = [ "drone" ]; + ensureUsers = [{ + name = "drone"; + ensurePermissions = { + "DATABASE drone" = "ALL PRIVILEGES"; + }; + }]; + }; + + my.services.nginx.virtualHosts = [ + { + subdomain = "drone"; + inherit (cfg) port; + } + ]; + }; +} From f61f11ba291509ac40955063844caa6b1d39dcb5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:26:21 +0200 Subject: [PATCH 0335/1588] profiles: put modules into folders --- profiles/{bluetooth.nix => bluetooth/default.nix} | 0 profiles/default.nix | 12 ++++++------ profiles/{devices.nix => devices/default.nix} | 0 profiles/{gtk.nix => gtk/default.nix} | 0 profiles/{laptop.nix => laptop/default.nix} | 0 profiles/{wm.nix => wm/default.nix} | 0 profiles/{x.nix => x/default.nix} | 0 7 files changed, 6 insertions(+), 6 deletions(-) rename profiles/{bluetooth.nix => bluetooth/default.nix} (100%) rename profiles/{devices.nix => devices/default.nix} (100%) rename profiles/{gtk.nix => gtk/default.nix} (100%) rename profiles/{laptop.nix => laptop/default.nix} (100%) rename profiles/{wm.nix => wm/default.nix} (100%) rename profiles/{x.nix => x/default.nix} (100%) diff --git a/profiles/bluetooth.nix b/profiles/bluetooth/default.nix similarity index 100% rename from profiles/bluetooth.nix rename to profiles/bluetooth/default.nix diff --git a/profiles/default.nix b/profiles/default.nix index 0ea4094..43d5a84 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -2,11 +2,11 @@ { ... }: { imports = [ - ./bluetooth.nix - ./devices.nix - ./gtk.nix - ./laptop.nix - ./wm.nix - ./x.nix + ./bluetooth + ./devices + ./gtk + ./laptop + ./wm + ./x ]; } diff --git a/profiles/devices.nix b/profiles/devices/default.nix similarity index 100% rename from profiles/devices.nix rename to profiles/devices/default.nix diff --git a/profiles/gtk.nix b/profiles/gtk/default.nix similarity index 100% rename from profiles/gtk.nix rename to profiles/gtk/default.nix diff --git a/profiles/laptop.nix b/profiles/laptop/default.nix similarity index 100% rename from profiles/laptop.nix rename to profiles/laptop/default.nix diff --git a/profiles/wm.nix b/profiles/wm/default.nix similarity index 100% rename from profiles/wm.nix rename to profiles/wm/default.nix diff --git a/profiles/x.nix b/profiles/x/default.nix similarity index 100% rename from profiles/x.nix rename to profiles/x/default.nix From a12b629dc36546eecfc025b92423d594cbd68993 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:28:27 +0200 Subject: [PATCH 0336/1588] home: firefox: put modules into folders --- home/firefox/default.nix | 4 ++-- home/firefox/{firefox.nix => firefox/default.nix} | 0 home/firefox/{tridactyl.nix => tridactyl/default.nix} | 0 home/firefox/{ => tridactyl}/tridactylrc | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename home/firefox/{firefox.nix => firefox/default.nix} (100%) rename home/firefox/{tridactyl.nix => tridactyl/default.nix} (100%) rename home/firefox/{ => tridactyl}/tridactylrc (100%) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index 601644b..3d310dc 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -23,7 +23,7 @@ }; imports = [ - ./firefox.nix - ./tridactyl.nix + ./firefox + ./tridactyl ]; } diff --git a/home/firefox/firefox.nix b/home/firefox/firefox/default.nix similarity index 100% rename from home/firefox/firefox.nix rename to home/firefox/firefox/default.nix diff --git a/home/firefox/tridactyl.nix b/home/firefox/tridactyl/default.nix similarity index 100% rename from home/firefox/tridactyl.nix rename to home/firefox/tridactyl/default.nix diff --git a/home/firefox/tridactylrc b/home/firefox/tridactyl/tridactylrc similarity index 100% rename from home/firefox/tridactylrc rename to home/firefox/tridactyl/tridactylrc From 544aec0d911c18ceab62adc83c643858727ef5dc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:28:45 +0200 Subject: [PATCH 0337/1588] home: mail: put modules into folders --- home/mail/{accounts.nix => accounts/default.nix} | 0 home/mail/default.nix | 6 +++--- home/mail/{himalaya.nix => himalaya/default.nix} | 0 home/mail/{msmtp.nix => msmtp/default.nix} | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename home/mail/{accounts.nix => accounts/default.nix} (100%) rename home/mail/{himalaya.nix => himalaya/default.nix} (100%) rename home/mail/{msmtp.nix => msmtp/default.nix} (100%) diff --git a/home/mail/accounts.nix b/home/mail/accounts/default.nix similarity index 100% rename from home/mail/accounts.nix rename to home/mail/accounts/default.nix diff --git a/home/mail/default.nix b/home/mail/default.nix index 3ec0c9a..ac44593 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -6,9 +6,9 @@ let in { imports = [ - ./accounts.nix - ./himalaya.nix - ./msmtp.nix + ./accounts + ./himalaya + ./msmtp ]; options.my.home.mail = with lib; { diff --git a/home/mail/himalaya.nix b/home/mail/himalaya/default.nix similarity index 100% rename from home/mail/himalaya.nix rename to home/mail/himalaya/default.nix diff --git a/home/mail/msmtp.nix b/home/mail/msmtp/default.nix similarity index 100% rename from home/mail/msmtp.nix rename to home/mail/msmtp/default.nix From acc23ab684d8219e15a203af75b4dc13031e4444 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:29:07 +0200 Subject: [PATCH 0338/1588] home: wm: put modules into folders --- home/wm/default.nix | 10 +++++----- home/wm/{dunst.nix => dunst/default.nix} | 0 home/wm/{i3.nix => i3/default.nix} | 0 home/wm/{i3bar.nix => i3bar/default.nix} | 0 home/wm/{rofi.nix => rofi/default.nix} | 0 home/wm/{screen-lock.nix => screen-lock/default.nix} | 0 6 files changed, 5 insertions(+), 5 deletions(-) rename home/wm/{dunst.nix => dunst/default.nix} (100%) rename home/wm/{i3.nix => i3/default.nix} (100%) rename home/wm/{i3bar.nix => i3bar/default.nix} (100%) rename home/wm/{rofi.nix => rofi/default.nix} (100%) rename home/wm/{screen-lock.nix => screen-lock/default.nix} (100%) diff --git a/home/wm/default.nix b/home/wm/default.nix index 2547a4e..eae9f14 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -10,11 +10,11 @@ let in { imports = [ - ./dunst.nix - ./i3.nix - ./i3bar.nix - ./rofi.nix - ./screen-lock.nix + ./dunst + ./i3 + ./i3bar + ./rofi + ./screen-lock ]; options.my.home.wm = with lib; { diff --git a/home/wm/dunst.nix b/home/wm/dunst/default.nix similarity index 100% rename from home/wm/dunst.nix rename to home/wm/dunst/default.nix diff --git a/home/wm/i3.nix b/home/wm/i3/default.nix similarity index 100% rename from home/wm/i3.nix rename to home/wm/i3/default.nix diff --git a/home/wm/i3bar.nix b/home/wm/i3bar/default.nix similarity index 100% rename from home/wm/i3bar.nix rename to home/wm/i3bar/default.nix diff --git a/home/wm/rofi.nix b/home/wm/rofi/default.nix similarity index 100% rename from home/wm/rofi.nix rename to home/wm/rofi/default.nix diff --git a/home/wm/screen-lock.nix b/home/wm/screen-lock/default.nix similarity index 100% rename from home/wm/screen-lock.nix rename to home/wm/screen-lock/default.nix From b90629fdd9dfaeb335e586b27b9f462aefbd1c99 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:29:30 +0200 Subject: [PATCH 0339/1588] home: x: put modules into folders --- home/x/{cursor.nix => cursor/default.nix} | 0 home/x/default.nix | 4 ++-- home/x/{keyboard.nix => keyboard/default.nix} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename home/x/{cursor.nix => cursor/default.nix} (100%) rename home/x/{keyboard.nix => keyboard/default.nix} (100%) diff --git a/home/x/cursor.nix b/home/x/cursor/default.nix similarity index 100% rename from home/x/cursor.nix rename to home/x/cursor/default.nix diff --git a/home/x/default.nix b/home/x/default.nix index a2820ba..ac66a50 100644 --- a/home/x/default.nix +++ b/home/x/default.nix @@ -4,8 +4,8 @@ let in { imports = [ - ./cursor.nix - ./keyboard.nix + ./cursor + ./keyboard ]; options.my.home.x = with lib; { diff --git a/home/x/keyboard.nix b/home/x/keyboard/default.nix similarity index 100% rename from home/x/keyboard.nix rename to home/x/keyboard/default.nix From 5b0e0bcbc20b092d74037c3d98ea7bdd3f196e70 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:29:48 +0200 Subject: [PATCH 0340/1588] home: terminal: put modules into folders --- home/terminal/default.nix | 2 +- home/terminal/{termite.nix => termite/default.nix} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename home/terminal/{termite.nix => termite/default.nix} (100%) diff --git a/home/terminal/default.nix b/home/terminal/default.nix index 5d32556..68ff44e 100644 --- a/home/terminal/default.nix +++ b/home/terminal/default.nix @@ -10,7 +10,7 @@ let in { imports = [ - ./termite.nix + ./termite ]; options.my.home = with lib; { diff --git a/home/terminal/termite.nix b/home/terminal/termite/default.nix similarity index 100% rename from home/terminal/termite.nix rename to home/terminal/termite/default.nix From dc5a44ce82ae51e04e77fc7bc4bf73cbf933cff2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 15:28:10 +0200 Subject: [PATCH 0341/1588] home: put modules into folders --- home/{bat.nix => bat/default.nix} | 0 home/{bluetooth.nix => bluetooth/default.nix} | 0 home/{comma.nix => comma/default.nix} | 0 home/default.nix | 46 +++++++++---------- home/{direnv.nix => direnv/default.nix} | 0 .../default.nix} | 0 home/{feh.nix => feh/default.nix} | 0 home/{flameshot.nix => flameshot/default.nix} | 0 home/{gammastep.nix => gammastep/default.nix} | 0 home/{gpg.nix => gpg/default.nix} | 0 home/{gtk.nix => gtk/default.nix} | 0 home/{htop.nix => htop/default.nix} | 0 home/{jq.nix => jq/default.nix} | 0 home/{mpv.nix => mpv/default.nix} | 0 home/{nix-index.nix => nix-index/default.nix} | 0 home/{nm-applet.nix => nm-applet/default.nix} | 0 home/{packages.nix => packages/default.nix} | 0 home/{pager.nix => pager/default.nix} | 0 .../default.nix} | 0 home/{ssh.nix => ssh/default.nix} | 0 home/{tmux.nix => tmux/default.nix} | 0 home/{udiskie.nix => udiskie/default.nix} | 0 home/{xdg.nix => xdg/default.nix} | 0 home/{zathura.nix => zathura/default.nix} | 0 24 files changed, 23 insertions(+), 23 deletions(-) rename home/{bat.nix => bat/default.nix} (100%) rename home/{bluetooth.nix => bluetooth/default.nix} (100%) rename home/{comma.nix => comma/default.nix} (100%) rename home/{direnv.nix => direnv/default.nix} (100%) rename home/{documentation.nix => documentation/default.nix} (100%) rename home/{feh.nix => feh/default.nix} (100%) rename home/{flameshot.nix => flameshot/default.nix} (100%) rename home/{gammastep.nix => gammastep/default.nix} (100%) rename home/{gpg.nix => gpg/default.nix} (100%) rename home/{gtk.nix => gtk/default.nix} (100%) rename home/{htop.nix => htop/default.nix} (100%) rename home/{jq.nix => jq/default.nix} (100%) rename home/{mpv.nix => mpv/default.nix} (100%) rename home/{nix-index.nix => nix-index/default.nix} (100%) rename home/{nm-applet.nix => nm-applet/default.nix} (100%) rename home/{packages.nix => packages/default.nix} (100%) rename home/{pager.nix => pager/default.nix} (100%) rename home/{power-alert.nix => power-alert/default.nix} (100%) rename home/{ssh.nix => ssh/default.nix} (100%) rename home/{tmux.nix => tmux/default.nix} (100%) rename home/{udiskie.nix => udiskie/default.nix} (100%) rename home/{xdg.nix => xdg/default.nix} (100%) rename home/{zathura.nix => zathura/default.nix} (100%) diff --git a/home/bat.nix b/home/bat/default.nix similarity index 100% rename from home/bat.nix rename to home/bat/default.nix diff --git a/home/bluetooth.nix b/home/bluetooth/default.nix similarity index 100% rename from home/bluetooth.nix rename to home/bluetooth/default.nix diff --git a/home/comma.nix b/home/comma/default.nix similarity index 100% rename from home/comma.nix rename to home/comma/default.nix diff --git a/home/default.nix b/home/default.nix index fee7a8b..e68c53b 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,37 +1,37 @@ { ... }: { imports = [ - ./bat.nix - ./bluetooth.nix - ./comma.nix - ./direnv.nix - ./documentation.nix - ./feh.nix + ./bat + ./bluetooth + ./comma + ./direnv + ./documentation + ./feh ./firefox - ./flameshot.nix - ./gammastep.nix + ./flameshot + ./gammastep ./gdb ./git - ./gpg.nix - ./gtk.nix - ./htop.nix - ./jq.nix + ./gpg + ./gtk + ./htop + ./jq ./mail - ./mpv.nix - ./nix-index.nix - ./nm-applet.nix - ./packages.nix - ./pager.nix - ./power-alert.nix - ./ssh.nix + ./mpv + ./nix-index + ./nm-applet + ./packages + ./pager + ./power-alert + ./ssh ./terminal - ./tmux.nix - ./udiskie.nix + ./tmux + ./udiskie ./vim ./wm ./x - ./xdg.nix - ./zathura.nix + ./xdg + ./zathura ./zsh ]; diff --git a/home/direnv.nix b/home/direnv/default.nix similarity index 100% rename from home/direnv.nix rename to home/direnv/default.nix diff --git a/home/documentation.nix b/home/documentation/default.nix similarity index 100% rename from home/documentation.nix rename to home/documentation/default.nix diff --git a/home/feh.nix b/home/feh/default.nix similarity index 100% rename from home/feh.nix rename to home/feh/default.nix diff --git a/home/flameshot.nix b/home/flameshot/default.nix similarity index 100% rename from home/flameshot.nix rename to home/flameshot/default.nix diff --git a/home/gammastep.nix b/home/gammastep/default.nix similarity index 100% rename from home/gammastep.nix rename to home/gammastep/default.nix diff --git a/home/gpg.nix b/home/gpg/default.nix similarity index 100% rename from home/gpg.nix rename to home/gpg/default.nix diff --git a/home/gtk.nix b/home/gtk/default.nix similarity index 100% rename from home/gtk.nix rename to home/gtk/default.nix diff --git a/home/htop.nix b/home/htop/default.nix similarity index 100% rename from home/htop.nix rename to home/htop/default.nix diff --git a/home/jq.nix b/home/jq/default.nix similarity index 100% rename from home/jq.nix rename to home/jq/default.nix diff --git a/home/mpv.nix b/home/mpv/default.nix similarity index 100% rename from home/mpv.nix rename to home/mpv/default.nix diff --git a/home/nix-index.nix b/home/nix-index/default.nix similarity index 100% rename from home/nix-index.nix rename to home/nix-index/default.nix diff --git a/home/nm-applet.nix b/home/nm-applet/default.nix similarity index 100% rename from home/nm-applet.nix rename to home/nm-applet/default.nix diff --git a/home/packages.nix b/home/packages/default.nix similarity index 100% rename from home/packages.nix rename to home/packages/default.nix diff --git a/home/pager.nix b/home/pager/default.nix similarity index 100% rename from home/pager.nix rename to home/pager/default.nix diff --git a/home/power-alert.nix b/home/power-alert/default.nix similarity index 100% rename from home/power-alert.nix rename to home/power-alert/default.nix diff --git a/home/ssh.nix b/home/ssh/default.nix similarity index 100% rename from home/ssh.nix rename to home/ssh/default.nix diff --git a/home/tmux.nix b/home/tmux/default.nix similarity index 100% rename from home/tmux.nix rename to home/tmux/default.nix diff --git a/home/udiskie.nix b/home/udiskie/default.nix similarity index 100% rename from home/udiskie.nix rename to home/udiskie/default.nix diff --git a/home/xdg.nix b/home/xdg/default.nix similarity index 100% rename from home/xdg.nix rename to home/xdg/default.nix diff --git a/home/zathura.nix b/home/zathura/default.nix similarity index 100% rename from home/zathura.nix rename to home/zathura/default.nix From c7766afe90675ad7ecabd9bba9214633e3e46d4f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 13:41:43 +0200 Subject: [PATCH 0342/1588] modules: services: nginx: allow sso secret files This is in preparation of the migration to agenix, which does not allow access to the secrets at build time. --- machines/porthos/services.nix | 16 ++++++++ modules/services/nginx/default.nix | 61 +++++++++++++++++++++++++++--- 2 files changed, 71 insertions(+), 6 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 824265c..02ae69e 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -109,6 +109,22 @@ in acme = { credentialsFile = builtins.toFile "gandi-key.env" my.secrets.acme.key; }; + sso = { + authKeyFile = secrets."sso/auth-key".path; + users = { + ambroisie = { + passwordHashFile = builtins.toFile + "ambroisie-sso-pass.txt" + my.secrets.sso.ambroisie.passwordHash; + totpSecretFile = builtins.toFile + "ambroisie-sso-totp.txt" + my.secrets.sso.ambroisie.totpSecret; + }; + }; + groups = { + root = [ "ambroisie" ]; + }; + }; }; paperless = { enable = true; diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index bb773c9..d5d8b31 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -1,5 +1,5 @@ # A simple abstraction layer for almost all of my services' needs -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, utils, ... }: let cfg = config.my.services.nginx; @@ -105,6 +105,14 @@ in }; sso = { + authKeyFile = mkOption { + type = types.str; + example = "/var/lib/nginx-sso/auth-key.txt"; + description = '' + Path to the auth key. + ''; + }; + subdomain = mkOption { type = types.str; default = "login"; @@ -118,6 +126,43 @@ in example = 8080; description = "Port to use for internal webui."; }; + + users = mkOption { + type = types.attrsOf (types.submodule { + options = { + passwordHashFile = mkOption { + type = types.str; + example = "/var/lib/nginx-sso/alice/password-hash.txt"; + description = "Path to file containing the user's password hash."; + }; + totpSecretFile = mkOption { + type = types.str; + example = "/var/lib/nginx-sso/alice/totp-secret.txt"; + description = "Path to file containing the user's TOTP secret."; + }; + }; + }); + example = litteralExample '' + { + alice = { + passwordHashFile = "/var/lib/nginx-sso/alice/password-hash.txt"; + totpSecretFile = "/var/lib/nginx-sso/alice/totp-secret.txt"; + }; + } + ''; + description = "Definition of users"; + }; + + groups = mkOption { + type = with types; attrsOf (listOf str); + example = litteralExample '' + { + root = [ "alice" ]; + users = [ "alice" "bob" ]; + } + ''; + description = "Groups of users"; + }; }; }; @@ -278,7 +323,9 @@ in cookie = { domain = ".${config.networking.domain}"; secure = true; - authentication_key = config.my.secrets.sso.auth_key; + authentication_key = { + _secret = cfg.sso.authKeyFile; + }; }; login = { @@ -293,19 +340,21 @@ in providers = { simple = let - applyUsers = lib.flip lib.mapAttrs config.my.secrets.sso.users; + applyUsers = lib.flip lib.mapAttrs cfg.sso.users; in { - users = applyUsers (_: v: v.passwordHash); + users = applyUsers (_: v: { _secret = v.passwordHashFile; }); mfa = applyUsers (_: v: [{ provider = "totp"; attributes = { - secret = v.totpSecret; + secret = { + _secret = v.totpSecretFile; + }; }; }]); - inherit (config.my.secrets.sso) groups; + inherit (cfg.sso) groups; }; }; From 7257f3156e2b7bafa906176571b4e370ae28a743 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 12:49:08 +0200 Subject: [PATCH 0343/1588] machines: porthos: services: switch to agenix The prep-work should be done now, time to hit the switch. --- machines/porthos/default.nix | 1 + machines/porthos/secrets.nix | 8 ++++ machines/porthos/services.nix | 75 ++++++++--------------------------- 3 files changed, 26 insertions(+), 58 deletions(-) create mode 100644 machines/porthos/secrets.nix diff --git a/machines/porthos/default.nix b/machines/porthos/default.nix index abfc01a..eb9f207 100644 --- a/machines/porthos/default.nix +++ b/machines/porthos/default.nix @@ -6,6 +6,7 @@ ./boot.nix ./hardware.nix ./networking.nix + ./secrets.nix ./services.nix ./users.nix ]; diff --git a/machines/porthos/secrets.nix b/machines/porthos/secrets.nix new file mode 100644 index 0000000..d89a917 --- /dev/null +++ b/machines/porthos/secrets.nix @@ -0,0 +1,8 @@ +# Secrets configuration +{ ... }: +{ + config.age.secrets = { + # Must be readable by the service + "nextcloud/password".owner = "nextcloud"; + }; +} diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 02ae69e..b03977d 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -1,7 +1,7 @@ # Deployed services { config, ... }: let - my = config.my; + secrets = config.age.secrets; in { # List services that you want to enable: @@ -19,11 +19,8 @@ in OnActiveSec = "6h"; OnUnitActiveSec = "6h"; }; - # Insecure, I don't care. - passwordFile = - builtins.toFile "password.txt" my.secrets.backup.password; - credentialsFile = - builtins.toFile "creds.env" my.secrets.backup.credentials; + passwordFile = secrets."backup/password".path; + credentialsFile = secrets."backup/credentials".path; }; # My blog and related hosts blog.enable = true; @@ -34,11 +31,8 @@ in drone = { enable = true; runners = [ "docker" "exec" ]; - # Insecure, I don't care. - secretFile = - builtins.toFile "gitea.env" my.secrets.drone.gitea; - sharedSecretFile = - builtins.toFile "rpc.env" my.secrets.drone.secret; + secretFile = secrets."drone/gitea".path; + sharedSecretFile = secrets."drone/secret".path; }; # Flood UI for transmission flood = { @@ -56,41 +50,24 @@ in # Gitea mirrorig service lohr = { enable = true; - sharedSecretFile = - let - content = "LOHR_SECRET=${my.secrets.lohr.secret}"; - in - builtins.toFile "lohr-secret.env" content; + sharedSecretFile = secrets."lohr/secret".path; }; # Matrix backend and Element chat front-end matrix = { enable = true; - mailConfigFile = builtins.toFile "matrix-mail.yaml" '' - email: - smtp_host: "smtp.migadu.com" - smtp_port: 587 - smtp_user: "${my.secrets.matrix.mail.username}" - smtp_pass: "${my.secrets.matrix.mail.password}" - notif_from: "${my.secrets.matrix.mail.notifFrom}" - # Refuse to connect unless the server supports STARTTLS. - require_transport_security: true - ''; + mailConfigFile = secrets."matrix/mail".path; # Only necessary when doing the initial registration # secret = "change-me"; }; miniflux = { enable = true; - credentialsFiles = builtins.toFile "miniflux-creds.txt" '' - ADMIN_USERNAME=Ambroisie - ADMIN_PASSWORD=${my.secrets.miniflux.password} - ''; + credentialsFiles = secrets."miniflux/credentials".path; }; # Various monitoring dashboards monitoring = { enable = true; grafana = { - passwordFile = - builtins.toFile "grafana.txt" my.secrets.monitoring.password; # Insecure, I don't care + passwordFile = secrets."monitoring/password".path; }; }; # FLOSS music streaming server @@ -101,24 +78,19 @@ in # Nextcloud self-hosted cloud nextcloud = { enable = true; - passwordFile = - builtins.toFile "nextcloud-pass.txt" my.secrets.nextcloud.password; + passwordFile = secrets."nextcloud/password".path; }; nginx = { enable = true; acme = { - credentialsFile = builtins.toFile "gandi-key.env" my.secrets.acme.key; + credentialsFile = secrets."acme/dns-key".path; }; sso = { authKeyFile = secrets."sso/auth-key".path; users = { ambroisie = { - passwordHashFile = builtins.toFile - "ambroisie-sso-pass.txt" - my.secrets.sso.ambroisie.passwordHash; - totpSecretFile = builtins.toFile - "ambroisie-sso-totp.txt" - my.secrets.sso.ambroisie.totpSecret; + passwordHashFile = secrets."sso/ambroisie/password-hash".path; + totpSecretFile = secrets."sso/ambroisie/totp-secret".path; }; }; groups = { @@ -129,23 +101,15 @@ in paperless = { enable = true; documentPath = "/data/media/paperless"; - # Insecure, I don't care - passwordFile = - builtins.toFile "paperless.env" my.secrets.paperless.password; - secretKeyFile = builtins.toFile "paperless-key.env" '' - PAPERLESS_SECRET_KEY=${my.secrets.paperless.secretKey} - ''; + passwordFile = secrets."paperless/password".path; + secretKeyFile = secrets."paperless/secret-key".path; }; # The whole *arr software suite pirate.enable = true; # Podcast automatic downloader podgrab = { enable = true; - passwordFile = - let - contents = "PASSWORD=${my.secrets.podgrab.password}"; - in - builtins.toFile "podgrab.env" contents; + passwordFile = secrets."podgrab/password".path; port = 9598; }; # Regular backups @@ -161,12 +125,7 @@ in # Torrent client and webui transmission = { enable = true; - credentialsFile = builtins.toFile "transmission-creds.txt" '' - { - "rpc-username": "Ambroisie", - "rpc-password": "${my.secrets.transmission.password}" - } - ''; + credentialsFile = secrets."transmission/credentials".path; }; # Simple, in-kernel VPN wireguard = { From 414c27ee63753d80e9da9e7fff08c79cf00b4053 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 16:01:41 +0200 Subject: [PATCH 0344/1588] modules: services: nginx: sso: use runtime secrets --- modules/services/nginx/default.nix | 4 ++ modules/services/nginx/sso/default.nix | 89 ++++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 modules/services/nginx/sso/default.nix diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index d5d8b31..492f6c8 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -57,6 +57,10 @@ let }; in { + imports = [ + ./sso + ]; + options.my.services.nginx = with lib; { enable = mkEnableOption "Nginx"; diff --git a/modules/services/nginx/sso/default.nix b/modules/services/nginx/sso/default.nix new file mode 100644 index 0000000..987e926 --- /dev/null +++ b/modules/services/nginx/sso/default.nix @@ -0,0 +1,89 @@ +# I must override the module to allow having runtime secrets +{ config, lib, pkgs, utils, ... }: +let + cfg = config.services.nginx.sso; + pkg = lib.getBin cfg.package; + confPath = "/var/lib/nginx-sso/config.json"; +in +{ + disabledModules = [ "services/security/nginx-sso.nix" ]; + + + options.services.nginx.sso = with lib; { + enable = mkEnableOption "nginx-sso service"; + + package = mkOption { + type = types.package; + default = pkgs.nginx-sso; + defaultText = "pkgs.nginx-sso"; + description = '' + The nginx-sso package that should be used. + ''; + }; + + configuration = mkOption { + type = types.attrsOf types.unspecified; + default = { }; + example = literalExample '' + { + listen = { addr = "127.0.0.1"; port = 8080; }; + + providers.token.tokens = { + myuser = "MyToken"; + }; + + acl = { + rule_sets = [ + { + rules = [ { field = "x-application"; equals = "MyApp"; } ]; + allow = [ "myuser" ]; + } + ]; + }; + } + ''; + description = '' + nginx-sso configuration + (documentation) + as a Nix attribute set. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + systemd.services.nginx-sso = { + description = "Nginx SSO Backend"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + StateDirectory = "nginx-sso"; + WorkingDirectory = "/var/lib/nginx-sso"; + # The files to be merged might not have the correct permissions + ExecStartPre = ''+${pkgs.writeScript "merge-nginx-sso-config" '' + #!${pkgs.bash}/bin/bash + ${utils.genJqSecretsReplacementSnippet cfg.configuration confPath} + + # Fix permissions + chown nginx-sso:nginx-sso ${confPath} + chmod 0600 ${confPath} + '' + }''; + ExecStart = lib.mkForce '' + ${pkg}/bin/nginx-sso \ + --config ${confPath} \ + --frontend-dir ${pkg}/share/frontend + ''; + Restart = "always"; + User = "nginx-sso"; + Group = "nginx-sso"; + }; + }; + + users.users.nginx-sso = { + isSystemUser = true; + group = "nginx-sso"; + }; + + users.groups.nginx-sso = { }; + }; +} From e64fdcf38be46371f9205a5e47063118d7e617bd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 16:36:57 +0200 Subject: [PATCH 0345/1588] secrets: remove git-crypt secrets --- secrets/.gitattributes | 5 -- secrets/acme/key.env | Bin 63 -> 0 bytes secrets/backup/credentials.env | Bin 109 -> 0 bytes secrets/backup/password.txt | Bin 33 -> 0 bytes secrets/canary | Bin 32 -> 0 bytes secrets/default.nix | 75 +----------------------- secrets/drone/gitea.env | Bin 196 -> 0 bytes secrets/drone/secret.env | Bin 72 -> 0 bytes secrets/drone/ssh/key | Bin 3403 -> 0 bytes secrets/lohr/secret.txt | Bin 55 -> 0 bytes secrets/matrix/mail.nix | Bin 179 -> 0 bytes secrets/matrix/secret.txt | Bin 55 -> 0 bytes secrets/miniflux/password.txt | Bin 55 -> 0 bytes secrets/monitoring/password.txt | Bin 55 -> 0 bytes secrets/nextcloud/password.txt | Bin 55 -> 0 bytes secrets/paperless/password.txt | Bin 55 -> 0 bytes secrets/paperless/secretKey.txt | Bin 87 -> 0 bytes secrets/podgrab/password.txt | Bin 55 -> 0 bytes secrets/sso/.gitattributes | 1 - secrets/sso/ambroisie/password-hash.txt | Bin 83 -> 0 bytes secrets/sso/ambroisie/totp-secret.txt | Bin 75 -> 0 bytes secrets/sso/auth-key.txt | Bin 151 -> 0 bytes secrets/transmission/password.txt | Bin 55 -> 0 bytes secrets/users/ambroisie/password.txt | Bin 124 -> 0 bytes secrets/users/root/password.txt | Bin 126 -> 0 bytes secrets/wireguard/.gitattributes | 2 - secrets/wireguard/aramis/public.key | Bin 67 -> 0 bytes secrets/wireguard/aramis/secret.key | Bin 67 -> 0 bytes secrets/wireguard/porthos/public.key | Bin 67 -> 0 bytes secrets/wireguard/porthos/secret.key | Bin 67 -> 0 bytes secrets/wireguard/richelieu/public.key | Bin 67 -> 0 bytes secrets/wireguard/richelieu/secret.key | Bin 67 -> 0 bytes 32 files changed, 1 insertion(+), 82 deletions(-) delete mode 100644 secrets/.gitattributes delete mode 100644 secrets/acme/key.env delete mode 100644 secrets/backup/credentials.env delete mode 100644 secrets/backup/password.txt delete mode 100644 secrets/canary delete mode 100644 secrets/drone/gitea.env delete mode 100644 secrets/drone/secret.env delete mode 100644 secrets/drone/ssh/key delete mode 100644 secrets/lohr/secret.txt delete mode 100644 secrets/matrix/mail.nix delete mode 100644 secrets/matrix/secret.txt delete mode 100644 secrets/miniflux/password.txt delete mode 100644 secrets/monitoring/password.txt delete mode 100644 secrets/nextcloud/password.txt delete mode 100644 secrets/paperless/password.txt delete mode 100644 secrets/paperless/secretKey.txt delete mode 100644 secrets/podgrab/password.txt delete mode 100644 secrets/sso/.gitattributes delete mode 100644 secrets/sso/ambroisie/password-hash.txt delete mode 100644 secrets/sso/ambroisie/totp-secret.txt delete mode 100644 secrets/sso/auth-key.txt delete mode 100644 secrets/transmission/password.txt delete mode 100644 secrets/users/ambroisie/password.txt delete mode 100644 secrets/users/root/password.txt delete mode 100644 secrets/wireguard/.gitattributes delete mode 100644 secrets/wireguard/aramis/public.key delete mode 100644 secrets/wireguard/aramis/secret.key delete mode 100644 secrets/wireguard/porthos/public.key delete mode 100644 secrets/wireguard/porthos/secret.key delete mode 100644 secrets/wireguard/richelieu/public.key delete mode 100644 secrets/wireguard/richelieu/secret.key diff --git a/secrets/.gitattributes b/secrets/.gitattributes deleted file mode 100644 index 7ca9979..0000000 --- a/secrets/.gitattributes +++ /dev/null @@ -1,5 +0,0 @@ -* filter=git-crypt diff=git-crypt -.gitattributes !filter !diff -/default.nix !filter !diff -/secrets.nix !filter !diff -*.age !filter !diff diff --git a/secrets/acme/key.env b/secrets/acme/key.env deleted file mode 100644 index 061d6c1a28d951665652cbe732117438e6b119c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63 zcmZQ@_Y83kiVO&0xVd9yV${FzDQ{;KmOlT)uz$AC{5KB9rVe@&cmy+kzP=x`uzAC; V_Dx?CzU<+guivWD(#)MW1pul+9+vAet7ydcx8*P}H&~@d__b(x5(v3ZoFLX1tMBkcRJC!pssnh?_^}Dh2 SQi@g|e|l$T)su|!OC13C4LULa diff --git a/secrets/backup/password.txt b/secrets/backup/password.txt deleted file mode 100644 index a8f640cfd4cfb5b37e92b6aa640c4a80dea6f76d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33 pcmZQ@_Y83kiVO&0xb!;d=#D1+9gjCI*6pgR-?nYZ4T%TkkpS_J5ElRd diff --git a/secrets/canary b/secrets/canary deleted file mode 100644 index e910ea3aafe746337b1ea57a9ff37d62d58d350f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 ocmZQ@_Y83kiVO&0c*b>ed6DJsmgBoNPv87j#HqYCqGs6~0N0cb+yDRo diff --git a/secrets/default.nix b/secrets/default.nix index ed7cae5..3d13588 100644 --- a/secrets/default.nix +++ b/secrets/default.nix @@ -1,35 +1,11 @@ { inputs, lib, options, ... }: with lib; -let - throwOnCanary = - let - canaryHash = builtins.hashFile "sha256" ./canary; - expectedHash = - "9df8c065663197b5a1095122d48e140d3677d860343256abd5ab6e4fb4c696ab"; - in - if canaryHash != expectedHash - then throw "Secrets are not readable. Have you run `git-crypt unlock`?" - else id; -in -throwOnCanary { +{ imports = [ inputs.agenix.nixosModules.age ]; - options.my.secrets = mkOption { - type = - let - valueType = with types; oneOf [ - int - str - (attrsOf valueType) - (listOf valueType) - ]; - in - valueType; - }; - config.age = { secrets = let @@ -48,53 +24,4 @@ throwOnCanary { "/home/ambroisie/.ssh/id_ed25519" ]; }; - - config.my.secrets = { - acme.key = fileContents ./acme/key.env; - - backup = { - password = fileContents ./backup/password.txt; - credentials = readFile ./backup/credentials.env; - }; - - drone = { - gitea = readFile ./drone/gitea.env; - secret = readFile ./drone/secret.env; - ssh = { - publicKey = readFile ./drone/ssh/key.pub; - privateKey = readFile ./drone/ssh/key; - }; - }; - - lohr.secret = fileContents ./lohr/secret.txt; - - matrix = { - mail = import ./matrix/mail.nix; - secret = fileContents ./matrix/secret.txt; - }; - - miniflux.password = fileContents ./miniflux/password.txt; - - monitoring.password = fileContents ./monitoring/password.txt; - - nextcloud.password = fileContents ./nextcloud/password.txt; - - paperless = { - password = fileContents ./paperless/password.txt; - secretKey = fileContents ./paperless/secretKey.txt; - }; - - podgrab.password = fileContents ./podgrab/password.txt; - - sso = import ./sso { inherit lib; }; - - transmission.password = fileContents ./transmission/password.txt; - - users = { - ambroisie.hashedPassword = fileContents ./users/ambroisie/password.txt; - root.hashedPassword = fileContents ./users/root/password.txt; - }; - - wireguard = import ./wireguard { inherit lib; }; - }; } diff --git a/secrets/drone/gitea.env b/secrets/drone/gitea.env deleted file mode 100644 index 82b190c91a7f090594286b2f85ee047bc4833ff9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196 zcmZQ@_Y83kiVO&0U=mz@$Jtpat?kFFUvJ;8zULq(B3Kv^d`*=CsZ1{|SOWRumk+HRopG+%*cm)8r@DyqXkYpThpdNoC!n$>PP;@ypii z|M6niv4=aJ{Hoa<> HHy;83)&pcM diff --git a/secrets/drone/secret.env b/secrets/drone/secret.env deleted file mode 100644 index 647d161341e74453881d47e0435e73c556ea0ca5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72 zcmZQ@_Y83kiVO&0(9O?xEl>R_P+BWg`6S`+mWZlL@$+JtT8>3cw|Zk}rB>C?>!Z)G cGLpZ)r0-z9RZCZf;ELIqIvV~)+HL`-0PedS0ssI2 diff --git a/secrets/drone/ssh/key b/secrets/drone/ssh/key deleted file mode 100644 index 1b70a143467e0ec4b458a5ec2696ae7f5ee66575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3403 zcmZQ@_Y83kiVO&05Z5>+%D=^~X8P7v>p#9y@50-b{aCrN{;$(iP9MIK1FakFByD!u z-I6)J^XUHlOHyY|^zp1W`orD+ar1%JKYjBw&B7n4UD%{%@Z)*dIv$7k1E1eskM2A7 zGxtNp946~$S-(q9|C~H;*`H=l3%kz74f*#pydCznd=?d`{?*d{Tv;Wj=whY zk+V0)`-HzQ5s6(SIP33ixuC;xoPAk3mnJOyF^z5Ux7v~;XDmOqY_E8B_5L-t#J|^` zDg5RST44L+z~7IX{34sabg)W3%izDx$FcjpMDD{WY_*>Jd-hMXD4VY7I>E*uX~p^* zJgtHr1yY|*`XnT&c>jN-(zM8jUvBUAl@~MfWxj{kU){s7Gp8tZmeUL2r$vn+#}6oE z+qEm??lrvq_^@n8P|OVn?Qb4@YFEl$*Q_!A=Djp$Wzpq1!SQqS|L-`Z^`4ElHZH$Z z@Bcxs8zu>pYu-4!x99ZzI-1_m<-FNmanlp`vwnFw(;U~zSp7d(wm$gSL%rm<-Jhfw z|HQ{kR`?_Frl5E|yWEC5K~n{ldfrF2g!m`Ucyja;Y@9a53x578} zY`s5|vA0y+u_(`L<>c!4lmBBEFDU$T()yb6hi9|zM)i8Ne~n1ZUo_QYUVZCdCHKg0 z^Fn|53qG(~bHw{}ZREwfofjvuAFjLAu{BLz=lmRg*|6B9%u9;4#}Y3@wK*Bl;*QJNS|O;-s|P_;9lPDN2kNJA}p9n66zD~?3c9Lku`J0iVbUz zFdwly(7x;ySMlvGA7R1UQVY%*f1DUybnIwS_4P#We3sX`J>45N9)BL(nBZ+Jlo=oq zu-;R?Zt3o)7iEro|Ch9q_uG>r({9)Ku(69cy!~9VW^Imv$E_Qa88$I1E|roEVOxF9 znfKRgLq*F^7hf4|eD#GR{VmHy^yVT(JO)*n_$@k-?>h8N~b}P8&=x5Jp zTal__@~pU${j1ZDRh$>68ZgBW2yYul*qn(UA8+9`i-Y1;Ax9L^xo5L!(dvX@O z{A`oq=P;>#>az$ro~P+jf?I7Y9v0i7 zR}>1d9a$`~zR`c3aCn?i+S0p>%lM_#_&*nGd|br6$Vum%(Hhl~8^^WRa?VNqaB1?^ z7m=n)8zVS7etU@ZrMqua+gty!;gs;9*Nat@{NBCg*pTkCJ^ZZns^s%ICl@4axqVk| z%0Ca$LngnX?`-~e;Fj^^kcS&zUllo9n=ER4%IrwRKE|4M$GX;1?`J`47oN0F<4=!1 znK_gDZ{_NfpL!;r35pK=zogRSvu~n>vB!pg8*Z36W+aFRxExyeJwR(W*H`f>*FAav zc@8!4`%O=lGq4IacK;>nemU0oWm1aGVe#4v%=-Tq3U7TXzvF?4#sMh}YsN`|l zJeynUsaA3#Pr2b2d+}fGh1QpLJWeultvt#V|9Rzu4cw3SewqA8?fI-trRGH&o=waQ zef@Qp^Oij2ZId&Y-hNr9?7F#Kc+rwGt~w7dzt^A5FI=!@M^g*iLc4;mpYBUV`IIVL z+G5DK%JW{imB`c8);d>1nK^8E_NqTMIP?9>k9u|e)HSM;Dpnmn`71Ha(eUW> zwOeK@lqTeP$N&CsoYcEw`*vxA1&SupEf;Eju2iZ$cjo)`Z;gfSx1V>hecWzwSAK%; zc1g~@51iNZXS=*y;qr94lg_p4C&e;W_=qJp+FzJ2da6pF<-na{2K{R>=^L&d77v;o zy(QCe^@8ocOpEW&e4O*KHEBX`^0~d&ExGMoI5d5(pF1ZkbVwooZi<2Zp5KSugBbR* zow(rK=Aco{Q?8=ClI6Z#OgcK%yK9gW~cuMoucb_b72ds6seIa~fX5Es?1vk&1KEE>TMeDX0+fV0h z3^q<%mi_bG+{2Y8Pkm9zR%p=Ip$MDH&VN-C%D`VQh#!aee8e4F|bDZ%J#7_-T?J&ido>l?o^8 znc`I+>I6bN-?TqTz5S=hc7p5EYiqR=v_&fqy|uSbN|iE7lIJeE<-_-4sn40~+n(*d zW~h6&Yt@sN?I#Q7wS0QB@WsSy`PthKee{1<=@@qAOIsq#qL)=wE8i}u+?7^TR>8OM zkD|Eahx4Dr+m2YgYSp&f_V$+P_q8jXrZqJGNKfW)H-5Kt?a2pTA15E4A>}x>P zu~|*i`n4bT)Sgk>taETm(}$$jOL!*lRm|wWAZ4^ZVg3r=i*Mbn+JdFO{I$+F@Xz$a z)(H%oAM7|U@ixZY_2@LW*55&4NgF?j9^_jRxPJ4;9YJ4ihB5kU@}_Q`XWen$(!F!L zmWkl`E4OiZ0D#x%m4S=BT7d) z_sP8UYdIIRPU`I3f5_cog<#(22EkCb3BmqtvLAX4_UxNnw!nH;(i4B(^;4FoY4vF3 z?UB;bI@q#amf>#G{q}uJ9e*@TNUh{BN|kLZmbz2_|7(?*>&v)=W0`X~7pvOKW-nVX zL!?@_$~;lrN28!~)vT8{9x(lPtdx)t=_>LT*FWXM6dTDlf91k&S8xCMuAjeVnN*sb z7Tf3NQi{eN+y`yE0z6t2^scP^QGKRz(Y6IMPR!>I@|m-@C{SMFz8U95-(`^(ISw5- z+8R)v)94jbk>2{ynz1tQJx9p8`LEYie4lNR&2{TY_X(LDc`x`igcq9T7FrZr*Z6+v zKD6szo^tEQ{eO~fteTp>+R*Z4tVivk$=^$pY#63`n*}BX z9(tOxWm0F+{Etfx-jC?k+U4`|^pbZ`mlrkKPxjuTnX{VX>oxstA-^Y2k-NU1!TZm~ zWA;uH&;8vqt%^;2zFAHg-^{1l(cYffGVV_u_-|=k_;%{oyT#rD*DTDZ$dzh;e5Vv? zXvS@H;L^=!D>iQGuJGSsDp>QLb!|)frLse7%Vyj;z~oq7p|SW+vctkkiyf~`|LUB4 z$G#!3%kOOV>R+4Z*k_5&-08d^QT~ieK+4muvST(LYj`e%Jv2%@{_x}eX04TT_b4-+ zSg}GU`hmaq;$>@gNys}r(r|sgX^vvs+L%clw-r`uYyK^oX3lxLxb$1famGZ|e@C6S z_MMmQU%%%vQ~4A}73PWOjMWzH?~DFfc>YyzBkTHmE1IY4-u84zS$*uh<2=_35APZs z(0`eII{Au8+SKzeBOV@}xO|Jw`Ex5S@JMAY-Vj|`960BLb%JHq!)cI5#|yo5nVAxn;wxZGsWEo>u98xW=`A^{ltbk=uEq O{Z?3fzU_0us}=yIE4YsU diff --git a/secrets/lohr/secret.txt b/secrets/lohr/secret.txt deleted file mode 100644 index cbc3a26bff029c14b36638ae38659c561efb0c4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZQ@_Y83kiVO&0h-8%c^FrB5!CitUIcMt$jj9hyH?r4qN<=Y~SIm*@$o>+4RQu8Q MU5}3x=|)=s03GQTY5)KL diff --git a/secrets/matrix/mail.nix b/secrets/matrix/mail.nix deleted file mode 100644 index 333f8b2aa31ee5f82ae1072b0e2a84aa5616fa8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179 zcmZQ@_Y83kiVO&0I4;eqE+@4AA3HVOMDeN{!Z|d n#GV7DtZVFx{B+-mDm+|J%xRa+_eA}PzUP8@2Y*;ipSv6Y(gjlV diff --git a/secrets/matrix/secret.txt b/secrets/matrix/secret.txt deleted file mode 100644 index ce6473097f692e7cf3cdfb3e2ae76ccdf5f5c5ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZQ@_Y83kiVO&0Sfp%z|AL>C>6~W^9!R-(Exebr{*L>v6G@rp&m}jqbsgrMeaOuu M!f>aYK*yCx0E*xki~s-t diff --git a/secrets/miniflux/password.txt b/secrets/miniflux/password.txt deleted file mode 100644 index 482d1b77424776545ed2c59d4bdea45581ec306c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZQ@_Y83kiVO&0csGs3v0~}%g*hS9+4VJ~o}T?((RynE_s7JgE?cB8iELc;*}>NR MRFQdJC&Ru+0Drs~;{X5v diff --git a/secrets/monitoring/password.txt b/secrets/monitoring/password.txt deleted file mode 100644 index 98d0972e616531b77412a557d98029f6ea66be2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZQ@_Y83kiVO&0@VY)J{Oq~qYyOw9U0L+}U)G-V!(1%aUEiOtv=frPWyTazJax)0 M!|Yt0AB?dt^fc4 diff --git a/secrets/paperless/password.txt b/secrets/paperless/password.txt deleted file mode 100644 index 5e2cb81f855fcb4517cbd1f6ee8adb9b268574d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55 zcmZQ@_Y83kiVO&0h}b1>v7hDrDYtK@-)r)9asBQ8<#yiZbkUJ{rUh=_Qtl^Z%YD0h M|F4v7G20q90H7)wBLDyZ diff --git a/secrets/paperless/secretKey.txt b/secrets/paperless/secretKey.txt deleted file mode 100644 index fe31bc4999a48ec5a37340217454c558fb360041..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87 zcmZQ@_Y83kiVO&0aMfD6P4Vn^t+S8fUVr}knLjkQEB_u(4g2krpWZXcc{O)w*)nk% uAJlsim9ukkx0d^(%CL)WXE$4}Ge{|3wBYH_w>oG33$$Hh@HDCReE#Dbp^FJF0%WZi5(NorN i<1gKBc5fmS{Zf}WC!ew0x#iu_PsJhsGUM*QHvs@n^Cr>& diff --git a/secrets/sso/auth-key.txt b/secrets/sso/auth-key.txt deleted file mode 100644 index 785d8d0f92f43a3dfa95dd856655a33beb176a20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 151 zcmZQ@_Y83kiVO&0nETx9_6DP~zyD=$CBJ*{*f)!L&+Ibw1DiideehSh?)j`t_{(+y zj-I5Cmpfc$+Hih6!SwOhso#28?=MU_y3JRsek->ekDE^5%y%cI+x#ec)g)SSRLEn6 zC#%?Rw?`HVdLDb{h|YH07_FA4FCWD diff --git a/secrets/users/ambroisie/password.txt b/secrets/users/ambroisie/password.txt deleted file mode 100644 index 65fbdfb1aae3c1e3179762bdc36d446ba6787933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmZQ@_Y83kiVO&0xYt;D%JGO7;|6XRuzx9$);cR5>zLz{9iI1o7^HrBJm-EGk za^~GQ@OR#{jc*kf-Q2((^W)2#uJ1<ptF`~UH j<{~{62~$6~PFZ8E+A_7vG-{2@rP_|ybA>{u)u{jglX*F6 diff --git a/secrets/wireguard/.gitattributes b/secrets/wireguard/.gitattributes deleted file mode 100644 index 714f3f9..0000000 --- a/secrets/wireguard/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -/default.nix filter diff -public-key.txt filter diff diff --git a/secrets/wireguard/aramis/public.key b/secrets/wireguard/aramis/public.key deleted file mode 100644 index 892536e4f0622789432144051f670bbf845863a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZQ@_Y83kiVO&0P?jz9wq{n1nw-vY#A176W#OzihM=4`J+YHn%?#t#M!j%(Y)Lx diff --git a/secrets/wireguard/porthos/public.key b/secrets/wireguard/porthos/public.key deleted file mode 100644 index d89e768ff898ea673775ff0576b9df2d74be3a66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZQ@_Y83kiVO&0VB)^;Pb05ECg#cF4U^u@S5QdUEMFJgxA^d3ghA1RWU8^aMk6y Ze-pRPKezhNCu_szBm4B$+N^r_9RRQ=AMF4D diff --git a/secrets/wireguard/richelieu/public.key b/secrets/wireguard/richelieu/public.key deleted file mode 100644 index 2ad8bbcb12a80a9ff44598fe70522a5439d0f6ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZQ@_Y83kiVO&0m{L_gd58KzX+{1AH%^>ky17@jp{S$m?5gvHyE_)EzU9A~nB(GB Z(j#yrS#Qy~EsLhEpW)iwSS;7O4FKp6ABg|} diff --git a/secrets/wireguard/richelieu/secret.key b/secrets/wireguard/richelieu/secret.key deleted file mode 100644 index 8b351b6530f2a4aa28057c2747451566e6f71401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67 zcmZQ@_Y83kiVO&0c(rfNY!lX{&!Uabu&IWKMuoaGc~@pnv)pVx&B8;$oYQepP(1l-52r+%%l~%M=en)2*v0bz07?uQ_y7O^ From 3d0d19d9a1900fcfb13dcb2aca68f54935b59ec6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 16:37:33 +0200 Subject: [PATCH 0346/1588] secrets: remove git-crypt --- .git-crypt/.gitattributes | 4 ---- .../06B6C818917564FD1014DD342E4F270130BBF854.gpg | Bin 725 -> 0 bytes 2 files changed, 4 deletions(-) delete mode 100644 .git-crypt/.gitattributes delete mode 100644 .git-crypt/keys/default/0/06B6C818917564FD1014DD342E4F270130BBF854.gpg diff --git a/.git-crypt/.gitattributes b/.git-crypt/.gitattributes deleted file mode 100644 index 665b10e..0000000 --- a/.git-crypt/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -# Do not edit this file. To specify the files to encrypt, create your own -# .gitattributes file in the directory where your files are. -* !filter !diff -*.gpg binary diff --git a/.git-crypt/keys/default/0/06B6C818917564FD1014DD342E4F270130BBF854.gpg b/.git-crypt/keys/default/0/06B6C818917564FD1014DD342E4F270130BBF854.gpg deleted file mode 100644 index c941bd55553ec74224c97ae8584a4da5a8473a0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 725 zcmZo=;$hZVpJG*A_*avW|F7u5qRM3#BTfgtdcWl{)6b9GWr?3RJnrWSxuiIoCEF#b z=)A*+1&g_FE8Y3L`?fw~sIza=>lrI-6xle#Vy5j+Px!E9)8qG*W!I0tRQEdC=qk@! zeZw(I+WO>Fv2PW%d&QmoYi37k*%T#gYuma}pWTelA+q+7f#i;y{;kqG=kLh5R@$TS za&f8tT)wKOdt}W%s_4&pq`7Q)Y2U#^53-Ee`6q`hQJmmbF>?mf{RglA*GKctDL5rn zR=c=1-(x@j--YRh%u)}HCK(z!*4i2cy)ZbM^df8_+vLr!_OV=;p|I1VgyTbe)9Xo5 zw;Lu$)V=#}Hf4KO?E}U47CoQWNVsfW$#eSp$;9~|r>|{Gk#I6&TX`%^qbhphM8ldx z+r@&)!$dZUJJ08PB++>&;OgD*#bLK!tA+~o=?d=pk{rD?atD*_q2I|IVPCSQe@x1dXW!ARv%RKy@w<*k4~{hI{=Ave|LwH53p?9 z)62Mkr7`2;+L>Bav*g1cHeOvYPtwT$-s;;@KmI*e$&C7ZWJyV6<)dHM%r?(azu4CM z>-C&_jvpUPn<;hj;j9wH%5#5}{4GI{R? zr^eI1>n&D?8I=3nd~rj&T;TVCGBzMWkyOjZBV0cOS*J3B9AO}XmF zb}nzt{xijME-$n?+Pm%clj4(M|KeYE9xp!|?l9%%vCyqvofZWp*9G?%ZLj>MZ}Mlc z&W}dJs0SWa>MQ&OKm0sr{PUhtYrHkXbir4z*Re0-pUkxTU&N*c>1!3%jo$uAeLK#t z*1WUp)){{@<`2)_x%_#cdi0K%T4CYyB;mlS<^?{IzhnL{3*7AUh>br;aDmFL`B%1I t@f0dLvA<^J9WDRAhjta3zP)uN^{i~`0@K{qp2oe$^|R)AE Date: Sat, 25 Sep 2021 16:38:00 +0200 Subject: [PATCH 0347/1588] flake: remove 'git-crypt' --- flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake.nix b/flake.nix index 84186e0..12d7ca8 100644 --- a/flake.nix +++ b/flake.nix @@ -130,7 +130,6 @@ name = "NixOS-config"; nativeBuildInputs = with pkgs; [ - git-crypt gitAndTools.pre-commit gnupg nixpkgs-fmt From 8eef7c260e7b27ed4b28e97aeed3464911bc5855 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 17:04:42 +0200 Subject: [PATCH 0348/1588] ci: use 'nix flake check' Now that I am using agenix, secrets stays encrypted at rest. --- .drone.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.drone.yml b/.drone.yml index 9c5d85d..b192230 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,9 +4,9 @@ type: exec name: NixOS config check steps: -- name: format check +- name: nix flake check commands: - - nix develop -c nixpkgs-fmt . + - nix flake check - name: notifiy commands: From c32be8ac020c12ccd4de14f05909dce00f4f0dc3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 18:14:01 +0200 Subject: [PATCH 0349/1588] project: bootstrap: retrieve agenix key --- bootstrap.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bootstrap.sh b/bootstrap.sh index 8f97c5e..df41c29 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -58,6 +58,8 @@ get_ssh() { get_doc "SysAdmin/SSH" "shared-key-public" "$HOME/.ssh/shared_rsa.pub" 644 get_doc "SysAdmin/SSH" "shared-key-private" "$HOME/.ssh/shared_rsa" 600 + get_doc "SysAdmin/SSH" "agenix-public" "$HOME/.ssh/id_ed25519.pub" 644 + get_doc "SysAdmin/SSH" "agenix-private" "$HOME/.ssh/id_ed25519" 600 } get_pgp() { From 0b580b61e71fe27e0981cd25939873b8b194b374 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 18:15:40 +0200 Subject: [PATCH 0350/1588] secrets: move into 'modules' --- flake.nix | 2 -- modules/default.nix | 1 + {secrets => modules/secrets}/acme/dns-key.age | 0 {secrets => modules/secrets}/backup/credentials.age | 0 {secrets => modules/secrets}/backup/password.age | 0 {secrets => modules/secrets}/default.nix | 0 {secrets => modules/secrets}/drone/gitea.age | 0 {secrets => modules/secrets}/drone/secret.age | 0 .../secrets}/drone/ssh/private-key.age | Bin {secrets => modules/secrets}/lohr/secret.age | 0 {secrets => modules/secrets}/matrix/mail.age | 0 {secrets => modules/secrets}/matrix/secret.age | 0 .../secrets}/miniflux/credentials.age | Bin .../secrets}/monitoring/password.age | 0 {secrets => modules/secrets}/nextcloud/password.age | Bin {secrets => modules/secrets}/paperless/password.age | 0 .../secrets}/paperless/secret-key.age | 0 {secrets => modules/secrets}/podgrab/password.age | 0 {secrets => modules/secrets}/secrets.nix | 0 .../secrets}/sso/ambroisie/password-hash.age | Bin .../secrets}/sso/ambroisie/totp-secret.age | Bin {secrets => modules/secrets}/sso/auth-key.age | Bin {secrets => modules/secrets}/sso/default.nix | 0 .../secrets}/transmission/credentials.age | 0 .../secrets}/users/ambroisie/hashed-password.age | 0 .../secrets}/users/root/hashed-password.age | Bin .../secrets}/wireguard/aramis/private-key.age | Bin {secrets => modules/secrets}/wireguard/default.nix | 0 .../secrets}/wireguard/porthos/private-key.age | 0 .../secrets}/wireguard/richelieu/private-key.age | 0 30 files changed, 1 insertion(+), 2 deletions(-) rename {secrets => modules/secrets}/acme/dns-key.age (100%) rename {secrets => modules/secrets}/backup/credentials.age (100%) rename {secrets => modules/secrets}/backup/password.age (100%) rename {secrets => modules/secrets}/default.nix (100%) rename {secrets => modules/secrets}/drone/gitea.age (100%) rename {secrets => modules/secrets}/drone/secret.age (100%) rename {secrets => modules/secrets}/drone/ssh/private-key.age (100%) rename {secrets => modules/secrets}/lohr/secret.age (100%) rename {secrets => modules/secrets}/matrix/mail.age (100%) rename {secrets => modules/secrets}/matrix/secret.age (100%) rename {secrets => modules/secrets}/miniflux/credentials.age (100%) rename {secrets => modules/secrets}/monitoring/password.age (100%) rename {secrets => modules/secrets}/nextcloud/password.age (100%) rename {secrets => modules/secrets}/paperless/password.age (100%) rename {secrets => modules/secrets}/paperless/secret-key.age (100%) rename {secrets => modules/secrets}/podgrab/password.age (100%) rename {secrets => modules/secrets}/secrets.nix (100%) rename {secrets => modules/secrets}/sso/ambroisie/password-hash.age (100%) rename {secrets => modules/secrets}/sso/ambroisie/totp-secret.age (100%) rename {secrets => modules/secrets}/sso/auth-key.age (100%) rename {secrets => modules/secrets}/sso/default.nix (100%) rename {secrets => modules/secrets}/transmission/credentials.age (100%) rename {secrets => modules/secrets}/users/ambroisie/hashed-password.age (100%) rename {secrets => modules/secrets}/users/root/hashed-password.age (100%) rename {secrets => modules/secrets}/wireguard/aramis/private-key.age (100%) rename {secrets => modules/secrets}/wireguard/default.nix (100%) rename {secrets => modules/secrets}/wireguard/porthos/private-key.age (100%) rename {secrets => modules/secrets}/wireguard/richelieu/private-key.age (100%) diff --git a/flake.nix b/flake.nix index 12d7ca8..62a3a52 100644 --- a/flake.nix +++ b/flake.nix @@ -85,8 +85,6 @@ ./modules # Include bundles of settings ./profiles - # Include my secrets - ./secrets ]; buildHost = name: system: lib.nixosSystem { diff --git a/modules/default.nix b/modules/default.nix index d9b4ce2..2eaa2e6 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -6,6 +6,7 @@ ./hardware ./home ./programs + ./secrets ./services ./system ]; diff --git a/secrets/acme/dns-key.age b/modules/secrets/acme/dns-key.age similarity index 100% rename from secrets/acme/dns-key.age rename to modules/secrets/acme/dns-key.age diff --git a/secrets/backup/credentials.age b/modules/secrets/backup/credentials.age similarity index 100% rename from secrets/backup/credentials.age rename to modules/secrets/backup/credentials.age diff --git a/secrets/backup/password.age b/modules/secrets/backup/password.age similarity index 100% rename from secrets/backup/password.age rename to modules/secrets/backup/password.age diff --git a/secrets/default.nix b/modules/secrets/default.nix similarity index 100% rename from secrets/default.nix rename to modules/secrets/default.nix diff --git a/secrets/drone/gitea.age b/modules/secrets/drone/gitea.age similarity index 100% rename from secrets/drone/gitea.age rename to modules/secrets/drone/gitea.age diff --git a/secrets/drone/secret.age b/modules/secrets/drone/secret.age similarity index 100% rename from secrets/drone/secret.age rename to modules/secrets/drone/secret.age diff --git a/secrets/drone/ssh/private-key.age b/modules/secrets/drone/ssh/private-key.age similarity index 100% rename from secrets/drone/ssh/private-key.age rename to modules/secrets/drone/ssh/private-key.age diff --git a/secrets/lohr/secret.age b/modules/secrets/lohr/secret.age similarity index 100% rename from secrets/lohr/secret.age rename to modules/secrets/lohr/secret.age diff --git a/secrets/matrix/mail.age b/modules/secrets/matrix/mail.age similarity index 100% rename from secrets/matrix/mail.age rename to modules/secrets/matrix/mail.age diff --git a/secrets/matrix/secret.age b/modules/secrets/matrix/secret.age similarity index 100% rename from secrets/matrix/secret.age rename to modules/secrets/matrix/secret.age diff --git a/secrets/miniflux/credentials.age b/modules/secrets/miniflux/credentials.age similarity index 100% rename from secrets/miniflux/credentials.age rename to modules/secrets/miniflux/credentials.age diff --git a/secrets/monitoring/password.age b/modules/secrets/monitoring/password.age similarity index 100% rename from secrets/monitoring/password.age rename to modules/secrets/monitoring/password.age diff --git a/secrets/nextcloud/password.age b/modules/secrets/nextcloud/password.age similarity index 100% rename from secrets/nextcloud/password.age rename to modules/secrets/nextcloud/password.age diff --git a/secrets/paperless/password.age b/modules/secrets/paperless/password.age similarity index 100% rename from secrets/paperless/password.age rename to modules/secrets/paperless/password.age diff --git a/secrets/paperless/secret-key.age b/modules/secrets/paperless/secret-key.age similarity index 100% rename from secrets/paperless/secret-key.age rename to modules/secrets/paperless/secret-key.age diff --git a/secrets/podgrab/password.age b/modules/secrets/podgrab/password.age similarity index 100% rename from secrets/podgrab/password.age rename to modules/secrets/podgrab/password.age diff --git a/secrets/secrets.nix b/modules/secrets/secrets.nix similarity index 100% rename from secrets/secrets.nix rename to modules/secrets/secrets.nix diff --git a/secrets/sso/ambroisie/password-hash.age b/modules/secrets/sso/ambroisie/password-hash.age similarity index 100% rename from secrets/sso/ambroisie/password-hash.age rename to modules/secrets/sso/ambroisie/password-hash.age diff --git a/secrets/sso/ambroisie/totp-secret.age b/modules/secrets/sso/ambroisie/totp-secret.age similarity index 100% rename from secrets/sso/ambroisie/totp-secret.age rename to modules/secrets/sso/ambroisie/totp-secret.age diff --git a/secrets/sso/auth-key.age b/modules/secrets/sso/auth-key.age similarity index 100% rename from secrets/sso/auth-key.age rename to modules/secrets/sso/auth-key.age diff --git a/secrets/sso/default.nix b/modules/secrets/sso/default.nix similarity index 100% rename from secrets/sso/default.nix rename to modules/secrets/sso/default.nix diff --git a/secrets/transmission/credentials.age b/modules/secrets/transmission/credentials.age similarity index 100% rename from secrets/transmission/credentials.age rename to modules/secrets/transmission/credentials.age diff --git a/secrets/users/ambroisie/hashed-password.age b/modules/secrets/users/ambroisie/hashed-password.age similarity index 100% rename from secrets/users/ambroisie/hashed-password.age rename to modules/secrets/users/ambroisie/hashed-password.age diff --git a/secrets/users/root/hashed-password.age b/modules/secrets/users/root/hashed-password.age similarity index 100% rename from secrets/users/root/hashed-password.age rename to modules/secrets/users/root/hashed-password.age diff --git a/secrets/wireguard/aramis/private-key.age b/modules/secrets/wireguard/aramis/private-key.age similarity index 100% rename from secrets/wireguard/aramis/private-key.age rename to modules/secrets/wireguard/aramis/private-key.age diff --git a/secrets/wireguard/default.nix b/modules/secrets/wireguard/default.nix similarity index 100% rename from secrets/wireguard/default.nix rename to modules/secrets/wireguard/default.nix diff --git a/secrets/wireguard/porthos/private-key.age b/modules/secrets/wireguard/porthos/private-key.age similarity index 100% rename from secrets/wireguard/porthos/private-key.age rename to modules/secrets/wireguard/porthos/private-key.age diff --git a/secrets/wireguard/richelieu/private-key.age b/modules/secrets/wireguard/richelieu/private-key.age similarity index 100% rename from secrets/wireguard/richelieu/private-key.age rename to modules/secrets/wireguard/richelieu/private-key.age From 8968e30e620b5b545532aca3fda5fe7b7ca62173 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Sep 2021 19:01:03 +0200 Subject: [PATCH 0351/1588] modules: secrets: remove 'with lib;' --- modules/secrets/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/secrets/default.nix b/modules/secrets/default.nix index 3d13588..62ed854 100644 --- a/modules/secrets/default.nix +++ b/modules/secrets/default.nix @@ -1,6 +1,5 @@ { inputs, lib, options, ... }: -with lib; { imports = [ inputs.agenix.nixosModules.age @@ -9,12 +8,12 @@ with lib; config.age = { secrets = let - toName = removeSuffix ".age"; + toName = lib.removeSuffix ".age"; toSecret = name: _: { file = ./. + "/${name}"; - owner = mkDefault "root"; + owner = lib.mkDefault "root"; }; - convertSecrets = n: v: nameValuePair (toName n) (toSecret n v); + convertSecrets = n: v: lib.nameValuePair (toName n) (toSecret n v); secrets = import ./secrets.nix; in lib.mapAttrs' convertSecrets secrets; From 5fd82472bf0479e72585f524332123edae48a469 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 26 Sep 2021 19:19:35 +0200 Subject: [PATCH 0352/1588] modules: secrets: add 'owner' logic --- machines/porthos/default.nix | 1 - machines/porthos/secrets.nix | 8 -------- modules/secrets/default.nix | 9 ++++++--- modules/secrets/secrets.nix | 6 +++++- 4 files changed, 11 insertions(+), 13 deletions(-) delete mode 100644 machines/porthos/secrets.nix diff --git a/machines/porthos/default.nix b/machines/porthos/default.nix index eb9f207..abfc01a 100644 --- a/machines/porthos/default.nix +++ b/machines/porthos/default.nix @@ -6,7 +6,6 @@ ./boot.nix ./hardware.nix ./networking.nix - ./secrets.nix ./services.nix ./users.nix ]; diff --git a/machines/porthos/secrets.nix b/machines/porthos/secrets.nix deleted file mode 100644 index d89a917..0000000 --- a/machines/porthos/secrets.nix +++ /dev/null @@ -1,8 +0,0 @@ -# Secrets configuration -{ ... }: -{ - config.age.secrets = { - # Must be readable by the service - "nextcloud/password".owner = "nextcloud"; - }; -} diff --git a/modules/secrets/default.nix b/modules/secrets/default.nix index 62ed854..eb17892 100644 --- a/modules/secrets/default.nix +++ b/modules/secrets/default.nix @@ -1,4 +1,4 @@ -{ inputs, lib, options, ... }: +{ config, inputs, lib, options, ... }: { imports = [ @@ -9,9 +9,12 @@ secrets = let toName = lib.removeSuffix ".age"; - toSecret = name: _: { + userExists = u: builtins.hasAttr u config.users.users; + # Only set the user if it exists, to avoid warnings + userIfExists = u: if userExists u then u else "root"; + toSecret = name: { owner ? "root", ... }: { file = ./. + "/${name}"; - owner = lib.mkDefault "root"; + owner = lib.mkDefault (userIfExists owner); }; convertSecrets = n: v: lib.nameValuePair (toName n) (toSecret n v); secrets = import ./secrets.nix; diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index dcaa6d6..3737509 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -27,7 +27,11 @@ in "monitoring/password.age".publicKeys = all; - "nextcloud/password.age".publicKeys = all; + "nextcloud/password.age" = { + # Must be readable by the service + owner = "nextcloud"; + publicKeys = all; + }; "paperless/password.age".publicKeys = all; "paperless/secret-key.age".publicKeys = all; From b9786398a724d4ae5456096915ce9f002ed5b137 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 26 Sep 2021 22:50:18 +0200 Subject: [PATCH 0353/1588] modules: secrets: fix permission of 'matrix/mail' --- modules/secrets/secrets.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index 3737509..8ee9892 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -20,7 +20,10 @@ in "lohr/secret.age".publicKeys = all; - "matrix/mail.age".publicKeys = all; + "matrix/mail.age" = { + owner = "matrix-synapse"; + publicKeys = all; + }; "matrix/secret.age".publicKeys = all; "miniflux/credentials.age".publicKeys = all; From 55541abd178a05d762862493386e2412987b3735 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 26 Sep 2021 22:51:13 +0200 Subject: [PATCH 0354/1588] modules: secrets: fix permission for grafana --- modules/secrets/secrets.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index 8ee9892..d9196f4 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -28,7 +28,10 @@ in "miniflux/credentials.age".publicKeys = all; - "monitoring/password.age".publicKeys = all; + "monitoring/password.age" = { + owner = "grafana"; + publicKeys = all; + }; "nextcloud/password.age" = { # Must be readable by the service From 88ae4abca0f533b2e9f960c8a65c6ff40520ade3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 27 Sep 2021 17:06:52 +0200 Subject: [PATCH 0355/1588] profiles: gtk: new best practices for dconf --- profiles/gtk/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/profiles/gtk/default.nix b/profiles/gtk/default.nix index 9eebe23..f9fcd5d 100644 --- a/profiles/gtk/default.nix +++ b/profiles/gtk/default.nix @@ -9,9 +9,7 @@ in config = lib.mkIf cfg.enable { # Allow setting GTK configuration using home-manager - services.dbus.packages = with pkgs; [ - gnome3.dconf - ]; + programs.dconf.enable = true; # GTK theme configuration my.home.gtk.enable = true; From 4be248ee227962e2220de0c508564c75607609d4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 29 Sep 2021 17:37:15 +0200 Subject: [PATCH 0356/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 775651c..da3b5c7 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1629481132, - "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", + "lastModified": 1631561581, + "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=", "owner": "numtide", "repo": "flake-utils", - "rev": "997f7efcb746a9c140ce1f13c72263189225f482", + "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1630294974, - "narHash": "sha256-9e3AKxbCoexrsWFXxQ4QUETNxQlXaffnntEnPOO19oI=", + "lastModified": 1632838573, + "narHash": "sha256-0GJKyDy7YYhN6s0qji+wzwnawvPzuovqfbmVloeYDcI=", "owner": "nix-community", "repo": "home-manager", - "rev": "61ca2fc1c00a275b8bd61582b23195d60fe0fa40", + "rev": "959217e51dbd07d0de6dcbddfbfcb4f2efdc0c1e", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1630248577, - "narHash": "sha256-9d/yq96TTrnF7qjA6wPYk+rYjWAXwfUmwk3qewezSeg=", + "lastModified": 1632660378, + "narHash": "sha256-sjA8eQlnyDjDLyAyq3XlJmN0nqW0ftl/pb7VnMg86L0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8d8a28b47b7c41aeb4ad01a2bd8b7d26986c3512", + "rev": "31ffc50c571e6683e9ecc9dbcbd4a8e9914b4497", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1630395220, - "narHash": "sha256-Nb5SppZmj+0MH33c2/qdRFqGTo/8g0CTfVtsGZ/sQf0=", + "lastModified": 1632922805, + "narHash": "sha256-tii+JuTTx6pLGJ90EkWc0NgGU1hZLEoJ8CH3uyA9i5E=", "owner": "nix-community", "repo": "NUR", - "rev": "607b9cebfdbf57ec864aacf14efa64fac920016d", + "rev": "2522970cd3888df74f0c433cd1bc08442fd126c3", "type": "github" }, "original": { @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1624971177, - "narHash": "sha256-Amf/nBj1E77RmbSSmV+hg6YOpR+rddCbbVgo5C7BS0I=", + "lastModified": 1631170176, + "narHash": "sha256-RLN/kur2Kpxt0cJp0Fms8ixuGpT8IHX0OpeQ8u8f0X4=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "397f0713d007250a2c7a745e555fa16c5dc8cadb", + "rev": "3ed0e618cebc1ff291c27b749cf7568959cac028", "type": "github" }, "original": { From cdabd4fb5d11ea47be2bb8073e2233362c153947 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 29 Sep 2021 18:43:37 +0200 Subject: [PATCH 0357/1588] home: vim: switch back to gruvbox theme Onedark is too annoying to deal with, and I still like gruvbox's colors best. --- home/vim/default.nix | 5 +---- home/vim/init.vim | 10 ++++++---- home/vim/plugin/settings/lightline.vim | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index 08f5ecd..eb79fe9 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -31,10 +31,7 @@ in plugins = with pkgs.vimPlugins; [ # Theming lightline-vim # Fancy status bar - { - plugin = onedark-vim; # Nice dark theme - optional = true; # Needs to be `packadd`-ed manually... - } + vim-gruvbox8 # Nice dark theme # tpope essentials vim-commentary # Easy comments diff --git a/home/vim/init.vim b/home/vim/init.vim index 8968204..23717e1 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -68,10 +68,12 @@ set timeoutlen=500 " Set dark mode by default set background=dark -" Load it manually because of autoload functions... -packadd! onedark-vim -" Use onedark -colorscheme onedark +" Include plug-in integration +let g:gruvbox_plugin_hi_groups=1 +" Include filetype integration +let g:gruvbox_filetype_hi_groups=1 +" Use my preferred colorscheme +colorscheme gruvbox8 " }}} " Search parameters {{{ diff --git a/home/vim/plugin/settings/lightline.vim b/home/vim/plugin/settings/lightline.vim index 0513160..feaa733 100644 --- a/home/vim/plugin/settings/lightline.vim +++ b/home/vim/plugin/settings/lightline.vim @@ -2,7 +2,7 @@ let g:lightline={} " Use the wombat colorscheme -let g:lightline.colorscheme='onedark' +let g:lightline.colorscheme='wombat' " Status-line for active buffer let g:lightline.active={ From 3d0a73fffdc37972f507fc5b2c3c5869256f42b2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 30 Sep 2021 15:34:16 +0200 Subject: [PATCH 0358/1588] home: zsh: launch tmux when starting a shell --- home/zsh/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 27077cf..5dc9a63 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -46,6 +46,16 @@ in # Modal editing is life, but CLI benefits from emacs gymnastics defaultKeymap = "emacs"; + # Make those happen early to avoid doing double the work + initExtraFirst = + lib.optionalString config.my.home.tmux.enable '' + # Launch tmux unless already inside one + if [ -z "$TMUX" ]; then + exec tmux new-session + fi + '' + ; + initExtra = lib.concatMapStrings builtins.readFile [ ./completion-styles.zsh ./extra-mappings.zsh From e4bd59b82b9b60dd27c2d5dd596b7273b1165dbe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 30 Sep 2021 15:36:29 +0200 Subject: [PATCH 0359/1588] home: wm: i3: launch tmux when starting terminal Similarly to the `zsh` snippet, launch tmux unless I explicitly do not want it. The reason I also add it in `i3` is to make the launch happen sooner, and to avoid doing double work on some shell startup shenanigans if I can. --- home/wm/i3/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index f8080ad..2a99958 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -157,7 +157,9 @@ in keybindings = lib.my.recursiveMerge [ { # The basics - "${modifier}+Return" = "exec ${terminal}"; + "${modifier}+Return" = "exec ${terminal} ${ + lib.optionalString config.my.home.tmux.enable "-e tmux new-session" + }"; "${modifier}+Shift+Return" = "exec env TMUX=nil ${terminal}"; "${modifier}+Shift+q" = "kill"; "${modifier}+f" = "fullscreen toggle"; From 3ec99d4c0e27e53fda89752042f599b0f756746f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 30 Sep 2021 16:47:52 +0200 Subject: [PATCH 0360/1588] home: tmux: make history longer We got tons of RAM! --- home/tmux/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 6b05414..8e0c901 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -13,7 +13,7 @@ in keyMode = "vi"; # Home-row keys and other niceties clock24 = true; # I'm one of those heathens escapeTime = 0; # Let vim do its thing instead - historyLimit = 5000; # Bigger buffer + historyLimit = 50000; # Bigger buffer terminal = "tmux-256color"; # I want accurate termcap info plugins = with pkgs.tmuxPlugins; [ From ac76d8ae68d3847737857ded8692576c140a63f6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 30 Sep 2021 16:48:26 +0200 Subject: [PATCH 0361/1588] home: tmux: add tmux service The service definition is pretty awful, but it deals with the secure socket correctly... This avoids having a small lapse when starting the very first shell of a session, which must first launch the server. --- home/tmux/default.nix | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 8e0c901..0a8a355 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -5,6 +5,10 @@ in { options.my.home.tmux = with lib.my; { enable = mkDisableOption "tmux terminal multiplexer"; + + service = { + enable = mkDisableOption "tmux server service"; + }; }; config.programs.tmux = lib.mkIf cfg.enable { @@ -44,4 +48,30 @@ in bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel ''; }; + + config.systemd.user.services.tmux = lib.mkIf cfg.service.enable { + Unit = { + Description = "tmux server"; + }; + + Install = { + WantedBy = [ "default.target" ]; + }; + + Service = + let + # Wrap `tmux` in a login shell and set the socket path + tmuxCmd = "${config.programs.tmux.package}/bin/tmux"; + socketExport = lib.optionalString + config.programs.tmux.secureSocket + ''export TMUX_TMPDIR=''${XDG_RUNTIME_DIR:-"/run/user/\$(id -u)"};''; + mkTmuxCommand = + c: "${pkgs.runtimeShell} -l -c '${socketExport} ${tmuxCmd} ${c}'"; + in + { + Type = "forking"; + ExecStart = mkTmuxCommand "new -d -s ambroisie"; + ExecStop = mkTmuxCommand "kill-server"; + }; + }; } From b3aa737e2876940381144adbd15321fcfd85c0a9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 4 Oct 2021 14:45:41 +0200 Subject: [PATCH 0362/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index da3b5c7..b668797 100644 --- a/flake.lock +++ b/flake.lock @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1632838573, - "narHash": "sha256-0GJKyDy7YYhN6s0qji+wzwnawvPzuovqfbmVloeYDcI=", + "lastModified": 1633296444, + "narHash": "sha256-DnC7yVyoYFSsvFze16AWDa5iSHgtT1MbDGgp8rSC3H4=", "owner": "nix-community", "repo": "home-manager", - "rev": "959217e51dbd07d0de6dcbddfbfcb4f2efdc0c1e", + "rev": "099cbcf13e8219f07b493980a66fe64df0e32d09", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1632660378, - "narHash": "sha256-sjA8eQlnyDjDLyAyq3XlJmN0nqW0ftl/pb7VnMg86L0=", + "lastModified": 1633263894, + "narHash": "sha256-InuWViZr3SL8PqRROkWhmSd3N8gGkiP7YaA7BRdjmhk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "31ffc50c571e6683e9ecc9dbcbd4a8e9914b4497", + "rev": "01f2f2842aaa7f3af957fef93439d639e6941e6c", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1632922805, - "narHash": "sha256-tii+JuTTx6pLGJ90EkWc0NgGU1hZLEoJ8CH3uyA9i5E=", + "lastModified": 1633342505, + "narHash": "sha256-UgXnO+jX6V33mtbFgQKPLndNQid1DqOnMcsPlxqeWdk=", "owner": "nix-community", "repo": "NUR", - "rev": "2522970cd3888df74f0c433cd1bc08442fd126c3", + "rev": "061e44abde1dc11b10ff93fe6a388272850f473c", "type": "github" }, "original": { From b66e46e2418215414b5299728a42bd3c7deacb05 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 4 Oct 2021 14:48:54 +0200 Subject: [PATCH 0363/1588] overlays: add sabnzbd-fix-missing-dependencies While waiting for my PR to fix this [1]. [1]: https://github.com/NixOS/nixpkgs/pull/140478 --- overlays/default.nix | 2 + .../default.nix | 4 ++ .../sabnzbd.nix | 60 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 overlays/sabnzbd-fix-missing-dependencies/default.nix create mode 100644 overlays/sabnzbd-fix-missing-dependencies/sabnzbd.nix diff --git a/overlays/default.nix b/overlays/default.nix index d52dcd3..3f5a246 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,5 @@ { + sabnzbd-fix-missing-packages = import ./sabnzbd-fix-missing-dependencies; + transgui-fix-duplicate-status = import ./transgui-fix-duplicate-status; } diff --git a/overlays/sabnzbd-fix-missing-dependencies/default.nix b/overlays/sabnzbd-fix-missing-dependencies/default.nix new file mode 100644 index 0000000..e2e8eec --- /dev/null +++ b/overlays/sabnzbd-fix-missing-dependencies/default.nix @@ -0,0 +1,4 @@ +final: prev: +{ + sabnzbd = final.callPackage ./sabnzbd.nix { }; +} diff --git a/overlays/sabnzbd-fix-missing-dependencies/sabnzbd.nix b/overlays/sabnzbd-fix-missing-dependencies/sabnzbd.nix new file mode 100644 index 0000000..3da9b28 --- /dev/null +++ b/overlays/sabnzbd-fix-missing-dependencies/sabnzbd.nix @@ -0,0 +1,60 @@ +{ lib +, stdenv +, fetchFromGitHub +, python3 +, par2cmdline +, unzip +, unrar +, p7zip +, makeWrapper +}: + +let + pythonEnv = python3.withPackages (ps: with ps; [ + chardet + cheetah3 + cherrypy + configobj + cryptography + feedparser + guessit + puremagic + sabyenc3 + ]); + path = lib.makeBinPath [ par2cmdline unrar unzip p7zip ]; +in +stdenv.mkDerivation rec { + version = "3.4.0"; + pname = "sabnzbd"; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = version; + sha256 = "sha256-zax+PuvCmYOlEhRmiCp7UOd9VI0i8dbgTPyTtqLuGUM="; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ pythonEnv ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out + cp -R * $out/ + mkdir $out/bin + echo "${pythonEnv}/bin/python $out/SABnzbd.py \$*" > $out/bin/sabnzbd + chmod +x $out/bin/sabnzbd + wrapProgram $out/bin/sabnzbd --set PATH ${path} + + runHook postInstall + ''; + + meta = with lib; { + description = "Usenet NZB downloader, par2 repairer and auto extracting server"; + homepage = "https://sabnzbd.org"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with lib.maintainers; [ fridh ]; + }; +} From c746d7d3bac7e61d14399d69868b4fcbdff1c344 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 3 Oct 2021 15:51:24 +0200 Subject: [PATCH 0364/1588] home: firefox: add 'refined-github' --- home/firefox/firefox/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/firefox/firefox/default.nix b/home/firefox/firefox/default.nix index 723ecc8..5d4b05e 100644 --- a/home/firefox/firefox/default.nix +++ b/home/firefox/firefox/default.nix @@ -46,6 +46,7 @@ in https-everywhere i-dont-care-about-cookies reddit-enhancement-suite + refined-github sponsorblock ublock-origin ] From f494c3cba7928a1d4c2a7503a2cfc6f24065560d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 3 Oct 2021 15:53:04 +0200 Subject: [PATCH 0365/1588] home: firefox: re-organise module --- home/firefox/default.nix | 64 +++++++++++++++++++++++++++++--- home/firefox/firefox/default.nix | 57 ---------------------------- 2 files changed, 59 insertions(+), 62 deletions(-) delete mode 100644 home/firefox/firefox/default.nix diff --git a/home/firefox/default.nix b/home/firefox/default.nix index 3d310dc..cbcc233 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -1,5 +1,12 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.firefox; +in { + imports = [ + ./tridactyl + ]; + options.my.home.firefox = with lib; { enable = mkEnableOption "firefox configuration"; @@ -22,8 +29,55 @@ }; }; - imports = [ - ./firefox - ./tridactyl - ]; + config.programs.firefox = lib.mkIf cfg.enable { + enable = true; + + package = pkgs.firefox.override { + cfg = { + enableTridactylNative = cfg.tridactyl.enable; + }; + + extraNativeMessagingHosts = with pkgs; ([ ] + # Watch videos using mpv + ++ lib.optional cfg.ff2mpv.enable ambroisie.ff2mpv-go + ); + }; + + profiles = { + default = { + id = 0; + + settings = { + "browser.bookmarks.showMobileBookmarks" = true; # Mobile bookmarks + "browser.download.useDownloadDir" = false; # Ask for download location + "browser.in-content.dark-mode" = true; # Dark mode + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; # Disable top stories + "browser.newtabpage.activity-stream.feeds.sections" = false; + "browser.newtabpage.activity-stream.feeds.system.topstories" = false; # Disable top stories + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket + "extensions.pocket.enabled" = false; # Disable pocket + "media.eme.enabled" = true; # Enable DRM + "media.gmp-widevinecdm.visible" = true; # Enable DRM + "media.gmp-widevinecdm.enabled" = true; # Enable DRM + "signon.autofillForms" = false; # Disable built-in form-filling + "signon.rememberSignons" = false; # Disable built-in password manager + "ui.systemUsesDarkTheme" = true; # Dark mode + }; + }; + }; + + extensions = with pkgs.nur.repos.rycee.firefox-addons; ([ + bitwarden + form-history-control + https-everywhere + i-dont-care-about-cookies + reddit-enhancement-suite + refined-github + sponsorblock + ublock-origin + ] + ++ lib.optional (cfg.tridactyl.enable) tridactyl + ++ lib.optional (cfg.ff2mpv.enable) ff2mpv + ); + }; } diff --git a/home/firefox/firefox/default.nix b/home/firefox/firefox/default.nix deleted file mode 100644 index 5d4b05e..0000000 --- a/home/firefox/firefox/default.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.my.home.firefox; -in -{ - config.programs.firefox = lib.mkIf cfg.enable { - enable = true; - - package = pkgs.firefox.override { - cfg = { - enableTridactylNative = cfg.tridactyl.enable; - }; - - extraNativeMessagingHosts = with pkgs; ([ ] - # Watch videos using mpv - ++ lib.optional cfg.ff2mpv.enable ambroisie.ff2mpv-go - ); - }; - - profiles = { - default = { - id = 0; - - settings = { - "browser.bookmarks.showMobileBookmarks" = true; # Mobile bookmarks - "browser.download.useDownloadDir" = false; # Ask for download location - "browser.in-content.dark-mode" = true; # Dark mode - "browser.newtabpage.activity-stream.feeds.section.topstories" = false; # Disable top stories - "browser.newtabpage.activity-stream.feeds.sections" = false; - "browser.newtabpage.activity-stream.feeds.system.topstories" = false; # Disable top stories - "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket - "extensions.pocket.enabled" = false; # Disable pocket - "media.eme.enabled" = true; # Enable DRM - "media.gmp-widevinecdm.visible" = true; # Enable DRM - "media.gmp-widevinecdm.enabled" = true; # Enable DRM - "signon.autofillForms" = false; # Disable built-in form-filling - "signon.rememberSignons" = false; # Disable built-in password manager - "ui.systemUsesDarkTheme" = true; # Dark mode - }; - }; - }; - - extensions = with pkgs.nur.repos.rycee.firefox-addons; ([ - bitwarden - form-history-control - https-everywhere - i-dont-care-about-cookies - reddit-enhancement-suite - refined-github - sponsorblock - ublock-origin - ] - ++ lib.optional (cfg.tridactyl.enable) tridactyl - ++ lib.optional (cfg.ff2mpv.enable) ff2mpv - ); - }; -} From 02263141c4ea8107f8b1269736bdd6cd13e2e611 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 3 Oct 2021 16:08:04 +0200 Subject: [PATCH 0366/1588] home: firefox: add 'reddit-comment-collapser' --- home/firefox/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index cbcc233..b161834 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -71,6 +71,7 @@ in form-history-control https-everywhere i-dont-care-about-cookies + reddit-comment-collapser reddit-enhancement-suite refined-github sponsorblock From cf47817b34441b0ab3847326c03b150ffb5cb919 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Oct 2021 12:15:34 +0200 Subject: [PATCH 0367/1588] home: xdg: make gdb store history in XDG_DATA_HOME --- home/xdg/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/xdg/default.nix b/home/xdg/default.nix index bdeb326..1aa69ac 100644 --- a/home/xdg/default.nix +++ b/home/xdg/default.nix @@ -31,6 +31,7 @@ in # A tidy home is a tidy mind dataFile = { "bash/.keep".text = ""; + "gdb/.keep".text = ""; "tig/.keep".text = ""; }; }; @@ -39,6 +40,7 @@ in config.home.sessionVariables = with config.xdg; lib.mkIf cfg.enable { CARGO_HOME = "${dataHome}/cargo"; DOCKER_CONFIG = "${configHome}/docker"; + GDBHISTFILE = "${dataHome}/gdb/gdb_history"; HISTFILE = "${dataHome}/bash/history"; INPUTRC = "${configHome}/readline/inputrc"; LESSHISTFILE = "${dataHome}/less/history"; From f8f7fb06a7aaf7e38d6a18ac8043d78ae97d8160 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Oct 2021 14:59:03 +0200 Subject: [PATCH 0368/1588] pkgs: add dragger --- pkgs/default.nix | 2 ++ pkgs/dragger/default.nix | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 pkgs/dragger/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 4e35cff..a420a7e 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -6,6 +6,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { diff-flake = pkgs.callPackage ./diff-flake { }; + dragger = pkgs.callPackage ./dragger { }; + drone-scp = pkgs.callPackage ./drone-scp { }; ff2mpv-go = pkgs.callPackage ./ff2mpv-go { }; diff --git a/pkgs/dragger/default.nix b/pkgs/dragger/default.nix new file mode 100644 index 0000000..a4ccd61 --- /dev/null +++ b/pkgs/dragger/default.nix @@ -0,0 +1,29 @@ +{ lib, fetchFromGitHub, qt5 }: +qt5.mkDerivation rec { + pname = "dragger"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "ambroisie"; + repo = "dragger"; + rev = "v${version}"; + sha256 = "sha256-WAC720DxfkQxy1BeeGzE6IerFb4ejoMRAPEJv5HGDHM="; + }; + + configurePhase = '' + qmake + ''; + + installPhase = '' + mkdir -p $out/bin + cp dragger $out/bin + ''; + + meta = with lib; { + description = "A CLI drag-and-drop tool"; + homepage = "https://gitea.belanyi.fr/ambroisie/dragger"; + license = licenses.mit; + maintainers = [ ambroisie ]; + platforms = platforms.all; + }; +} From 4f558a1ebd651a739ec67c961d36ff4f4177b6ac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Oct 2021 15:00:44 +0200 Subject: [PATCH 0369/1588] flake: use 'recurseIntoAttrs' in 'pkgs' overlay --- flake.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 62a3a52..9c33d34 100644 --- a/flake.nix +++ b/flake.nix @@ -149,7 +149,9 @@ overlays = import ./overlays // { lib = final: prev: { inherit lib; }; - pkgs = final: prev: { ambroisie = import ./pkgs { pkgs = prev; }; }; + pkgs = final: prev: { + ambroisie = prev.recurseIntoAttrs (import ./pkgs { pkgs = prev; }); + }; }; nixosConfigurations = lib.mapAttrs buildHost { From 152df1501af3eab21cf9f656c4232ee563c04d2b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Oct 2021 15:03:45 +0200 Subject: [PATCH 0370/1588] home: gammastep: fix typo --- home/gammastep/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/gammastep/default.nix b/home/gammastep/default.nix index 24c595c..3e20094 100644 --- a/home/gammastep/default.nix +++ b/home/gammastep/default.nix @@ -25,7 +25,7 @@ in times = { dawn = mkTimeOption "Dawn time" "6:00-7:30"; - dusk = mkTimeOption "Dawn time" "18:30-20:00"; + dusk = mkTimeOption "Dusk time" "18:30-20:00"; }; }; From 09140b0170c2549d677f1dd1c1dadfae53e6a770 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Oct 2021 15:05:45 +0200 Subject: [PATCH 0371/1588] profiles: wm: add 'dragger' when a WM is set up --- profiles/wm/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/profiles/wm/default.nix b/profiles/wm/default.nix index 473d49d..1eeb7a8 100644 --- a/profiles/wm/default.nix +++ b/profiles/wm/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.profiles.wm; in @@ -23,5 +23,11 @@ in # Auto disk mounter my.home.udiskie.enable = true; }) + + (lib.mkIf (cfg.windowManager != null) { + environment.systemPackages = with pkgs; [ + ambroisie.dragger + ]; + }) ]; } From 0aa2f59530da1634b98f2130153e15aa5e2273bf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Oct 2021 19:39:43 +0200 Subject: [PATCH 0372/1588] pkgs: dragger: change platforms to linux I haven't tested it on darwin, and it just so happens that some dependency is broken on that system (breaking `nix flake check`)... Will revisit this later in case I ever happen to use a darwin system. --- pkgs/dragger/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/dragger/default.nix b/pkgs/dragger/default.nix index a4ccd61..1a43a1b 100644 --- a/pkgs/dragger/default.nix +++ b/pkgs/dragger/default.nix @@ -1,4 +1,4 @@ -{ lib, fetchFromGitHub, qt5 }: +{ lib, fetchFromGitHub, qt5, stdenv }: qt5.mkDerivation rec { pname = "dragger"; version = "0.1.0"; @@ -24,6 +24,6 @@ qt5.mkDerivation rec { homepage = "https://gitea.belanyi.fr/ambroisie/dragger"; license = licenses.mit; maintainers = [ ambroisie ]; - platforms = platforms.all; + platforms = platforms.linux; }; } From d43831cbf11a2172f236fbd4c6a1f26afe013648 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 10 Oct 2021 17:14:58 +0200 Subject: [PATCH 0373/1588] modules: secrets: wireguard: add 'milady' --- modules/secrets/secrets.nix | 1 + modules/secrets/wireguard/milady/private-key.age | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 modules/secrets/wireguard/milady/private-key.age diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index d9196f4..ee5aba5 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -54,6 +54,7 @@ in "users/root/hashed-password.age".publicKeys = all; "wireguard/aramis/private-key.age".publicKeys = all; + "wireguard/milady/private-key.age".publicKeys = all; "wireguard/porthos/private-key.age".publicKeys = all; "wireguard/richelieu/private-key.age".publicKeys = all; } diff --git a/modules/secrets/wireguard/milady/private-key.age b/modules/secrets/wireguard/milady/private-key.age new file mode 100644 index 0000000..fb84f91 --- /dev/null +++ b/modules/secrets/wireguard/milady/private-key.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg gWB20jfimPCJHYjqxBSHYkL9Z/kGZ23dRu4PHp7oJj8 +z3dBymvgrGNtIXe3yQAzpm36uExPmD7DKjU6mMNw99U +-> ssh-ed25519 jPowng aeWv6an+PmWRuk2eHOQhF7jvmld1I5p2LbSmehjUBBw +Rn+ApMvZlO0ji6TCakCUc+1jK762UxOqVanmCsjB+80 +-> jDh})['\-grease |Y6J(8{ +v.7nKx +WID+ZDtsOlPI0AW8ROvXH1s +--- ZlSk2uv95UoKi5D94+tiQdZyxCVv6dlj6ajwYeDzmp0 +n`Wm!Q3]Q}}By kuƀE^zO[V p f>Ĕ \ No newline at end of file From 2cd56e133f57fa522603bd7e5656ea8e27d19e10 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 10 Oct 2021 17:16:21 +0200 Subject: [PATCH 0374/1588] modules: services: wireguard: add 'milady' --- modules/services/wireguard/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/services/wireguard/default.nix b/modules/services/wireguard/default.nix index d919803..656fdb2 100644 --- a/modules/services/wireguard/default.nix +++ b/modules/services/wireguard/default.nix @@ -35,6 +35,12 @@ let clientNum = 3; publicKey = "w4IADAj2Tt7Qe95a0RxDv9ovg/Dr/f3q1LrVOPF48Rk="; }; + + # Sarah's iPhone + milady = { + clientNum = 4; + publicKey = "3MKEu4F6o8kww54xeAao5Uet86fv8z/QsZ2L2mOzqDQ="; + }; }; thisPeer = peers."${hostName}"; thisPeerIsServer = thisPeer ? externalIp; From 3e6c467816a9c850e6c723ca8ee7f415de472201 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Oct 2021 16:33:33 +0200 Subject: [PATCH 0375/1588] home: git: add 'git' alias --- home/git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/git/default.nix b/home/git/default.nix index 156731e..150fb59 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -18,6 +18,7 @@ in package = pkgs.gitAndTools.gitFull; aliases = { + git = "!git"; lol = "log --graph --decorate --pretty=oneline --abbrev-commit --topo-order"; lola = "lol --all"; assume = "update-index --assume-unchanged"; From 62adfd50558665732c35b8981e801f22bdd3a75c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Oct 2021 17:53:10 +0200 Subject: [PATCH 0376/1588] lib: add strings --- lib/strings.nix | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 lib/strings.nix diff --git a/lib/strings.nix b/lib/strings.nix new file mode 100644 index 0000000..0b58caf --- /dev/null +++ b/lib/strings.nix @@ -0,0 +1,6 @@ +{ ... }: +let +in +{ + # FIXME +} From 8bf601a6aaa7d13be03a6848d8ffd3eb53e78e2d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Oct 2021 17:53:23 +0200 Subject: [PATCH 0377/1588] lib: strings: add 'mkMailAddress' --- lib/strings.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/strings.nix b/lib/strings.nix index 0b58caf..2a3ec77 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -2,5 +2,8 @@ let in { - # FIXME + # Make an email address from the name and domain stems + # + # mkMailAddress :: String -> String -> String + mkMailAddress = name: domain: "${name}@${domain}"; } From 7b6af916429d816ae2a8d1d4bd7c7f1bc8a158d5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Oct 2021 17:54:54 +0200 Subject: [PATCH 0378/1588] home: mail: accounts: use 'mkMailAccount' --- home/mail/accounts/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home/mail/accounts/default.nix b/home/mail/accounts/default.nix index 2eecb6d..80d95ae 100644 --- a/home/mail/accounts/default.nix +++ b/home/mail/accounts/default.nix @@ -2,16 +2,16 @@ let cfg = config.my.home.mail; - mkAddress = address: domain: "${address}@${domain}"; + inherit (lib.my) mkMailAddress; mkConfig = { domain, address, passName, aliases ? [ ], primary ? false }: { realName = lib.mkDefault "Bruno BELANYI"; - userName = lib.mkDefault (mkAddress address domain); + userName = lib.mkDefault (mkMailAddress address domain); passwordCommand = lib.mkDefault [ "${pkgs.ambroisie.bw-pass}/bin/bw-pass" "Mail" passName ]; - address = mkAddress address domain; - aliases = builtins.map (lib.flip mkAddress domain) aliases; + address = mkMailAddress address domain; + aliases = builtins.map (lib.flip mkMailAddress domain) aliases; inherit primary; From f76803c9bbc5f6f666121b790b971657dcf5bb35 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Oct 2021 17:55:48 +0200 Subject: [PATCH 0379/1588] home: git: use 'mkMailAccount' --- home/git/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/git/default.nix b/home/git/default.nix index 150fb59..bd361a6 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -1,6 +1,8 @@ { config, pkgs, lib, ... }: let cfg = config.my.home.git; + + inherit (lib.my) mkMailAddress; in { options.my.home.git = with lib.my; { @@ -11,7 +13,7 @@ in enable = true; # Who am I? - userEmail = "bruno@belanyi.fr"; + userEmail = mkMailAddress "bruno" "belanyi.fr"; userName = "Bruno BELANYI"; # I want the full experience From dd48089a82c57c42d5b1fb692871ca785d39eb4b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Oct 2021 17:56:04 +0200 Subject: [PATCH 0380/1588] modules: services: nginx: use 'mkMailAccount' --- modules/services/nginx/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index 492f6c8..46710d2 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -387,7 +387,7 @@ in users.users.nginx.extraGroups = [ "acme" ]; security.acme = { - email = "bruno.acme@belanyi.fr"; + email = lib.my.mkMailAddress "bruno.acme" "belanyi.fr"; acceptTerms = true; # Use DNS wildcard certificate certs = From 0bfc92b09c066e59a06912bae026fd819448889b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Oct 2021 21:11:46 +0200 Subject: [PATCH 0381/1588] home: git: inline EPITA configuration include --- home/git/default.nix | 10 +++++++++- home/git/epita.config | 4 ---- 2 files changed, 9 insertions(+), 5 deletions(-) delete mode 100644 home/git/epita.config diff --git a/home/git/default.nix b/home/git/default.nix index bd361a6..ae96216 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -122,7 +122,15 @@ in # Multiple identities includes = [ - { path = ./epita.config; condition = "gitdir:~/git/EPITA/"; } + { + condition = "gitdir:~/git/EPITA/"; + contents = { + user = { + name = "Bruno BELANYI"; + email = mkMailAddress "bruno.belanyi" "epita.fr"; + }; + }; + } ]; ignores = diff --git a/home/git/epita.config b/home/git/epita.config deleted file mode 100644 index a6e8cf4..0000000 --- a/home/git/epita.config +++ /dev/null @@ -1,4 +0,0 @@ -[user] - email = bruno.belanyi@epita.fr - name = Bruno BELANYI -# vim: set ft=gitconfig: From 7b7041e5b51cd1cecb3fd9cecdb50f844de0a664 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Oct 2021 21:32:13 +0200 Subject: [PATCH 0382/1588] home: git: add git-related packages when enabled Instead of adding them in the general packages section. --- home/git/default.nix | 6 ++++++ home/packages/default.nix | 3 --- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/home/git/default.nix b/home/git/default.nix index ae96216..aff0ac6 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -9,6 +9,12 @@ in enable = mkDisableOption "git configuration"; }; + config.home.packages = with pkgs.gitAndTools; lib.mkIf cfg.enable [ + gitAndTools.git-absorb + gitAndTools.git-revise + gitAndTools.tig + ]; + config.programs.git = lib.mkIf cfg.enable { enable = true; diff --git a/home/packages/default.nix b/home/packages/default.nix index 0d57840..acb1f79 100644 --- a/home/packages/default.nix +++ b/home/packages/default.nix @@ -19,9 +19,6 @@ in config.home.packages = with pkgs; lib.mkIf cfg.enable ([ file - gitAndTools.git-absorb - gitAndTools.git-revise - gitAndTools.tig rr termite.terminfo ] ++ cfg.additionalPackages); From 5059835e97386bbe68c1f1b047c2bb599f38e9ef Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 17:01:40 +0200 Subject: [PATCH 0383/1588] pkgs: sort packages alphabetically --- pkgs/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index a420a7e..c599247 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -22,11 +22,11 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { nolimips = pkgs.callPackage ./nolimips { }; - vimix-cursors = pkgs.callPackage ./vimix-cursors { }; - - volantes-cursors = pkgs.callPackage ./volantes-cursors { }; - unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { }; + + vimix-cursors = pkgs.callPackage ./vimix-cursors { }; + + volantes-cursors = pkgs.callPackage ./volantes-cursors { }; }) From 52fb5500bed20408ba0c2c1a3370af570d631e0e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 17:09:03 +0200 Subject: [PATCH 0384/1588] pkgs: add rofi-bluetooth --- pkgs/default.nix | 2 ++ pkgs/rofi-bluetooth/default.nix | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 pkgs/rofi-bluetooth/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index c599247..46fa4ab 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -22,6 +22,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { nolimips = pkgs.callPackage ./nolimips { }; + rofi-bluetooth = pkgs.callPackage ./rofi-bluetooth { }; + unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { }; diff --git a/pkgs/rofi-bluetooth/default.nix b/pkgs/rofi-bluetooth/default.nix new file mode 100644 index 0000000..2ff40a1 --- /dev/null +++ b/pkgs/rofi-bluetooth/default.nix @@ -0,0 +1,40 @@ +{ lib, bluez, fetchFromGitHub, makeWrapper, rofi, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "rofi-bluetooth"; + version = "unstable-2021-10-15"; + + src = fetchFromGitHub { + owner = "nickclyde"; + repo = "rofi-bluetooth"; + rev = "893db1f2b549e7bc0e9c62e7670314349a29cdf2"; + sha256 = "sha256-3oROJKEQCuSnLfbJ+JSSc9hcmJTPrLHRQJsrUcaOMss="; + }; + + buildInputs = [ + makeWrapper + ]; + + installPhase = '' + mkdir -p $out/bin + cp $src/rofi-bluetooth $out/bin/ + chmod a+x $out/bin/rofi-bluetooth + ''; + + wrapperPath = lib.makeBinPath [ + rofi + bluez + ]; + + fixupPhase = '' + patchShebangs $out/bin/${pname} + wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = "A rofi menu for managing bluetooth connections"; + homepage = "https://github.com/nickclyde/rofi-bluetooth/commit/"; + license = with licenses; [ gpl3Only ]; + platforms = platforms.linux; + maintainers = with maintainers; [ ambroisie ]; + }; +} From 8b763099e3ecd95e76fa58ed2dc4416cf73c5263 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 17:12:20 +0200 Subject: [PATCH 0385/1588] home: wm: i3: don't add 'dragger' through profile --- home/wm/i3/default.nix | 1 + profiles/wm/default.nix | 6 ------ 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 2a99958..a0b63be 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -70,6 +70,7 @@ in { config = lib.mkIf isEnabled { home.packages = with pkgs; [ + ambroisie.dragger # drag-and-drop from the CLI ambroisie.i3-get-window-criteria # little helper for i3 configuration arandr # Used by a mapping pamixer # Used by a mapping diff --git a/profiles/wm/default.nix b/profiles/wm/default.nix index 1eeb7a8..bf9d3f9 100644 --- a/profiles/wm/default.nix +++ b/profiles/wm/default.nix @@ -23,11 +23,5 @@ in # Auto disk mounter my.home.udiskie.enable = true; }) - - (lib.mkIf (cfg.windowManager != null) { - environment.systemPackages = with pkgs; [ - ambroisie.dragger - ]; - }) ]; } From 645a602cc1a56c38ebd2096bb21fbf19fe669e54 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 17:13:02 +0200 Subject: [PATCH 0386/1588] home: tmux: add binding for block selection --- home/tmux/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 0a8a355..c9ccf16 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -46,6 +46,8 @@ in # Better vim mode bind-key -T copy-mode-vi 'v' send -X begin-selection bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel + # Block selection in vim mode + bind-key -Tcopy-mode-vi 'C-v' send -X begin-selection \; send -X rectangle-toggle ''; }; From 0d87934ee0155da192ffa258a3f33d767e829709 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 17:19:12 +0200 Subject: [PATCH 0387/1588] home: wm: i3: add 'rofi-bluetooth' binding --- home/wm/i3/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index a0b63be..94cec6d 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -198,6 +198,12 @@ in "${modifier}+Shift+d" = "exec rofi -show run -disable-history"; "${modifier}+p" = "exec --no-startup-id flameshot gui"; "${modifier}+Shift+p" = "exec rofi -show emoji"; + "${modifier}+b" = + let + inherit (config.my.home.bluetooth) enable; + prog = "${pkgs.ambroisie.rofi-bluetooth}/bin/rofi-bluetooth"; + in + lib.mkIf enable "exec ${prog}"; }) ( # Changing container focus From cf7ba65c307e6518195101fec6b6932d6b1ffa57 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 16 Oct 2021 14:56:13 +0200 Subject: [PATCH 0388/1588] machines: aramis: networking: remove 'domain' Now that services handle subdomains through my Nginx abstraction, we can remove this. --- machines/aramis/networking.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/machines/aramis/networking.nix b/machines/aramis/networking.nix index 9322f1f..2759e9c 100644 --- a/machines/aramis/networking.nix +++ b/machines/aramis/networking.nix @@ -2,7 +2,6 @@ { networking = { hostName = "aramis"; - domain = "nodomain.local"; # FIXME: gotta fix domain handling # The global useDHCP flag is deprecated, therefore explicitly set to false here. # Per-interface useDHCP will be mandatory in the future, so this generated config From a9f751f0edc0ccea83a98c80a5284557f5b62bab Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 16 Oct 2021 17:59:18 +0200 Subject: [PATCH 0389/1588] home: wm: i3bar: use dynamic width on music block --- home/wm/i3bar/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index 62d0d7b..61df862 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -22,6 +22,7 @@ in block = "music"; buttons = [ "prev" "play" "next" ]; max_width = 50; + dynamic_width = true; hide_when_empty = true; } { From 6a18be1d0a50e0b12eb905ff4cea080f3a307ef0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 18 Oct 2021 14:44:08 +0200 Subject: [PATCH 0390/1588] home: git: rewrite personal gitea URLs to use ssh --- home/git/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/git/default.nix b/home/git/default.nix index aff0ac6..e05a100 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -124,6 +124,12 @@ in autoSquash = true; autoStash = true; }; + + url = { + "git@gitea.belanyi.fr:" = { + insteadOf = "https://gitea.belanyi.fr/"; + }; + }; }; # Multiple identities From a8cf45a9f7f2a6b826150270c7c8eff7bb25364b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 18 Oct 2021 14:44:19 +0200 Subject: [PATCH 0391/1588] home: git: rewrite github URLs to use ssh --- home/git/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/git/default.nix b/home/git/default.nix index e05a100..6748bab 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -129,6 +129,10 @@ in "git@gitea.belanyi.fr:" = { insteadOf = "https://gitea.belanyi.fr/"; }; + + "git@github.com:" = { + insteadOf = "https://github.com/"; + }; }; }; From ae06ccac4a337f713fb08b26aa7282ba644ac104 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 18 Oct 2021 14:45:23 +0200 Subject: [PATCH 0392/1588] home: git: rewrite gitlab URLs to use ssh --- home/git/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/git/default.nix b/home/git/default.nix index 6748bab..e9ccde8 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -133,6 +133,10 @@ in "git@github.com:" = { insteadOf = "https://github.com/"; }; + + "git@gitlab.com:" = { + insteadOf = "https://gitlab.com/"; + }; }; }; From d353e2557c4b789da7a0ee221264f58ab35939c4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 16 Oct 2021 17:55:59 +0200 Subject: [PATCH 0393/1588] home: wm: i3bar: add bluetooth blocks I have decided that the potential security and privacy risk of exposing my MAC addresses is fine by me. My earphones and headphones do not seem to expose their battery level, would need more investigation. --- home/wm/i3bar/default.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index 61df862..664f11c 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -25,6 +25,24 @@ in dynamic_width = true; hide_when_empty = true; } + (lib.optionalAttrs config.my.home.bluetooth.enable { + block = "bluetooth"; + mac = "4C:87:5D:06:40:D9"; + hide_disconnected = true; + format = "Boson {percentage}"; + }) + (lib.optionalAttrs config.my.home.bluetooth.enable { + block = "bluetooth"; + mac = "94:DB:56:00:EE:93"; + hide_disconnected = true; + format = "Protons {percentage}"; + }) + (lib.optionalAttrs config.my.home.bluetooth.enable { + block = "bluetooth"; + mac = "F7:78:BA:76:52:F7"; + hide_disconnected = true; + format = "MX Ergo {percentage}"; + }) { block = "cpu"; } From 69d7fd5d7c80ae6e9b896eb8944a5d3539177cc4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 18 Oct 2021 18:49:03 +0200 Subject: [PATCH 0394/1588] modules: system: nix: change nix build niceness 19 is the lowest priority. --- modules/system/nix/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 0f2f8c3..04888ac 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -18,6 +18,9 @@ in extraOptions = '' experimental-features = nix-command flakes ''; + + # Keep my system responsive during builds + daemonNiceLevel = 19; }; } From 353848ec73474b58430cf72489258fa33d1d5205 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 18 Oct 2021 19:28:46 +0200 Subject: [PATCH 0395/1588] pkgs: unified-hosts-lists: 3.8.5 -> 3.9.11 --- pkgs/unified-hosts-lists/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index 0da6354..4b0e0c6 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -1,13 +1,13 @@ { lib, fetchFromGitHub, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "unified-hosts-lists"; - version = "3.8.5"; + version = "3.9.11"; src = fetchFromGitHub { owner = "StevenBlack"; repo = "hosts"; rev = version; - sha256 = "sha256-7oYuGegrHVUvAvA16iR8OEe5eTMeSybShSa1PJOe5No="; + sha256 = "sha256-JFz6M0Mkwoby7I6LLWx0QfvZMzwET2FEQ1OGKQnFfho="; }; dontUnpack = true; From f5e26526daa2655afce78ab0d9c619136fa51174 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 15:09:48 +0200 Subject: [PATCH 0396/1588] modules: services: indexers: fix typo --- modules/services/indexers/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/indexers/default.nix b/modules/services/indexers/default.nix index 6ee32c0..0d272f8 100644 --- a/modules/services/indexers/default.nix +++ b/modules/services/indexers/default.nix @@ -9,7 +9,7 @@ in { options.my.services.indexers = with lib; { jackett.enable = mkEnableOption "Jackett torrent meta-indexer"; - nzbhydra.enable = mkEnableOption "NZBHydra2 torrent meta-indexer"; + nzbhydra.enable = mkEnableOption "NZBHydra2 usenet meta-indexer"; }; config = { From af5103803b2319f201ec0daf0eaa9b2a5c5c0682 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 15:10:03 +0200 Subject: [PATCH 0397/1588] modules: services: indexers: refactor This is cleaner and more correct. --- modules/services/indexers/default.nix | 57 +++++++++++++++------------ 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/modules/services/indexers/default.nix b/modules/services/indexers/default.nix index 0d272f8..af0f482 100644 --- a/modules/services/indexers/default.nix +++ b/modules/services/indexers/default.nix @@ -12,32 +12,39 @@ in nzbhydra.enable = mkEnableOption "NZBHydra2 usenet meta-indexer"; }; - config = { - services.jackett = lib.mkIf cfg.jackett.enable { - enable = true; - }; - - # Jackett wants to eat *all* my RAM if left to its own devices - systemd.services.jackett = { - serviceConfig = { - MemoryHigh = "15%"; - MemoryMax = "25%"; + config = lib.mkMerge [ + (lib.mkIf cfg.jackett.enable { + services.jackett = { + enable = true; }; - }; - services.nzbhydra2 = lib.mkIf cfg.nzbhydra.enable { - enable = true; - }; + # Jackett wants to eat *all* my RAM if left to its own devices + systemd.services.jackett = { + serviceConfig = { + MemoryHigh = "15%"; + MemoryMax = "25%"; + }; + }; - my.services.nginx.virtualHosts = [ - { - subdomain = "jackett"; - port = jackettPort; - } - { - subdomain = "nzbhydra"; - port = nzbhydraPort; - } - ]; - }; + my.services.nginx.virtualHosts = [ + { + subdomain = "jackett"; + port = jackettPort; + } + ]; + }) + + (lib.mkIf cfg.nzbhydra.enable { + services.nzbhydra2 = { + enable = true; + }; + + my.services.nginx.virtualHosts = [ + { + subdomain = "nzbhydra"; + port = nzbhydraPort; + } + ]; + }) + ]; } From 731793bb6e7ceda2577603ad59e894aa16394992 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 15:13:46 +0200 Subject: [PATCH 0398/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index b668797..9d368ca 100644 --- a/flake.lock +++ b/flake.lock @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1633296444, - "narHash": "sha256-DnC7yVyoYFSsvFze16AWDa5iSHgtT1MbDGgp8rSC3H4=", + "lastModified": 1634230035, + "narHash": "sha256-tS0dyWxVgb79Jk8elMthWv/oycj/Q4HHDoNL5V43kz8=", "owner": "nix-community", "repo": "home-manager", - "rev": "099cbcf13e8219f07b493980a66fe64df0e32d09", + "rev": "309808afbc2a07e340067f66029a4202b4c4b959", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1633263894, - "narHash": "sha256-InuWViZr3SL8PqRROkWhmSd3N8gGkiP7YaA7BRdjmhk=", + "lastModified": 1634172192, + "narHash": "sha256-FBF4U/T+bMg4sEyT/zkgasvVquGzgdAf4y8uCosKMmo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "01f2f2842aaa7f3af957fef93439d639e6941e6c", + "rev": "2cf9db0e3d45b9d00f16f2836cb1297bcadc475e", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1633342505, - "narHash": "sha256-UgXnO+jX6V33mtbFgQKPLndNQid1DqOnMcsPlxqeWdk=", + "lastModified": 1634283744, + "narHash": "sha256-XqRqt1RbEz6MAO1ZkAkcjNZTJCOJ+3LJJ2JWyEkUXsQ=", "owner": "nix-community", "repo": "NUR", - "rev": "061e44abde1dc11b10ff93fe6a388272850f473c", + "rev": "2dbf2b986c523b728ead324baaba9e0d28322557", "type": "github" }, "original": { @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1631170176, - "narHash": "sha256-RLN/kur2Kpxt0cJp0Fms8ixuGpT8IHX0OpeQ8u8f0X4=", + "lastModified": 1633788342, + "narHash": "sha256-wx+aRtR5FwbMOV/0N3PSC4au92aXl6tfwHOk4xgYXRQ=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "3ed0e618cebc1ff291c27b749cf7568959cac028", + "rev": "475b1f7f7ddcb6415e6624a68c4fe90f55ee9e73", "type": "github" }, "original": { From 7ca32d8b05b57902b5cdb3b0716cf825b3c53662 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 15:11:15 +0200 Subject: [PATCH 0399/1588] modules: services: indexers: add prowlarr --- modules/services/indexers/default.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/services/indexers/default.nix b/modules/services/indexers/default.nix index af0f482..66f1604 100644 --- a/modules/services/indexers/default.nix +++ b/modules/services/indexers/default.nix @@ -5,11 +5,13 @@ let jackettPort = 9117; nzbhydraPort = 5076; + prowlarrPort = 9696; in { options.my.services.indexers = with lib; { jackett.enable = mkEnableOption "Jackett torrent meta-indexer"; nzbhydra.enable = mkEnableOption "NZBHydra2 usenet meta-indexer"; + prowlarr.enable = mkEnableOption "Prowlarr torrent & usenet meta-indexer"; }; config = lib.mkMerge [ @@ -46,5 +48,18 @@ in } ]; }) + + (lib.mkIf cfg.prowlarr.enable { + services.prowlarr = { + enable = true; + }; + + my.services.nginx.virtualHosts = [ + { + subdomain = "prowlarr"; + port = prowlarrPort; + } + ]; + }) ]; } From d0ad9982cea59735f897915c9e017222a13a1d52 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 15:11:48 +0200 Subject: [PATCH 0400/1588] machines: porthos: services: enable prowlarr --- machines/porthos/services.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index b03977d..07cf8eb 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -44,6 +44,7 @@ in indexers = { jackett.enable = true; nzbhydra.enable = true; + prowlarr.enable = true; }; # Jellyfin media server jellyfin.enable = true; From 9e229a6bb8ef79397d4f331804b394a15a0b24dc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Oct 2021 16:46:12 +0200 Subject: [PATCH 0401/1588] project: readme: mention manual prowlarr step --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a68f7dc..3aa6453 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Secondly, take care of a few manual steps: * Configure Gitea and Drone * Configure Lohr webhook and SSH key * Configure Jellyfin -* Configure Jackett and NZBHydra2 +* Configure Prowlarr,Jackett and NZBHydra2 * Configure Sonarr, Radarr, Bazarr * Configure Transmission's webui port * Configure Quassel user From 36d6b2828e0d1e31b203c24932795759ac761f03 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 21 Oct 2021 16:42:10 +0200 Subject: [PATCH 0402/1588] home: start services when switching As I use home-manager with its NixOS module, I do not see the message suggesting to start the services otherwise. --- home/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/default.nix b/home/default.nix index e68c53b..b88dfed 100644 --- a/home/default.nix +++ b/home/default.nix @@ -40,4 +40,7 @@ # Who am I? home.username = "ambroisie"; + + # Start services automatically + systemd.user.startServices = "sd-switch"; } From 9b184f94ac69c2810f7ff30f5f694f200367ca9d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 22 Oct 2021 13:06:50 +0200 Subject: [PATCH 0403/1588] modules: home: forward inputs to home-manager This will be useful if and when I end up adding inputs with home-manager modules defined. --- modules/home/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/home/default.nix b/modules/home/default.nix index 4745c0c..a287f35 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -19,6 +19,11 @@ in # Nix Flakes compatibility useGlobalPkgs = true; useUserPackages = true; + + # Forward inputs to home-manager configuration + extraSpecialArgs = { + inherit inputs; + }; }; }; } From 66c3b709973aeac75992161ff1b1f375d4e5243e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 22 Oct 2021 13:15:16 +0200 Subject: [PATCH 0404/1588] home: wm: screen-lock: rename changed option --- home/wm/screen-lock/default.nix | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/home/wm/screen-lock/default.nix b/home/wm/screen-lock/default.nix index 9201f40..95060b8 100644 --- a/home/wm/screen-lock/default.nix +++ b/home/wm/screen-lock/default.nix @@ -35,20 +35,22 @@ in lockCmd = cfg.command; - xautolockExtraOptions = lib.optionals cfg.cornerLock.enable [ - # Mouse corners: instant lock on upper-left, never lock on lower-right - "-cornerdelay" - "${toString cfg.cornerLock.delay}" - "-cornerredelay" - "${toString cfg.cornerLock.delay}" - "-corners" - "+00-" - ] ++ lib.optionals cfg.notify.enable [ - "-notify" - "${toString cfg.notify.delay}" - "-notifier" - notficationCmd - ]; + xautolock = { + extraOptions = lib.optionals cfg.cornerLock.enable [ + # Mouse corners: instant lock on upper-left, never lock on lower-right + "-cornerdelay" + "${toString cfg.cornerLock.delay}" + "-cornerredelay" + "${toString cfg.cornerLock.delay}" + "-corners" + "+00-" + ] ++ lib.optionals cfg.notify.enable [ + "-notify" + "${toString cfg.notify.delay}" + "-notifier" + notficationCmd + ]; + }; }; }; } From 1633d6b3bc82956c01980d58b6c6155fcec47825 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 25 Oct 2021 15:01:04 +0200 Subject: [PATCH 0405/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 9d368ca..9244a9c 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1631896269, - "narHash": "sha256-DAyCxJ8JacayOzGgGSfzrn7ghtsfL/EsCyk1NEUaAR8=", + "lastModified": 1634404028, + "narHash": "sha256-JyP2Y6JCCYvUcVz7CXX5pXUfTGTU4GX51Yza82BgMfk=", "owner": "ryantm", "repo": "agenix", - "rev": "daf1d773989ac5d949aeef03fce0fe27e583dbca", + "rev": "53aa91b4170da35a96fab1577c9a34bc0da44e27", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1631561581, - "narHash": "sha256-3VQMV5zvxaVLvqqUrNz3iJelLw30mIVSfZmAaauM3dA=", + "lastModified": 1634851050, + "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e5bf3925f6fbdfaf50a2a7ca0be2879c4261d19", + "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1634230035, - "narHash": "sha256-tS0dyWxVgb79Jk8elMthWv/oycj/Q4HHDoNL5V43kz8=", + "lastModified": 1634851225, + "narHash": "sha256-fwtGHHl7fTELucIRBKO5JORD8QP9Lo9PwY9nrJuEybE=", "owner": "nix-community", "repo": "home-manager", - "rev": "309808afbc2a07e340067f66029a4202b4c4b959", + "rev": "cfe82d9f444a1b77f135070f1c1ee63fa061f2fd", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1634172192, - "narHash": "sha256-FBF4U/T+bMg4sEyT/zkgasvVquGzgdAf4y8uCosKMmo=", + "lastModified": 1634782485, + "narHash": "sha256-psfh4OQSokGXG0lpq3zKFbhOo3QfoeudRcaUnwMRkQo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2cf9db0e3d45b9d00f16f2836cb1297bcadc475e", + "rev": "34ad3ffe08adfca17fcb4e4a47bb5f3b113687be", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1634283744, - "narHash": "sha256-XqRqt1RbEz6MAO1ZkAkcjNZTJCOJ+3LJJ2JWyEkUXsQ=", + "lastModified": 1634894948, + "narHash": "sha256-CRrIz4o/eC/PYJ1Hph501aZv0pfnOMVTvH0PMMDkSSM=", "owner": "nix-community", "repo": "NUR", - "rev": "2dbf2b986c523b728ead324baaba9e0d28322557", + "rev": "c4f9bb6ada83e3fc7fe98d35b41013fee207b603", "type": "github" }, "original": { @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1633788342, - "narHash": "sha256-wx+aRtR5FwbMOV/0N3PSC4au92aXl6tfwHOk4xgYXRQ=", + "lastModified": 1634595438, + "narHash": "sha256-hV9D41fqTateTligwNd9dmJKQ0R0w6RpCN92xR3LhHk=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "475b1f7f7ddcb6415e6624a68c4fe90f55ee9e73", + "rev": "06fa80325b6fe3b28d136071dd0ce55d4817e9fd", "type": "github" }, "original": { From 548484d9189aa92d8469206487fa0a46ff0e8b8a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 27 Oct 2021 15:07:24 +0200 Subject: [PATCH 0406/1588] home: wm: i3: use 'i3status-rust.package' value --- home/wm/i3/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 94cec6d..8929c6e 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -87,10 +87,12 @@ in let barConfigPath = config.xdg.configFile."i3status-rust/config-top.toml".target; + i3status-rs = + "${config.programs.i3status-rust.package}/bin/i3status-rs"; in [ { - statusCommand = "i3status-rs ${barConfigPath}"; + statusCommand = "${i3status-rs} ${barConfigPath}"; trayOutput = "primary"; position = "top"; From 72310d4047e7ecf7b441422210189325080c6477 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 27 Oct 2021 15:12:16 +0200 Subject: [PATCH 0407/1588] home: do not restart services automatically Turns out it is *not* ideal when modifying my WM configuration in any way... Having i3 restart due to changing a keybinding is not great. This reverts commit 6bec62073bda8204e6eb38b60c1d729363a1c623. --- home/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/home/default.nix b/home/default.nix index b88dfed..e68c53b 100644 --- a/home/default.nix +++ b/home/default.nix @@ -40,7 +40,4 @@ # Who am I? home.username = "ambroisie"; - - # Start services automatically - systemd.user.startServices = "sd-switch"; } From a5fe7a41e6bcc4007ae532b0d950b01812e1264c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 27 Oct 2021 18:14:40 +0200 Subject: [PATCH 0408/1588] flake: remove gnupg from devShell --- flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake.nix b/flake.nix index 9c33d34..8c2e923 100644 --- a/flake.nix +++ b/flake.nix @@ -129,7 +129,6 @@ nativeBuildInputs = with pkgs; [ gitAndTools.pre-commit - gnupg nixpkgs-fmt ]; From 28d8f0bf064739277aff99a4e6a10d389369c2bd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 Nov 2021 14:09:48 +0100 Subject: [PATCH 0409/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 9244a9c..5226554 100644 --- a/flake.lock +++ b/flake.lock @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1634851225, - "narHash": "sha256-fwtGHHl7fTELucIRBKO5JORD8QP9Lo9PwY9nrJuEybE=", + "lastModified": 1635839387, + "narHash": "sha256-2B6DqfTiwY5w2TljC4+AxEUuVYMTP5Fo2h5iGNIONvk=", "owner": "nix-community", "repo": "home-manager", - "rev": "cfe82d9f444a1b77f135070f1c1ee63fa061f2fd", + "rev": "288faaa5a65e72e37e6027024829b15c8bb69286", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1634782485, - "narHash": "sha256-psfh4OQSokGXG0lpq3zKFbhOo3QfoeudRcaUnwMRkQo=", + "lastModified": 1635844945, + "narHash": "sha256-tZcL307dj28jgEU1Wdn+zwG9neyW0H2+ZjdVhvJxh9g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "34ad3ffe08adfca17fcb4e4a47bb5f3b113687be", + "rev": "b67e752c29f18a0ca5534a07661366d6a2c2e649", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1634894948, - "narHash": "sha256-CRrIz4o/eC/PYJ1Hph501aZv0pfnOMVTvH0PMMDkSSM=", + "lastModified": 1635930672, + "narHash": "sha256-nNqwxC17Z+4WTdV8D5BfsfCOxSJl4rnDWbVSUMXGgxU=", "owner": "nix-community", "repo": "NUR", - "rev": "c4f9bb6ada83e3fc7fe98d35b41013fee207b603", + "rev": "15697042f0863030801ba9594fe9b3bc7cc62fe8", "type": "github" }, "original": { From 450ab4b07b0fcd63521a96361eaa0684227a9901 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 Nov 2021 17:16:40 +0100 Subject: [PATCH 0410/1588] modules: services: backup: remove deprecated name --- modules/services/backup/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/services/backup/default.nix b/modules/services/backup/default.nix index 88c7fde..ff0fc7f 100644 --- a/modules/services/backup/default.nix +++ b/modules/services/backup/default.nix @@ -97,8 +97,8 @@ in ; # Take care of creating the repository if it doesn't exist initialize = true; - # Hijack S3-related env to give B2 API key - s3CredentialsFile = cfg.credentialsFile; + # give B2 API key securely + environmentFile = cfg.credentialsFile; inherit (cfg) passwordFile pruneOpts timerConfig repository; }; From 335454ee166db961f60cf41ca8f912f73b1ecf26 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 Nov 2021 17:49:47 +0100 Subject: [PATCH 0411/1588] home: wm: i3: extract 'notify-send' variable It is used in multiple scripts, might as well centralise it. --- home/wm/i3/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 8929c6e..38971dc 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -26,6 +26,9 @@ let # Generate an attrset of movement bindings, using the mapper function genMovementBindings = f: addVimKeyBindings (lib.my.genAttrs' movementKeys f); + # Used in multiple scripts to show messages through keybindings + notify-send = "${pkgs.libnotify}/bin/notify-send"; + # Screen backlight management changeBacklight = let @@ -40,7 +43,7 @@ let fi newBrightness="$(${brightnessctl} -m set "$upDown" | cut -d, -f4)" - ${pkgs.libnotify}/bin/notify-send -u low \ + ${notify-send} -u low \ -h string:x-canonical-private-synchronous:change-backlight \ -h "int:value:''${newBrightness/\%/}" \ -- "Set brightness to $newBrightness" @@ -50,7 +53,6 @@ let toggleXautolock = let systemctlUser = "${pkgs.systemd}/bin/systemctl --user"; - notify-send = "${pkgs.libnotify}/bin/notify-send"; notify = "${notify-send} -u low" + " -h string:x-canonical-private-synchronous:xautolock-toggle"; in From 751af91c2c092df7cc467853ac150329ec1b86da Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 Nov 2021 17:50:28 +0100 Subject: [PATCH 0412/1588] home: wm: i3: notify when changing audio volume --- home/wm/i3/default.nix | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 38971dc..6a8144a 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -49,6 +49,28 @@ let -- "Set brightness to $newBrightness" ''; + # Audio and volume management + changeAudio = + let + pamixer = "${pkgs.pamixer}/bin/pamixer"; + in + pkgs.writeScript "change-audio" '' + #!/bin/sh + if [ "$1" = "up" ]; then + upDown="-i" + else + upDown="-d" + fi + + ${pamixer} --allow-boost "$upDown" "$2" + newVolume="$(${pamixer} --get-volume)" + + ${notify-send} -u low \ + -h string:x-canonical-private-synchronous:change-audio \ + -h "int:value:$newVolume" \ + -- "Set volume to $newVolume " + ''; + # Lock management toggleXautolock = let @@ -259,10 +281,10 @@ in ) { # Media keys - "XF86AudioRaiseVolume" = "exec pamixer --allow-boost -i 5"; - "XF86AudioLowerVolume" = "exec pamixer --allow-boost -d 5"; - "Control+XF86AudioRaiseVolume" = "exec pamixer --allow-boost -i 1"; - "Control+XF86AudioLowerVolume" = "exec pamixer --allow-boost -d 1"; + "XF86AudioRaiseVolume" = "exec ${changeAudio} up 5"; + "XF86AudioLowerVolume" = "exec ${changeAudio} down 5"; + "Control+XF86AudioRaiseVolume" = "exec ${changeAudio} up 1"; + "Control+XF86AudioLowerVolume" = "exec ${changeAudio} down 1"; "XF86AudioMute" = "exec pamixer --toggle-mute"; "XF86AudioMicMute" = "exec pamixer --default-source --toggle-mute"; From d724c205eaf372ce29f5ce1f3a59c30253275745 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 Nov 2021 17:57:31 +0100 Subject: [PATCH 0413/1588] home: wm: i3: avoid loading icon on notifications Because my script are obviously not startup id aware, hovering on the notification leads to having a loading cursor. --- home/wm/i3/default.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 6a8144a..ad2eb36 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -281,10 +281,10 @@ in ) { # Media keys - "XF86AudioRaiseVolume" = "exec ${changeAudio} up 5"; - "XF86AudioLowerVolume" = "exec ${changeAudio} down 5"; - "Control+XF86AudioRaiseVolume" = "exec ${changeAudio} up 1"; - "Control+XF86AudioLowerVolume" = "exec ${changeAudio} down 1"; + "XF86AudioRaiseVolume" = "exec --no-startup-id ${changeAudio} up 5"; + "XF86AudioLowerVolume" = "exec --no-startup-id ${changeAudio} down 5"; + "Control+XF86AudioRaiseVolume" = "exec --no-startup-id ${changeAudio} up 1"; + "Control+XF86AudioLowerVolume" = "exec --no-startup-id ${changeAudio} down 1"; "XF86AudioMute" = "exec pamixer --toggle-mute"; "XF86AudioMicMute" = "exec pamixer --default-source --toggle-mute"; @@ -295,10 +295,10 @@ in { # Screen management "XF86Display" = "exec arandr"; - "XF86MonBrightnessUp" = "exec ${changeBacklight} up 10"; - "XF86MonBrightnessDown" = "exec ${changeBacklight} down 10"; - "Control+XF86MonBrightnessUp" = "exec ${changeBacklight} up 1"; - "Control+XF86MonBrightnessDown" = "exec ${changeBacklight} down 1"; + "XF86MonBrightnessUp" = "exec --no-startup-id ${changeBacklight} up 10"; + "XF86MonBrightnessDown" = "exec --no-startup-id ${changeBacklight} down 10"; + "Control+XF86MonBrightnessUp" = "exec --no-startup-id ${changeBacklight} up 1"; + "Control+XF86MonBrightnessDown" = "exec --no-startup-id ${changeBacklight} down 1"; } { # Sub-modes From 10b8ee50c177a9d2c920f255c1eda5a73e726b56 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 4 Nov 2021 15:55:33 +0100 Subject: [PATCH 0414/1588] pkgs: add change-backlight --- pkgs/change-backlight/change-backlight | 15 +++++++++ pkgs/change-backlight/default.nix | 44 ++++++++++++++++++++++++++ pkgs/default.nix | 2 ++ 3 files changed, 61 insertions(+) create mode 100755 pkgs/change-backlight/change-backlight create mode 100644 pkgs/change-backlight/default.nix diff --git a/pkgs/change-backlight/change-backlight b/pkgs/change-backlight/change-backlight new file mode 100755 index 0000000..e178151 --- /dev/null +++ b/pkgs/change-backlight/change-backlight @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -euo pipefail + +if [ "$1" = "up" ]; then + upDown="+$2%" +else + upDown="$2%-" +fi + +newBrightness="$(brightnessctl -m set "$upDown" | cut -d, -f4)" +notify-send -u low \ + -h string:x-canonical-private-synchronous:change-backlight \ + -h "int:value:${newBrightness/\%/}" \ + -- "Set brightness to $newBrightness" diff --git a/pkgs/change-backlight/default.nix b/pkgs/change-backlight/default.nix new file mode 100644 index 0000000..799c814 --- /dev/null +++ b/pkgs/change-backlight/default.nix @@ -0,0 +1,44 @@ +{ lib, brightnessctl, libnotify, makeWrapper, shellcheck, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "change-backlight"; + version = "0.1.0"; + + src = ./change-backlight; + + buildInputs = [ + makeWrapper + shellcheck + ]; + + dontUnpack = true; + + buildPhase = '' + shellcheck $src + ''; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/change-backlight + chmod a+x $out/bin/change-backlight + ''; + + wrapperPath = lib.makeBinPath [ + brightnessctl + libnotify + ]; + + fixupPhase = '' + patchShebangs $out/bin/change-backlight + wrapProgram $out/bin/change-backlight --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = '' + A script to change a screen's brightness and notify about it + ''; + homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.linux; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 46fa4ab..3f7b1df 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,6 +2,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { bw-pass = pkgs.callPackage ./bw-pass { }; + change-backlight = pkgs.callPackage ./change-backlight { }; + comma = pkgs.callPackage ./comma { }; diff-flake = pkgs.callPackage ./diff-flake { }; From f987e79d17339518273a4416c64b3e11189334fc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 4 Nov 2021 15:56:01 +0100 Subject: [PATCH 0415/1588] pkgs: add change-audio --- pkgs/change-audio/change-audio | 17 +++++++++++++ pkgs/change-audio/default.nix | 44 ++++++++++++++++++++++++++++++++++ pkgs/default.nix | 2 ++ 3 files changed, 63 insertions(+) create mode 100755 pkgs/change-audio/change-audio create mode 100644 pkgs/change-audio/default.nix diff --git a/pkgs/change-audio/change-audio b/pkgs/change-audio/change-audio new file mode 100755 index 0000000..9f7f1d2 --- /dev/null +++ b/pkgs/change-audio/change-audio @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -euo pipefail + +if [ "$1" = "up" ]; then + upDown="-i" +else + upDown="-d" +fi + +pamixer --allow-boost "$upDown" "$2" +newVolume="$(pamixer --get-volume)" + +notify-send -u low \ + -h string:x-canonical-private-synchronous:change-audio \ + -h "int:value:$newVolume" \ + -- "Set volume to $newVolume%" diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix new file mode 100644 index 0000000..5027826 --- /dev/null +++ b/pkgs/change-audio/default.nix @@ -0,0 +1,44 @@ +{ lib, libnotify, makeWrapper, pamixer, shellcheck, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "change-audio"; + version = "0.1.0"; + + src = ./change-audio; + + buildInputs = [ + makeWrapper + shellcheck + ]; + + dontUnpack = true; + + buildPhase = '' + shellcheck $src + ''; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/change-audio + chmod a+x $out/bin/change-audio + ''; + + wrapperPath = lib.makeBinPath [ + libnotify + pamixer + ]; + + fixupPhase = '' + patchShebangs $out/bin/change-audio + wrapProgram $out/bin/change-audio --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = '' + A script to change the volume and notify about it + ''; + homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.linux; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 3f7b1df..a179dfb 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,6 +2,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { bw-pass = pkgs.callPackage ./bw-pass { }; + change-audio = pkgs.callPackage ./change-audio { }; + change-backlight = pkgs.callPackage ./change-backlight { }; comma = pkgs.callPackage ./comma { }; From 99e300bbc4bf15808c00386c4176b8cdc5a4d73b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 4 Nov 2021 15:56:07 +0100 Subject: [PATCH 0416/1588] home: wm: i3: use packaged scripts Instead of inlining them in the configuration, use an actual package for those. --- home/wm/i3/default.nix | 40 ++-------------------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index ad2eb36..4465bb0 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -30,46 +30,10 @@ let notify-send = "${pkgs.libnotify}/bin/notify-send"; # Screen backlight management - changeBacklight = - let - brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; - in - pkgs.writeScript "change-backlight" '' - #!/bin/sh - if [ "$1" = "up" ]; then - upDown="+$2%" - else - upDown="$2%-" - fi - - newBrightness="$(${brightnessctl} -m set "$upDown" | cut -d, -f4)" - ${notify-send} -u low \ - -h string:x-canonical-private-synchronous:change-backlight \ - -h "int:value:''${newBrightness/\%/}" \ - -- "Set brightness to $newBrightness" - ''; + changeBacklight = "${pkgs.ambroisie.change-backlight}/bin/change-backlight"; # Audio and volume management - changeAudio = - let - pamixer = "${pkgs.pamixer}/bin/pamixer"; - in - pkgs.writeScript "change-audio" '' - #!/bin/sh - if [ "$1" = "up" ]; then - upDown="-i" - else - upDown="-d" - fi - - ${pamixer} --allow-boost "$upDown" "$2" - newVolume="$(${pamixer} --get-volume)" - - ${notify-send} -u low \ - -h string:x-canonical-private-synchronous:change-audio \ - -h "int:value:$newVolume" \ - -- "Set volume to $newVolume " - ''; + changeAudio = "${pkgs.ambroisie.change-audio}/bin/change-audio"; # Lock management toggleXautolock = From c11b3a2fa60c82493d794b54e4d50eeb887b70e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 4 Nov 2021 16:24:09 +0100 Subject: [PATCH 0417/1588] home: wm: dunst: replace deprecated 'geometry' --- home/wm/dunst/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/home/wm/dunst/default.nix b/home/wm/dunst/default.nix index e90362a..949db32 100644 --- a/home/wm/dunst/default.nix +++ b/home/wm/dunst/default.nix @@ -18,7 +18,6 @@ in follow = "keyboard"; # follow keyboard focus font = "Monospace 8"; # Simple looking font frame_width = 3; # small frame - geometry = "300x50-15+49"; markup = "full"; # subset of HTML max_icon_size = 32; # avoid icons that are too big padding = 6; # distance between text and bubble border @@ -26,6 +25,12 @@ in separator_color = "frame"; # use frame color to separate bubbles sort = true; # sort messages by urgency word_wrap = true; # Break long lines to make them readable + + # Fixed size notifications, slightly recessed from the top right + width = 300; + height = 50; + origin = "top-right"; + offset = "15x50"; }; urgency_low = { From eb9fffd7b48f1bbd703c10846485269280a2ac56 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 14:12:54 +0100 Subject: [PATCH 0418/1588] machines: porthos: users: remove unused let block --- machines/porthos/users.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/machines/porthos/users.nix b/machines/porthos/users.nix index 645c942..fbbe368 100644 --- a/machines/porthos/users.nix +++ b/machines/porthos/users.nix @@ -1,8 +1,5 @@ # User setup -{ config, ... }: -let - my = config.my; -in +{ ... }: { users.users.blog = { description = "Blog Publisher"; From 67ea6d9f95f24bd45873de13cda318bb0ccdbcbe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 14:13:58 +0100 Subject: [PATCH 0419/1588] modules: services: drone: remove unused arguments --- modules/services/drone/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/drone/default.nix b/modules/services/drone/default.nix index 3e84ddd..79c48dd 100644 --- a/modules/services/drone/default.nix +++ b/modules/services/drone/default.nix @@ -2,7 +2,7 @@ # # Inspired by [1] # [1]: https://github.com/Mic92/dotfiles/blob/master/nixos/eve/modules/drone.nix -{ config, lib, pkgs, ... }: +{ lib, ... }: { imports = [ ./runner-docker From 5fdc39041153caa8fe8913a340f14c83fddffcc0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 14:14:10 +0100 Subject: [PATCH 0420/1588] modules: services: nginx: remove unused argument --- modules/services/nginx/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index 46710d2..7e4d6f4 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -1,5 +1,5 @@ # A simple abstraction layer for almost all of my services' needs -{ config, lib, pkgs, utils, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.services.nginx; From 986aed79fbb37829d75e69ee4e05a073730ab656 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 14:14:24 +0100 Subject: [PATCH 0421/1588] pkgs: dragger: remove unused argument --- pkgs/dragger/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/dragger/default.nix b/pkgs/dragger/default.nix index 1a43a1b..cd0d453 100644 --- a/pkgs/dragger/default.nix +++ b/pkgs/dragger/default.nix @@ -1,4 +1,4 @@ -{ lib, fetchFromGitHub, qt5, stdenv }: +{ lib, fetchFromGitHub, qt5, }: qt5.mkDerivation rec { pname = "dragger"; version = "0.1.0"; From cf37d3172ac1cdb729106470a5967085a6c7e040 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 14:14:36 +0100 Subject: [PATCH 0422/1588] profiles: gtk: remove unused argument --- profiles/gtk/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/gtk/default.nix b/profiles/gtk/default.nix index f9fcd5d..61a3edc 100644 --- a/profiles/gtk/default.nix +++ b/profiles/gtk/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.profiles.gtk; in From cbae0ef1da89d0b674360ee1ad11bdef7c1316e7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 14:14:41 +0100 Subject: [PATCH 0423/1588] profiles: wm: remove unused argument --- profiles/wm/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/wm/default.nix b/profiles/wm/default.nix index bf9d3f9..473d49d 100644 --- a/profiles/wm/default.nix +++ b/profiles/wm/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.profiles.wm; in From b5b8f83e713797f9fc0c0686fa76f19c67254013 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 15:31:59 +0100 Subject: [PATCH 0424/1588] modules: secrets: lohr: add 'ssh-key' --- modules/secrets/lohr/ssh-key.age | Bin 0 -> 839 bytes modules/secrets/secrets.nix | 1 + 2 files changed, 1 insertion(+) create mode 100644 modules/secrets/lohr/ssh-key.age diff --git a/modules/secrets/lohr/ssh-key.age b/modules/secrets/lohr/ssh-key.age new file mode 100644 index 0000000000000000000000000000000000000000..30a5e254eb0031110173e2d83b1ad9fba44a8255 GIT binary patch literal 839 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;^ZrPl*UC z4+#wlNe!vWEOE=%FDppSON_E~$_&mdD>IHtbagb1(#|i)GU2jF&d)c`E^>AaGV%5Z zj`GWJFD~)RGWSh3Fo`N~^-0ey3C#)gjtX&fD@M01DDJ7%C zB+;`tG%zyVC)7Bv%-1cVB&E{3Dj#HAw#Z--|l7uGrwtFXwf_ zIqP3v)H1%E!)<#e^o%@L*DIUJxBSd}qqUr7I6R&CDY5p<-1W@==F2=h7WMC8Cs*>< z-S0A(^(-H9Y+5_Lr{u}`9pNAEEt~gwR{M?M;ukfsa&8T_E*HP69y_?MK6CSjuTkq> z{(4;ODDdrig^hTPT~EAIyu)mZc>9Y12DY;l&dc4&SlLyeztjJ^pm&p3;`hEd&G)k> zEV0h#s@2!`^j`TpcB`R6NNM`OU-69h(HSS12H8Dww&%7f zKYwSD7Q5fB{_CeKcWIBEZB{&IcjkWgZhOQlXEN)x`Mp0YwE~t%YPVeFYUUNN64unL z5MngiZueSsyWb6k$jFQi|7X=^2R2LzpS5Ar_e@=veuI_I@Air6Zogq?zx*?sR@mOp zY&xQON9QUO>s6dFRQ!`Hrf|SODo`+`W$k$-Q-v(i7Y6+t58u7bo4|6V%uXjq#CY4K z;01rzuHLsw^1PlugRRape+My%bzW!P0~Xv@nO&5&uQtxWpujaKAfwChQRElvElP@; Uz4P{QuWxOxb-r#rr7DdN0H8=xJpcdz literal 0 HcmV?d00001 diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index ee5aba5..d8e289e 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -19,6 +19,7 @@ in "drone/ssh/private-key.age".publicKeys = all; "lohr/secret.age".publicKeys = all; + "lohr/ssh-key.age".publicKeys = all; "matrix/mail.age" = { owner = "matrix-synapse"; From 62e62c70e17f51b7e3a68fc116350cfd2f0e7224 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 16:31:22 +0100 Subject: [PATCH 0425/1588] modules: services: lohr: declarative ssh key --- modules/services/lohr/default.nix | 35 +++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/modules/services/lohr/default.nix b/modules/services/lohr/default.nix index 45ae3d7..af218ac 100644 --- a/modules/services/lohr/default.nix +++ b/modules/services/lohr/default.nix @@ -5,6 +5,9 @@ let settingsFormat = pkgs.formats.yaml { }; lohrPkg = pkgs.ambroisie.lohr; + + lohrStateDirectory = "lohr"; + lohrHome = "/var/lib/lohr/"; in { options.my.services.lohr = with lib; { @@ -34,6 +37,15 @@ in example = "/run/secrets/lohr.env"; description = "Shared secret between lohr and Gitea hook"; }; + + sshKeyFile = mkOption { + type = with types; nullOr str; + default = null; + example = "/run/secrets/lohr/ssh-key"; + description = '' + The ssh key that should be used by lohr to mirror repositories + ''; + }; }; config = lib.mkIf cfg.enable { @@ -46,16 +58,31 @@ in Environment = [ "ROCKET_PORT=${toString cfg.port}" "ROCKET_LOG_LEVEL=normal" - "LOHR_HOME=/var/lib/lohr/" + "LOHR_HOME=${lohrHome}" "LOHR_CONFIG=" ]; + ExecStartPre = lib.mkIf (cfg.sshKeyFile != null) ''+${ + pkgs.writeScript "copy-ssh-key" '' + #!${pkgs.bash}/bin/bash + # Ensure the key is not there + mkdir -p '${lohrHome}/.ssh' + rm -f '${lohrHome}/.ssh/id_ed25519' + + # Move the key into place + cp ${cfg.sshKeyFile} '${lohrHome}/.ssh/id_ed25519' + + # Fix permissions + chown -R lohr:lohr '${lohrHome}/.ssh' + chmod -R 0700 '${lohrHome}/.ssh' + '' + }''; ExecStart = let configFile = settingsFormat.generate "lohr-config.yaml" cfg.setting; in "${lohrPkg}/bin/lohr --config ${configFile}"; - StateDirectory = "lohr"; - WorkingDirectory = "/var/lib/lohr"; + StateDirectory = lohrStateDirectory; + WorkingDirectory = lohrHome; User = "lohr"; Group = "lohr"; }; @@ -66,7 +93,7 @@ in users.users.lohr = { isSystemUser = true; - home = "/var/lib/lohr"; + home = lohrHome; createHome = true; group = "lohr"; }; From 8759039187a8a0dfd40fc5f9c703a6c8cbfd4942 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 16:56:45 +0100 Subject: [PATCH 0426/1588] machines: porthos: services: use 'lohr.sshKeyFile' --- machines/porthos/services.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 07cf8eb..5661773 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -52,6 +52,7 @@ in lohr = { enable = true; sharedSecretFile = secrets."lohr/secret".path; + sshKeyFile = secrets."lohr/ssh-key".path; }; # Matrix backend and Element chat front-end matrix = { From e2638728e3dc8ab66bdc4c1a1f250daf49ff3eca Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 15:55:20 +0100 Subject: [PATCH 0427/1588] modules: services: pirate: sort 'ports' values --- modules/services/pirate/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/services/pirate/default.nix b/modules/services/pirate/default.nix index 89dba55..42dd12b 100644 --- a/modules/services/pirate/default.nix +++ b/modules/services/pirate/default.nix @@ -7,10 +7,10 @@ let cfg = config.my.services.pirate; ports = { - sonarr = 8989; - radarr = 7878; bazarr = 6767; lidarr = 8686; + radarr = 7878; + sonarr = 8989; }; managers = with lib.attrsets; From dd0c110f71121079b8a45930ba651f768184451f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 15:54:02 +0100 Subject: [PATCH 0428/1588] modules: services: calibre-web: use 'dataDir' --- modules/services/calibre-web/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/calibre-web/default.nix b/modules/services/calibre-web/default.nix index d4beff9..e6ba10d 100644 --- a/modules/services/calibre-web/default.nix +++ b/modules/services/calibre-web/default.nix @@ -49,7 +49,7 @@ in my.services.backup = { paths = [ - "/var/lib/calibre-web" # For `app.db` and `gdrive.db` + "/var/lib/${config.services.calibre-web.dataDir}" # For `app.db` and `gdrive.db` cfg.libraryPath ]; }; From a36eae4e66c93bf7642d1d0ab101582ade578c80 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 15:04:10 +0100 Subject: [PATCH 0429/1588] modules: services: paperless: backup 'dataDir' --- modules/services/paperless/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/services/paperless/default.nix b/modules/services/paperless/default.nix index 2f688ec..e9ec6a3 100644 --- a/modules/services/paperless/default.nix +++ b/modules/services/paperless/default.nix @@ -138,6 +138,7 @@ in my.services.backup = { paths = [ + config.services.paperless-ng.dataDir config.services.paperless-ng.mediaDir ]; }; From d490a7de7812d60c8ae7bd30fd2f855c8c6a606b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 Nov 2021 15:12:14 +0100 Subject: [PATCH 0430/1588] modules: services: nginx-sso: always rewrite conf --- modules/services/nginx/sso/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/services/nginx/sso/default.nix b/modules/services/nginx/sso/default.nix index 987e926..13292ec 100644 --- a/modules/services/nginx/sso/default.nix +++ b/modules/services/nginx/sso/default.nix @@ -61,6 +61,7 @@ in # The files to be merged might not have the correct permissions ExecStartPre = ''+${pkgs.writeScript "merge-nginx-sso-config" '' #!${pkgs.bash}/bin/bash + rm -f '${confPath}' ${utils.genJqSecretsReplacementSnippet cfg.configuration confPath} # Fix permissions From 4749e9b5610459226d50a9968db76241a85b79c1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 9 Nov 2021 15:16:20 +0100 Subject: [PATCH 0431/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 5226554..5f75c7f 100644 --- a/flake.lock +++ b/flake.lock @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1635839387, - "narHash": "sha256-2B6DqfTiwY5w2TljC4+AxEUuVYMTP5Fo2h5iGNIONvk=", + "lastModified": 1636274622, + "narHash": "sha256-tZYuGhqcfH7piCsrUrIYM0P3oPJcoBxGkuxeFNVxkCc=", "owner": "nix-community", "repo": "home-manager", - "rev": "288faaa5a65e72e37e6027024829b15c8bb69286", + "rev": "2917ef23b398a22ee33fb34b5766b28728228ab1", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1635844945, - "narHash": "sha256-tZcL307dj28jgEU1Wdn+zwG9neyW0H2+ZjdVhvJxh9g=", + "lastModified": 1636267212, + "narHash": "sha256-KDS173KqmqrYUPY9N4vf750GxIo+S6E0djyq2BsQm8s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b67e752c29f18a0ca5534a07661366d6a2c2e649", + "rev": "c935f5e0add2cf0ae650d072c8357533e21b0c35", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1635930672, - "narHash": "sha256-nNqwxC17Z+4WTdV8D5BfsfCOxSJl4rnDWbVSUMXGgxU=", + "lastModified": 1636465115, + "narHash": "sha256-XgCV91RrYNRJbXk5jEtiVVgvMq9kSRKVOCvN3ajsooo=", "owner": "nix-community", "repo": "NUR", - "rev": "15697042f0863030801ba9594fe9b3bc7cc62fe8", + "rev": "bfe7c1693a87c72201d8914356374a4798bfbb39", "type": "github" }, "original": { From f020338056474c396019f01b7fae6ff0ce4f58c0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 9 Nov 2021 15:32:59 +0100 Subject: [PATCH 0432/1588] home: tmux: remove tmux service Turns out it is more trouble than it is worth trying to make this work: with the secure socket problem etc... The first start up is fast enough for me in the end. This reverts commit cc21d84808dfd79736b3c44e72ea2c3a8e1476a6. --- home/tmux/default.nix | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index c9ccf16..ac2e1d2 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -5,10 +5,6 @@ in { options.my.home.tmux = with lib.my; { enable = mkDisableOption "tmux terminal multiplexer"; - - service = { - enable = mkDisableOption "tmux server service"; - }; }; config.programs.tmux = lib.mkIf cfg.enable { @@ -50,30 +46,4 @@ in bind-key -Tcopy-mode-vi 'C-v' send -X begin-selection \; send -X rectangle-toggle ''; }; - - config.systemd.user.services.tmux = lib.mkIf cfg.service.enable { - Unit = { - Description = "tmux server"; - }; - - Install = { - WantedBy = [ "default.target" ]; - }; - - Service = - let - # Wrap `tmux` in a login shell and set the socket path - tmuxCmd = "${config.programs.tmux.package}/bin/tmux"; - socketExport = lib.optionalString - config.programs.tmux.secureSocket - ''export TMUX_TMPDIR=''${XDG_RUNTIME_DIR:-"/run/user/\$(id -u)"};''; - mkTmuxCommand = - c: "${pkgs.runtimeShell} -l -c '${socketExport} ${tmuxCmd} ${c}'"; - in - { - Type = "forking"; - ExecStart = mkTmuxCommand "new -d -s ambroisie"; - ExecStop = mkTmuxCommand "kill-server"; - }; - }; } From d0e6e03c232684d60a1d8e27a1d0ad9383d5dd43 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 Nov 2021 09:40:37 +0100 Subject: [PATCH 0433/1588] pkgs: change-audio: 0.1.0 -> 0.1.1 Fix issue with not showing notification at 0% volume. --- pkgs/change-audio/change-audio | 2 +- pkgs/change-audio/default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/change-audio/change-audio b/pkgs/change-audio/change-audio index 9f7f1d2..22479d4 100755 --- a/pkgs/change-audio/change-audio +++ b/pkgs/change-audio/change-audio @@ -9,7 +9,7 @@ else fi pamixer --allow-boost "$upDown" "$2" -newVolume="$(pamixer --get-volume)" +newVolume="$(pamixer --get-volume || true)" notify-send -u low \ -h string:x-canonical-private-synchronous:change-audio \ diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index 5027826..c931ee6 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -1,7 +1,7 @@ { lib, libnotify, makeWrapper, pamixer, shellcheck, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "change-audio"; - version = "0.1.0"; + version = "0.1.1"; src = ./change-audio; From e295a60cf5edf76edf7821b86d14e9a54605e446 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 Nov 2021 09:42:39 +0100 Subject: [PATCH 0434/1588] flake: enable shellcheck pre-commit hook --- flake.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flake.nix b/flake.nix index 8c2e923..39e0eb6 100644 --- a/flake.nix +++ b/flake.nix @@ -118,6 +118,10 @@ nixpkgs-fmt = { enable = true; }; + + shellcheck = { + enable = true; + }; }; }; }; From ce0c634a052ae5c7ce1621c3e0437300babd9890 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 Nov 2021 09:49:00 +0100 Subject: [PATCH 0435/1588] pkgs: change-audio: 0.1.1 -> 0.1.2 Show if volume is currently muted. --- pkgs/change-audio/change-audio | 8 +++++++- pkgs/change-audio/default.nix | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/change-audio/change-audio b/pkgs/change-audio/change-audio index 22479d4..836e0c1 100755 --- a/pkgs/change-audio/change-audio +++ b/pkgs/change-audio/change-audio @@ -10,8 +10,14 @@ fi pamixer --allow-boost "$upDown" "$2" newVolume="$(pamixer --get-volume || true)" +[ "$(pamixer --get-volume-human)" = "muted" ] && isMuted=true + +MSG="Set volume to $newVolume%" +if [ "${isMuted:-false}" = true ]; then + MSG="$MSG (muted)" +fi notify-send -u low \ -h string:x-canonical-private-synchronous:change-audio \ -h "int:value:$newVolume" \ - -- "Set volume to $newVolume%" + -- "$MSG" diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index c931ee6..de050ff 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -1,7 +1,7 @@ { lib, libnotify, makeWrapper, pamixer, shellcheck, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "change-audio"; - version = "0.1.1"; + version = "0.1.2"; src = ./change-audio; From dab44c6052f17aac35817af870b17422f8c75f9b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 Nov 2021 10:17:39 +0100 Subject: [PATCH 0436/1588] pkgs: change-audio: 0.1.2 -> 0.2.0 Allow muting microphone and speakers, with refactor to make it DRY. --- pkgs/change-audio/change-audio | 71 ++++++++++++++++++++++++++-------- pkgs/change-audio/default.nix | 2 +- 2 files changed, 56 insertions(+), 17 deletions(-) diff --git a/pkgs/change-audio/change-audio b/pkgs/change-audio/change-audio index 836e0c1..5bb1588 100755 --- a/pkgs/change-audio/change-audio +++ b/pkgs/change-audio/change-audio @@ -2,22 +2,61 @@ set -euo pipefail -if [ "$1" = "up" ]; then - upDown="-i" -else - upDown="-d" -fi +NOTIFY=( + notify-send + -u low + -h string:x-canonical-private-synchronous:change-audio +) -pamixer --allow-boost "$upDown" "$2" -newVolume="$(pamixer --get-volume || true)" -[ "$(pamixer --get-volume-human)" = "muted" ] && isMuted=true +do_change_volume() { + if [ "$1" = "up" ]; then + upDown="-i" + else + upDown="-d" + fi -MSG="Set volume to $newVolume%" -if [ "${isMuted:-false}" = true ]; then - MSG="$MSG (muted)" -fi + pamixer --allow-boost "$upDown" "$2" + newVolume="$(pamixer --get-volume || true)" + [ "$(pamixer --get-volume-human)" = "muted" ] && isMuted=true -notify-send -u low \ - -h string:x-canonical-private-synchronous:change-audio \ - -h "int:value:$newVolume" \ - -- "$MSG" + MSG="Set volume to $newVolume%" + if [ "${isMuted:-false}" = true ]; then + MSG="$MSG (muted)" + fi + "${NOTIFY[@]}" \ + -h "int:value:$newVolume" \ + -- "$MSG" +} + +do_toggle() { + args=() + if [ "${2:-audio}" = mic ]; then + args+=(--default-source) + MSG="Toggled microphone" + else + MSG="Toggled audio output" + fi + + pamixer "${args[@]}" --toggle-mute + + if [ "$(pamixer "${args[@]}" --get-mute)" = true ]; then + MSG="$MSG (muted)" + else + MSG="$MSG (unmuted)" + fi + + "${NOTIFY[@]}" -- "$MSG" +} + +case "$1" in + up|down) + do_change_volume "$@" + ;; + toggle) + do_toggle "$@" + ;; + *) + echo "No suche option '$1'" >&2 + exit 1 + ;; +esac diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index de050ff..bf0f45c 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -1,7 +1,7 @@ { lib, libnotify, makeWrapper, pamixer, shellcheck, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "change-audio"; - version = "0.1.2"; + version = "0.2.0"; src = ./change-audio; From d42eaeb3620eb612bc227c52eb53321dc16a5370 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 Nov 2021 10:21:25 +0100 Subject: [PATCH 0437/1588] home: wm: i3: show notification on toggling mute --- home/wm/i3/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 4465bb0..9b1dd44 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -249,8 +249,8 @@ in "XF86AudioLowerVolume" = "exec --no-startup-id ${changeAudio} down 5"; "Control+XF86AudioRaiseVolume" = "exec --no-startup-id ${changeAudio} up 1"; "Control+XF86AudioLowerVolume" = "exec --no-startup-id ${changeAudio} down 1"; - "XF86AudioMute" = "exec pamixer --toggle-mute"; - "XF86AudioMicMute" = "exec pamixer --default-source --toggle-mute"; + "XF86AudioMute" = "exec --no-startup-id ${changeAudio} toggle"; + "XF86AudioMicMute" = "exec --no-startup-id ${changeAudio} toggle mic"; "XF86AudioPlay" = "exec playerctl play-pause"; "XF86AudioNext" = "exec playerctl next"; From de547797754953f72f675c2614489d03cfb5b9c8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 23 Nov 2021 17:08:46 +0100 Subject: [PATCH 0438/1588] flake: agenix has renamed its branch to 'main' --- flake.lock | 8 ++++---- flake.nix | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 5f75c7f..3f88a2d 100644 --- a/flake.lock +++ b/flake.lock @@ -7,16 +7,16 @@ ] }, "locked": { - "lastModified": 1634404028, - "narHash": "sha256-JyP2Y6JCCYvUcVz7CXX5pXUfTGTU4GX51Yza82BgMfk=", + "lastModified": 1637625975, + "narHash": "sha256-ByDgmhpLykhAVeaFggjqoSRdl2OzTDODnxjPuu97fL4=", "owner": "ryantm", "repo": "agenix", - "rev": "53aa91b4170da35a96fab1577c9a34bc0da44e27", + "rev": "a0e9ca505c82e762d39e9477a428b537a0aab022", "type": "github" }, "original": { "owner": "ryantm", - "ref": "master", + "ref": "main", "repo": "agenix", "type": "github" } diff --git a/flake.nix b/flake.nix index 39e0eb6..3b8c722 100644 --- a/flake.nix +++ b/flake.nix @@ -5,7 +5,7 @@ type = "github"; owner = "ryantm"; repo = "agenix"; - ref = "master"; + ref = "main"; inputs = { nixpkgs.follows = "nixpkgs"; }; From d86ff6192c8055b0b59388cf06d2ff7232fb49b8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 23 Nov 2021 18:53:11 +0100 Subject: [PATCH 0439/1588] modules: system: nix: don't change daemon niceness This option doesn't really work the way it should anyway [1]. This reverts commit cbf6ea9ac93c8bc140396395cdcae0c12fb9c608. [1]: https://github.com/NixOS/nixpkgs/pull/138741 --- modules/system/nix/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 04888ac..0f2f8c3 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -18,9 +18,6 @@ in extraOptions = '' experimental-features = nix-command flakes ''; - - # Keep my system responsive during builds - daemonNiceLevel = 19; }; } From 48a9f9b11efdfeac5f99127618483b6450b27311 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 29 Nov 2021 13:13:43 +0100 Subject: [PATCH 0440/1588] home: git: use diff-highlight in interactive diffs Now even `git log -p` and `git add -p` can use the more readable diffs. --- home/git/default.nix | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/home/git/default.nix b/home/git/default.nix index e9ccde8..432bf60 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -3,6 +3,7 @@ let cfg = config.my.home.git; inherit (lib.my) mkMailAddress; + diff-highlight = "${pkgs.gitAndTools.gitFull}/share/git/contrib/diff-highlight/diff-highlight"; in { options.my.home.git = with lib.my; { @@ -99,15 +100,15 @@ in defaultBranch = "main"; }; - pager = - let - diff-highlight = "${pkgs.gitAndTools.gitFull}/share/git/contrib/diff-highlight/diff-highlight"; - in - { - diff = "${diff-highlight} | less"; - log = "${diff-highlight} | less"; - show = "${diff-highlight} | less"; - }; + interactive = { + diffFilter = "${diff-highlight}"; + }; + + pager = { + diff = "${diff-highlight} | less"; + log = "${diff-highlight} | less"; + show = "${diff-highlight} | less"; + }; pull = { # Avoid useless merge commits From 281edd4eac22ac4193b7627b201ac556841c20a6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 19 Mar 2021 23:17:49 +0000 Subject: [PATCH 0441/1588] home: git: switch to 'delta' Now that my issue with it has been resolved [1], let's switch to the more mature tool. This also solves a small issue that I had with `diff-highlight` which is that non-highlighted text should not be boldened. [1]: https://github.com/dandavison/delta/issues/544 --- home/git/default.nix | 45 ++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/home/git/default.nix b/home/git/default.nix index 432bf60..8603022 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -3,7 +3,6 @@ let cfg = config.my.home.git; inherit (lib.my) mkMailAddress; - diff-highlight = "${pkgs.gitAndTools.gitFull}/share/git/contrib/diff-highlight/diff-highlight"; in { options.my.home.git = with lib.my; { @@ -40,6 +39,33 @@ in lfs.enable = true; + delta = { + enable = true; + + options = { + features = "diff-highlight decorations"; + + # Less jarring style for `diff-highlight` emulation + diff-highlight = { + minus-style = "red"; + minus-non-emph-style = "red"; + minus-emph-style = "bold red 52"; + + plus-style = "green"; + plus-non-emph-style = "green"; + plus-emph-style = "bold green 22"; + + whitespace-error-style = "reverse red"; + }; + + # Personal preference for easier reading + decorations = { + keep-plus-minus-markers = true; + paging = "always"; + }; + }; + }; + # There's more extraConfig = { # Makes it a bit more readable @@ -73,13 +99,6 @@ in whitespace = "red reverse"; }; - "color.diff-highlight" = { - oldNormal = "red bold"; - oldHighlight = "red bold 52"; - newNormal = "green bold"; - newHighlight = "green bold 22"; - }; - commit = { # Show my changes when writing the message verbose = true; @@ -100,16 +119,6 @@ in defaultBranch = "main"; }; - interactive = { - diffFilter = "${diff-highlight}"; - }; - - pager = { - diff = "${diff-highlight} | less"; - log = "${diff-highlight} | less"; - show = "${diff-highlight} | less"; - }; - pull = { # Avoid useless merge commits rebase = true; From eb89d7feb3b4a646156abdb6ceba9e31d6e3648f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 30 Nov 2021 13:51:56 +0100 Subject: [PATCH 0442/1588] home: restart services automatically (again) I think my issue was *not* related to this, so I might as well keep using it since it does seem useful in the long run. This reverts commit a94f349dde7e2a12565a49ff28714b7c92fc3b3d. --- home/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/default.nix b/home/default.nix index e68c53b..b88dfed 100644 --- a/home/default.nix +++ b/home/default.nix @@ -40,4 +40,7 @@ # Who am I? home.username = "ambroisie"; + + # Start services automatically + systemd.user.startServices = "sd-switch"; } From 07b60f8f5261bb172b6048ac6267adf32aaf5ac8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 30 Nov 2021 13:45:05 +0100 Subject: [PATCH 0443/1588] flake: bump inputs And make my configuration build after the removed option from `programs.direnv` in home-manager. --- flake.lock | 36 ++++++++++++++++++------------------ home/direnv/default.nix | 2 -- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/flake.lock b/flake.lock index 3f88a2d..09e5a94 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1637625975, - "narHash": "sha256-ByDgmhpLykhAVeaFggjqoSRdl2OzTDODnxjPuu97fL4=", + "lastModified": 1637793790, + "narHash": "sha256-oPXavjxETEWGXq8g7kQHyRLKUmLX2yPtGn+t3V0mrTY=", "owner": "ryantm", "repo": "agenix", - "rev": "a0e9ca505c82e762d39e9477a428b537a0aab022", + "rev": "f85eea0e29fa9a8924571d0e398215e175f80d55", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1634851050, - "narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=", + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c91f3de5adaf1de973b797ef7485e441a65b8935", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1636274622, - "narHash": "sha256-tZYuGhqcfH7piCsrUrIYM0P3oPJcoBxGkuxeFNVxkCc=", + "lastModified": 1638150501, + "narHash": "sha256-aWH3MRmjUtx8ciSGLegBJC5mhymsuroHPs74ZldrNTU=", "owner": "nix-community", "repo": "home-manager", - "rev": "2917ef23b398a22ee33fb34b5766b28728228ab1", + "rev": "9de77227d7780518cfeaee5a917970247f3ecc56", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1636267212, - "narHash": "sha256-KDS173KqmqrYUPY9N4vf750GxIo+S6E0djyq2BsQm8s=", + "lastModified": 1638110343, + "narHash": "sha256-hQaow8sGPyUrXgrqgDRsfA+73uR0vms2goTQNxIAaRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c935f5e0add2cf0ae650d072c8357533e21b0c35", + "rev": "942eb9a335b4cd22fa6a7be31c494e53e76f5637", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1636465115, - "narHash": "sha256-XgCV91RrYNRJbXk5jEtiVVgvMq9kSRKVOCvN3ajsooo=", + "lastModified": 1638176109, + "narHash": "sha256-T8blSCr797rOBvhKwHm3kMsq+l15zjrCui4xowI3IAU=", "owner": "nix-community", "repo": "NUR", - "rev": "bfe7c1693a87c72201d8914356374a4798bfbb39", + "rev": "1dfa0d2680bcafcd29ce1a4c644dea88f758f207", "type": "github" }, "original": { @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1634595438, - "narHash": "sha256-hV9D41fqTateTligwNd9dmJKQ0R0w6RpCN92xR3LhHk=", + "lastModified": 1637745948, + "narHash": "sha256-DmQG1bZk24eS+BAHwnHPyYIadMLKbq0d1b//iapYIPU=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "06fa80325b6fe3b28d136071dd0ce55d4817e9fd", + "rev": "c3b4f94350b0e59c2546fa85890cc70d03616b9c", "type": "github" }, "original": { diff --git a/home/direnv/default.nix b/home/direnv/default.nix index cf32628..86409f0 100644 --- a/home/direnv/default.nix +++ b/home/direnv/default.nix @@ -12,8 +12,6 @@ in nix-direnv = { # A better `use_nix` enable = true; - # And `use_flake` - enableFlakes = true; }; }; } From c492774baac230238462bf15d6d6a7d76669cf0e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 6 Dec 2021 21:24:31 +0100 Subject: [PATCH 0444/1588] home: git: do not change metadata color --- home/git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/git/default.nix b/home/git/default.nix index 8603022..6f4434b 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -60,6 +60,7 @@ in # Personal preference for easier reading decorations = { + commit-style = "raw"; # Do not recolor meta information keep-plus-minus-markers = true; paging = "always"; }; From 070a929f884e321211c8741698b760b89a8eb68d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Dec 2021 19:03:40 +0100 Subject: [PATCH 0445/1588] flake: bump inputs And use renamed option for agenix identities. --- flake.lock | 24 ++++++++++++------------ modules/secrets/default.nix | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/flake.lock b/flake.lock index 09e5a94..6560222 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1637793790, - "narHash": "sha256-oPXavjxETEWGXq8g7kQHyRLKUmLX2yPtGn+t3V0mrTY=", + "lastModified": 1638837456, + "narHash": "sha256-WHLOxthAGx/wXw3QUa/lFE3mr6cQtnXfFYZ0DNyYwt4=", "owner": "ryantm", "repo": "agenix", - "rev": "f85eea0e29fa9a8924571d0e398215e175f80d55", + "rev": "57806bf7e340f4cae705c91748d4fdf8519293a9", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1638150501, - "narHash": "sha256-aWH3MRmjUtx8ciSGLegBJC5mhymsuroHPs74ZldrNTU=", + "lastModified": 1638571010, + "narHash": "sha256-KSO7u13VRLdklQTKYJaBSfVcurEvw+HifAsHR7V2i5E=", "owner": "nix-community", "repo": "home-manager", - "rev": "9de77227d7780518cfeaee5a917970247f3ecc56", + "rev": "781d25b315def05cd7ede3765226c54216f0b1fe", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1638110343, - "narHash": "sha256-hQaow8sGPyUrXgrqgDRsfA+73uR0vms2goTQNxIAaRQ=", + "lastModified": 1638806821, + "narHash": "sha256-v2qd2Bsmzft53s43eCbN+4ocrLksRdFLyF/MAGuWuDA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "942eb9a335b4cd22fa6a7be31c494e53e76f5637", + "rev": "bc5d68306b40b8522ffb69ba6cff91898c2fbbff", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1638176109, - "narHash": "sha256-T8blSCr797rOBvhKwHm3kMsq+l15zjrCui4xowI3IAU=", + "lastModified": 1638891267, + "narHash": "sha256-oj0u21aQSwmYHKlvV00/jIsTw83zjAVhWeUWeTUGM00=", "owner": "nix-community", "repo": "NUR", - "rev": "1dfa0d2680bcafcd29ce1a4c644dea88f758f207", + "rev": "e06e0894dd2b1dc6835b386060b1dcee513775f4", "type": "github" }, "original": { diff --git a/modules/secrets/default.nix b/modules/secrets/default.nix index eb17892..e8cb866 100644 --- a/modules/secrets/default.nix +++ b/modules/secrets/default.nix @@ -21,7 +21,7 @@ in lib.mapAttrs' convertSecrets secrets; - sshKeyPaths = options.age.sshKeyPaths.default ++ [ + identityPaths = options.age.identityPaths.default ++ [ # FIXME: hard-coded path, could be inexistent "/home/ambroisie/.ssh/id_ed25519" ]; From 4d5d66291398ef964b7a79321807fe5ad29262a4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Dec 2021 19:05:04 +0100 Subject: [PATCH 0446/1588] modules: services: nextcloud: upgrade version --- modules/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index d1461b8..976d21f 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -31,7 +31,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud22; + package = pkgs.nextcloud23; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From 0435a50675ded20e49713a6ab694eedb7ae0668e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Dec 2021 23:34:46 +0100 Subject: [PATCH 0447/1588] home: vim: cut back on fzf mappings I only ever use the buffer and files regularly. --- home/vim/after/plugin/mappings/fzf.vim | 35 +------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/home/vim/after/plugin/mappings/fzf.vim b/home/vim/after/plugin/mappings/fzf.vim index 8cfb8b8..6bf4a44 100644 --- a/home/vim/after/plugin/mappings/fzf.vim +++ b/home/vim/after/plugin/mappings/fzf.vim @@ -1,38 +1,5 @@ " Only git-tracked files, Vim needs to be in a Git repository -nnoremap fg :GFiles - -" All files -nnoremap ff :Files +nnoremap ff :GFiles " Currently open buffers nnoremap fb :Buffers - -" Buffer history -nnoremap fh :History - -" Tags in buffer -nnoremap ft :BTags - -" Tags in all project files -nnoremap fT :Tags - -" Snippets for the current fileytpe (using Ultisnips) -nnoremap fs :Snippets - -" All available commands -nnoremap f: :Commands - -" All commits (using fugitive) -nnoremap fc :Commits - -" All commits for the current buffer (using fugitive) -nnoremap fC :BCommits - -" Select normal mode mapping by searching for its name -nmap (fzf-maps-n) - -" Select visual mode mapping by searching for its name -xmap (fzf-maps-x) - -" Select operator pending mode mapping by searching for its name -omap (fzf-maps-o) From 5c7ef3232e220707f3d7edded072b3e536dc8cf1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Dec 2021 23:47:27 +0100 Subject: [PATCH 0448/1588] modules: system: nix: add inputs to NIX_PATH --- modules/system/nix/default.nix | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 0f2f8c3..9b59f84 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -1,5 +1,5 @@ # Nix related settings -{ config, inputs, lib, pkgs, ... }: +{ config, inputs, lib, options, pkgs, ... }: let cfg = config.my.system.nix; in @@ -8,6 +8,8 @@ in enable = my.mkDisableOption "nix configuration"; addToRegistry = my.mkDisableOption "add inputs and self to registry"; + + addToNixPath = my.mkDisableOption "add inputs and self to nix path"; }; config = lib.mkIf cfg.enable (lib.mkMerge [ @@ -31,5 +33,13 @@ in nur.flake = inputs.nur; }; }) + + (lib.mkIf cfg.addToNixPath { + nix.nixPath = options.nix.nixPath.default ++ [ + "self=${inputs.self}" + "pkgs=${inputs.nixpkgs}" + "nur=${inputs.nur}" + ]; + }) ]); } From 4003e9845749a5afbec6456b3b3f91a434eb288f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 Jan 2022 11:08:02 +0100 Subject: [PATCH 0449/1588] machines: aramis: home: add teams package Unfortunately, it is the preferred communication method at $WORK. --- machines/aramis/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 404a4d0..e54d44f 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -14,6 +14,7 @@ jellyfin-media-player # Wraps the webui and mpv together pavucontrol # Audio mixer GUI quasselClient # IRC client + teams # Work requires it... transgui # Transmission remote ]; # Minimal video player From 923227f371dbc347d1cf9bb887058d4d91c1a528 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 Jan 2022 11:09:35 +0100 Subject: [PATCH 0450/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 6560222..cea0e05 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1638837456, - "narHash": "sha256-WHLOxthAGx/wXw3QUa/lFE3mr6cQtnXfFYZ0DNyYwt4=", + "lastModified": 1640802000, + "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", "owner": "ryantm", "repo": "agenix", - "rev": "57806bf7e340f4cae705c91748d4fdf8519293a9", + "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1638571010, - "narHash": "sha256-KSO7u13VRLdklQTKYJaBSfVcurEvw+HifAsHR7V2i5E=", + "lastModified": 1641355100, + "narHash": "sha256-rg5VlPXjmmTxlHJllm3udjuMd2QjHPN1OuaAHn3fe1k=", "owner": "nix-community", "repo": "home-manager", - "rev": "781d25b315def05cd7ede3765226c54216f0b1fe", + "rev": "426ab2cf111fca61308bd86fe652e14aa12cc2d2", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1638806821, - "narHash": "sha256-v2qd2Bsmzft53s43eCbN+4ocrLksRdFLyF/MAGuWuDA=", + "lastModified": 1641230035, + "narHash": "sha256-hFyqihERaTbLxCOlugy/rpp22VLtLh8SPRnA2uu3F/8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bc5d68306b40b8522ffb69ba6cff91898c2fbbff", + "rev": "78cd22c1b8604de423546cd49bfe264b786eca13", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1638891267, - "narHash": "sha256-oj0u21aQSwmYHKlvV00/jIsTw83zjAVhWeUWeTUGM00=", + "lastModified": 1641355656, + "narHash": "sha256-8R99GoEDO34mKzS5b47pnmEOSZA9zEWppM+JbR0gouQ=", "owner": "nix-community", "repo": "NUR", - "rev": "e06e0894dd2b1dc6835b386060b1dcee513775f4", + "rev": "777c477c1dce9e5f2b47ca79b1db11a59207391a", "type": "github" }, "original": { @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1637745948, - "narHash": "sha256-DmQG1bZk24eS+BAHwnHPyYIadMLKbq0d1b//iapYIPU=", + "lastModified": 1639823344, + "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "c3b4f94350b0e59c2546fa85890cc70d03616b9c", + "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", "type": "github" }, "original": { From f38614955092f1908aa3816d1b72528b562a38c9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 Jan 2022 08:52:30 +0100 Subject: [PATCH 0451/1588] home: wm: change default screen-lock timeout 5 minutes is too short. --- home/wm/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/wm/default.nix b/home/wm/default.nix index eae9f14..1d5a371 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -78,7 +78,7 @@ in timeout = mkOption { type = types.ints.between 1 60; - default = 5; + default = 15; example = 1; description = "Inactive time interval to lock the screen automatically"; }; From 607872753ddecfef2c0f3b4fafa227ac21435ac3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 Jan 2022 22:19:07 +0100 Subject: [PATCH 0452/1588] home: add discord --- home/default.nix | 1 + home/discord/default.nix | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 home/discord/default.nix diff --git a/home/default.nix b/home/default.nix index b88dfed..82d2cc3 100644 --- a/home/default.nix +++ b/home/default.nix @@ -5,6 +5,7 @@ ./bluetooth ./comma ./direnv + ./discord ./documentation ./feh ./firefox diff --git a/home/discord/default.nix b/home/discord/default.nix new file mode 100644 index 0000000..7348bb4 --- /dev/null +++ b/home/discord/default.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.discord; + + jsonFormat = pkgs.formats.json { }; +in +{ + options.my.home.discord = with lib; { + enable = mkEnableOption "discord configuration"; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + discord + ]; + + xdg.configFile."discord/settings.json".source = + jsonFormat.generate "discord.json" { + # Do not keep me from using the app just to force an update + SKIP_HOST_UPDATE = true; + }; + }; +} From 1908897abc0089a5fc553ccd435ce72d98029bf0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 9 Jan 2022 22:19:28 +0100 Subject: [PATCH 0453/1588] machines: aramis: home: enable discord --- machines/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index e54d44f..1c816a7 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -1,6 +1,8 @@ { pkgs, ... }: { my.home = { + # Some amount of social life + discord.enable = true; # Image viewver feh.enable = true; # Firefo profile and extensions From e6fe5e57c910dee3a250dbe5370b8c77e396e08e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 12 Jan 2022 18:22:43 +0100 Subject: [PATCH 0454/1588] modules: system: add podman --- modules/system/default.nix | 1 + modules/system/podman/default.nix | 25 +++++++++++++++++++++++++ modules/system/users/default.nix | 1 + 3 files changed, 27 insertions(+) create mode 100644 modules/system/podman/default.nix diff --git a/modules/system/default.nix b/modules/system/default.nix index 5165e64..3c81cac 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -8,6 +8,7 @@ ./language ./nix ./packages + ./podman ./users ]; } diff --git a/modules/system/podman/default.nix b/modules/system/podman/default.nix new file mode 100644 index 0000000..c267ec6 --- /dev/null +++ b/modules/system/podman/default.nix @@ -0,0 +1,25 @@ +# Podman related settings +{ config, inputs, lib, options, pkgs, ... }: +let + cfg = config.my.system.podman; +in +{ + options.my.system.podman = with lib; { + enable = mkEnableOption "podman configuration"; + }; + + config = lib.mkIf cfg.enable { + virtualisation.podman = { + enable = true; + + # Use fake `docker` command to redirect to `podman` + dockerCompat = true; + + # Expose a docker-like socket + dockerSocket.enable = true; + + # Allow DNS resolution in the default network + defaultNetwork.dnsname.enable = true; + }; + }; +} diff --git a/modules/system/users/default.nix b/modules/system/users/default.nix index b36114f..3fa5b2e 100644 --- a/modules/system/users/default.nix +++ b/modules/system/users/default.nix @@ -30,6 +30,7 @@ in "media" # access to media files "networkmanager" # wireless configuration "plugdev" # usage of ZSA keyboard tools + "podman" # usage of `podman` socket "video" # screen control "wheel" # `sudo` for the user. ]; From 5b130951fbb17266d76a2d0b03702f83ecb0771a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 12 Jan 2022 18:40:29 +0100 Subject: [PATCH 0455/1588] machines: porthos: services: disable jackett Prowlarr has been humming along just fine, and works even better than jackett. --- machines/porthos/services.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 5661773..f16cfdf 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -42,7 +42,6 @@ in gitea.enable = true; # Meta-indexers indexers = { - jackett.enable = true; nzbhydra.enable = true; prowlarr.enable = true; }; From 36728068bd155d8fcbd6e4f06b57c750829f610c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 12 Jan 2022 18:41:23 +0100 Subject: [PATCH 0456/1588] machines: porthos: services: disable nzbhydra Same deal as jackett: prowlarr has been working perfectly adequately for a while now. --- machines/porthos/services.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index f16cfdf..4f3f345 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -42,7 +42,6 @@ in gitea.enable = true; # Meta-indexers indexers = { - nzbhydra.enable = true; prowlarr.enable = true; }; # Jellyfin media server From ce25ed64451a09d07340d858e129398e96cb6638 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 12 Jan 2022 20:43:30 +0100 Subject: [PATCH 0457/1588] home: firefox: trydactyl: ignore prime video --- home/firefox/tridactyl/tridactylrc | 1 + 1 file changed, 1 insertion(+) diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index d43965f..3dd1fd4 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -69,6 +69,7 @@ autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www", " Disabled websites {{{ blacklistadd netflix.com +blacklistadd primevideo.com blacklistadd jellyfin.belanyi.fr " }}} From f86a04f88898dd87717c2393ec12247dcd631376 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Jan 2022 18:39:11 +0100 Subject: [PATCH 0458/1588] pkgs: add psst --- pkgs/default.nix | 2 ++ pkgs/psst/default.nix | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 pkgs/psst/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index a179dfb..af39384 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -26,6 +26,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { nolimips = pkgs.callPackage ./nolimips { }; + psst = pkgs.callPackage ./psst { }; + rofi-bluetooth = pkgs.callPackage ./rofi-bluetooth { }; unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; diff --git a/pkgs/psst/default.nix b/pkgs/psst/default.nix new file mode 100644 index 0000000..6eca44b --- /dev/null +++ b/pkgs/psst/default.nix @@ -0,0 +1,34 @@ +{ lib, alsa-lib, cairo, dbus, fetchFromGitHub, gtk3, openssl, pkg-config, rustPlatform }: +rustPlatform.buildRustPackage rec { + pname = "psst"; + version = "unstable-2022-01-13"; + + src = fetchFromGitHub { + owner = "jpochyla"; + repo = "psst"; + rev = "8f142a3232a706537c8477bff43d2e52309f6b78"; + sha256 = "sha256-YA9p6KHuZXt43OrfShO5d3Cj8L8GPpczRQlncJqM7QI="; + }; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + alsa-lib + cairo + dbus + gtk3 + openssl + ]; + + cargoSha256 = "sha256-iA/ja7B73JyiXQ9kBzk1C5wtX+HPBrngCS+8rFDHbcs="; + + meta = with lib; { + description = "Fast and multi-platform Spotify client with native GUI"; + homepage = "https://github.com/jpochyla/psst"; + platforms = platforms.linux; + license = with licenses; [ mit ]; + maintainers = with maintainers; [ ambroisie ]; + }; +} From 8151b28527daaabec7da01199b44dd111736b4e7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 14 Jan 2022 13:30:20 +0100 Subject: [PATCH 0459/1588] modules: services: nginx: use 'acme.default.email' The option `security.acme.email` has been deprecated. --- modules/services/nginx/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index 7e4d6f4..d99ff2d 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -387,7 +387,8 @@ in users.users.nginx.extraGroups = [ "acme" ]; security.acme = { - email = lib.my.mkMailAddress "bruno.acme" "belanyi.fr"; + defaults.email = lib.my.mkMailAddress "bruno.acme" "belanyi.fr"; + acceptTerms = true; # Use DNS wildcard certificate certs = From ba5782e74816a6599101b6447bd6d72cfaffbcc6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 14 Jan 2022 15:06:44 +0100 Subject: [PATCH 0460/1588] modules: system: packages: remove some packages They either belong in a nix shell or are taken care of by other configurations. --- modules/system/packages/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/system/packages/default.nix b/modules/system/packages/default.nix index faee86b..ceb85dd 100644 --- a/modules/system/packages/default.nix +++ b/modules/system/packages/default.nix @@ -12,9 +12,6 @@ in config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ - git - git-crypt - mosh vim wget ]; From 1987711fce18c2c1e695db046bee10ad7aa1dfbb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 Jan 2022 15:42:32 +0100 Subject: [PATCH 0461/1588] flake: bump inputs Also change a removed package alias' name. --- flake.lock | 30 +++++++++++++++--------------- home/gtk/default.nix | 4 ++-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/flake.lock b/flake.lock index cea0e05..6b8581e 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1640802000, - "narHash": "sha256-ZiI94Zv/IgW64fqKrtVaQqfUCkn9STvAjgfFmvtqcQ8=", + "lastModified": 1641576265, + "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", "owner": "ryantm", "repo": "agenix", - "rev": "c5558c88b2941bf94886dfdede6926b1ba5f5629", + "rev": "08b9c96878b2f9974fc8bde048273265ad632357", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1638122382, - "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", "owner": "numtide", "repo": "flake-utils", - "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1641355100, - "narHash": "sha256-rg5VlPXjmmTxlHJllm3udjuMd2QjHPN1OuaAHn3fe1k=", + "lastModified": 1643066491, + "narHash": "sha256-wIgqFCJ6v7COpgNY0lMHDnU9RP2dJgasa2jKkB0zhWw=", "owner": "nix-community", "repo": "home-manager", - "rev": "426ab2cf111fca61308bd86fe652e14aa12cc2d2", + "rev": "462d4a7abdfb8cb762584745a480ad01c207570e", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1641230035, - "narHash": "sha256-hFyqihERaTbLxCOlugy/rpp22VLtLh8SPRnA2uu3F/8=", + "lastModified": 1642903813, + "narHash": "sha256-0lNfGW8sNfyTrixoQhVG00Drl/ECaf5GbfKAQ1ZDoyE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "78cd22c1b8604de423546cd49bfe264b786eca13", + "rev": "689b76bcf36055afdeb2e9852f5ecdd2bf483f87", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1641355656, - "narHash": "sha256-8R99GoEDO34mKzS5b47pnmEOSZA9zEWppM+JbR0gouQ=", + "lastModified": 1643102027, + "narHash": "sha256-5kvpVU3SLdCLnX3OH1hBsNuwJiKZ3g3cNGpFhHF96NE=", "owner": "nix-community", "repo": "NUR", - "rev": "777c477c1dce9e5f2b47ca79b1db11a59207391a", + "rev": "124931ce061845fb0eb1c2a0f031f3fa9d4d6746", "type": "github" }, "original": { diff --git a/home/gtk/default.nix b/home/gtk/default.nix index 77ca477..62d3f81 100644 --- a/home/gtk/default.nix +++ b/home/gtk/default.nix @@ -21,12 +21,12 @@ in }; iconTheme = { - package = pkgs.gnome3.gnome_themes_standard; + package = pkgs.gnome.gnome-themes-extra; name = "Adwaita"; }; theme = { - package = pkgs.gnome3.gnome_themes_standard; + package = pkgs.gnome.gnome-themes-extra; name = "Adwaita"; }; }; From 7229eaca21e348fdace05c67ec1f5c0bfab0de2d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 Jan 2022 15:44:12 +0100 Subject: [PATCH 0462/1588] home: firefox: add 'consent-o-matic' --- home/firefox/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index b161834..b0b624f 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -68,6 +68,7 @@ in extensions = with pkgs.nur.repos.rycee.firefox-addons; ([ bitwarden + consent-o-matic form-history-control https-everywhere i-dont-care-about-cookies From b33cefde63e27fa9c36a574969956eafbe96e7f8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 Jan 2022 15:45:02 +0100 Subject: [PATCH 0463/1588] home: firefox: remove 'i-dont-care-about-cookies' Should be superseded by Consent-O-Matic now. --- home/firefox/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index b0b624f..41389b5 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -71,7 +71,6 @@ in consent-o-matic form-history-control https-everywhere - i-dont-care-about-cookies reddit-comment-collapser reddit-enhancement-suite refined-github From ef875f881f08a756846587159da543460aa0a73e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 25 Jan 2022 15:46:17 +0100 Subject: [PATCH 0464/1588] home: ssh: add 'work' host --- home/git/default.ignore | 4 ++++ home/ssh/default.nix | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/home/git/default.ignore b/home/git/default.ignore index a169a28..77aedcc 100644 --- a/home/git/default.ignore +++ b/home/git/default.ignore @@ -24,3 +24,7 @@ compile_commands.json # Swap and backup files *~ ~.swp + +# Direnv files +.envrc +.direnv/ diff --git a/home/ssh/default.nix b/home/ssh/default.nix index 3bd7f28..cbfd30c 100644 --- a/home/ssh/default.nix +++ b/home/ssh/default.nix @@ -40,6 +40,12 @@ in identityFile = "~/.ssh/shared_rsa"; user = "ambroisie"; }; + + work = { + hostname = "workspaces.dgexsol.fr"; + identityFile = "~/.ssh/shared_rsa"; + user = "bruno_belanyi"; + }; }; extraConfig = '' From dbc808ce50117d264d366a116292c989ff28dbb5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Feb 2022 11:40:24 +0100 Subject: [PATCH 0465/1588] home: wm: i3bar: show volume when muted --- home/wm/i3bar/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index 664f11c..a89c6bc 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -68,6 +68,7 @@ in } { block = "sound"; + show_volume_when_muted = true; } { block = "time"; From b4796947db05918e1b56d3e75323ba9a80e91a25 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Feb 2022 14:49:06 +0100 Subject: [PATCH 0466/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 6b8581e..8dd7e2e 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1641576265, - "narHash": "sha256-G4W39k5hdu2kS13pi/RhyTOySAo7rmrs7yMUZRH0OZI=", + "lastModified": 1643841757, + "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", "owner": "ryantm", "repo": "agenix", - "rev": "08b9c96878b2f9974fc8bde048273265ad632357", + "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1642700792, - "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1643066491, - "narHash": "sha256-wIgqFCJ6v7COpgNY0lMHDnU9RP2dJgasa2jKkB0zhWw=", + "lastModified": 1643933104, + "narHash": "sha256-NZPuFxRsZKN8pjRuHPpzlMyt6JQhcjiduBG8bMghSjE=", "owner": "nix-community", "repo": "home-manager", - "rev": "462d4a7abdfb8cb762584745a480ad01c207570e", + "rev": "63dccc4e60422c1db2c3929b2fd1541f36b7e664", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1642903813, - "narHash": "sha256-0lNfGW8sNfyTrixoQhVG00Drl/ECaf5GbfKAQ1ZDoyE=", + "lastModified": 1644033087, + "narHash": "sha256-beskas17YPhrcnanzywake9/z+k+xOWmavW24YUN8ng=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "689b76bcf36055afdeb2e9852f5ecdd2bf483f87", + "rev": "9f697d60e4d9f08eacf549502528bfaed859d33b", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1643102027, - "narHash": "sha256-5kvpVU3SLdCLnX3OH1hBsNuwJiKZ3g3cNGpFhHF96NE=", + "lastModified": 1644200006, + "narHash": "sha256-TCOuqFePZrcRAezpOUtObpXtKgMZS+nd/qREW4PQG3Y=", "owner": "nix-community", "repo": "NUR", - "rev": "124931ce061845fb0eb1c2a0f031f3fa9d4d6746", + "rev": "7429ba7df4ddde4a0d9ec388a22e9db81add54e4", "type": "github" }, "original": { From af25f555ac19bba559e00ee8ba605b679e6e60db Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Feb 2022 15:00:52 +0100 Subject: [PATCH 0467/1588] home: packages: add 'mosh' --- home/packages/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/packages/default.nix b/home/packages/default.nix index acb1f79..10d1c12 100644 --- a/home/packages/default.nix +++ b/home/packages/default.nix @@ -19,6 +19,7 @@ in config.home.packages = with pkgs; lib.mkIf cfg.enable ([ file + mosh rr termite.terminfo ] ++ cfg.additionalPackages); From 44efea17b5722fb97bc5f4a58b6f3edef6c1baf7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Feb 2022 15:51:52 +0100 Subject: [PATCH 0468/1588] home: firefox: tridactyl: fix DDG mapping Taken straight from upstream's sample configuration. --- home/firefox/tridactyl/tridactylrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index 3dd1fd4..84c3927 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -22,8 +22,8 @@ bindurl www.google.com f hint -Jc #search div:not(.action-menu) > a bindurl www.google.com F hint -Jbc #search div:not(.action-menu) > a " Only hint search results on DuckDuckGo -bindurl ^https://duckduckgo.com f hint -Jc [class=result__a] -bindurl ^https://duckduckgo.com F hint -Jbc [class=result__a] +bindurl ^https://duckduckgo.com f hint -Jc [class~=result__a] +bindurl ^https://duckduckgo.com F hint -Jbc [class~=result__a] " Only hint item pages on Hacker News bindurl news.ycombinator.com ;f hint -Jc .age > a From 7e8936fc55377c006d8ccbc9c47fe5f4c6c211b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Feb 2022 17:00:18 +0100 Subject: [PATCH 0469/1588] home: firefox: tridactyl: fix HN comment folding --- home/firefox/tridactyl/tridactylrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index 84c3927..dc59a2e 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -12,7 +12,7 @@ set editorcmd termite --class tridactyl_editor -e 'vim %f' " Binds {{{ " Reddit et al. {{{ " Toggle comments on Reddit, Hacker News, Lobste.rs -bind ;c hint -c [class*="expand"],[class="togg"],[class="comment_folder"] +bind ;c hint -c [class*="expand"],[class*="togg"],[class="comment_folder"] " Make `gu` take me back to subreddit from comments bindurl reddit.com gu urlparent 3 From 39431c2656434179c7ae88edd55782dd3f8daf60 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 8 Feb 2022 14:32:00 +0100 Subject: [PATCH 0470/1588] modules: system: nix: use structural 'settings' Instead of a stringly-typed `extraOptions`. --- modules/system/nix/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 9b59f84..16db0b4 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -17,9 +17,9 @@ in nix = { package = pkgs.nixFlakes; - extraOptions = '' - experimental-features = nix-command flakes - ''; + settings = { + experimental-features = [ "nix-command" "flakes" ]; + }; }; } From 8d4bbaf8863e53468b4f4d8c394e826a33689b56 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 8 Feb 2022 17:23:57 +0100 Subject: [PATCH 0471/1588] home: tmux: fix yanking configuration Use `tmux-yank` when a GUI is enabled, otherwise use the internal tmux buffer. In both cases, stay in copy mode after yanking. --- home/tmux/default.nix | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index ac2e1d2..f9b711c 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -1,6 +1,7 @@ { config, lib, pkgs, ... }: let cfg = config.my.home.tmux; + hasGUI = config.my.home.x.enable || (config.my.home.wm != null); in { options.my.home.tmux = with lib.my; { @@ -23,8 +24,16 @@ in pain-control # Better session management sessionist - # X clipboard integration - yank + (lib.optionalAttrs hasGUI { + # X clipboard integration + plugin = yank; + extraConfig = '' + # Use 'clipboard' because of misbehaving apps (e.g: firefox) + set -g @yank_selection_mouse 'clipboard' + # Stay in copy mode after yanking + set -g @yank_action 'copy-pipe' + ''; + }) { # Show when prefix has been pressed plugin = prefix-highlight; @@ -41,7 +50,11 @@ in extraConfig = '' # Better vim mode bind-key -T copy-mode-vi 'v' send -X begin-selection - bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel + ${ + lib.optionalString + (!hasGUI) + "bind-key -T copy-mode-vi 'y' send -X copy-selection" + } # Block selection in vim mode bind-key -Tcopy-mode-vi 'C-v' send -X begin-selection \; send -X rectangle-toggle ''; From cc12148dac028d0658cb8e85dce6074d0856f32a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 18 Feb 2022 12:12:29 +0100 Subject: [PATCH 0472/1588] pkgs: change-audio: 0.2.0 -> 0.3.0 Only boost audio beyond 100% if specifically asked for. --- pkgs/change-audio/change-audio | 21 +++++++++++++++++---- pkgs/change-audio/default.nix | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/pkgs/change-audio/change-audio b/pkgs/change-audio/change-audio index 5bb1588..612fecf 100755 --- a/pkgs/change-audio/change-audio +++ b/pkgs/change-audio/change-audio @@ -9,13 +9,26 @@ NOTIFY=( ) do_change_volume() { + local args=() + if [ "$1" = "up" ]; then - upDown="-i" + args+=("-i") else - upDown="-d" + args+=("-d") + fi + shift + + # Do not boost over 100% unless explitily asked for + if [ "$1" = "--force" ] || [ "$1" = "-f" ]; then + args=("--allow-boost" "${args[@]}") + shift fi - pamixer --allow-boost "$upDown" "$2" + # Volume + args+=("$1") + + pamixer "${args[@]}" + newVolume="$(pamixer --get-volume || true)" [ "$(pamixer --get-volume-human)" = "muted" ] && isMuted=true @@ -29,7 +42,7 @@ do_change_volume() { } do_toggle() { - args=() + local args=() if [ "${2:-audio}" = mic ]; then args+=(--default-source) MSG="Toggled microphone" diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index bf0f45c..d2e76b0 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -1,7 +1,7 @@ { lib, libnotify, makeWrapper, pamixer, shellcheck, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "change-audio"; - version = "0.2.0"; + version = "0.3.0"; src = ./change-audio; From a6a64047de8ff8e2adf87da6827b2e26a41712f8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 18 Feb 2022 12:17:29 +0100 Subject: [PATCH 0473/1588] home: wm: i3: only boost volume on 'Shift' mapping --- home/wm/i3/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 9b1dd44..c92285f 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -249,6 +249,12 @@ in "XF86AudioLowerVolume" = "exec --no-startup-id ${changeAudio} down 5"; "Control+XF86AudioRaiseVolume" = "exec --no-startup-id ${changeAudio} up 1"; "Control+XF86AudioLowerVolume" = "exec --no-startup-id ${changeAudio} down 1"; + + "Shift+XF86AudioRaiseVolume" = "exec --no-startup-id ${changeAudio} up --force 5"; + "Shift+XF86AudioLowerVolume" = "exec --no-startup-id ${changeAudio} down --force 5"; + "Control+Shift+XF86AudioRaiseVolume" = "exec --no-startup-id ${changeAudio} up --force 1"; + "Control+Shift+XF86AudioLowerVolume" = "exec --no-startup-id ${changeAudio} down --force 1"; + "XF86AudioMute" = "exec --no-startup-id ${changeAudio} toggle"; "XF86AudioMicMute" = "exec --no-startup-id ${changeAudio} toggle mic"; From 1b829076f8cef4711125176003e2bcc84bfb565b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 21 Feb 2022 18:53:56 +0100 Subject: [PATCH 0474/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 8dd7e2e..50a7c07 100644 --- a/flake.lock +++ b/flake.lock @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1643933104, - "narHash": "sha256-NZPuFxRsZKN8pjRuHPpzlMyt6JQhcjiduBG8bMghSjE=", + "lastModified": 1645244400, + "narHash": "sha256-o7KCd6ySFZ9/LbS62aTeuFmBWtP7Tt3Q3RcNjYgTgZU=", "owner": "nix-community", "repo": "home-manager", - "rev": "63dccc4e60422c1db2c3929b2fd1541f36b7e664", + "rev": "0232fe1b75e6d7864fd82b5c72f6646f87838fc3", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1644033087, - "narHash": "sha256-beskas17YPhrcnanzywake9/z+k+xOWmavW24YUN8ng=", + "lastModified": 1645334861, + "narHash": "sha256-We9ECiMglthzbZ5S6Myqqf+RHzBFZPoM2qL5/jDkUjs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9f697d60e4d9f08eacf549502528bfaed859d33b", + "rev": "d5f237872975e6fb6f76eef1368b5634ffcd266f", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1644200006, - "narHash": "sha256-TCOuqFePZrcRAezpOUtObpXtKgMZS+nd/qREW4PQG3Y=", + "lastModified": 1645458309, + "narHash": "sha256-vYTDBhS34kkdqK4HbPx10/SPDNGqAVNRc4rY8utbTwA=", "owner": "nix-community", "repo": "NUR", - "rev": "7429ba7df4ddde4a0d9ec388a22e9db81add54e4", + "rev": "8baa5621907fcbb463188f8a85652adf3b5d5c83", "type": "github" }, "original": { From ef36a100af49e67d8a7c79aeb0175e60013eec0a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 23 Feb 2022 21:06:03 +0100 Subject: [PATCH 0475/1588] home: vim: fix icon for read-only files --- home/vim/plugin/settings/lightline.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/vim/plugin/settings/lightline.vim b/home/vim/plugin/settings/lightline.vim index feaa733..039b2b3 100644 --- a/home/vim/plugin/settings/lightline.vim +++ b/home/vim/plugin/settings/lightline.vim @@ -63,7 +63,7 @@ let g:lightline#ale#indicator_ok='✓' " Show a lock icon when editing a read-only file when it makes sense function! LightlineReadonly() - return &ft!~?'help\|vimfiler\|netrw' && &readonly ? '' : '' + return &ft!~?'help\|vimfiler\|netrw' && &readonly ? '🔒' : '' endfunction " Show a '+' when the buffer is modified, '-' if not, when it makes sense From cc91b88b2811124e63d0d71919b5e5ad02594b0e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 12:12:57 +0100 Subject: [PATCH 0476/1588] flake: bump inputs And do not use 'pipewire-media-session' which is deprecated. --- flake.lock | 30 +++++++++++++++--------------- modules/hardware/sound/default.nix | 4 ---- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/flake.lock b/flake.lock index 50a7c07..6b99bf2 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1643841757, - "narHash": "sha256-9tKhu4JzoZvustC9IEWK6wKcDhPLuK/ICbLgm8QnLnk=", + "lastModified": 1646105662, + "narHash": "sha256-jdXCZbGZL0SWWi29GnAOFHUh/QvvP0IyaVLv1ZTDkBI=", "owner": "ryantm", "repo": "agenix", - "rev": "a17d1f30550260f8b45764ddbd0391f4b1ed714a", + "rev": "297cd58b418249240b9f1f155d52b1b17f292884", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1645244400, - "narHash": "sha256-o7KCd6ySFZ9/LbS62aTeuFmBWtP7Tt3Q3RcNjYgTgZU=", + "lastModified": 1645970334, + "narHash": "sha256-6nn4YF9bPtkxkB7bM6yJO3m//p3sGilxNQFjm1epLEM=", "owner": "nix-community", "repo": "home-manager", - "rev": "0232fe1b75e6d7864fd82b5c72f6646f87838fc3", + "rev": "ea85f4b1fdf3f25cf97dc49f4a9ec4eafda2ea25", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1645334861, - "narHash": "sha256-We9ECiMglthzbZ5S6Myqqf+RHzBFZPoM2qL5/jDkUjs=", + "lastModified": 1646159311, + "narHash": "sha256-ILKckkiG074t3a0pwaPLjio8zVWgowpEp7AUwI5HjHE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d5f237872975e6fb6f76eef1368b5634ffcd266f", + "rev": "18bd82edcc752d6a0e6cce1401ba0c81353a03ca", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1645458309, - "narHash": "sha256-vYTDBhS34kkdqK4HbPx10/SPDNGqAVNRc4rY8utbTwA=", + "lastModified": 1646188350, + "narHash": "sha256-EL6N9Rc6pL/6GQC7PPh/wh8DHwuzBvHvL0XWGsErSXw=", "owner": "nix-community", "repo": "NUR", - "rev": "8baa5621907fcbb463188f8a85652adf3b5d5c83", + "rev": "d70f39715a6f44d0148a6272fceeec4e13ce790e", "type": "github" }, "original": { @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1639823344, - "narHash": "sha256-jlsQb2y6A5dB1R0wVPLOfDGM0wLyfYqEJNzMtXuzCXw=", + "lastModified": 1646153636, + "narHash": "sha256-AlWHMzK+xJ1mG267FdT8dCq/HvLCA6jwmx2ZUy5O8tY=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "ff9c0b459ddc4b79c06e19d44251daa8e9cd1746", + "rev": "b6bc0b21e1617e2b07d8205e7fae7224036dfa4b", "type": "github" }, "original": { diff --git a/modules/hardware/sound/default.nix b/modules/hardware/sound/default.nix index 3a48641..e8ba7f7 100644 --- a/modules/hardware/sound/default.nix +++ b/modules/hardware/sound/default.nix @@ -49,10 +49,6 @@ in jack = { enable = true; }; - - media-session = { - enable = true; - }; }; }) From 5c3d3f5f1c2dce12acb768fae83ded97498db12f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 23 Feb 2022 17:37:33 +0100 Subject: [PATCH 0477/1588] home: vim: remove 'ALE' configuration First step to modernising my configuration to use the native LSP client instead. --- home/vim/after/ftplugin/bash.vim | 14 ---------- home/vim/after/ftplugin/c.vim | 14 ---------- home/vim/after/ftplugin/cpp.vim | 14 ---------- home/vim/after/ftplugin/d.vim | 6 ----- home/vim/after/ftplugin/gitsendemail.vim | 2 -- home/vim/after/ftplugin/haskell.vim | 20 -------------- home/vim/after/ftplugin/json.vim | 6 ----- home/vim/after/ftplugin/pandoc.vim | 4 --- home/vim/after/ftplugin/python.vim | 34 ------------------------ home/vim/after/ftplugin/rust.vim | 25 ----------------- home/vim/after/ftplugin/sh.vim | 14 ---------- home/vim/after/ftplugin/zsh.vim | 14 ---------- home/vim/after/plugin/mappings/ale.vim | 2 -- home/vim/default.nix | 2 -- home/vim/plugin/settings/ale.vim | 24 ----------------- home/vim/plugin/settings/lightline.vim | 19 ------------- 16 files changed, 214 deletions(-) delete mode 100644 home/vim/after/ftplugin/bash.vim delete mode 100644 home/vim/after/ftplugin/c.vim delete mode 100644 home/vim/after/ftplugin/cpp.vim delete mode 100644 home/vim/after/ftplugin/d.vim delete mode 100644 home/vim/after/ftplugin/gitsendemail.vim delete mode 100644 home/vim/after/ftplugin/json.vim delete mode 100644 home/vim/after/ftplugin/sh.vim delete mode 100644 home/vim/after/ftplugin/zsh.vim delete mode 100644 home/vim/after/plugin/mappings/ale.vim delete mode 100644 home/vim/plugin/settings/ale.vim diff --git a/home/vim/after/ftplugin/bash.vim b/home/vim/after/ftplugin/bash.vim deleted file mode 100644 index 2b69ab4..0000000 --- a/home/vim/after/ftplugin/bash.vim +++ /dev/null @@ -1,14 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Use shfmt as ALE fixer for bash -let b:ale_fixers=[ 'shfmt' ] -let b:undo_ftplugin.='|unlet! b:ale_fixers' - -" Indent with 4 spaces, simplify script, indent switch cases, use Bash variant -let b:ale_sh_shfmt_options='-i 4 -s -ci -ln bash' -let b:undo_ftplugin.='|unlet! b:ale_sh_shfmt_options' - -" Use bash dialect explicitly, require explicit empty string test -let b:ale_sh_shellcheck_options='-s bash -o avoid-nullary-conditions' -let b:undo_ftplugin.='|unlet! b:ale_sh_shellcheck_options' diff --git a/home/vim/after/ftplugin/c.vim b/home/vim/after/ftplugin/c.vim deleted file mode 100644 index a85ff07..0000000 --- a/home/vim/after/ftplugin/c.vim +++ /dev/null @@ -1,14 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" More warnings and the usual version in flags for Clang -let b:ale_c_clang_options='-Wall -Wextra -pedantic -std=c99' -let b:undo_ftplugin.='|unlet! b:ale_c_clang_options' - -" More warnings and the usual version in flags for GCC -let b:ale_c_gcc_options='-Wall -Wextra -pedantic -std=c99' -let b:undo_ftplugin.='|unlet! b:ale_c_gcc_options' - -" Use compile_commands.json to look for additional flags -let b:ale_c_parse_compile_commands=1 -let b:undo_ftplugin.='|unlet! b:ale_c_parse_compile_commands' diff --git a/home/vim/after/ftplugin/cpp.vim b/home/vim/after/ftplugin/cpp.vim deleted file mode 100644 index 4fa501e..0000000 --- a/home/vim/after/ftplugin/cpp.vim +++ /dev/null @@ -1,14 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" More warnings and the usual version in flags for Clang -let b:ale_cpp_clang_options='-Wall -Wextra -pedantic -std=c++17' -let b:undo_ftplugin.='|unlet! b:ale_cpp_clang_options' - -" More warnings and the usual version in flags for GCC -let b:ale_cpp_gcc_options='-Wall -Wextra -pedantic -std=c++17' -let b:undo_ftplugin.='|unlet! b:ale_cpp_gcc_options' - -" Use compile_commands.json to look for additional flags -let b:ale_c_parse_compile_commands=1 -let b:undo_ftplugin.='|unlet! b:ale_c_parse_compile_commands' diff --git a/home/vim/after/ftplugin/d.vim b/home/vim/after/ftplugin/d.vim deleted file mode 100644 index 0e868c7..0000000 --- a/home/vim/after/ftplugin/d.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Use my desired ALE fixer for D -let b:ale_fixers=[ 'dfmt' ] -let b:undo_ftplugin.='|unlet! b:ale_fixers' diff --git a/home/vim/after/ftplugin/gitsendemail.vim b/home/vim/after/ftplugin/gitsendemail.vim deleted file mode 100644 index fc9c729..0000000 --- a/home/vim/after/ftplugin/gitsendemail.vim +++ /dev/null @@ -1,2 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() diff --git a/home/vim/after/ftplugin/haskell.vim b/home/vim/after/ftplugin/haskell.vim index 80d7f2e..978f346 100644 --- a/home/vim/after/ftplugin/haskell.vim +++ b/home/vim/after/ftplugin/haskell.vim @@ -5,26 +5,6 @@ call ftplugined#check_undo_ft() setlocal shiftwidth=2 let b:undo_ftplugin.='|setlocal shiftwidth<' -" Use my desired ALE fixers for Haskell -let b:ale_fixers=[ 'brittany' ] -let b:undo_ftplugin.='|unlet! b:ale_fixers' - -" Use stack-managed `hlint` -let b:ale_haskell_hlint_executable='stack' -let b:undo_ftplugin.='|unlet! b:ale_haskell_hlint_executable' - -" Use stack-managed `brittany` -let b:ale_haskell_brittany_executable='stack' -let b:undo_ftplugin.='|unlet! b:ale_haskell_brittany_executable' - -" Use dynamic libraries because of Arch linux, with default ALE options -let b:ale_haskell_ghc_options='--dynamic -fno-code -v0' -let b:undo_ftplugin.='|unlet! b:ale_haskell_ghc_options' - -" Automatically format files when saving them -let b:ale_fix_on_save=1 -let b:undo_ftplugin='|unlet! b:ale_lint_on_save' - " Change max length of a line to 100 for this buffer to match official guidelines setlocal colorcolumn=100 let b:undo_ftplugin.='|setlocal colorcolumn<' diff --git a/home/vim/after/ftplugin/json.vim b/home/vim/after/ftplugin/json.vim deleted file mode 100644 index 2b4ba56..0000000 --- a/home/vim/after/ftplugin/json.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Use my desired ALE fixer for JSON -let b:ale_fixers=[ 'jq' ] -let b:undo_ftplugin.='|unlet! b:ale_fixers' diff --git a/home/vim/after/ftplugin/pandoc.vim b/home/vim/after/ftplugin/pandoc.vim index d44bc12..5b58b41 100644 --- a/home/vim/after/ftplugin/pandoc.vim +++ b/home/vim/after/ftplugin/pandoc.vim @@ -1,10 +1,6 @@ " Create the `b:undo_ftplugin` variable if it doesn't exist call ftplugined#check_undo_ft() -" Let ALE know that I want Markdown linters -let b:ale_linter_aliases=[ 'markdown' ] -let b:undo_ftplugin.='|unlet! b:ale_linter_aliases' - " Use a small indentation value on Pandoc files setlocal shiftwidth=2 let b:undo_ftplugin.='|setlocal shiftwidth<' diff --git a/home/vim/after/ftplugin/python.vim b/home/vim/after/ftplugin/python.vim index a18299e..e7232a8 100644 --- a/home/vim/after/ftplugin/python.vim +++ b/home/vim/after/ftplugin/python.vim @@ -1,40 +1,6 @@ " Create the `b:undo_ftplugin` variable if it doesn't exist call ftplugined#check_undo_ft() -" Use my desired ALE fixers for python -let b:ale_fixers=[ 'black', 'isort' ] -let b:undo_ftplugin.='|unlet! b:ale_fixers' -" Use my desired ALE linters for python -let b:ale_linters=[ 'flake8', 'mypy', 'pylint', 'pyls' ] -let b:undo_ftplugin.='|unlet! b:ale_linters' - -" Use pyls inside the python environment if needed -let b:ale_python_pyls_auto_pipenv=1 -let b:undo_ftplugin.='|unlet! b:ale_python_pyls_auto_pipenv' - -" Disable pycodestyle checks from pyls because I'm already using flake8 -let b:ale_python_pyls_config={ - \ 'pyls': { - \ 'plugins': { - \ 'pycodestyle': { - \ 'enabled': v:false - \ }, - \ }, - \ }, - \ } -let b:undo_ftplugin.='|unlet! b:ale_python_pyls_config' - -" Don't use mypy to check for syntax errors -let b:ale_python_mypy_ignore_invalid_syntax=1 -let b:undo_ftplugin.='|unlet! b:ale_python_mypy_ignore_invalid_syntax' -" Use mypy inside the python environment if needed -let b:ale_python_mypy_auto_pipenv=1 -let b:undo_ftplugin.='|unlet! b:ale_python_mypy_auto_pipenv' - -" Automatically format files when saving them -let b:ale_fix_on_save=1 -let b:undo_ftplugin='|unlet! b:ale_lint_on_save' - " Change max length of a line to 88 for this buffer to match black's settings setlocal colorcolumn=88 let b:undo_ftplugin.='|setlocal colorcolumn<' diff --git a/home/vim/after/ftplugin/rust.vim b/home/vim/after/ftplugin/rust.vim index 61516f9..8738a54 100644 --- a/home/vim/after/ftplugin/rust.vim +++ b/home/vim/after/ftplugin/rust.vim @@ -1,31 +1,6 @@ " Create the `b:undo_ftplugin` variable if it doesn't exist call ftplugined#check_undo_ft() -" Check tests too -let b:ale_rust_cargo_check_tests=1 -let b:undo_ftplugin='|unlet! b:ale_rust_cargo_check_tests' - -" Check examples too -let b:ale_rust_cargo_check_examples=1 -let b:undo_ftplugin='|unlet! b:ale_rust_cargo_check_examples' - -" Use clippy if it's available instead of just cargo check -let b:ale_rust_cargo_use_clippy=executable('cargo-clippy') -let b:undo_ftplugin='|unlet! b:ale_rust_cargo_use_clippy' - -" Use rust-analyzer instead of RLS as a linter -let b:ale_linters=[ 'cargo', 'analyzer' ] -let b:undo_ftplugin='|unlet! b:ale_linters' - - -" Use rustfmt as ALE fixer for rust -let b:ale_fixers=[ 'rustfmt' ] -let b:undo_ftplugin.='|unlet! b:ale_fixers' - -" Automatically format files when saving them -let b:ale_fix_on_save=1 -let b:undo_ftplugin='|unlet! b:ale_lint_on_save' - " Change max length of a line to 99 for this buffer to match official guidelines setlocal colorcolumn=99 let b:undo_ftplugin.='|setlocal colorcolumn<' diff --git a/home/vim/after/ftplugin/sh.vim b/home/vim/after/ftplugin/sh.vim deleted file mode 100644 index 5b5a88c..0000000 --- a/home/vim/after/ftplugin/sh.vim +++ /dev/null @@ -1,14 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Use shfmt as ALE fixer for sh -let b:ale_fixers=[ 'shfmt' ] -let b:undo_ftplugin.='|unlet! b:ale_fixers' - -" Indent with 4 spaces, simplify the code, indent switch cases, use POSIX -let b:ale_sh_shfmt_options='-i 4 -s -ci -ln posix' -let b:undo_ftplugin.='|unlet! b:ale_sh_shfmt_options' - -" Require explicit empty string test -let b:ale_sh_shellcheck_options='-o avoid-nullary-conditions' -let b:undo_ftplugin.='|unlet! b:ale_sh_shellcheck_options' diff --git a/home/vim/after/ftplugin/zsh.vim b/home/vim/after/ftplugin/zsh.vim deleted file mode 100644 index b8c7a31..0000000 --- a/home/vim/after/ftplugin/zsh.vim +++ /dev/null @@ -1,14 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Use shfmt as ALE fixer for zsh -let b:ale_fixers=[ 'shfmt' ] -let b:undo_ftplugin.='|unlet! b:ale_fixers' - -" Indent with 4 spaces, simplify script, indent switch cases, use Bash variant -let b:ale_sh_shfmt_options='-i 4 -s -ci -ln bash' -let b:undo_ftplugin.='|unlet! b:ale_sh_shfmt_options' - -" Use bash dialect explicitly, require explicit empty string test -let b:ale_sh_shellcheck_options='-s bash -o avoid-nullary-conditions' -let b:undo_ftplugin.='|unlet! b:ale_sh_shellcheck_options' diff --git a/home/vim/after/plugin/mappings/ale.vim b/home/vim/after/plugin/mappings/ale.vim deleted file mode 100644 index 3069f81..0000000 --- a/home/vim/after/plugin/mappings/ale.vim +++ /dev/null @@ -1,2 +0,0 @@ -" Use ALE LSP-powered symbol information -nnoremap K :ALEHover diff --git a/home/vim/default.nix b/home/vim/default.nix index eb79fe9..935b330 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -63,8 +63,6 @@ in git-messenger-vim # A simple blame window # LSP and linting - ale # Asynchronous Linting Engine - lightline-ale # Status bar integration ]; extraConfig = builtins.readFile ./init.vim; diff --git a/home/vim/plugin/settings/ale.vim b/home/vim/plugin/settings/ale.vim deleted file mode 100644 index 23c9138..0000000 --- a/home/vim/plugin/settings/ale.vim +++ /dev/null @@ -1,24 +0,0 @@ -" Always display the sign column to avoid moving the buffer all the time -let g:ale_sign_column_always=1 - -" Change the way ALE display messages -let g:ale_echo_msg_info_str='I' -let g:ale_echo_msg_warning_str='W' -let g:ale_echo_msg_error_str='E' - -" The message displayed in the command line area -let g:ale_echo_msg_format='[%linter%][%severity%]%(code):% %s' - -" The message displayed in the location list -let g:ale_loclist_msg_format='[%linter%]%(code):% %s' - -" Don't lint every time I change the buffer -let g:ale_lint_on_text_changed=0 -" Don't lint on leaving insert mode -let g:ale_lint_on_insert_leave=0 -" Don't lint on entering a buffer -let g:ale_lint_on_enter=0 -" Do lint on save -let g:ale_lint_on_save=1 -" Lint on changing the filetype -let g:ale_lint_on_filetype_changed=1 diff --git a/home/vim/plugin/settings/lightline.vim b/home/vim/plugin/settings/lightline.vim index 039b2b3..d5031fd 100644 --- a/home/vim/plugin/settings/lightline.vim +++ b/home/vim/plugin/settings/lightline.vim @@ -15,7 +15,6 @@ let g:lightline.active={ \ [ 'lineinfo' ], \ [ 'percent' ], \ [ 'fileformat', 'fileencoding', 'filetype' ], - \ [ 'linter_check', 'linter_errors', 'linter_warn', 'linter_ok' ], \ [ 'ctags_status' ], \ ] \ } @@ -38,29 +37,11 @@ let g:lightline.component_function={ \ 'gitbranch': 'LightlineFugitive', \ } -" Which component can be expanded by using which function -let g:lightline.component_expand={ - \ 'linter_check': 'lightline#ale#checking', - \ 'linter_warn': 'lightline#ale#warnings', - \ 'linter_errors': 'lightline#ale#errors', - \ 'linter_ok': 'lightline#ale#ok', - \ } - " How to color custom components let g:lightline.component_type={ \ 'readonly': 'error', - \ 'linter_checking': 'left', - \ 'linter_warn': 'warning', - \ 'linter_errors': 'error', - \ 'linter_ok': 'left', \ } -" Show pretty icons instead of text for linting status -let g:lightline#ale#indicator_checking='⏳' -let g:lightline#ale#indicator_warnings='◆' -let g:lightline#ale#indicator_errors='✗' -let g:lightline#ale#indicator_ok='✓' - " Show a lock icon when editing a read-only file when it makes sense function! LightlineReadonly() return &ft!~?'help\|vimfiler\|netrw' && &readonly ? '🔒' : '' From 039c6390a33334d8a04ca9e734e49dae34600dd9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 24 Feb 2022 11:40:16 +0100 Subject: [PATCH 0478/1588] home: vim: remove 'quickfixed' functionality I never use it anymore... --- home/vim/after/ftplugin/qf.vim | 8 ---- home/vim/autoload/quickfixed.vim | 68 -------------------------------- 2 files changed, 76 deletions(-) delete mode 100644 home/vim/after/ftplugin/qf.vim delete mode 100644 home/vim/autoload/quickfixed.vim diff --git a/home/vim/after/ftplugin/qf.vim b/home/vim/after/ftplugin/qf.vim deleted file mode 100644 index 01036f9..0000000 --- a/home/vim/after/ftplugin/qf.vim +++ /dev/null @@ -1,8 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Use h/l to go to the previous/next non-empty quickfix or location list -nnoremap h :call quickfixed#older() -let b:undo_ftplugin.='|nunmap h' -nnoremap l :call quickfixed#newer() -let b:undo_ftplugin.='|nunmap l' diff --git a/home/vim/autoload/quickfixed.vim b/home/vim/autoload/quickfixed.vim deleted file mode 100644 index 4862f8f..0000000 --- a/home/vim/autoload/quickfixed.vim +++ /dev/null @@ -1,68 +0,0 @@ -" Taken from the Vimways article - -function! s:isLocation() - " Get dictionary of properties of the current window - let wininfo = filter(getwininfo(), {i,v -> v.winnr == winnr()})[0] - return wininfo.loclist -endfunction - -function! s:length() - " Get the size of the current quickfix/location list - return len(s:isLocation() ? getloclist(0) : getqflist()) -endfunction - -function! s:getProperty(key, ...) - " getqflist() and getloclist() expect a dictionary argument - " If a 2nd argument has been passed in, use it as the value, else 0 - let l:what = {a:key : a:0 ? a:1 : 0} - let l:listdict = s:isLocation() ? getloclist(0, l:what) : getqflist(l:what) - return get(l:listdict, a:key) -endfunction - -function! s:isFirst() - return s:getProperty('nr') <= 1 -endfunction - -function! s:isLast() - return s:getProperty('nr') == s:getProperty('nr', '$') -endfunction - -function! s:history(goNewer) - " Build the command: one of colder/cnewer/lolder/lnewer - let l:cmd = (s:isLocation() ? 'l' : 'c') . (a:goNewer ? 'newer' : 'older') - - " Apply the cmd repeatedly until we hit a non-empty list, or first/last list - " is reached - while 1 - if (a:goNewer && s:isLast()) || (!a:goNewer && s:isFirst()) | break | endif - " Run the command. Use :silent to suppress message-history output. - " Note that the :try wrapper is no longer necessary - silent execute l:cmd - if s:length() | break | endif - endwhile - - " Echo a description of the new quickfix / location list. - " And make it look like a rainbow. - let l:nr = s:getProperty('nr') - let l:last = s:getProperty('nr', '$') - echohl MoreMsg | echon '(' - echohl Identifier | echon l:nr - if l:last > 1 - echohl LineNr | echon ' of ' - echohl Identifier | echon l:last - endif - echohl MoreMsg | echon ') ' - echohl MoreMsg | echon '[' - echohl Identifier | echon s:length() - echohl MoreMsg | echon '] ' - echohl Normal | echon s:getProperty('title') - echohl None -endfunction - -function! quickfixed#older() - call s:history(0) -endfunction - -function! quickfixed#newer() - call s:history(1) -endfunction From ad7b9a574d1c2e7fbd32d159aa61a5ace0468a0c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 24 Feb 2022 13:20:16 +0100 Subject: [PATCH 0479/1588] home: vim: add 'lightline-lsp' --- home/vim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 935b330..7eb8b92 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -63,6 +63,7 @@ in git-messenger-vim # A simple blame window # LSP and linting + lightline-lsp ]; extraConfig = builtins.readFile ./init.vim; From 6f57a03940db6f17049ef541738bbb6b12494294 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 24 Feb 2022 13:21:14 +0100 Subject: [PATCH 0480/1588] home: vim: configure 'lightline-lsp' This pretty much replace 'lightline-ale' for me now. At least it will, once I have configured some LSP clients. --- home/vim/plugin/settings/lightline.vim | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/home/vim/plugin/settings/lightline.vim b/home/vim/plugin/settings/lightline.vim index d5031fd..14079f6 100644 --- a/home/vim/plugin/settings/lightline.vim +++ b/home/vim/plugin/settings/lightline.vim @@ -15,6 +15,7 @@ let g:lightline.active={ \ [ 'lineinfo' ], \ [ 'percent' ], \ [ 'fileformat', 'fileencoding', 'filetype' ], + \ [ 'linter_errors', 'linter_warnings', 'linter_infos', 'linter_hints', 'linter_ok' ], \ [ 'ctags_status' ], \ ] \ } @@ -37,11 +38,33 @@ let g:lightline.component_function={ \ 'gitbranch': 'LightlineFugitive', \ } +" Which component can be expanded by using which function +let g:lightline.component_expand={ + \ 'linter_hints': 'lightline#lsp#hints', + \ 'linter_infos': 'lightline#lsp#infos', + \ 'linter_warnings': 'lightline#lsp#warnings', + \ 'linter_errors': 'lightline#lsp#errors', + \ 'linter_ok': 'lightline#lsp#ok', + \ } + " How to color custom components let g:lightline.component_type={ \ 'readonly': 'error', + \ 'linter_hints': 'right', + \ 'linter_infos': 'right', + \ 'linter_warnings': 'warning', + \ 'linter_errors': 'error', + \ 'linter_ok': 'right', \ } +" Show pretty icons instead of text for linting status +let g:lightline#lsp#indicator_hints='🔍' +let g:lightline#lsp#indicator_infos='ℹ' +let g:lightline#lsp#indicator_warnings='◆' +let g:lightline#lsp#indicator_errors='✗' +let g:lightline#lsp#indicator_ok='✓' + + " Show a lock icon when editing a read-only file when it makes sense function! LightlineReadonly() return &ft!~?'help\|vimfiler\|netrw' && &readonly ? '🔒' : '' From e1a8c9e5635813f63e23abc8877d6d6dc509b18e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 11:48:26 +0100 Subject: [PATCH 0481/1588] home: vim: add 'null-ls' --- home/vim/default.nix | 2 ++ home/vim/plugin/settings/null-ls.vim | 4 ++++ 2 files changed, 6 insertions(+) create mode 100644 home/vim/plugin/settings/null-ls.vim diff --git a/home/vim/default.nix b/home/vim/default.nix index 7eb8b92..9fac4c6 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -64,6 +64,8 @@ in # LSP and linting lightline-lsp + null-ls-nvim # LSP integration for linters and formatters + plenary-nvim # 'null-ls' dependency ]; extraConfig = builtins.readFile ./init.vim; diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim new file mode 100644 index 0000000..e9a0781 --- /dev/null +++ b/home/vim/plugin/settings/null-ls.vim @@ -0,0 +1,4 @@ +lua << EOF +null_ls = require("null-ls") +null_ls.setup() +EOF From e760f5aeaa76d90ab8cba25368f262fde4b80c68 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 11:48:53 +0100 Subject: [PATCH 0482/1588] home: vim: configure 'null-ls' for 'bash' --- home/vim/after/ftplugin/bash.vim | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 home/vim/after/ftplugin/bash.vim diff --git a/home/vim/after/ftplugin/bash.vim b/home/vim/after/ftplugin/bash.vim new file mode 100644 index 0000000..8799799 --- /dev/null +++ b/home/vim/after/ftplugin/bash.vim @@ -0,0 +1,17 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Set-up LSP, linters, formatters +lua << EOF +local null_ls = require("null-ls") +null_ls.register({ + null_ls.builtins.diagnostics.shellcheck.with({ + -- Require explicit empty string test, use bash dialect + extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, + }), + null_ls.builtins.formatting.shfmt.with({ + -- Indent with 4 spaces, simplify the code, indent switch cases, use bash dialect + extra_args = { "-i", "4", "-s", "-ci", "-ln", "bash" }, + }), +}) +EOF From ba3ab14ac367c84cdadfff2eab469ad994a15730 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 11:49:03 +0100 Subject: [PATCH 0483/1588] home: vim: configure 'null-ls' for 'sh' --- home/vim/after/ftplugin/sh.vim | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 home/vim/after/ftplugin/sh.vim diff --git a/home/vim/after/ftplugin/sh.vim b/home/vim/after/ftplugin/sh.vim new file mode 100644 index 0000000..8d1594b --- /dev/null +++ b/home/vim/after/ftplugin/sh.vim @@ -0,0 +1,17 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Set-up LSP, linters, formatters +lua << EOF +local null_ls = require("null-ls") +null_ls.register({ + null_ls.builtins.diagnostics.shellcheck.with({ + -- Require explicit empty string test + extra_args = { "-o", "avoid-nullary-conditions" }, + }), + null_ls.builtins.formatting.shfmt.with({ + -- Indent with 4 spaces, simplify the code, indent switch cases, use POSIX + extra_args = { "-i", "4", "-s", "-ci", "-ln", "posix" }, + }), +}) +EOF From 0b4d39c7711d08670774373c7716432a39af39bc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 11:49:09 +0100 Subject: [PATCH 0484/1588] home: vim: configure 'null-ls' for 'zsh' --- home/vim/after/ftplugin/zsh.vim | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 home/vim/after/ftplugin/zsh.vim diff --git a/home/vim/after/ftplugin/zsh.vim b/home/vim/after/ftplugin/zsh.vim new file mode 100644 index 0000000..8799799 --- /dev/null +++ b/home/vim/after/ftplugin/zsh.vim @@ -0,0 +1,17 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Set-up LSP, linters, formatters +lua << EOF +local null_ls = require("null-ls") +null_ls.register({ + null_ls.builtins.diagnostics.shellcheck.with({ + -- Require explicit empty string test, use bash dialect + extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, + }), + null_ls.builtins.formatting.shfmt.with({ + -- Indent with 4 spaces, simplify the code, indent switch cases, use bash dialect + extra_args = { "-i", "4", "-s", "-ci", "-ln", "bash" }, + }), +}) +EOF From ccbf73385e9f8b0d7e732e9a51b9f581e7f7c029 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 11:49:21 +0100 Subject: [PATCH 0485/1588] home: vim: configure 'null-ls' for 'haskell' --- home/vim/after/ftplugin/haskell.vim | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/home/vim/after/ftplugin/haskell.vim b/home/vim/after/ftplugin/haskell.vim index 978f346..776adbe 100644 --- a/home/vim/after/ftplugin/haskell.vim +++ b/home/vim/after/ftplugin/haskell.vim @@ -1,6 +1,14 @@ " Create the `b:undo_ftplugin` variable if it doesn't exist call ftplugined#check_undo_ft() +" Set-up LSP, linters, formatters +lua << EOF +local null_ls = require("null-ls") +null_ls.register({ + null_ls.builtins.formatting.brittany, +}) +EOF + " Use a small indentation value on Haskell files setlocal shiftwidth=2 let b:undo_ftplugin.='|setlocal shiftwidth<' From d52833f3a35c8cfddedeaa372e21455112dd7e33 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 10:38:52 +0100 Subject: [PATCH 0486/1588] home: vim: add formatting on save with 'null-ls' --- home/vim/plugin/settings/null-ls.vim | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim index e9a0781..5dbbd73 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.vim @@ -1,4 +1,16 @@ lua << EOF -null_ls = require("null-ls") -null_ls.setup() +local null_ls = require("null-ls") +null_ls.setup({ + on_attach = function(client) + -- Format on save + if client.resolved_capabilities.document_formatting then + vim.cmd([[ + augroup LspFormatting + autocmd! * + autocmd BufWritePre lua vim.lsp.buf.formatting_sync() + augroup END + ]]) + end + end, +}) EOF From a59884b59cf1e81c13a4e8666f68748221aa4824 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 13:07:20 +0100 Subject: [PATCH 0487/1588] home: vim: configure 'null-ls' for 'c' --- home/vim/after/ftplugin/c.vim | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 home/vim/after/ftplugin/c.vim diff --git a/home/vim/after/ftplugin/c.vim b/home/vim/after/ftplugin/c.vim new file mode 100644 index 0000000..7e5a367 --- /dev/null +++ b/home/vim/after/ftplugin/c.vim @@ -0,0 +1,10 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Set-up LSP, linters, formatters +lua << EOF +local null_ls = require("null-ls") +null_ls.register({ + null_ls.builtins.formatting.clang_format, +}) +EOF From 9a9e50f7a8381774fe436842ee773ccf2343bea7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 13:07:31 +0100 Subject: [PATCH 0488/1588] home: vim: configure 'null-ls' for 'cpp' --- home/vim/after/ftplugin/cpp.vim | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 home/vim/after/ftplugin/cpp.vim diff --git a/home/vim/after/ftplugin/cpp.vim b/home/vim/after/ftplugin/cpp.vim new file mode 100644 index 0000000..7e5a367 --- /dev/null +++ b/home/vim/after/ftplugin/cpp.vim @@ -0,0 +1,10 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Set-up LSP, linters, formatters +lua << EOF +local null_ls = require("null-ls") +null_ls.register({ + null_ls.builtins.formatting.clang_format, +}) +EOF From 3e60cb5be1093b39999aa0e01f802bf0bdd90b7e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 11:49:57 +0100 Subject: [PATCH 0489/1588] home: vim: configure 'null-ls' for 'python' --- home/vim/after/ftplugin/python.vim | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/home/vim/after/ftplugin/python.vim b/home/vim/after/ftplugin/python.vim index e7232a8..a2aebc0 100644 --- a/home/vim/after/ftplugin/python.vim +++ b/home/vim/after/ftplugin/python.vim @@ -1,6 +1,18 @@ " Create the `b:undo_ftplugin` variable if it doesn't exist call ftplugined#check_undo_ft() +" Set-up LSP, linters, formatters +lua << EOF +local null_ls = require("null-ls") +null_ls.register({ + null_ls.builtins.diagnostics.flake8, + null_ls.builtins.diagnostics.mypy, + null_ls.builtins.diagnostics.pylint, + null_ls.builtins.formatting.black, + null_ls.builtins.formatting.isort, +}) +EOF + " Change max length of a line to 88 for this buffer to match black's settings setlocal colorcolumn=88 let b:undo_ftplugin.='|setlocal colorcolumn<' From 7d361023bcd696744d34bc9b46100ef11126c6e2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 13:13:53 +0100 Subject: [PATCH 0490/1588] home: vim: show error codes from 'shellcheck' --- home/vim/after/ftplugin/bash.vim | 2 ++ home/vim/after/ftplugin/sh.vim | 2 ++ home/vim/after/ftplugin/zsh.vim | 2 ++ 3 files changed, 6 insertions(+) diff --git a/home/vim/after/ftplugin/bash.vim b/home/vim/after/ftplugin/bash.vim index 8799799..03f3f9f 100644 --- a/home/vim/after/ftplugin/bash.vim +++ b/home/vim/after/ftplugin/bash.vim @@ -6,6 +6,8 @@ lua << EOF local null_ls = require("null-ls") null_ls.register({ null_ls.builtins.diagnostics.shellcheck.with({ + -- Show error code in message + diagnostics_format = "[#{c}] #{m}", -- Require explicit empty string test, use bash dialect extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, }), diff --git a/home/vim/after/ftplugin/sh.vim b/home/vim/after/ftplugin/sh.vim index 8d1594b..f80f25a 100644 --- a/home/vim/after/ftplugin/sh.vim +++ b/home/vim/after/ftplugin/sh.vim @@ -6,6 +6,8 @@ lua << EOF local null_ls = require("null-ls") null_ls.register({ null_ls.builtins.diagnostics.shellcheck.with({ + -- Show error code in message + diagnostics_format = "[#{c}] #{m}", -- Require explicit empty string test extra_args = { "-o", "avoid-nullary-conditions" }, }), diff --git a/home/vim/after/ftplugin/zsh.vim b/home/vim/after/ftplugin/zsh.vim index 8799799..03f3f9f 100644 --- a/home/vim/after/ftplugin/zsh.vim +++ b/home/vim/after/ftplugin/zsh.vim @@ -6,6 +6,8 @@ lua << EOF local null_ls = require("null-ls") null_ls.register({ null_ls.builtins.diagnostics.shellcheck.with({ + -- Show error code in message + diagnostics_format = "[#{c}] #{m}", -- Require explicit empty string test, use bash dialect extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, }), From 300ce25c8ee20be5a6fc4b3658cdeffeb649b320 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 15:36:31 +0100 Subject: [PATCH 0491/1588] home: vim: keep space after shell redirections --- home/vim/after/ftplugin/bash.vim | 5 +++-- home/vim/after/ftplugin/sh.vim | 5 +++-- home/vim/after/ftplugin/zsh.vim | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/home/vim/after/ftplugin/bash.vim b/home/vim/after/ftplugin/bash.vim index 03f3f9f..cb85c8f 100644 --- a/home/vim/after/ftplugin/bash.vim +++ b/home/vim/after/ftplugin/bash.vim @@ -12,8 +12,9 @@ null_ls.register({ extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, }), null_ls.builtins.formatting.shfmt.with({ - -- Indent with 4 spaces, simplify the code, indent switch cases, use bash dialect - extra_args = { "-i", "4", "-s", "-ci", "-ln", "bash" }, + -- Indent with 4 spaces, simplify the code, indent switch cases, + -- add space after redirection, use bash dialect + extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" }, }), }) EOF diff --git a/home/vim/after/ftplugin/sh.vim b/home/vim/after/ftplugin/sh.vim index f80f25a..442ebcb 100644 --- a/home/vim/after/ftplugin/sh.vim +++ b/home/vim/after/ftplugin/sh.vim @@ -12,8 +12,9 @@ null_ls.register({ extra_args = { "-o", "avoid-nullary-conditions" }, }), null_ls.builtins.formatting.shfmt.with({ - -- Indent with 4 spaces, simplify the code, indent switch cases, use POSIX - extra_args = { "-i", "4", "-s", "-ci", "-ln", "posix" }, + -- Indent with 4 spaces, simplify the code, indent switch cases, + -- add space after redirection, use POSIX + extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "posix" }, }), }) EOF diff --git a/home/vim/after/ftplugin/zsh.vim b/home/vim/after/ftplugin/zsh.vim index 03f3f9f..cb85c8f 100644 --- a/home/vim/after/ftplugin/zsh.vim +++ b/home/vim/after/ftplugin/zsh.vim @@ -12,8 +12,9 @@ null_ls.register({ extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, }), null_ls.builtins.formatting.shfmt.with({ - -- Indent with 4 spaces, simplify the code, indent switch cases, use bash dialect - extra_args = { "-i", "4", "-s", "-ci", "-ln", "bash" }, + -- Indent with 4 spaces, simplify the code, indent switch cases, + -- add space after redirection, use bash dialect + extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" }, }), }) EOF From 54ad5d9282e0728185a59c51dd3fcf3cd6a4fad5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 18:19:41 +0100 Subject: [PATCH 0492/1588] home: vim: configure 'null-ls' for 'nix' --- home/vim/after/ftplugin/nix.vim | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 home/vim/after/ftplugin/nix.vim diff --git a/home/vim/after/ftplugin/nix.vim b/home/vim/after/ftplugin/nix.vim new file mode 100644 index 0000000..a5056c8 --- /dev/null +++ b/home/vim/after/ftplugin/nix.vim @@ -0,0 +1,10 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Set-up LSP, linters, formatters +lua << EOF +local null_ls = require("null-ls") +null_ls.register({ + null_ls.builtins.formatting.nixpkgs_fmt, +}) +EOF From 58de8106a1ee301a5349b9af7a45456ca30cd948 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 18:21:35 +0100 Subject: [PATCH 0493/1588] home: vim: add 'lsp_lines' I dislike the diagnostics *next* to affected lines. This looks neater, though the best look would be a simple hover window or status line message instead, like ALE used to do. It might grow on me however. --- home/vim/default.nix | 1 + home/vim/plugin/settings/lsp_lines.vim | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 home/vim/plugin/settings/lsp_lines.vim diff --git a/home/vim/default.nix b/home/vim/default.nix index 9fac4c6..574b01e 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -64,6 +64,7 @@ in # LSP and linting lightline-lsp + lsp_lines-nvim # Show diagnostics *over* regions null-ls-nvim # LSP integration for linters and formatters plenary-nvim # 'null-ls' dependency ]; diff --git a/home/vim/plugin/settings/lsp_lines.vim b/home/vim/plugin/settings/lsp_lines.vim new file mode 100644 index 0000000..10b46a3 --- /dev/null +++ b/home/vim/plugin/settings/lsp_lines.vim @@ -0,0 +1,9 @@ +lua << EOF +-- Show LSP diagnostics on virtual lines over affected regions +require("lsp_lines").register_lsp_virtual_lines() + +-- Disable virtual test next to affected regions +vim.diagnostic.config({ + virtual_text = false, +}) +EOF From c3b0b9c607e18aaca323d5dc5338741ba6c37aef Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Feb 2022 19:14:18 +0100 Subject: [PATCH 0494/1588] home: vim: make python formatting faster --- home/vim/after/ftplugin/python.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/vim/after/ftplugin/python.vim b/home/vim/after/ftplugin/python.vim index a2aebc0..ffc0327 100644 --- a/home/vim/after/ftplugin/python.vim +++ b/home/vim/after/ftplugin/python.vim @@ -8,7 +8,9 @@ null_ls.register({ null_ls.builtins.diagnostics.flake8, null_ls.builtins.diagnostics.mypy, null_ls.builtins.diagnostics.pylint, - null_ls.builtins.formatting.black, + null_ls.builtins.formatting.black.with({ + extra_args = { "--fast" }, + }), null_ls.builtins.formatting.isort, }) EOF From bbc32d6030a7b276b7a252cc92b39ff970d864c9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 12:26:49 +0100 Subject: [PATCH 0495/1588] home: vim: add 'nvim-treesitter' IMHO, this is *very* colorful, I might not end up using the highlighting after all. Let's see if I get used to it after a little while. --- home/vim/default.nix | 1 + home/vim/plugin/settings/tree-sitter.vim | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 home/vim/plugin/settings/tree-sitter.vim diff --git a/home/vim/default.nix b/home/vim/default.nix index 574b01e..9ef28a0 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -66,6 +66,7 @@ in lightline-lsp lsp_lines-nvim # Show diagnostics *over* regions null-ls-nvim # LSP integration for linters and formatters + (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting plenary-nvim # 'null-ls' dependency ]; diff --git a/home/vim/plugin/settings/tree-sitter.vim b/home/vim/plugin/settings/tree-sitter.vim new file mode 100644 index 0000000..8df22b0 --- /dev/null +++ b/home/vim/plugin/settings/tree-sitter.vim @@ -0,0 +1,13 @@ +lua << EOF +local ts_config = require("nvim-treesitter.configs") +ts_config.setup({ + highlight = { + enable = true, + -- Avoid duplicate highlighting + additional_vim_regex_highlighting = false, + }, + indent = { + enable = true, + }, +}) +EOF From 5437b45a029fd231639426984bfe98f45b13a0df Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 12:47:55 +0100 Subject: [PATCH 0496/1588] home: vim: configure diagnostics further This is not only 'lsp_lines' configuration anymore, but the whole display of diagnostics. --- home/vim/plugin/settings/diagnostics.vim | 17 +++++++++++++++++ home/vim/plugin/settings/lsp_lines.vim | 9 --------- 2 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 home/vim/plugin/settings/diagnostics.vim delete mode 100644 home/vim/plugin/settings/lsp_lines.vim diff --git a/home/vim/plugin/settings/diagnostics.vim b/home/vim/plugin/settings/diagnostics.vim new file mode 100644 index 0000000..8327866 --- /dev/null +++ b/home/vim/plugin/settings/diagnostics.vim @@ -0,0 +1,17 @@ +lua << EOF +-- Show LSP diagnostics on virtual lines over affected regions +require("lsp_lines").register_lsp_virtual_lines() + +vim.diagnostic.config({ + -- Disable virtual test next to affected regions + virtual_text = false, + -- Show diagnostics signs + signs = true, + -- Underline offending regions + underline = true, + -- Do not bother me in the middle of insertion + update_in_insert = false, + -- Show highest severity first + severity_sort = true, +}) +EOF diff --git a/home/vim/plugin/settings/lsp_lines.vim b/home/vim/plugin/settings/lsp_lines.vim deleted file mode 100644 index 10b46a3..0000000 --- a/home/vim/plugin/settings/lsp_lines.vim +++ /dev/null @@ -1,9 +0,0 @@ -lua << EOF --- Show LSP diagnostics on virtual lines over affected regions -require("lsp_lines").register_lsp_virtual_lines() - --- Disable virtual test next to affected regions -vim.diagnostic.config({ - virtual_text = false, -}) -EOF From fba2403bf3ad5e6c326731dfee554777e711ed30 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 12:50:23 +0100 Subject: [PATCH 0497/1588] home: vim: configure short 'CursorHold' timeout --- home/vim/init.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/vim/init.vim b/home/vim/init.vim index 23717e1..ae5b15f 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -65,6 +65,9 @@ set lazyredraw " Timeout quickly on shortcuts, I can't wait two seconds to delete in visual set timeoutlen=500 +" Timeout quickly for CursorHold events (and also swap file) +set updatetime=250 + " Set dark mode by default set background=dark From 9caf296d52500dc4723bb50071dca835d5563374 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 12:53:04 +0100 Subject: [PATCH 0498/1588] home: vim: show diagnostics on hover Ideally, I want the following features: * diagnostic icons in the sign column always, * virtual text on the current line only * switch to hover window and/or lsp_lines display through a mapping --- home/vim/plugin/settings/diagnostics.vim | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/vim/plugin/settings/diagnostics.vim b/home/vim/plugin/settings/diagnostics.vim index 8327866..db68098 100644 --- a/home/vim/plugin/settings/diagnostics.vim +++ b/home/vim/plugin/settings/diagnostics.vim @@ -15,3 +15,9 @@ vim.diagnostic.config({ severity_sort = true, }) EOF + +augroup DiagnosticsHover + autocmd! + " Show diagnostics on "hover" + autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"}) +augroup END From 875c3c8886a21ad4350079ecf8c5ac34bbe1bb6f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 12:56:39 +0100 Subject: [PATCH 0499/1588] home: vim: remove 'lsp_lines' I like the hovering behaviour better, it's less "in your face". I might revisit the idea in the future, as a toggled mapping. --- home/vim/plugin/settings/diagnostics.vim | 3 --- 1 file changed, 3 deletions(-) diff --git a/home/vim/plugin/settings/diagnostics.vim b/home/vim/plugin/settings/diagnostics.vim index db68098..6b5e0ba 100644 --- a/home/vim/plugin/settings/diagnostics.vim +++ b/home/vim/plugin/settings/diagnostics.vim @@ -1,7 +1,4 @@ lua << EOF --- Show LSP diagnostics on virtual lines over affected regions -require("lsp_lines").register_lsp_virtual_lines() - vim.diagnostic.config({ -- Disable virtual test next to affected regions virtual_text = false, From d15bc59b7419ea41fd19f53ebe314a04346dd5cf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 13:42:23 +0100 Subject: [PATCH 0500/1588] home: vim: remove unimpaired mappings I do not use `azerty` anymore, no need for those. --- home/vim/after/plugin/mappings/unimpaired.vim | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 home/vim/after/plugin/mappings/unimpaired.vim diff --git a/home/vim/after/plugin/mappings/unimpaired.vim b/home/vim/after/plugin/mappings/unimpaired.vim deleted file mode 100644 index 53457bd..0000000 --- a/home/vim/after/plugin/mappings/unimpaired.vim +++ /dev/null @@ -1,7 +0,0 @@ -" Better fr layout mappings for vim-unimpaired and other '[' and ']' commands -nmap ( [ -nmap ) ] -omap ( [ -omap ) ] -xmap ( [ -xmap ) ] From 8b570694cd382ebbba169ccdefb8ee4054949243 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 13:37:51 +0100 Subject: [PATCH 0501/1588] home: vim: remove unused mappings The beancount mappings are absolutely unused. The `Y` mapping is built in NeoVim nowadays. --- home/vim/after/ftplugin/beancount.vim | 4 ---- home/vim/after/plugin/mappings/misc.vim | 3 --- home/vim/after/plugin/mappings/qf.vim | 8 -------- 3 files changed, 15 deletions(-) diff --git a/home/vim/after/ftplugin/beancount.vim b/home/vim/after/ftplugin/beancount.vim index c5645c8..a2b142e 100644 --- a/home/vim/after/ftplugin/beancount.vim +++ b/home/vim/after/ftplugin/beancount.vim @@ -7,7 +7,3 @@ let b:undo_ftplugin.='|setlocal shiftwidth<' " Have automatic padding of transactions so that decimal is on 52nd column let g:beancount_separator_col=52 - -" Automatic padding for transactions -nnoremap = :AlignCommodity -vnoremap = :AlignCommodity diff --git a/home/vim/after/plugin/mappings/misc.vim b/home/vim/after/plugin/mappings/misc.vim index 7f1ea1c..fc2ed3d 100644 --- a/home/vim/after/plugin/mappings/misc.vim +++ b/home/vim/after/plugin/mappings/misc.vim @@ -1,6 +1,3 @@ -" Yank until the end of line with Y, to be more consistent with D and C -nnoremap Y y$ - " Run make silently, then skip the 'Press ENTER to continue' noremap m :silent! :make! \| :redraw! diff --git a/home/vim/after/plugin/mappings/qf.vim b/home/vim/after/plugin/mappings/qf.vim index c5e353b..6c98759 100644 --- a/home/vim/after/plugin/mappings/qf.vim +++ b/home/vim/after/plugin/mappings/qf.vim @@ -1,11 +1,3 @@ -" Next and previous in quick-fix list -nmap fn (qf_qf_next) -nmap fp (qf_qf_previous) - -" Next and previous in location list -nmap ln (qf_loc_next) -nmap lp (qf_loc_previous) - " Toggle quick-fix and location lists nmap tf (qf_qf_toggle) nmap tl (qf_loc_toggle) From b76af022bd10c20d975a38b5cc85ad8dd32ab755 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 13:46:24 +0100 Subject: [PATCH 0502/1588] home: vim: move leader mappings to 'init.vim' --- home/vim/init.vim | 7 +++++++ home/vim/plugin/mappings/leader.vim | 6 ------ 2 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 home/vim/plugin/mappings/leader.vim diff --git a/home/vim/init.vim b/home/vim/init.vim index ae5b15f..ab5f648 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -13,6 +13,13 @@ set wildmenu " Enable syntax high-lighting and file-type specific plugins syntax on filetype plugin indent on + +" Map leader to space (needs the noremap trick to avoid moving the cursor) +nnoremap +let mapleader=" " + +" Map localleader to '!' (if I want to filter text, I use visual mode) +let maplocalleader="!" " }}} " Indentation configuration {{{ diff --git a/home/vim/plugin/mappings/leader.vim b/home/vim/plugin/mappings/leader.vim deleted file mode 100644 index 0aba0b2..0000000 --- a/home/vim/plugin/mappings/leader.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Map leader to space (needs the noremap trick to avoid moving the cursor) -nnoremap -let mapleader=" " - -" Map localleader to '!' (if I want to filter text, I use visual mode) -let maplocalleader="!" From 9e7f7ed736f8224998e2ec1eb76d3b4923c4b166 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 13:51:34 +0100 Subject: [PATCH 0503/1588] home: vim: add 'which-key-nvim' --- home/vim/default.nix | 3 +++ home/vim/plugin/settings/which-key.vim | 4 ++++ 2 files changed, 7 insertions(+) create mode 100644 home/vim/plugin/settings/which-key.vim diff --git a/home/vim/default.nix b/home/vim/default.nix index 9ef28a0..a15ad6a 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -68,6 +68,9 @@ in null-ls-nvim # LSP integration for linters and formatters (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting plenary-nvim # 'null-ls' dependency + + # UX improvements + which-key-nvim # Show available mappings ]; extraConfig = builtins.readFile ./init.vim; diff --git a/home/vim/plugin/settings/which-key.vim b/home/vim/plugin/settings/which-key.vim new file mode 100644 index 0000000..505bdc4 --- /dev/null +++ b/home/vim/plugin/settings/which-key.vim @@ -0,0 +1,4 @@ +lua << EOF +local wk = require("which-key") +wk.setup() +EOF From 4fec4d499d48c531dc39bf43a989b918becc64a1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 14:44:52 +0100 Subject: [PATCH 0504/1588] home: vim: use 'which-key' --- home/vim/after/plugin/mappings/fugitive.vim | 10 ---------- home/vim/after/plugin/mappings/fzf.vim | 16 ++++++++++++---- home/vim/after/plugin/mappings/git.vim | 20 ++++++++++++++++++++ home/vim/after/plugin/mappings/misc.vim | 13 +++++++++---- home/vim/after/plugin/mappings/qf.vim | 16 +++++++++++++--- 5 files changed, 54 insertions(+), 21 deletions(-) delete mode 100644 home/vim/after/plugin/mappings/fugitive.vim create mode 100644 home/vim/after/plugin/mappings/git.vim diff --git a/home/vim/after/plugin/mappings/fugitive.vim b/home/vim/after/plugin/mappings/fugitive.vim deleted file mode 100644 index 934f00e..0000000 --- a/home/vim/after/plugin/mappings/fugitive.vim +++ /dev/null @@ -1,10 +0,0 @@ -" Visual bindings for merging diffs as in normal mode -xnoremap dp :diffput -xnoremap do :diffget - -" Open status window -nnoremap gs :Gstatus -" Open diff view of current buffer: the up/left window is the current index -nnoremap gd :Gdiffsplit! -" Open current file log in new tab, populate its location list with history -nnoremap gl :spT:Gllog --follow -- %:p diff --git a/home/vim/after/plugin/mappings/fzf.vim b/home/vim/after/plugin/mappings/fzf.vim index 6bf4a44..fa98f0c 100644 --- a/home/vim/after/plugin/mappings/fzf.vim +++ b/home/vim/after/plugin/mappings/fzf.vim @@ -1,5 +1,13 @@ -" Only git-tracked files, Vim needs to be in a Git repository -nnoremap ff :GFiles +lua << EOF +local wk = require("which-key") -" Currently open buffers -nnoremap fb :Buffers +local keys = { + f = { + name = "Fuzzy finder", + b = { "Buffers", "Open buffers" }, + f = { "GFiles", "Git tracked files" }, + }, +} + +wk.register(keys, { prefix = "" }) +EOF diff --git a/home/vim/after/plugin/mappings/git.vim b/home/vim/after/plugin/mappings/git.vim new file mode 100644 index 0000000..677abd0 --- /dev/null +++ b/home/vim/after/plugin/mappings/git.vim @@ -0,0 +1,20 @@ +lua << EOF +local wk = require("which-key") + +local keys = { + d = { + name = "Merging diff hunks", + o = { "diffget", "Use this buffer's change", mode="x" }, + p = { "diffput", "Accept other buffer change", mode="x" }, + }, + ["g"] = { + name = "Git", + d = { "Gdiffsplit", "Current buffer diff" }, + l = { ":spT:Gllog --follow -- %:p", "Current buffer log" }, + m = { "(git-messenger)", "Current line blame" }, + s = { "Gstatus", "Status" }, + }, +} + +wk.register(keys) +EOF diff --git a/home/vim/after/plugin/mappings/misc.vim b/home/vim/after/plugin/mappings/misc.vim index fc2ed3d..d09410a 100644 --- a/home/vim/after/plugin/mappings/misc.vim +++ b/home/vim/after/plugin/mappings/misc.vim @@ -1,5 +1,10 @@ -" Run make silently, then skip the 'Press ENTER to continue' -noremap m :silent! :make! \| :redraw! +lua << EOF +local wk = require("which-key") -" Remove search-highlighting -noremap :nohls +local keys = { + m = { "silent! :make! | :redraw!", "Run make" }, + [""] = { "nohls", "Clear search highlight" }, +} + +wk.register(keys, { prefix = "" }) +EOF diff --git a/home/vim/after/plugin/mappings/qf.vim b/home/vim/after/plugin/mappings/qf.vim index 6c98759..e2eb8a7 100644 --- a/home/vim/after/plugin/mappings/qf.vim +++ b/home/vim/after/plugin/mappings/qf.vim @@ -1,3 +1,13 @@ -" Toggle quick-fix and location lists -nmap tf (qf_qf_toggle) -nmap tl (qf_loc_toggle) +lua << EOF +local wk = require("which-key") + +local keys = { + ["t"] = { + name = "Toggle", + f = { "(qf_qf_toggle)", "Toggle quickfix list" }, + l = { "(qf_loc_toggle)", "Toggle location list" }, + }, +} + +wk.register(keys, { prefix = "" }) +EOF From 27132703782d00ac15ef40da831c8c8608e1855f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 15:41:47 +0100 Subject: [PATCH 0505/1588] home: vim: document 'unimpaired' mappings By using 'which-key'. --- home/vim/after/plugin/mappings/unimpaired.vim | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 home/vim/after/plugin/mappings/unimpaired.vim diff --git a/home/vim/after/plugin/mappings/unimpaired.vim b/home/vim/after/plugin/mappings/unimpaired.vim new file mode 100644 index 0000000..cdebacd --- /dev/null +++ b/home/vim/after/plugin/mappings/unimpaired.vim @@ -0,0 +1,115 @@ +lua << EOF +local wk = require("which-key") + +local keys = { + -- Edition and navigation mappins + ["["] = { + name = "Previous", + [""] = "Insert blank line above", + [""] = "Previous location list file", + [""] = "Previous quickfix list file", + [""] = "Previous tag in preview window", + a = "Previous argument", + A = "First argument", + b = "Previous buffer", + B = "First buffer", + e = "Exchange previous line", + f = "Previous file in directory", + l = "Previous location list entry", + L = "First Location list entry", + n = "Previous conflict marker/diff hunk", + p = "Paste line above", + P = "Paste line above", + q = "Previous quickfix list entry", + Q = "First quickfix list entry", + t = "Previous matching tag", + T = "First matching tag", + z = "Previous fold", + -- Encoding + C = "C string encode", + u = "URL encode", + x = "XML encode", + y = "C string encode", + }, + ["]"] = { + name = "Next", + [""] = "Insert blank line below", + [""] = "Next location list file", + [""] = "Next quickfix list file", + [""] = "Next tag in preview window", + a = "Next argument", + A = "Last argument", + b = "Next buffer", + B = "Last buffer", + e = "Exchange next line", + f = "Next file in directory", + l = "Next location list entry", + L = "Last Location list entry", + n = "Next conflict marker/diff hunk", + p = "Paste line below", + P = "Paste line below", + q = "Next quickfix list entry", + Q = "Last quickfix list entry", + t = "Next matching tag", + T = "Last matching tag", + z = "Next fold", + -- Decoding + C = "C string decode", + u = "URL decode", + x = "XML decode", + y = "C string decode", + }, + + -- Option mappings + ["[o"] = { + name = "Enable option", + b = "Light background", + c = "Cursor line", + d = "Diff", + h = "Search high-lighting", + i = "Case insensitive search", + l = "List mode", + n = "Line numbers", + r = "Relative line numbers", + u = "Cursor column", + v = "Virtual editing", + w = "Text wrapping", + x = "Cursor line and column", + z = "Spell checking", + }, + ["]o"] = { + name = "Option off", + b = "Light background", + c = "Cursor line", + d = "Diff", + h = "Search high-lighting", + i = "Case insensitive search", + l = "List mode", + n = "Line numbers", + r = "Relative line numbers", + u = "Cursor column", + v = "Virtual editing", + w = "Text wrapping", + x = "Cursor line and column", + z = "Spell checking", + }, + ["yo"] = { + name = "Option toggle", + b = "Light background", + c = "Cursor line", + d = "Diff", + h = "Search high-lighting", + i = "Case insensitive search", + l = "List mode", + n = "Line numbers", + r = "Relative line numbers", + u = "Cursor column", + v = "Virtual editing", + w = "Text wrapping", + x = "Cursor line and column", + z = "Spell checking", + }, +} + +wk.register(keys) +EOF From 1408d7735a5244485e4efb8200af821d1a7c27dd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 15:56:19 +0100 Subject: [PATCH 0506/1588] home: vim: document 'commentary' mappings By using 'which-key'. --- home/vim/after/plugin/mappings/commentary.vim | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 home/vim/after/plugin/mappings/commentary.vim diff --git a/home/vim/after/plugin/mappings/commentary.vim b/home/vim/after/plugin/mappings/commentary.vim new file mode 100644 index 0000000..219d661 --- /dev/null +++ b/home/vim/after/plugin/mappings/commentary.vim @@ -0,0 +1,12 @@ +lua << EOF +local wk = require("which-key") + +local keys = { + name = "Comment/uncomment", + c = "Current line", + u = "Uncomment the current and adjacent commented lines", + ["gc"] = "Uncomment the current and adjacent commented lines", +} + +wk.register(keys, { prefix = "gc" }) +EOF From e81aee50e328e35f5514e60cee0b79fa52b5f8f7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 15:59:45 +0100 Subject: [PATCH 0507/1588] home: vim: remove mapping to run 'make' --- home/vim/after/plugin/mappings/misc.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/home/vim/after/plugin/mappings/misc.vim b/home/vim/after/plugin/mappings/misc.vim index d09410a..c7fcc8a 100644 --- a/home/vim/after/plugin/mappings/misc.vim +++ b/home/vim/after/plugin/mappings/misc.vim @@ -2,7 +2,6 @@ lua << EOF local wk = require("which-key") local keys = { - m = { "silent! :make! | :redraw!", "Run make" }, [""] = { "nohls", "Clear search highlight" }, } From a5ec91088d8262a670de0833598734cb0bc23175 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 19:28:15 +0100 Subject: [PATCH 0508/1588] home: vim: add 'treesitter-textobjects' --- home/vim/default.nix | 1 + home/vim/plugin/settings/tree-sitter.vim | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index a15ad6a..bb7bdec 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -67,6 +67,7 @@ in lsp_lines-nvim # Show diagnostics *over* regions null-ls-nvim # LSP integration for linters and formatters (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting + nvim-treesitter-textobjects # More textobjects plenary-nvim # 'null-ls' dependency # UX improvements diff --git a/home/vim/plugin/settings/tree-sitter.vim b/home/vim/plugin/settings/tree-sitter.vim index 8df22b0..10c22b1 100644 --- a/home/vim/plugin/settings/tree-sitter.vim +++ b/home/vim/plugin/settings/tree-sitter.vim @@ -9,5 +9,23 @@ ts_config.setup({ indent = { enable = true, }, + textobjects = { + select = { + enable = true, + -- Jump to matching text objects + lookahead = true, + keymaps = { + ["aa"] = "@parameter.outer", + ["ia"] = "@parameter.inner", + ["ab"] = "@block.outer", + ["ib"] = "@block.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ak"] = "@comment.outer", + }, + }, + }, }) EOF From 063686433f9707c6011b2a23d3aa85c3956d3a62 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 19:28:55 +0100 Subject: [PATCH 0509/1588] home: vim: document 'treesitter-textobjects' maps By using 'which-key'. --- .../plugin/mappings/tree-sitter-textobjects.vim | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 home/vim/after/plugin/mappings/tree-sitter-textobjects.vim diff --git a/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim b/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim new file mode 100644 index 0000000..ac960bd --- /dev/null +++ b/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim @@ -0,0 +1,17 @@ +lua << EOF +local wk = require("which-key") + +local keys = { + ["aa"] = "a parameter", + ["ia"] = "inner parameter", + ["ab"] = "a block", + ["ib"] = "inner block", + ["ac"] = "a class", + ["ic"] = "inner class", + ["af"] = "a function", + ["if"] = "inner function", + ["ak"] = "a comment", +} + +wk.register(keys, { mode = "o" }) +EOF From 8ad5327c893b1585dd726190f5fb0279c9e78db4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 19:45:09 +0100 Subject: [PATCH 0510/1588] home: vim: add 'tree-sitter' moves --- home/vim/plugin/settings/tree-sitter.vim | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/home/vim/plugin/settings/tree-sitter.vim b/home/vim/plugin/settings/tree-sitter.vim index 10c22b1..059fac7 100644 --- a/home/vim/plugin/settings/tree-sitter.vim +++ b/home/vim/plugin/settings/tree-sitter.vim @@ -26,6 +26,27 @@ ts_config.setup({ ["ak"] = "@comment.outer", }, }, + move = { + enable = true, + -- Add to jump list + set_jumps = true, + goto_next_start = { + ["]m"] = "@function.outer", + ["]]"] = "@class.outer", + }, + goto_next_end = { + ["]M"] = "@function.outer", + ["]["] = "@class.outer", + }, + goto_previous_start = { + ["[m"] = "@function.outer", + ["[["] = "@class.outer", + }, + goto_previous_end = { + ["[M"] = "@function.outer", + ["[]"] = "@class.outer", + }, + }, }, }) EOF From 56554f1a7a72aa4c1b5f71085d047048f72aed4b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 19:45:19 +0100 Subject: [PATCH 0511/1588] home: vim: document 'tree-sitter' moves --- .../plugin/mappings/tree-sitter-textobjects.vim | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim b/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim index ac960bd..0014975 100644 --- a/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim +++ b/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim @@ -1,7 +1,18 @@ lua << EOF local wk = require("which-key") -local keys = { +local motions = { + ["]m"] = "Next method start", + ["]M"] = "Next method end", + ["]]"] = "Next class start", + ["]["] = "Next class end", + ["[m"] = "Previous method start", + ["[M"] = "Previous method end", + ["[["] = "Previous class start", + ["[]"] = "Previous class end", +} + +local objects = { ["aa"] = "a parameter", ["ia"] = "inner parameter", ["ab"] = "a block", @@ -13,5 +24,6 @@ local keys = { ["ak"] = "a comment", } -wk.register(keys, { mode = "o" }) +wk.register(motions, { mode = "n" }) +wk.register(objects, { mode = "o" }) EOF From 8b84ab86253961b04bf95cd2dd9d9efe51237dc0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 26 Feb 2022 19:52:40 +0100 Subject: [PATCH 0512/1588] home: vim: add statement objects/moves And document it. --- home/vim/after/plugin/mappings/tree-sitter-textobjects.vim | 3 +++ home/vim/plugin/settings/tree-sitter.vim | 3 +++ 2 files changed, 6 insertions(+) diff --git a/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim b/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim index 0014975..9cabd91 100644 --- a/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim +++ b/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim @@ -4,10 +4,12 @@ local wk = require("which-key") local motions = { ["]m"] = "Next method start", ["]M"] = "Next method end", + ["]S"] = "Next statement start", ["]]"] = "Next class start", ["]["] = "Next class end", ["[m"] = "Previous method start", ["[M"] = "Previous method end", + ["[S"] = "Previous statement start", ["[["] = "Previous class start", ["[]"] = "Previous class end", } @@ -22,6 +24,7 @@ local objects = { ["af"] = "a function", ["if"] = "inner function", ["ak"] = "a comment", + ["aS"] = "a statement", } wk.register(motions, { mode = "n" }) diff --git a/home/vim/plugin/settings/tree-sitter.vim b/home/vim/plugin/settings/tree-sitter.vim index 059fac7..ab38090 100644 --- a/home/vim/plugin/settings/tree-sitter.vim +++ b/home/vim/plugin/settings/tree-sitter.vim @@ -24,6 +24,7 @@ ts_config.setup({ ["af"] = "@function.outer", ["if"] = "@function.inner", ["ak"] = "@comment.outer", + ["aS"] = "@statement.outer", }, }, move = { @@ -32,6 +33,7 @@ ts_config.setup({ set_jumps = true, goto_next_start = { ["]m"] = "@function.outer", + ["]S"] = "@statement.outer", ["]]"] = "@class.outer", }, goto_next_end = { @@ -40,6 +42,7 @@ ts_config.setup({ }, goto_previous_start = { ["[m"] = "@function.outer", + ["[S"] = "@statement.outer", ["[["] = "@class.outer", }, goto_previous_end = { From 8155f6be4c95618c2e3e1f4de23cbb680a606929 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 28 Feb 2022 11:31:26 +0100 Subject: [PATCH 0513/1588] home: vim: add 'ambroisie.utils' lua module --- home/vim/default.nix | 1 + home/vim/lua/ambroisie/utils.lua | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 home/vim/lua/ambroisie/utils.lua diff --git a/home/vim/default.nix b/home/vim/default.nix index bb7bdec..ea964cc 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -13,6 +13,7 @@ let "after" "autoload" "ftdetect" + "lua" "plugin" ]; in diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua new file mode 100644 index 0000000..8a6cb0f --- /dev/null +++ b/home/vim/lua/ambroisie/utils.lua @@ -0,0 +1,17 @@ +local M = {} + +--- checks if a given command is executable +---@param cmd string? command to check +---@return boolean executable +M.is_executable = function(cmd) + return cmd and vim.fn.executable(cmd) == 1 +end + +--- return a function that checks if a given command is executable +---@param cmd string? command to check +---@return fun(cmd: string): boolean executable +M.is_executable_condition = function(cmd) + return function() return M.is_executable(cmd) end +end + +return M From fb49a1df14f6024138bca06884a76f010701439e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 28 Feb 2022 11:31:26 +0100 Subject: [PATCH 0514/1588] home: vim: only use 'null-ls' sources if available This avoids the big red warning on each file that tries to use those sources... --- home/vim/after/ftplugin/bash.vim | 6 ++++++ home/vim/after/ftplugin/haskell.vim | 7 ++++++- home/vim/after/ftplugin/nix.vim | 7 ++++++- home/vim/after/ftplugin/python.vim | 24 ++++++++++++++++++++---- home/vim/after/ftplugin/sh.vim | 6 ++++++ home/vim/after/ftplugin/zsh.vim | 6 ++++++ 6 files changed, 50 insertions(+), 6 deletions(-) diff --git a/home/vim/after/ftplugin/bash.vim b/home/vim/after/ftplugin/bash.vim index cb85c8f..f9ca5eb 100644 --- a/home/vim/after/ftplugin/bash.vim +++ b/home/vim/after/ftplugin/bash.vim @@ -4,17 +4,23 @@ call ftplugined#check_undo_ft() " Set-up LSP, linters, formatters lua << EOF local null_ls = require("null-ls") +local utils = require("ambroisie.utils") + null_ls.register({ null_ls.builtins.diagnostics.shellcheck.with({ -- Show error code in message diagnostics_format = "[#{c}] #{m}", -- Require explicit empty string test, use bash dialect extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, + -- Only used if available + condition = utils.is_executable_condition("shellcheck"), }), null_ls.builtins.formatting.shfmt.with({ -- Indent with 4 spaces, simplify the code, indent switch cases, -- add space after redirection, use bash dialect extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" }, + -- Only used if available + condition = utils.is_executable_condition("shfmt"), }), }) EOF diff --git a/home/vim/after/ftplugin/haskell.vim b/home/vim/after/ftplugin/haskell.vim index 776adbe..89c82d2 100644 --- a/home/vim/after/ftplugin/haskell.vim +++ b/home/vim/after/ftplugin/haskell.vim @@ -4,8 +4,13 @@ call ftplugined#check_undo_ft() " Set-up LSP, linters, formatters lua << EOF local null_ls = require("null-ls") +local utils = require("ambroisie.utils") + null_ls.register({ - null_ls.builtins.formatting.brittany, + null_ls.builtins.formatting.brittany.with({ + -- Only used if available + condition = utils.is_executable_condition("brittany"), + }), }) EOF diff --git a/home/vim/after/ftplugin/nix.vim b/home/vim/after/ftplugin/nix.vim index a5056c8..a7421df 100644 --- a/home/vim/after/ftplugin/nix.vim +++ b/home/vim/after/ftplugin/nix.vim @@ -4,7 +4,12 @@ call ftplugined#check_undo_ft() " Set-up LSP, linters, formatters lua << EOF local null_ls = require("null-ls") +local utils = require("ambroisie.utils") + null_ls.register({ - null_ls.builtins.formatting.nixpkgs_fmt, + null_ls.builtins.formatting.nixpkgs_fmt.with({ + -- Only used if available + condition = utils.is_executable_condition("nixpkgs-fmt"), + }), }) EOF diff --git a/home/vim/after/ftplugin/python.vim b/home/vim/after/ftplugin/python.vim index ffc0327..42ea653 100644 --- a/home/vim/after/ftplugin/python.vim +++ b/home/vim/after/ftplugin/python.vim @@ -4,14 +4,30 @@ call ftplugined#check_undo_ft() " Set-up LSP, linters, formatters lua << EOF local null_ls = require("null-ls") +local utils = require("ambroisie.utils") + null_ls.register({ - null_ls.builtins.diagnostics.flake8, - null_ls.builtins.diagnostics.mypy, - null_ls.builtins.diagnostics.pylint, + null_ls.builtins.diagnostics.flake8.with({ + -- Only used if available + condition = utils.is_executable_condition("flake8"), + }), + null_ls.builtins.diagnostics.mypy.with({ + -- Only used if available + condition = utils.is_executable_condition("mypy"), + }), + null_ls.builtins.diagnostics.pylint.with({ + -- Only used if available + condition = utils.is_executable_condition("pylint"), + }) null_ls.builtins.formatting.black.with({ extra_args = { "--fast" }, + -- Only used if available + condition = utils.is_executable_condition("black"), + }), + null_ls.builtins.formatting.isort.with({ + -- Only used if available + condition = utils.is_executable_condition("isort"), }), - null_ls.builtins.formatting.isort, }) EOF diff --git a/home/vim/after/ftplugin/sh.vim b/home/vim/after/ftplugin/sh.vim index 442ebcb..0e7582f 100644 --- a/home/vim/after/ftplugin/sh.vim +++ b/home/vim/after/ftplugin/sh.vim @@ -4,17 +4,23 @@ call ftplugined#check_undo_ft() " Set-up LSP, linters, formatters lua << EOF local null_ls = require("null-ls") +local utils = require("ambroisie.utils") + null_ls.register({ null_ls.builtins.diagnostics.shellcheck.with({ -- Show error code in message diagnostics_format = "[#{c}] #{m}", -- Require explicit empty string test extra_args = { "-o", "avoid-nullary-conditions" }, + -- Only used if available + condition = utils.is_executable_condition("shellcheck"), }), null_ls.builtins.formatting.shfmt.with({ -- Indent with 4 spaces, simplify the code, indent switch cases, -- add space after redirection, use POSIX extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "posix" }, + -- Only used if available + condition = utils.is_executable_condition("shfmt"), }), }) EOF diff --git a/home/vim/after/ftplugin/zsh.vim b/home/vim/after/ftplugin/zsh.vim index cb85c8f..f9ca5eb 100644 --- a/home/vim/after/ftplugin/zsh.vim +++ b/home/vim/after/ftplugin/zsh.vim @@ -4,17 +4,23 @@ call ftplugined#check_undo_ft() " Set-up LSP, linters, formatters lua << EOF local null_ls = require("null-ls") +local utils = require("ambroisie.utils") + null_ls.register({ null_ls.builtins.diagnostics.shellcheck.with({ -- Show error code in message diagnostics_format = "[#{c}] #{m}", -- Require explicit empty string test, use bash dialect extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, + -- Only used if available + condition = utils.is_executable_condition("shellcheck"), }), null_ls.builtins.formatting.shfmt.with({ -- Indent with 4 spaces, simplify the code, indent switch cases, -- add space after redirection, use bash dialect extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" }, + -- Only used if available + condition = utils.is_executable_condition("shfmt"), }), }) EOF From 260f5cd66ac78e8626d6d509ef10ee8cd669845d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Mar 2022 11:20:50 +0100 Subject: [PATCH 0515/1588] home: vim: do not use 'ftplugin' for 'null-ls' Unfortunately, this registers the sources many times... I fear that I will have to settle for a centralised configuration for LSP-related options. --- home/vim/after/ftplugin/bash.vim | 26 -------- home/vim/after/ftplugin/c.vim | 10 --- home/vim/after/ftplugin/cpp.vim | 10 --- home/vim/after/ftplugin/haskell.vim | 13 ---- home/vim/after/ftplugin/nix.vim | 15 ----- home/vim/after/ftplugin/python.vim | 36 ----------- home/vim/after/ftplugin/sh.vim | 26 -------- home/vim/after/ftplugin/zsh.vim | 26 -------- home/vim/plugin/settings/null-ls.vim | 96 ++++++++++++++++++++++++++++ 9 files changed, 96 insertions(+), 162 deletions(-) delete mode 100644 home/vim/after/ftplugin/bash.vim delete mode 100644 home/vim/after/ftplugin/c.vim delete mode 100644 home/vim/after/ftplugin/cpp.vim delete mode 100644 home/vim/after/ftplugin/nix.vim delete mode 100644 home/vim/after/ftplugin/python.vim delete mode 100644 home/vim/after/ftplugin/sh.vim delete mode 100644 home/vim/after/ftplugin/zsh.vim diff --git a/home/vim/after/ftplugin/bash.vim b/home/vim/after/ftplugin/bash.vim deleted file mode 100644 index f9ca5eb..0000000 --- a/home/vim/after/ftplugin/bash.vim +++ /dev/null @@ -1,26 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Set-up LSP, linters, formatters -lua << EOF -local null_ls = require("null-ls") -local utils = require("ambroisie.utils") - -null_ls.register({ - null_ls.builtins.diagnostics.shellcheck.with({ - -- Show error code in message - diagnostics_format = "[#{c}] #{m}", - -- Require explicit empty string test, use bash dialect - extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, - -- Only used if available - condition = utils.is_executable_condition("shellcheck"), - }), - null_ls.builtins.formatting.shfmt.with({ - -- Indent with 4 spaces, simplify the code, indent switch cases, - -- add space after redirection, use bash dialect - extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" }, - -- Only used if available - condition = utils.is_executable_condition("shfmt"), - }), -}) -EOF diff --git a/home/vim/after/ftplugin/c.vim b/home/vim/after/ftplugin/c.vim deleted file mode 100644 index 7e5a367..0000000 --- a/home/vim/after/ftplugin/c.vim +++ /dev/null @@ -1,10 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Set-up LSP, linters, formatters -lua << EOF -local null_ls = require("null-ls") -null_ls.register({ - null_ls.builtins.formatting.clang_format, -}) -EOF diff --git a/home/vim/after/ftplugin/cpp.vim b/home/vim/after/ftplugin/cpp.vim deleted file mode 100644 index 7e5a367..0000000 --- a/home/vim/after/ftplugin/cpp.vim +++ /dev/null @@ -1,10 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Set-up LSP, linters, formatters -lua << EOF -local null_ls = require("null-ls") -null_ls.register({ - null_ls.builtins.formatting.clang_format, -}) -EOF diff --git a/home/vim/after/ftplugin/haskell.vim b/home/vim/after/ftplugin/haskell.vim index 89c82d2..978f346 100644 --- a/home/vim/after/ftplugin/haskell.vim +++ b/home/vim/after/ftplugin/haskell.vim @@ -1,19 +1,6 @@ " Create the `b:undo_ftplugin` variable if it doesn't exist call ftplugined#check_undo_ft() -" Set-up LSP, linters, formatters -lua << EOF -local null_ls = require("null-ls") -local utils = require("ambroisie.utils") - -null_ls.register({ - null_ls.builtins.formatting.brittany.with({ - -- Only used if available - condition = utils.is_executable_condition("brittany"), - }), -}) -EOF - " Use a small indentation value on Haskell files setlocal shiftwidth=2 let b:undo_ftplugin.='|setlocal shiftwidth<' diff --git a/home/vim/after/ftplugin/nix.vim b/home/vim/after/ftplugin/nix.vim deleted file mode 100644 index a7421df..0000000 --- a/home/vim/after/ftplugin/nix.vim +++ /dev/null @@ -1,15 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Set-up LSP, linters, formatters -lua << EOF -local null_ls = require("null-ls") -local utils = require("ambroisie.utils") - -null_ls.register({ - null_ls.builtins.formatting.nixpkgs_fmt.with({ - -- Only used if available - condition = utils.is_executable_condition("nixpkgs-fmt"), - }), -}) -EOF diff --git a/home/vim/after/ftplugin/python.vim b/home/vim/after/ftplugin/python.vim deleted file mode 100644 index 42ea653..0000000 --- a/home/vim/after/ftplugin/python.vim +++ /dev/null @@ -1,36 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Set-up LSP, linters, formatters -lua << EOF -local null_ls = require("null-ls") -local utils = require("ambroisie.utils") - -null_ls.register({ - null_ls.builtins.diagnostics.flake8.with({ - -- Only used if available - condition = utils.is_executable_condition("flake8"), - }), - null_ls.builtins.diagnostics.mypy.with({ - -- Only used if available - condition = utils.is_executable_condition("mypy"), - }), - null_ls.builtins.diagnostics.pylint.with({ - -- Only used if available - condition = utils.is_executable_condition("pylint"), - }) - null_ls.builtins.formatting.black.with({ - extra_args = { "--fast" }, - -- Only used if available - condition = utils.is_executable_condition("black"), - }), - null_ls.builtins.formatting.isort.with({ - -- Only used if available - condition = utils.is_executable_condition("isort"), - }), -}) -EOF - -" Change max length of a line to 88 for this buffer to match black's settings -setlocal colorcolumn=88 -let b:undo_ftplugin.='|setlocal colorcolumn<' diff --git a/home/vim/after/ftplugin/sh.vim b/home/vim/after/ftplugin/sh.vim deleted file mode 100644 index 0e7582f..0000000 --- a/home/vim/after/ftplugin/sh.vim +++ /dev/null @@ -1,26 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Set-up LSP, linters, formatters -lua << EOF -local null_ls = require("null-ls") -local utils = require("ambroisie.utils") - -null_ls.register({ - null_ls.builtins.diagnostics.shellcheck.with({ - -- Show error code in message - diagnostics_format = "[#{c}] #{m}", - -- Require explicit empty string test - extra_args = { "-o", "avoid-nullary-conditions" }, - -- Only used if available - condition = utils.is_executable_condition("shellcheck"), - }), - null_ls.builtins.formatting.shfmt.with({ - -- Indent with 4 spaces, simplify the code, indent switch cases, - -- add space after redirection, use POSIX - extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "posix" }, - -- Only used if available - condition = utils.is_executable_condition("shfmt"), - }), -}) -EOF diff --git a/home/vim/after/ftplugin/zsh.vim b/home/vim/after/ftplugin/zsh.vim deleted file mode 100644 index f9ca5eb..0000000 --- a/home/vim/after/ftplugin/zsh.vim +++ /dev/null @@ -1,26 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Set-up LSP, linters, formatters -lua << EOF -local null_ls = require("null-ls") -local utils = require("ambroisie.utils") - -null_ls.register({ - null_ls.builtins.diagnostics.shellcheck.with({ - -- Show error code in message - diagnostics_format = "[#{c}] #{m}", - -- Require explicit empty string test, use bash dialect - extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, - -- Only used if available - condition = utils.is_executable_condition("shellcheck"), - }), - null_ls.builtins.formatting.shfmt.with({ - -- Indent with 4 spaces, simplify the code, indent switch cases, - -- add space after redirection, use bash dialect - extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" }, - -- Only used if available - condition = utils.is_executable_condition("shfmt"), - }), -}) -EOF diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim index 5dbbd73..a3972a2 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.vim @@ -1,5 +1,7 @@ lua << EOF local null_ls = require("null-ls") +local utils = require("ambroisie.utils") + null_ls.setup({ on_attach = function(client) -- Format on save @@ -13,4 +15,98 @@ null_ls.setup({ end end, }) + +-- C, C++ +null_ls.register({ + null_ls.builtins.formatting.clang_format.with({ + -- Only used if available + condition = utils.is_executable_condition("clang-format"), + }), +}) + +-- Haskell +null_ls.register({ + null_ls.builtins.formatting.brittany.with({ + -- Only used if available + condition = utils.is_executable_condition("brittany"), + }), +}) + +-- Nix +null_ls.register({ + null_ls.builtins.formatting.nixpkgs_fmt.with({ + -- Only used if available + condition = utils.is_executable_condition("nixpkgs-fmt"), + }), +}) + +-- Python +null_ls.register({ + null_ls.builtins.diagnostics.flake8.with({ + -- Only used if available + condition = utils.is_executable_condition("flake8"), + }), + null_ls.builtins.diagnostics.mypy.with({ + -- Only used if available + condition = utils.is_executable_condition("mypy"), + }), + null_ls.builtins.diagnostics.pylint.with({ + -- Only used if available + condition = utils.is_executable_condition("pylint"), + }), + null_ls.builtins.formatting.black.with({ + extra_args = { "--fast" }, + -- Only used if available + condition = utils.is_executable_condition("black"), + }), + null_ls.builtins.formatting.isort.with({ + -- Only used if available + condition = utils.is_executable_condition("isort"), + }), +}) + + +-- Shell (non-POSIX) +null_ls.register({ + null_ls.builtins.diagnostics.shellcheck.with({ + -- Show error code in message + diagnostics_format = "[#{c}] #{m}", + -- Require explicit empty string test, use bash dialect + extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, + -- Restrict to bash and zsh + filetypes = { "bash", "zsh" }, + -- Only used if available + condition = utils.is_executable_condition("shellcheck"), + }), + null_ls.builtins.formatting.shfmt.with({ + -- Indent with 4 spaces, simplify the code, indent switch cases, + -- add space after redirection, use bash dialect + extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" }, + -- Restrict to bash and zsh + filetypes = { "bash", "zsh" }, + -- Only used if available + condition = utils.is_executable_condition("shfmt"), + }), +}) + +-- Shell (POSIX) +null_ls.register({ + null_ls.builtins.diagnostics.shellcheck.with({ + -- Show error code in message + diagnostics_format = "[#{c}] #{m}", + -- Require explicit empty string test + extra_args = { "-o", "avoid-nullary-conditions" }, + -- Restrict to POSIX sh + filetypes = { "sh" }, + -- Only used if available + condition = utils.is_executable_condition("shellcheck"), + }), + null_ls.builtins.formatting.shfmt.with({ + -- Indent with 4 spaces, simplify the code, indent switch cases, + -- add space after redirection, use POSIX + extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "posix" }, + -- Only used if available + condition = utils.is_executable_condition("shfmt"), + }), +}) EOF From 9dc910eae3b20454acf434c72367ee809b8d4b30 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Mar 2022 15:08:30 +0100 Subject: [PATCH 0516/1588] home: vim: add diagnostic navigation mappings --- home/vim/after/plugin/mappings/unimpaired.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/vim/after/plugin/mappings/unimpaired.vim b/home/vim/after/plugin/mappings/unimpaired.vim index cdebacd..884e56c 100644 --- a/home/vim/after/plugin/mappings/unimpaired.vim +++ b/home/vim/after/plugin/mappings/unimpaired.vim @@ -30,6 +30,8 @@ local keys = { u = "URL encode", x = "XML encode", y = "C string encode", + -- Custom + d = { vim.diagnostic.goto_prev, "Previous diagnostic" } }, ["]"] = { name = "Next", @@ -58,6 +60,8 @@ local keys = { u = "URL decode", x = "XML decode", y = "C string decode", + -- Custom + d = { vim.diagnostic.goto_next, "Next diagnostic" } }, -- Option mappings From 53d84b884d7f084a3eeeafaa147ed93f1ed56930 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Mar 2022 15:09:24 +0100 Subject: [PATCH 0517/1588] home: vim: move LSP-related 'on_attach' to 'utils' As it will be shared between `null-ls` and `lspconfig`, it makes sense to put it there. --- home/vim/lua/ambroisie/utils.lua | 15 +++++++++++++++ home/vim/plugin/settings/null-ls.vim | 12 +----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index 8a6cb0f..2b502a4 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -14,4 +14,19 @@ M.is_executable_condition = function(cmd) return function() return M.is_executable(cmd) end end +-- shared LSP configuration callback +-- @param client native client configuration +-- @param bufnr int? buffer number of the attched client +M.on_attach = function(client, bufnr) + -- Format on save + if client.resolved_capabilities.document_formatting then + vim.cmd([[ + augroup LspFormatting + autocmd! * + autocmd BufWritePre lua vim.lsp.buf.formatting_sync() + augroup END + ]]) + end +end + return M diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim index a3972a2..c241935 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.vim @@ -3,17 +3,7 @@ local null_ls = require("null-ls") local utils = require("ambroisie.utils") null_ls.setup({ - on_attach = function(client) - -- Format on save - if client.resolved_capabilities.document_formatting then - vim.cmd([[ - augroup LspFormatting - autocmd! * - autocmd BufWritePre lua vim.lsp.buf.formatting_sync() - augroup END - ]]) - end - end, + on_attach = utils.on_attach, }) -- C, C++ From 84188cb7fad6ddbf72735e86e0bea17a09f9604c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Mar 2022 15:22:59 +0100 Subject: [PATCH 0518/1588] home: vim: add basic LSP configuration Trying it out with `pyright` for now. --- home/vim/plugin/settings/lspconfig.vim | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 home/vim/plugin/settings/lspconfig.vim diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim new file mode 100644 index 0000000..46c82a6 --- /dev/null +++ b/home/vim/plugin/settings/lspconfig.vim @@ -0,0 +1,11 @@ +lua << EOF +local lsp = require("lspconfig") +local utils = require("ambroisie.utils") + +-- Python +if utils.is_executable("pyright") then + lsp.pyright.setup({ + on_attach = utils.on_attach, + }) +end +EOF From ae94693540d8a8a07cfb271d5e87f75df84169ba Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Mar 2022 15:23:20 +0100 Subject: [PATCH 0519/1588] home: vim: add 'rust-analyzer' LSP configuration --- home/vim/plugin/settings/lspconfig.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim index 46c82a6..f8e824e 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.vim @@ -8,4 +8,11 @@ if utils.is_executable("pyright") then on_attach = utils.on_attach, }) end + +-- Rust +if utils.is_executable("rust-analyzer") then + lsp.rust_analyzer.setup({ + on_attach = utils.on_attach, + }) +end EOF From 336d86d2d8a0562cf5911ff10b8dcdd5d621aac3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Mar 2022 15:23:42 +0100 Subject: [PATCH 0520/1588] home: vim: add 'clangd' LSP configuration --- home/vim/plugin/settings/lspconfig.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim index f8e824e..a51e284 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.vim @@ -2,6 +2,13 @@ lua << EOF local lsp = require("lspconfig") local utils = require("ambroisie.utils") +-- C/C++ +if utils.is_executable("clangd") then + lsp.clangd.setup({ + on_attach = utils.on_attach, + }) +end + -- Python if utils.is_executable("pyright") then lsp.pyright.setup({ From d3c04107bf23cd75b04a180f78a422a6d00c3d26 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Mar 2022 15:32:03 +0100 Subject: [PATCH 0521/1588] home: vim: move diagnostics config to 'on_attach' --- home/vim/lua/ambroisie/utils.lua | 22 ++++++++++++++++++++++ home/vim/plugin/settings/diagnostics.vim | 20 -------------------- 2 files changed, 22 insertions(+), 20 deletions(-) delete mode 100644 home/vim/plugin/settings/diagnostics.vim diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index 2b502a4..7b1322b 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -18,6 +18,28 @@ end -- @param client native client configuration -- @param bufnr int? buffer number of the attched client M.on_attach = function(client, bufnr) + -- Diagnostics + vim.diagnostic.config({ + -- Disable virtual test next to affected regions + virtual_text = false, + -- Show diagnostics signs + signs = true, + -- Underline offending regions + underline = true, + -- Do not bother me in the middle of insertion + update_in_insert = false, + -- Show highest severity first + severity_sort = true, + }) + + vim.cmd([[ + augroup DiagnosticsHover + autocmd! * + " Show diagnostics on "hover" + autocmd CursorHold,CursorHoldI lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"}) + augroup END + ]]) + -- Format on save if client.resolved_capabilities.document_formatting then vim.cmd([[ diff --git a/home/vim/plugin/settings/diagnostics.vim b/home/vim/plugin/settings/diagnostics.vim deleted file mode 100644 index 6b5e0ba..0000000 --- a/home/vim/plugin/settings/diagnostics.vim +++ /dev/null @@ -1,20 +0,0 @@ -lua << EOF -vim.diagnostic.config({ - -- Disable virtual test next to affected regions - virtual_text = false, - -- Show diagnostics signs - signs = true, - -- Underline offending regions - underline = true, - -- Do not bother me in the middle of insertion - update_in_insert = false, - -- Show highest severity first - severity_sort = true, -}) -EOF - -augroup DiagnosticsHover - autocmd! - " Show diagnostics on "hover" - autocmd! CursorHold,CursorHoldI * lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"}) -augroup END From ea9a0d835b8737433f50f1a065c02a24047c327b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Mar 2022 16:58:46 +0100 Subject: [PATCH 0522/1588] home: vim: remove unused 'gruvbox' configuration --- home/vim/plugin/settings/gruvbox.vim | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 home/vim/plugin/settings/gruvbox.vim diff --git a/home/vim/plugin/settings/gruvbox.vim b/home/vim/plugin/settings/gruvbox.vim deleted file mode 100644 index 4b14437..0000000 --- a/home/vim/plugin/settings/gruvbox.vim +++ /dev/null @@ -1,5 +0,0 @@ -" Use the high-contrast theme -let g:gruvbox_contrast_dark='hard' - -" Enable italics because urxvt supports them -let g:gruvbox_italic=1 From 9c3daae2b8221ccfb2e336a5d6e6066139003690 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 13:50:32 +0100 Subject: [PATCH 0523/1588] home: vim: add function to list LSP client names --- home/vim/lua/ambroisie/utils.lua | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index 7b1322b..e3833cc 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -14,6 +14,20 @@ M.is_executable_condition = function(cmd) return function() return M.is_executable(cmd) end end +-- list all active LSP clients for current buffer +-- @param bufnr int? buffer number +-- @return table all active LSP client names +M.list_lsp_clients = function(bufnr) + local clients = vim.lsp.buf_get_clients(bufnr) + local names = {} + + for _, client in ipairs(clients) do + table.insert(names, client.name) + end + + return names +end + -- shared LSP configuration callback -- @param client native client configuration -- @param bufnr int? buffer number of the attched client From 2152f9dd1ed3357202471fadba85ce9c749ceb15 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 13:54:52 +0100 Subject: [PATCH 0524/1588] home: vim: switch to 'lualine' --- home/vim/default.nix | 3 +- home/vim/plugin/settings/lightline.vim | 85 -------------------------- home/vim/plugin/settings/lualine.vim | 63 +++++++++++++++++++ 3 files changed, 64 insertions(+), 87 deletions(-) delete mode 100644 home/vim/plugin/settings/lightline.vim create mode 100644 home/vim/plugin/settings/lualine.vim diff --git a/home/vim/default.nix b/home/vim/default.nix index ea964cc..76d3425 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -31,8 +31,8 @@ in plugins = with pkgs.vimPlugins; [ # Theming - lightline-vim # Fancy status bar vim-gruvbox8 # Nice dark theme + lualine-nvim # A lua-based status line # tpope essentials vim-commentary # Easy comments @@ -64,7 +64,6 @@ in git-messenger-vim # A simple blame window # LSP and linting - lightline-lsp lsp_lines-nvim # Show diagnostics *over* regions null-ls-nvim # LSP integration for linters and formatters (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting diff --git a/home/vim/plugin/settings/lightline.vim b/home/vim/plugin/settings/lightline.vim deleted file mode 100644 index 14079f6..0000000 --- a/home/vim/plugin/settings/lightline.vim +++ /dev/null @@ -1,85 +0,0 @@ -" Initialise light-line setting structure -let g:lightline={} - -" Use the wombat colorscheme -let g:lightline.colorscheme='wombat' - -" Status-line for active buffer -let g:lightline.active={ - \ 'left': [ - \ [ 'mode', 'paste' ], - \ [ 'gitbranch', 'readonly', 'filename', 'modified' ], - \ [ 'spell' ], - \ ], - \ 'right': [ - \ [ 'lineinfo' ], - \ [ 'percent' ], - \ [ 'fileformat', 'fileencoding', 'filetype' ], - \ [ 'linter_errors', 'linter_warnings', 'linter_infos', 'linter_hints', 'linter_ok' ], - \ [ 'ctags_status' ], - \ ] - \ } - -" Status-line for inactive buffer -let g:lightline.inactive={ - \ 'left': [ - \ [ 'filename' ], - \ ], - \ 'right': [ - \ [ 'lineinfo' ], - \ [ 'percent' ], - \ ], - \ } - -" Which component should be written using which function -let g:lightline.component_function={ - \ 'readonly': 'LightlineReadonly', - \ 'modified': 'LightlineModified', - \ 'gitbranch': 'LightlineFugitive', - \ } - -" Which component can be expanded by using which function -let g:lightline.component_expand={ - \ 'linter_hints': 'lightline#lsp#hints', - \ 'linter_infos': 'lightline#lsp#infos', - \ 'linter_warnings': 'lightline#lsp#warnings', - \ 'linter_errors': 'lightline#lsp#errors', - \ 'linter_ok': 'lightline#lsp#ok', - \ } - -" How to color custom components -let g:lightline.component_type={ - \ 'readonly': 'error', - \ 'linter_hints': 'right', - \ 'linter_infos': 'right', - \ 'linter_warnings': 'warning', - \ 'linter_errors': 'error', - \ 'linter_ok': 'right', - \ } - -" Show pretty icons instead of text for linting status -let g:lightline#lsp#indicator_hints='🔍' -let g:lightline#lsp#indicator_infos='ℹ' -let g:lightline#lsp#indicator_warnings='◆' -let g:lightline#lsp#indicator_errors='✗' -let g:lightline#lsp#indicator_ok='✓' - - -" Show a lock icon when editing a read-only file when it makes sense -function! LightlineReadonly() - return &ft!~?'help\|vimfiler\|netrw' && &readonly ? '🔒' : '' -endfunction - -" Show a '+' when the buffer is modified, '-' if not, when it makes sense -function! LightlineModified() - return &ft=~'help\|vimfiler\|netrw' ? '' : &modified ? '+' : &modifiable ? '' : '-' -endfunction - -" Show branch name with nice icon in status line, when it makes sense -function! LightlineFugitive() - if &ft!~?'help\|vimfiler\|netrw' && exists('*fugitive#head') - let branch=fugitive#head() - return branch!=#'' ? ' '.branch : '' - endif - return '' -endfunction diff --git a/home/vim/plugin/settings/lualine.vim b/home/vim/plugin/settings/lualine.vim new file mode 100644 index 0000000..15e3a80 --- /dev/null +++ b/home/vim/plugin/settings/lualine.vim @@ -0,0 +1,63 @@ +lua << EOF +local lualine = require("lualine") +local utils = require("ambroisie.utils") + +local function list_spell_languages() + if not vim.opt.spell:get() then + return "" + end + + return table.concat(vim.opt.spelllang:get(), ", ") +end + +local function list_lsp_clients() + local client_names = utils.list_lsp_clients() + + if #client_names == 0 then + return "" + end + + return "[ " .. table.concat(client_names, " ") .. " ]" +end + +lualine.setup({ + options = { + icons_enabled = false, + section_separators = "", + component_separators = "|", + }, + sections = { + lualine_a = { + { "mode" }, + }, + lualine_b = { + { "branch" }, + { "filename", symbols = { readonly = "🔒" } }, + }, + lualine_c = { + { list_spell_languages }, + }, + lualine_x = { + { list_lsp_clients }, + { + "diagnostics", + -- Only use the diagnostics API + sources = { "nvim_diagnostic" }, + }, + }, + lualine_y = { + { "fileformat" }, + { "encoding" }, + { "filetype" }, + }, + lualine_z = { + "location", + }, + }, + extensions = { + "fugitive", + "fzf", + "quickfix", + }, +}) +EOF From bce9855da1180f4e70241dbca2cbff318f567ec5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 13:55:22 +0100 Subject: [PATCH 0525/1588] home: vim: show LSP progress in status line --- home/vim/default.nix | 1 + home/vim/plugin/settings/lualine.vim | 1 + 2 files changed, 2 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 76d3425..165cb4f 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -33,6 +33,7 @@ in # Theming vim-gruvbox8 # Nice dark theme lualine-nvim # A lua-based status line + lualine-lsp-progress # Show progress for LSP servers # tpope essentials vim-commentary # Easy comments diff --git a/home/vim/plugin/settings/lualine.vim b/home/vim/plugin/settings/lualine.vim index 15e3a80..2d281cd 100644 --- a/home/vim/plugin/settings/lualine.vim +++ b/home/vim/plugin/settings/lualine.vim @@ -36,6 +36,7 @@ lualine.setup({ }, lualine_c = { { list_spell_languages }, + { "lsp_progress" }, }, lualine_x = { { list_lsp_clients }, From e2be5f6139d7e7023fcc21eead2048d3bf0783fc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 16:49:32 +0100 Subject: [PATCH 0526/1588] home: zsh: use packaged 'fast-syntax-highlighting' --- home/zsh/default.nix | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 5dc9a63..0cd56d5 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -25,12 +25,8 @@ in plugins = with pkgs; [ { name = "fast-syntax-highlighting"; - src = fetchFromGitHub { - owner = "zdharma"; - repo = "fast-syntax-highlighting"; - rev = "v1.55"; - sha256 = "sha256-DWVFBoICroKaKgByLmDEo4O+xo6eA8YO792g8t8R7kA="; - }; + file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh"; + src = pkgs.zsh-fast-syntax-highlighting; } { name = "agkozak-zsh-prompt"; From 4356ae0f36a571c85cc13f993dd1f7d80316e93d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 16:59:26 +0100 Subject: [PATCH 0527/1588] home: zsh: refactor 'mkIf' block --- home/zsh/default.nix | 156 ++++++++++++++++++++++--------------------- 1 file changed, 79 insertions(+), 77 deletions(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 0cd56d5..266f5be 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -7,87 +7,89 @@ in enable = mkDisableOption "zsh configuration"; }; - config.programs.zsh = lib.mkIf cfg.enable { - enable = true; - dotDir = ".config/zsh"; # Don't clutter $HOME - enableCompletion = true; + config = lib.mkIf cfg.enable { + programs.zsh = { + enable = true; + dotDir = ".config/zsh"; # Don't clutter $HOME + enableCompletion = true; - history = { - size = 500000; - save = 500000; - extended = false; - ignoreSpace = true; - ignoreDups = true; - share = false; - path = "${config.xdg.dataHome}/zsh/zsh_history"; - }; + history = { + size = 500000; + save = 500000; + extended = false; + ignoreSpace = true; + ignoreDups = true; + share = false; + path = "${config.xdg.dataHome}/zsh/zsh_history"; + }; - plugins = with pkgs; [ - { - name = "fast-syntax-highlighting"; - file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh"; - src = pkgs.zsh-fast-syntax-highlighting; - } - { - name = "agkozak-zsh-prompt"; - src = fetchFromGitHub { - owner = "agkozak"; - repo = "agkozak-zsh-prompt"; - rev = "v3.9.0"; - sha256 = "sha256-VTRL+8ph2eI7iPht15epkLggAgtLGxB3DORFTW5GrhE="; - }; - } - ]; - - # Modal editing is life, but CLI benefits from emacs gymnastics - defaultKeymap = "emacs"; - - # Make those happen early to avoid doing double the work - initExtraFirst = - lib.optionalString config.my.home.tmux.enable '' - # Launch tmux unless already inside one - if [ -z "$TMUX" ]; then - exec tmux new-session - fi - '' - ; - - initExtra = lib.concatMapStrings builtins.readFile [ - ./completion-styles.zsh - ./extra-mappings.zsh - ./options.zsh - ]; - - localVariables = { - # I like having the full path - AGKOZAK_PROMPT_DIRTRIM = 0; - # Because I *am* from EPITA - AGKOZAK_PROMPT_CHAR = [ "42sh$" "42sh#" ":" ]; - # Easy on the eyes - AGKOZAK_COLORS_BRANCH_STATUS = "magenta"; - # I don't like moving my eyes - AGKOZAK_LEFT_PROMPT_ONLY = 1; - }; - - shellAliases = { - # Sometime `gpg-agent` errors out... - reset-agent = "gpg-connect-agent updatestartuptty /bye"; - }; - - # Enable VTE integration when using one of the affected shells - enableVteIntegration = - builtins.any (name: config.my.home.terminal.program == name) [ - "termite" + plugins = with pkgs; [ + { + name = "fast-syntax-highlighting"; + file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh"; + src = pkgs.zsh-fast-syntax-highlighting; + } + { + name = "agkozak-zsh-prompt"; + src = fetchFromGitHub { + owner = "agkozak"; + repo = "agkozak-zsh-prompt"; + rev = "v3.9.0"; + sha256 = "sha256-VTRL+8ph2eI7iPht15epkLggAgtLGxB3DORFTW5GrhE="; + }; + } ]; - }; - # Fuzzy-wuzzy - config.programs.fzf = lib.mkIf cfg.enable { - enable = true; - enableZshIntegration = true; - }; + # Modal editing is life, but CLI benefits from emacs gymnastics + defaultKeymap = "emacs"; - config.programs.dircolors = lib.mkIf cfg.enable { - enable = true; + # Make those happen early to avoid doing double the work + initExtraFirst = + lib.optionalString config.my.home.tmux.enable '' + # Launch tmux unless already inside one + if [ -z "$TMUX" ]; then + exec tmux new-session + fi + '' + ; + + initExtra = lib.concatMapStrings builtins.readFile [ + ./completion-styles.zsh + ./extra-mappings.zsh + ./options.zsh + ]; + + localVariables = { + # I like having the full path + AGKOZAK_PROMPT_DIRTRIM = 0; + # Because I *am* from EPITA + AGKOZAK_PROMPT_CHAR = [ "42sh$" "42sh#" ":" ]; + # Easy on the eyes + AGKOZAK_COLORS_BRANCH_STATUS = "magenta"; + # I don't like moving my eyes + AGKOZAK_LEFT_PROMPT_ONLY = 1; + }; + + shellAliases = { + # Sometime `gpg-agent` errors out... + reset-agent = "gpg-connect-agent updatestartuptty /bye"; + }; + + # Enable VTE integration when using one of the affected shells + enableVteIntegration = + builtins.any (name: config.my.home.terminal.program == name) [ + "termite" + ]; + }; + + # Fuzzy-wuzzy + programs.fzf = { + enable = true; + enableZshIntegration = true; + }; + + programs.dircolors = { + enable = true; + }; }; } From b6d17027261e16d2fe5321f211aceddc03dc0ecf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 17:01:11 +0100 Subject: [PATCH 0528/1588] home: zsh: add 'zsh-completions' when enabled Notably useful for `git-revise`. --- home/zsh/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 266f5be..27ea8bc 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -8,6 +8,10 @@ in }; config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + zsh-completions + ]; + programs.zsh = { enable = true; dotDir = ".config/zsh"; # Don't clutter $HOME From 12d2436713a8851d782780379ef5a94a85470f8b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 20:24:16 +0100 Subject: [PATCH 0529/1588] home: vim: use 'unimpaired' mappings for quickfix --- home/vim/after/plugin/mappings/qf.vim | 13 ------------- home/vim/after/plugin/mappings/unimpaired.vim | 6 ++++++ 2 files changed, 6 insertions(+), 13 deletions(-) delete mode 100644 home/vim/after/plugin/mappings/qf.vim diff --git a/home/vim/after/plugin/mappings/qf.vim b/home/vim/after/plugin/mappings/qf.vim deleted file mode 100644 index e2eb8a7..0000000 --- a/home/vim/after/plugin/mappings/qf.vim +++ /dev/null @@ -1,13 +0,0 @@ -lua << EOF -local wk = require("which-key") - -local keys = { - ["t"] = { - name = "Toggle", - f = { "(qf_qf_toggle)", "Toggle quickfix list" }, - l = { "(qf_loc_toggle)", "Toggle location list" }, - }, -} - -wk.register(keys, { prefix = "" }) -EOF diff --git a/home/vim/after/plugin/mappings/unimpaired.vim b/home/vim/after/plugin/mappings/unimpaired.vim index 884e56c..c4bb35b 100644 --- a/home/vim/after/plugin/mappings/unimpaired.vim +++ b/home/vim/after/plugin/mappings/unimpaired.vim @@ -70,6 +70,8 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", + e = { "lwindow", "Location list" }, + f = { "cwindow", "Quickfix list" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", @@ -86,6 +88,8 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", + e = { "lclose", "Location list" }, + f = { "cclose", "Quickfix list" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", @@ -102,6 +106,8 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", + e = { "(qf_loc_toggle)", "Location list" }, + f = { "(qf_qf_toggle)", "Quickfix list" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", From 2eb1f5cc44cec5117e443bcfd1339e679dc356b0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Mar 2022 20:25:42 +0100 Subject: [PATCH 0530/1588] home: vim: prefer 'clangd' to 'clang-format' Only use `clang-format` if `clangd` is not available, as its formatting is otherwise built into the LSP server. --- home/vim/plugin/settings/null-ls.vim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim index c241935..e00fa62 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.vim @@ -9,8 +9,10 @@ null_ls.setup({ -- C, C++ null_ls.register({ null_ls.builtins.formatting.clang_format.with({ - -- Only used if available - condition = utils.is_executable_condition("clang-format"), + -- Only used if available, but prefer clangd formatting if available + condition = function() + return utils.is_executable("clang-format") and not utils.is_executable("clangd") + end, }), }) From 8a6a18732aecb94b6a2f49061b30ff8174011c50 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Mar 2022 18:39:45 +0100 Subject: [PATCH 0531/1588] home: bat: use 'gruvbox-dark' theme To match my `vim` configuration. --- home/bat/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/bat/default.nix b/home/bat/default.nix index 8485dd3..ac58c06 100644 --- a/home/bat/default.nix +++ b/home/bat/default.nix @@ -10,6 +10,8 @@ in config.programs.bat = lib.mkIf cfg.enable { enable = true; config = { + theme = "gruvbox-dark"; + pager = with config.home.sessionVariables; "${PAGER} ${LESS}"; }; }; From 267b82393feb33a548003c88cac4ad3c56f63600 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Mar 2022 22:14:19 +0100 Subject: [PATCH 0532/1588] home: vim: add 'gitsigns-nvim' --- home/vim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 165cb4f..4b8090c 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -72,6 +72,7 @@ in plenary-nvim # 'null-ls' dependency # UX improvements + gitsigns-nvim # Fast git UI integration which-key-nvim # Show available mappings ]; From 03e412b2f05a7113bc057bb312b915cbe0f5dac1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Mar 2022 22:15:26 +0100 Subject: [PATCH 0533/1588] home: vim: configure 'gitsigns' And remove some unused mappings, or adapt them to 'gitsigns'. --- home/vim/after/plugin/mappings/git.vim | 2 - home/vim/plugin/settings/gitsigns.vim | 54 ++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 home/vim/plugin/settings/gitsigns.vim diff --git a/home/vim/after/plugin/mappings/git.vim b/home/vim/after/plugin/mappings/git.vim index 677abd0..bb8b194 100644 --- a/home/vim/after/plugin/mappings/git.vim +++ b/home/vim/after/plugin/mappings/git.vim @@ -9,10 +9,8 @@ local keys = { }, ["g"] = { name = "Git", - d = { "Gdiffsplit", "Current buffer diff" }, l = { ":spT:Gllog --follow -- %:p", "Current buffer log" }, m = { "(git-messenger)", "Current line blame" }, - s = { "Gstatus", "Status" }, }, } diff --git a/home/vim/plugin/settings/gitsigns.vim b/home/vim/plugin/settings/gitsigns.vim new file mode 100644 index 0000000..7804f3e --- /dev/null +++ b/home/vim/plugin/settings/gitsigns.vim @@ -0,0 +1,54 @@ +lua << EOF +local gitsigns = require('gitsigns') + +gitsigns.setup({ + -- I dislike the full-green sign column when this happens + attach_to_untracked = false, + + current_line_blame_opts = { + -- Show the blame quickly + delay = 100, + }, + + on_attach = function(bufnr) + local wk = require("which-key") + + local keys = { + -- Navigation + ["[c"] = { "&diff ? '[c' : 'Gitsigns prev_hunk'", "Previous hunk/diff", expr = true }, + ["]c"] = { "&diff ? ']c' : 'Gitsigns next_hunk'", "Next hunk/diff", expr = true }, + + + -- Commands + ["g"] = { + name = "Git", + -- Actions + b = { gitsigns.toggle_current_line_blame, "Toggle blame virtual text" }, + d = { gitsigns.diffthis, "Diff buffer" }, + D = { function() gitsigns.diffthis("~") end, "Diff buffer against last commit" }, + h = { gitsigns.toggle_deleted, "Show deleted hunks" }, + p = { gitsigns.preview_hunk, "Preview hunk" }, + r = { gitsigns.reset_hunk, "Revert hunk" }, + R = { gitsigns.reset_buffer, "Revert buffer" }, + s = { gitsigns.stage_hunk, "Stage hunk" }, + S = { gitsigns.stage_buffer, "Stage buffer" }, + u = { gitsigns.undo_stage_hunk, "Undo stage hunk" }, + ["["] = { gitsigns.prev_hunk, "Previous hunk" }, + ["]"] = { gitsigns.next_hunk, "Next hunk" }, + }, + } + + local objects = { + ["ih"] = { gitsigns.select_hunk, "Git hunk" }, + } + + local visual = { + ["ih"] = { gitsigns.select_hunk, "Git hunk" }, + } + + wk.register(keys, { buffer = bufnr }) + wk.register(objects, { mode = "o" }) + wk.register(visual, { mode = "x" }) + end, +}) +EOF From b6435f0d57c31028267e02f2b527c8a9c0b034f7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 09:36:05 +0100 Subject: [PATCH 0534/1588] home: vim: centralise 'git'-related mappings --- home/vim/after/plugin/mappings/git.vim | 18 ------------------ home/vim/plugin/settings/gitsigns.vim | 3 +++ 2 files changed, 3 insertions(+), 18 deletions(-) delete mode 100644 home/vim/after/plugin/mappings/git.vim diff --git a/home/vim/after/plugin/mappings/git.vim b/home/vim/after/plugin/mappings/git.vim deleted file mode 100644 index bb8b194..0000000 --- a/home/vim/after/plugin/mappings/git.vim +++ /dev/null @@ -1,18 +0,0 @@ -lua << EOF -local wk = require("which-key") - -local keys = { - d = { - name = "Merging diff hunks", - o = { "diffget", "Use this buffer's change", mode="x" }, - p = { "diffput", "Accept other buffer change", mode="x" }, - }, - ["g"] = { - name = "Git", - l = { ":spT:Gllog --follow -- %:p", "Current buffer log" }, - m = { "(git-messenger)", "Current line blame" }, - }, -} - -wk.register(keys) -EOF diff --git a/home/vim/plugin/settings/gitsigns.vim b/home/vim/plugin/settings/gitsigns.vim index 7804f3e..c8f11a1 100644 --- a/home/vim/plugin/settings/gitsigns.vim +++ b/home/vim/plugin/settings/gitsigns.vim @@ -26,7 +26,10 @@ gitsigns.setup({ b = { gitsigns.toggle_current_line_blame, "Toggle blame virtual text" }, d = { gitsigns.diffthis, "Diff buffer" }, D = { function() gitsigns.diffthis("~") end, "Diff buffer against last commit" }, + g = { "Git", "Git status" }, h = { gitsigns.toggle_deleted, "Show deleted hunks" }, + L = { ":spT:Gllog --follow -- %:p", "Current buffer log" }, + m = { "(git-messenger)", "Current line blame" }, p = { gitsigns.preview_hunk, "Preview hunk" }, r = { gitsigns.reset_hunk, "Revert hunk" }, R = { gitsigns.reset_buffer, "Revert buffer" }, From c28710773b81a4dc3aab3935260e40f2b07fc85e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 09:36:51 +0100 Subject: [PATCH 0535/1588] home: vim: rename 'git'-related settings file Now that it contains more settings than just 'gitsigns'. --- home/vim/plugin/settings/{gitsigns.vim => git.vim} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename home/vim/plugin/settings/{gitsigns.vim => git.vim} (100%) diff --git a/home/vim/plugin/settings/gitsigns.vim b/home/vim/plugin/settings/git.vim similarity index 100% rename from home/vim/plugin/settings/gitsigns.vim rename to home/vim/plugin/settings/git.vim From 754641778207f3a6acdad94b1f11fba471bf61b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 12:44:46 +0100 Subject: [PATCH 0536/1588] home: vim: add 'shellcheck' code actions --- home/vim/plugin/settings/null-ls.vim | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim index e00fa62..f76c451 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.vim @@ -60,6 +60,12 @@ null_ls.register({ -- Shell (non-POSIX) null_ls.register({ + null_ls.builtins.code_actions.shellcheck.with({ + -- Restrict to bash and zsh + filetypes = { "bash", "zsh" }, + -- Only used if available + condition = utils.is_executable_condition("shellcheck"), + }), null_ls.builtins.diagnostics.shellcheck.with({ -- Show error code in message diagnostics_format = "[#{c}] #{m}", @@ -83,6 +89,12 @@ null_ls.register({ -- Shell (POSIX) null_ls.register({ + null_ls.builtins.code_actions.shellcheck.with({ + -- Restrict to POSIX sh + filetypes = { "sh" }, + -- Only used if available + condition = utils.is_executable_condition("shellcheck"), + }), null_ls.builtins.diagnostics.shellcheck.with({ -- Show error code in message diagnostics_format = "[#{c}] #{m}", From 03564813af461069dad7ec2a3487389b01f7502d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 12:52:48 +0100 Subject: [PATCH 0537/1588] home: vim: add linters & formatters to vim package I use them so often, I basically always want them available. --- home/vim/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 4b8090c..365ae6d 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -77,6 +77,16 @@ in ]; extraConfig = builtins.readFile ./init.vim; + + # Linters, formatters, etc... + extraPackages = with pkgs; [ + # Nix + nixpkgs-fmt + + # Shell + shellcheck + shfmt + ]; }; config.xdg.configFile = lib.mkIf cfg.enable configFiles; From 997b98f49b4966ada4ab2555845a1423e29f288a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 12:54:50 +0100 Subject: [PATCH 0538/1588] home: vim: add 'clang-tools' to vim package It includes both `clangd` and `clang-format`, even though I'm mostly looking for the later. --- home/vim/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 365ae6d..fdb4dfd 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -80,6 +80,9 @@ in # Linters, formatters, etc... extraPackages = with pkgs; [ + # C/C++ + clang-tools + # Nix nixpkgs-fmt From 8b4a5e174f6727d112d862b1ff6accd4bfa9f38c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 14:20:29 +0100 Subject: [PATCH 0539/1588] home: vim: add 'rnix' LSP configuration --- home/vim/plugin/settings/lspconfig.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim index a51e284..2442059 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.vim @@ -9,6 +9,13 @@ if utils.is_executable("clangd") then }) end +-- Nix +if utils.is_executable("rnix-lsp") then + lsp.rnix.setup({ + on_attach = utils.on_attach, + }) +end + -- Python if utils.is_executable("pyright") then lsp.pyright.setup({ From bde9bef1c999fcf91f890e4b22f1330b6752c342 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 14:21:28 +0100 Subject: [PATCH 0540/1588] home: vim: don't use 'nixpkgs-fmt' with 'rnix' --- home/vim/plugin/settings/null-ls.vim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim index f76c451..6fc0e25 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.vim @@ -27,8 +27,10 @@ null_ls.register({ -- Nix null_ls.register({ null_ls.builtins.formatting.nixpkgs_fmt.with({ - -- Only used if available - condition = utils.is_executable_condition("nixpkgs-fmt"), + -- Only used if available, but prefer rnix if available + condition = function() + return utils.is_executable("nixpkgs-fmt") and not utils.is_executable("rnix-lsp") + end, }), }) From f10d3f73106dc548e35dab8481576424f7d586d5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 14:23:09 +0100 Subject: [PATCH 0541/1588] home: vim: add mappings for LSP functionality --- home/vim/lua/ambroisie/utils.lua | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index e3833cc..559911c 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -63,6 +63,27 @@ M.on_attach = function(client, bufnr) augroup END ]]) end + + -- Mappings + local wk = require("which-key") + + local keys = { + K = { vim.lsp.buf.hover, "Show symbol information" }, + ["gd"] = { vim.lsp.buf.definition, "Go to definition" }, + ["gD"] = { vim.lsp.buf.declaration, "Go to declaration" }, + ["gi"] = { vim.lsp.buf.implementation, "Go to implementation" }, + ["gr"] = { vim.lsp.buf.references, "List all references" }, + + ["c"] = { + name = "Code", + a = { vim.lsp.buf.code_action, "Code actions" }, + r = { vim.lsp.buf.rename, "Rename symbol" }, + s = { vim.lsp.buf.signature_help, "Show signature" }, + t = { vim.lsp.buf.type_definition, "Go to type definition" }, + }, + } + + wk.register(keys, { buffer = bufnr }) end return M From 2ad4ba563d6dccdff391648eb2a4d844b166db85 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 14:38:16 +0100 Subject: [PATCH 0542/1588] home: vim: remove 'fastfold' I don't think I need it anymore, neovim improves the native performance well enough. --- home/vim/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index fdb4dfd..ddcb663 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -56,7 +56,6 @@ in vim-toml # General enhancements - fastfold # Better folding vim-qf # Better quick-fix list # Other wrappers From eaeb9db76f016638ea128299b6d7fe2bc2c9e683 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 15:05:34 +0100 Subject: [PATCH 0543/1588] home: vim: add 'dump' utility function --- home/vim/lua/ambroisie/utils.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index 559911c..dc66a4f 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -1,5 +1,11 @@ local M = {} +-- pretty print lua object +-- @param obj any object to pretty print +M.dump = function(obj) + print(vim.inspect(obj)) +end + --- checks if a given command is executable ---@param cmd string? command to check ---@return boolean executable From ac0df2552adb9a5e34dc3cb8a43928035fac1927 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 15:06:03 +0100 Subject: [PATCH 0544/1588] home: vim: lsp: add workspace mappings --- home/vim/lua/ambroisie/utils.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index dc66a4f..f159c37 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -73,6 +73,10 @@ M.on_attach = function(client, bufnr) -- Mappings local wk = require("which-key") + local function list_workspace_folders() + M.dump(vim.lsp.buf.list_workspace_folders()) + end + local keys = { K = { vim.lsp.buf.hover, "Show symbol information" }, ["gd"] = { vim.lsp.buf.definition, "Go to definition" }, @@ -86,6 +90,12 @@ M.on_attach = function(client, bufnr) r = { vim.lsp.buf.rename, "Rename symbol" }, s = { vim.lsp.buf.signature_help, "Show signature" }, t = { vim.lsp.buf.type_definition, "Go to type definition" }, + w = { + name = "Workspace", + a = { vim.lsp.buf.add_workspace_folder, "Add folder to workspace" }, + l = { list_workspace_folders, "List folders in workspace" }, + r = { vim.lsp.buf.remove_workspace_folder, "Remove folder from workspace" }, + }, }, } From f374a4f78c64baaecba51c25e49a356c46607282 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 15:13:29 +0100 Subject: [PATCH 0545/1588] home: vim: lsp: add diagnostic mappings --- home/vim/lua/ambroisie/utils.lua | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index f159c37..72f009c 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -77,6 +77,14 @@ M.on_attach = function(client, bufnr) M.dump(vim.lsp.buf.list_workspace_folders()) end + local function show_line_diagnostics() + vim.diagnostic.open_float(nil, { scope="line" }) + end + + local function show_buffer_diagnostics() + vim.diagnostic.open_float(nil, { scope="buffer" }) + end + local keys = { K = { vim.lsp.buf.hover, "Show symbol information" }, ["gd"] = { vim.lsp.buf.definition, "Go to definition" }, @@ -87,6 +95,8 @@ M.on_attach = function(client, bufnr) ["c"] = { name = "Code", a = { vim.lsp.buf.code_action, "Code actions" }, + d = { show_line_diagnostics, "Show line diagnostics" }, + D = { show_buffer_diagnostics, "Show buffer diagnostics" }, r = { vim.lsp.buf.rename, "Rename symbol" }, s = { vim.lsp.buf.signature_help, "Show signature" }, t = { vim.lsp.buf.type_definition, "Go to type definition" }, From 10635e088863c6ae5e99420b9e9b1130984250a1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 16:04:51 +0100 Subject: [PATCH 0546/1588] home: vim: git: use more appropriate mapping names --- home/vim/plugin/settings/git.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/vim/plugin/settings/git.vim b/home/vim/plugin/settings/git.vim index c8f11a1..f376569 100644 --- a/home/vim/plugin/settings/git.vim +++ b/home/vim/plugin/settings/git.vim @@ -31,8 +31,8 @@ gitsigns.setup({ L = { ":spT:Gllog --follow -- %:p", "Current buffer log" }, m = { "(git-messenger)", "Current line blame" }, p = { gitsigns.preview_hunk, "Preview hunk" }, - r = { gitsigns.reset_hunk, "Revert hunk" }, - R = { gitsigns.reset_buffer, "Revert buffer" }, + r = { gitsigns.reset_hunk, "Restore hunk" }, + R = { gitsigns.reset_buffer, "Restore buffer" }, s = { gitsigns.stage_hunk, "Stage hunk" }, S = { gitsigns.stage_buffer, "Stage buffer" }, u = { gitsigns.undo_stage_hunk, "Undo stage hunk" }, From 714eb8ca2de2f46358d3f8ef68d36440317b18d8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 16:25:11 +0100 Subject: [PATCH 0547/1588] home: vim: git: 'gitsigns' mappings are per buffer --- home/vim/plugin/settings/git.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/vim/plugin/settings/git.vim b/home/vim/plugin/settings/git.vim index f376569..7059f01 100644 --- a/home/vim/plugin/settings/git.vim +++ b/home/vim/plugin/settings/git.vim @@ -50,8 +50,8 @@ gitsigns.setup({ } wk.register(keys, { buffer = bufnr }) - wk.register(objects, { mode = "o" }) - wk.register(visual, { mode = "x" }) + wk.register(objects, { buffer = bufnr, mode = "o" }) + wk.register(visual, { buffer = bufnr, mode = "x" }) end, }) EOF From d006ba4611104da40310d752d003e8865a6c7d64 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 16:29:54 +0100 Subject: [PATCH 0548/1588] home: vim: git: more visual mappings I cannot use the functions directly, as I would need to calculate the current selections begin and end points and use them as arguments. To be investigated. --- home/vim/plugin/settings/git.vim | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/home/vim/plugin/settings/git.vim b/home/vim/plugin/settings/git.vim index 7059f01..0deba6a 100644 --- a/home/vim/plugin/settings/git.vim +++ b/home/vim/plugin/settings/git.vim @@ -47,6 +47,15 @@ gitsigns.setup({ local visual = { ["ih"] = { gitsigns.select_hunk, "Git hunk" }, + + -- Only the actual command can make use of the visual selection... + ["g"] = { + name = "Git", + p = { ":Gitsigns preview_hunk", "Preview selection" }, + r = { ":Gitsigns reset_hunk", "Restore selection" }, + s = { ":Gitsigns stage_hunk", "Stage selection" }, + u = { ":Gitsigns undo_stage_hunk", "Undo stage selection" }, + }, } wk.register(keys, { buffer = bufnr }) From 02225dcb93cfd97247300b4f28f1cb1203177c28 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 16:54:40 +0100 Subject: [PATCH 0549/1588] home: vim: add 'nvim-cmp' --- home/vim/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index ddcb663..8e8880c 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -70,6 +70,12 @@ in nvim-treesitter-textobjects # More textobjects plenary-nvim # 'null-ls' dependency + # Completion + nvim-cmp # Completion engine + cmp-buffer # Words from open buffers + cmp-path # Path name suggestions + cmp-nvim-lua # NeoVim lua API + # UX improvements gitsigns-nvim # Fast git UI integration which-key-nvim # Show available mappings From 15b3766aef5a197cd2ebfa17bd15216be5125cf3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 16:54:40 +0100 Subject: [PATCH 0550/1588] home: vim: configure 'nvim-cmp' --- home/vim/plugin/settings/completion.vim | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 home/vim/plugin/settings/completion.vim diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim new file mode 100644 index 0000000..2069902 --- /dev/null +++ b/home/vim/plugin/settings/completion.vim @@ -0,0 +1,14 @@ +" Show completion menu in all cases, and don't select anything +set completeopt=menu,menuone,noselect + +lua << EOF +local cmp = require("cmp") + +cmp.setup({ + sources = { + { name = "buffer" }, + { name = "nvim_lua" }, + { name = "path" }, + }, +}) +EOF From bceb5315189dbb0eaac86e8747b2440649d9cb29 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 20:22:43 +0100 Subject: [PATCH 0551/1588] home: vim: add 'cmp-nvim-lsp' --- home/vim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 8e8880c..9051027 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -74,6 +74,7 @@ in nvim-cmp # Completion engine cmp-buffer # Words from open buffers cmp-path # Path name suggestions + cmp-nvim-lsp # LSP suggestions cmp-nvim-lua # NeoVim lua API # UX improvements From 8bcd40633a091b41ac48009ade25c14ab5cb4878 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Mar 2022 17:36:01 +0100 Subject: [PATCH 0552/1588] home: vim: configure 'nvim-cmp' for LSP --- home/vim/plugin/settings/completion.vim | 1 + home/vim/plugin/settings/lspconfig.vim | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 2069902..12741d6 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -7,6 +7,7 @@ local cmp = require("cmp") cmp.setup({ sources = { { name = "buffer" }, + { name = "nvim_lsp" }, { name = "nvim_lua" }, { name = "path" }, }, diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim index 2442059..5d1b135 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.vim @@ -2,9 +2,14 @@ lua << EOF local lsp = require("lspconfig") local utils = require("ambroisie.utils") +-- Inform servers we are able to do completion, snippets, etc... +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) + -- C/C++ if utils.is_executable("clangd") then lsp.clangd.setup({ + capabilities = capabilities, on_attach = utils.on_attach, }) end @@ -12,6 +17,7 @@ end -- Nix if utils.is_executable("rnix-lsp") then lsp.rnix.setup({ + capabilities = capabilities, on_attach = utils.on_attach, }) end @@ -19,6 +25,7 @@ end -- Python if utils.is_executable("pyright") then lsp.pyright.setup({ + capabilities = capabilities, on_attach = utils.on_attach, }) end @@ -26,6 +33,7 @@ end -- Rust if utils.is_executable("rust-analyzer") then lsp.rust_analyzer.setup({ + capabilities = capabilities, on_attach = utils.on_attach, }) end From aac464c9a2ac098c7772188a0234042c5b81910e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 6 Mar 2022 11:15:38 +0100 Subject: [PATCH 0553/1588] home: vim: completion: use native menu --- home/vim/plugin/settings/completion.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 12741d6..448ea53 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -5,6 +5,9 @@ lua << EOF local cmp = require("cmp") cmp.setup({ + view = { + entries = "native", + }, sources = { { name = "buffer" }, { name = "nvim_lsp" }, From 5b8e410596cb4294bf24d2c75ad57f8b0314d7df Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 6 Mar 2022 11:53:48 +0100 Subject: [PATCH 0554/1588] home: vim: completion: use better order --- home/vim/plugin/settings/completion.vim | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 448ea53..fce33ea 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -9,10 +9,21 @@ cmp.setup({ entries = "native", }, sources = { - { name = "buffer" }, - { name = "nvim_lsp" }, - { name = "nvim_lua" }, - { name = "path" }, + { name = "path", priority_weight = 110 }, + { name = "nvim_lsp", priority_weight = 100 }, + { name = "nvim_lua", priority_weight = 90 }, + { name = "buffer", priority_weight = 50 }, + }, + sorting = { + comparators = { + cmp.config.compare.offset, + cmp.config.compare.exact, + cmp.config.compare.score, + cmp.config.compare.kind, + cmp.config.compare.sort_text, + cmp.config.compare.length, + cmp.config.compare.order, + }, }, }) EOF From b8bd1ef2b443edf5bff4dd39267221cc6c10fdfb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 6 Mar 2022 11:54:21 +0100 Subject: [PATCH 0555/1588] home: vim: completion: limit 'buffer' suggestions Otherwise it gets overwhelming, and most are useless. --- home/vim/plugin/settings/completion.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index fce33ea..0d0507f 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -12,7 +12,7 @@ cmp.setup({ { name = "path", priority_weight = 110 }, { name = "nvim_lsp", priority_weight = 100 }, { name = "nvim_lua", priority_weight = 90 }, - { name = "buffer", priority_weight = 50 }, + { name = "buffer", max_item_count = 5, priority_weight = 50 }, }, sorting = { comparators = { From 62e29fc6221aed91455683447cee5cc1dca938b9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 12:50:36 +0100 Subject: [PATCH 0556/1588] home: packages: add 'ripgrep' --- home/packages/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/packages/default.nix b/home/packages/default.nix index 10d1c12..469b539 100644 --- a/home/packages/default.nix +++ b/home/packages/default.nix @@ -20,6 +20,7 @@ in config.home.packages = with pkgs; lib.mkIf cfg.enable ([ file mosh + ripgrep rr termite.terminfo ] ++ cfg.additionalPackages); From 5e3bd82f8ba5f56d1578e0440e201d2f28cfc536 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 12:57:16 +0100 Subject: [PATCH 0557/1588] home: packages: add 'fd' --- home/packages/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/packages/default.nix b/home/packages/default.nix index 469b539..434cb0d 100644 --- a/home/packages/default.nix +++ b/home/packages/default.nix @@ -18,6 +18,7 @@ in }; config.home.packages = with pkgs; lib.mkIf cfg.enable ([ + fd file mosh ripgrep From 7fec5f870af12d9b0319700a27ee0e96866fc349 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 13:05:28 +0100 Subject: [PATCH 0558/1588] home: vim: replace 'fzf' with 'telescope' I like the fact that it uses built-in buffers to preview files. It also has more inertia behind it, tighter integrations in the ecosystem. --- home/vim/after/plugin/mappings/fzf.vim | 13 ------------- home/vim/after/plugin/mappings/telescope.vim | 16 ++++++++++++++++ home/vim/default.nix | 5 ++--- home/vim/plugin/settings/fzf.vim | 8 -------- 4 files changed, 18 insertions(+), 24 deletions(-) delete mode 100644 home/vim/after/plugin/mappings/fzf.vim create mode 100644 home/vim/after/plugin/mappings/telescope.vim delete mode 100644 home/vim/plugin/settings/fzf.vim diff --git a/home/vim/after/plugin/mappings/fzf.vim b/home/vim/after/plugin/mappings/fzf.vim deleted file mode 100644 index fa98f0c..0000000 --- a/home/vim/after/plugin/mappings/fzf.vim +++ /dev/null @@ -1,13 +0,0 @@ -lua << EOF -local wk = require("which-key") - -local keys = { - f = { - name = "Fuzzy finder", - b = { "Buffers", "Open buffers" }, - f = { "GFiles", "Git tracked files" }, - }, -} - -wk.register(keys, { prefix = "" }) -EOF diff --git a/home/vim/after/plugin/mappings/telescope.vim b/home/vim/after/plugin/mappings/telescope.vim new file mode 100644 index 0000000..36fdd16 --- /dev/null +++ b/home/vim/after/plugin/mappings/telescope.vim @@ -0,0 +1,16 @@ +lua << EOF +local wk = require("which-key") +local telescope_builtin = require("telescope.builtin") + +local keys = { + f = { + name = "Fuzzy finder", + b = { telescope_builtin.buffers, "Open buffers" }, + f = { telescope_builtin.git_files, "Git tracked files" }, + F = { telescope_builtin.find_files, "Files" }, + }, +} + +wk.register(keys, { prefix = "" }) +EOF + diff --git a/home/vim/default.nix b/home/vim/default.nix index 9051027..b2bba15 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -59,8 +59,6 @@ in vim-qf # Better quick-fix list # Other wrappers - fzfWrapper # The vim plugin inside the 'fzf' package - fzf-vim # Fuzzy commands git-messenger-vim # A simple blame window # LSP and linting @@ -68,7 +66,7 @@ in null-ls-nvim # LSP integration for linters and formatters (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting nvim-treesitter-textobjects # More textobjects - plenary-nvim # 'null-ls' dependency + plenary-nvim # 'null-ls', 'telescope' dependency # Completion nvim-cmp # Completion engine @@ -80,6 +78,7 @@ in # UX improvements gitsigns-nvim # Fast git UI integration which-key-nvim # Show available mappings + telescope-nvim # Fuzzy finder interface ]; extraConfig = builtins.readFile ./init.vim; diff --git a/home/vim/plugin/settings/fzf.vim b/home/vim/plugin/settings/fzf.vim deleted file mode 100644 index 7125b70..0000000 --- a/home/vim/plugin/settings/fzf.vim +++ /dev/null @@ -1,8 +0,0 @@ -" Use a floating window when availble -if has('nvim-0.4.0') || has("patch-8.2.0191") - let g:fzf_layout = { 'window': { - \ 'width': 0.9, - \ 'height': 0.7, - \ 'highlight': 'Comment', - \ 'rounded': v:false } } -endif From 8b4da72c84cb90504655d8e081aa71723f5a5301 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 13:10:56 +0100 Subject: [PATCH 0559/1588] home: vim: add 'telescope' grep mappings --- home/vim/after/plugin/mappings/telescope.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/vim/after/plugin/mappings/telescope.vim b/home/vim/after/plugin/mappings/telescope.vim index 36fdd16..eb6363d 100644 --- a/home/vim/after/plugin/mappings/telescope.vim +++ b/home/vim/after/plugin/mappings/telescope.vim @@ -8,6 +8,8 @@ local keys = { b = { telescope_builtin.buffers, "Open buffers" }, f = { telescope_builtin.git_files, "Git tracked files" }, F = { telescope_builtin.find_files, "Files" }, + g = { telescope_builtin.live_grep, "Grep string" }, + G = { telescope_builtin.grep_string, "Grep string under cursor" }, }, } From 9364fe546d7b694d52a32817cf8ce274cb0c0e28 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 13:15:36 +0100 Subject: [PATCH 0560/1588] home: vim: telescope: set-up 'fzf' matching --- home/vim/default.nix | 1 + home/vim/plugin/settings/telescope.vim | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 home/vim/plugin/settings/telescope.vim diff --git a/home/vim/default.nix b/home/vim/default.nix index b2bba15..d54ca23 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -78,6 +78,7 @@ in # UX improvements gitsigns-nvim # Fast git UI integration which-key-nvim # Show available mappings + telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm telescope-nvim # Fuzzy finder interface ]; diff --git a/home/vim/plugin/settings/telescope.vim b/home/vim/plugin/settings/telescope.vim new file mode 100644 index 0000000..4f7aeb6 --- /dev/null +++ b/home/vim/plugin/settings/telescope.vim @@ -0,0 +1,16 @@ +lua << EOF +local telescope = require("telescope") + +telescope.setup({ + extensions = { + fzf = { + fuzzy = true, + override_generic_sorter = true, + override_file_sorter = true, + case_mode = "smart_case", + }, + }, +}) + +telescope.load_extension("fzf") +EOF From 0b2911e49e07f54cc2aea72e68115cf6d2aa4f6c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 14:01:50 +0100 Subject: [PATCH 0561/1588] home: vim: add 'dressing-nvim' --- home/vim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index d54ca23..12454cb 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -76,6 +76,7 @@ in cmp-nvim-lua # NeoVim lua API # UX improvements + dressing-nvim # Integrate native UI hooks with Telescope etc... gitsigns-nvim # Fast git UI integration which-key-nvim # Show available mappings telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm From d35c675acebc71524467c91b1d7701978eb7a046 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 14:02:04 +0100 Subject: [PATCH 0562/1588] home: vim: configure 'dressing-nvim' --- home/vim/plugin/settings/dressing.vim | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 home/vim/plugin/settings/dressing.vim diff --git a/home/vim/plugin/settings/dressing.vim b/home/vim/plugin/settings/dressing.vim new file mode 100644 index 0000000..9508126 --- /dev/null +++ b/home/vim/plugin/settings/dressing.vim @@ -0,0 +1,8 @@ +lua << EOF +local dressing = require("dressing") + +dressing.setup({ + -- Use a relative prompt size + prefer_width = 0.4, +}) +EOF From 0f140bbc9ddda03122f47ba28cac0c14e42b2904 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 14:50:59 +0100 Subject: [PATCH 0563/1588] home: vim: completion: explicit mappings This is basically a copy-paste of the default mappings, with some small amount of customization. --- home/vim/plugin/settings/completion.vim | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 0d0507f..1553c2b 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -5,6 +5,54 @@ lua << EOF local cmp = require("cmp") cmp.setup({ + mapping = { + [""] = cmp.mapping({ + i = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }), + c = function(fallback) + cmp.close() + vim.schedule(cmp.suspend()) + fallback() + end, + }), + [""] = cmp.mapping({ + i = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), + c = function(fallback) + cmp.close() + vim.schedule(cmp.suspend()) + fallback() + end, + }), + [""] = cmp.mapping({ + c = function(fallback) + if #cmp.core:get_sources() > 0 and not require("cmp.config").is_native_menu() then + if cmp.visible() then + cmp.select_next_item() + else + cmp.complete() + end + else + fallback() + end + end, + }), + [""] = cmp.mapping({ + c = function(fallback) + if #cmp.core:get_sources() > 0 and not require("cmp.config").is_native_menu() then + if cmp.visible() then + cmp.select_prev_item() + else + cmp.complete() + end + else + fallback() + end + end, + }), + [""] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }), + [""] = cmp.mapping(cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }), + [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = false }), + [""] = cmp.mapping.abort(), + }, view = { entries = "native", }, From 506c52fb83e63712cb21778dc56c9ca6c847f348 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 15:27:57 +0100 Subject: [PATCH 0564/1588] home: vim: completion: add 'cmp-under-comparator' --- home/vim/default.nix | 1 + home/vim/plugin/settings/completion.vim | 2 ++ 2 files changed, 3 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 12454cb..485ae70 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -74,6 +74,7 @@ in cmp-path # Path name suggestions cmp-nvim-lsp # LSP suggestions cmp-nvim-lua # NeoVim lua API + cmp-under-comparator # Sort items that start with '_' lower # UX improvements dressing-nvim # Integrate native UI hooks with Telescope etc... diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 1553c2b..a3e9356 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -3,6 +3,7 @@ set completeopt=menu,menuone,noselect lua << EOF local cmp = require("cmp") +local cmp_under_comparator = require("cmp-under-comparator") cmp.setup({ mapping = { @@ -67,6 +68,7 @@ cmp.setup({ cmp.config.compare.offset, cmp.config.compare.exact, cmp.config.compare.score, + cmp_under_comparator.under, cmp.config.compare.kind, cmp.config.compare.sort_text, cmp.config.compare.length, From 975f8687fc7aabe5a5b0a7f4e50b0471423d0fb5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 17:42:15 +0100 Subject: [PATCH 0565/1588] home: vim: completion: add mapping to scroll docs --- home/vim/plugin/settings/completion.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index a3e9356..cad93d0 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -51,6 +51,8 @@ cmp.setup({ }), [""] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }), [""] = cmp.mapping(cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }), + [""] = cmp.mapping.scroll_docs(-5), + [""] = cmp.mapping.scroll_docs(5), [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = false }), [""] = cmp.mapping.abort(), }, From fb3b773249ff6b7572ef9819cfbbdbea222bcd79 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 17:48:38 +0100 Subject: [PATCH 0566/1588] home: vim: add 'luasnip' --- home/vim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 485ae70..0223756 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -75,6 +75,7 @@ in cmp-nvim-lsp # LSP suggestions cmp-nvim-lua # NeoVim lua API cmp-under-comparator # Sort items that start with '_' lower + luasnip # Snippet manager compatible with LSP # UX improvements dressing-nvim # Integrate native UI hooks with Telescope etc... From 551ef640fcd045d58efb3dad6d67f940f71543e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 17:49:29 +0100 Subject: [PATCH 0567/1588] home: vim: sort plugin list --- home/vim/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index 0223756..cf7e35d 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -71,9 +71,9 @@ in # Completion nvim-cmp # Completion engine cmp-buffer # Words from open buffers - cmp-path # Path name suggestions cmp-nvim-lsp # LSP suggestions cmp-nvim-lua # NeoVim lua API + cmp-path # Path name suggestions cmp-under-comparator # Sort items that start with '_' lower luasnip # Snippet manager compatible with LSP From 01f2dfd0283df9781c484872ebd7b5781e992ed3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 18:08:54 +0100 Subject: [PATCH 0568/1588] home: vim: completion: configure snippets --- home/vim/plugin/settings/completion.vim | 51 ++++++++++++------------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index cad93d0..5539a98 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -4,8 +4,14 @@ set completeopt=menu,menuone,noselect lua << EOF local cmp = require("cmp") local cmp_under_comparator = require("cmp-under-comparator") +local luasnip = require("luasnip") cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, mapping = { [""] = cmp.mapping({ i = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }), @@ -23,32 +29,24 @@ cmp.setup({ fallback() end, }), - [""] = cmp.mapping({ - c = function(fallback) - if #cmp.core:get_sources() > 0 and not require("cmp.config").is_native_menu() then - if cmp.visible() then - cmp.select_next_item() - else - cmp.complete() - end - else - fallback() - end - end, - }), - [""] = cmp.mapping({ - c = function(fallback) - if #cmp.core:get_sources() > 0 and not require("cmp.config").is_native_menu() then - if cmp.visible() then - cmp.select_prev_item() - else - cmp.complete() - end - else - fallback() - end - end, - }), + [""] = function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, + [""] = function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, [""] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }), [""] = cmp.mapping(cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }), [""] = cmp.mapping.scroll_docs(-5), @@ -63,6 +61,7 @@ cmp.setup({ { name = "path", priority_weight = 110 }, { name = "nvim_lsp", priority_weight = 100 }, { name = "nvim_lua", priority_weight = 90 }, + { name = "luasnip", priority_weight = 80 }, { name = "buffer", max_item_count = 5, priority_weight = 50 }, }, sorting = { From fa8961c9d973ed6239947832956d5b3d1cad5dfa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 21:02:30 +0100 Subject: [PATCH 0569/1588] home: vim: comparison: stronger priority hint --- home/vim/plugin/settings/completion.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 5539a98..85892a5 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -65,6 +65,7 @@ cmp.setup({ { name = "buffer", max_item_count = 5, priority_weight = 50 }, }, sorting = { + priority_weight = 100, comparators = { cmp.config.compare.offset, cmp.config.compare.exact, From 85a7e200adaea83c4328a4e896e6a8dfd0f20efb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 21:10:53 +0100 Subject: [PATCH 0570/1588] home: vim: add 'nvim-ts-context-commentstring' --- home/vim/default.nix | 1 + home/vim/plugin/settings/tree-sitter.vim | 3 +++ 2 files changed, 4 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index cf7e35d..55a79df 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -66,6 +66,7 @@ in null-ls-nvim # LSP integration for linters and formatters (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting nvim-treesitter-textobjects # More textobjects + nvim-ts-context-commentstring # Comment string in nested language blocks plenary-nvim # 'null-ls', 'telescope' dependency # Completion diff --git a/home/vim/plugin/settings/tree-sitter.vim b/home/vim/plugin/settings/tree-sitter.vim index ab38090..1204185 100644 --- a/home/vim/plugin/settings/tree-sitter.vim +++ b/home/vim/plugin/settings/tree-sitter.vim @@ -9,6 +9,9 @@ ts_config.setup({ indent = { enable = true, }, + context_commentstring = { + enable = true, + }, textobjects = { select = { enable = true, From 37552d6508c228fb97c53aee5b2878eed7fb5331 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 21:28:19 +0100 Subject: [PATCH 0571/1588] home: vim: completion: remove up/down mappings I do not use arrow keys, why bother with them. --- home/vim/plugin/settings/completion.vim | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 85892a5..96164a7 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -13,22 +13,6 @@ cmp.setup({ end, }, mapping = { - [""] = cmp.mapping({ - i = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select }), - c = function(fallback) - cmp.close() - vim.schedule(cmp.suspend()) - fallback() - end, - }), - [""] = cmp.mapping({ - i = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Select }), - c = function(fallback) - cmp.close() - vim.schedule(cmp.suspend()) - fallback() - end, - }), [""] = function(fallback) if cmp.visible() then cmp.select_next_item() From a923c2c30e92cc08ca59987cc0c5aecb3cd7fb6a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 21:44:08 +0100 Subject: [PATCH 0572/1588] home: vim: add 'friendly-snippets' --- home/vim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 55a79df..0574e38 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -76,6 +76,7 @@ in cmp-nvim-lua # NeoVim lua API cmp-path # Path name suggestions cmp-under-comparator # Sort items that start with '_' lower + friendly-snippets # LSP snippets collection luasnip # Snippet manager compatible with LSP # UX improvements From 1f8882b415ffb774b51787f163c87b8ea4a937b4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 21:44:28 +0100 Subject: [PATCH 0573/1588] home: vim: configure 'luasnip' --- home/vim/plugin/settings/luasnip.vim | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 home/vim/plugin/settings/luasnip.vim diff --git a/home/vim/plugin/settings/luasnip.vim b/home/vim/plugin/settings/luasnip.vim new file mode 100644 index 0000000..9527d22 --- /dev/null +++ b/home/vim/plugin/settings/luasnip.vim @@ -0,0 +1,3 @@ +lua << EOF +require("luasnip.loaders.from_vscode").load() +EOF From 3673ec604a872085a2a95c6d4bc4236398bd56c2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 21:45:55 +0100 Subject: [PATCH 0574/1588] home: vim: lualine: remove 'fzf' integration I do not use 'fzf' anymore. --- home/vim/plugin/settings/lualine.vim | 1 - 1 file changed, 1 deletion(-) diff --git a/home/vim/plugin/settings/lualine.vim b/home/vim/plugin/settings/lualine.vim index 2d281cd..0273c78 100644 --- a/home/vim/plugin/settings/lualine.vim +++ b/home/vim/plugin/settings/lualine.vim @@ -57,7 +57,6 @@ lualine.setup({ }, extensions = { "fugitive", - "fzf", "quickfix", }, }) From 32890d6cf22e2358a21740f3d896166c841a34ad Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Mar 2022 21:57:59 +0100 Subject: [PATCH 0575/1588] home: vim: completion: do not use tab to select I would rather have my actual preferred mappings, and , for that. --- home/vim/plugin/settings/completion.vim | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 96164a7..9a3d7e6 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -14,18 +14,14 @@ cmp.setup({ }, mapping = { [""] = function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then + if luasnip.expand_or_jumpable() then luasnip.expand_or_jump() else fallback() end end, [""] = function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then + if luasnip.jumpable(-1) then luasnip.jump(-1) else fallback() From ba6c8bff2ea9c3db6ea9cc089d701021dfe87a40 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 8 Mar 2022 10:07:46 +0100 Subject: [PATCH 0576/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 6b99bf2..db60e45 100644 --- a/flake.lock +++ b/flake.lock @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1645970334, - "narHash": "sha256-6nn4YF9bPtkxkB7bM6yJO3m//p3sGilxNQFjm1epLEM=", + "lastModified": 1646559628, + "narHash": "sha256-WDoqxH/IPTV8CkI15wwzvXYgXq9UPr8xd8WKziuaynw=", "owner": "nix-community", "repo": "home-manager", - "rev": "ea85f4b1fdf3f25cf97dc49f4a9ec4eafda2ea25", + "rev": "afe96e7433c513bf82375d41473c57d1f66b4e68", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1646159311, - "narHash": "sha256-ILKckkiG074t3a0pwaPLjio8zVWgowpEp7AUwI5HjHE=", + "lastModified": 1646497237, + "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "18bd82edcc752d6a0e6cce1401ba0c81353a03ca", + "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1646188350, - "narHash": "sha256-EL6N9Rc6pL/6GQC7PPh/wh8DHwuzBvHvL0XWGsErSXw=", + "lastModified": 1646721260, + "narHash": "sha256-r8ZWtEwiRxLKOtsT2yvU9Rs1oqL/RsSkPkgupXsw1bU=", "owner": "nix-community", "repo": "NUR", - "rev": "d70f39715a6f44d0148a6272fceeec4e13ce790e", + "rev": "25adb63e9381cb0342cdbe2d2d56266f4974a2c5", "type": "github" }, "original": { From 0db2c0a13c41fafa559b741e91a4992dba487435 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 8 Mar 2022 11:56:32 +0100 Subject: [PATCH 0577/1588] modules: services: matrix: use 'settings' The unstructured attributes are hard-deprecated. --- modules/services/matrix/default.nix | 64 +++++++++++++++-------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/modules/services/matrix/default.nix b/modules/services/matrix/default.nix index af26a83..6adcd00 100644 --- a/modules/services/matrix/default.nix +++ b/modules/services/matrix/default.nix @@ -19,10 +19,10 @@ in options.my.services.matrix = with lib; { enable = mkEnableOption "Matrix Synapse"; - secret = mkOption { + secretFile = mkOption { type = with types; nullOr str; default = null; - example = "deadbeef"; + example = "/var/lib/matrix/shared-secret-config.yaml"; description = "Shared secret to register users"; }; @@ -50,42 +50,46 @@ in services.matrix-synapse = { enable = true; dataDir = "/var/lib/matrix-synapse"; - server_name = domain; - public_baseurl = "https://matrix.${domain}"; - enable_registration = false; - registration_shared_secret = cfg.secret; + settings = { + server_name = domain; + public_baseurl = "https://matrix.${domain}"; - listeners = [ - # Federation - { - bind_address = "::1"; - port = federationPort.private; - tls = false; # Terminated by nginx. - x_forwarded = true; - resources = [{ names = [ "federation" ]; compress = false; }]; - } + enable_registration = false; + # registration_shared_secret = cfg.secret; # FIXME: use a secret file for this - # Client - { - bind_address = "::1"; - port = clientPort.private; - tls = false; # Terminated by nginx. - x_forwarded = true; - resources = [{ names = [ "client" ]; compress = false; }]; - } - ]; + listeners = [ + # Federation + { + bind_addresses = [ "::1" ]; + port = federationPort.private; + tls = false; # Terminated by nginx. + x_forwarded = true; + resources = [{ names = [ "federation" ]; compress = false; }]; + } - account_threepid_delegates.msisdn = "https://vector.im"; + # Client + { + bind_addresses = [ "::1" ]; + port = clientPort.private; + tls = false; # Terminated by nginx. + x_forwarded = true; + resources = [{ names = [ "client" ]; compress = false; }]; + } + ]; - extraConfig = '' - experimental_features: - spaces_enabled: true - ''; + account_threepid_delegates = { + msisdn = "https://vector.im"; + }; + + experimental_features = { + spaces_enabled = true; + }; + }; extraConfigFiles = [ cfg.mailConfigFile - ]; + ] ++ lib.optional (cfg.secretFile != null) cfg.secretFile; }; my.services.nginx.virtualHosts = [ From fc355021413aac2fcfbe92e70dec5d8efc243016 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 8 Mar 2022 20:18:02 +0100 Subject: [PATCH 0578/1588] home: vim: lspconfig: use actual 'lspconfig' name --- home/vim/plugin/settings/lspconfig.vim | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim index 5d1b135..fe04135 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.vim @@ -1,5 +1,5 @@ lua << EOF -local lsp = require("lspconfig") +local lspconfig = require("lspconfig") local utils = require("ambroisie.utils") -- Inform servers we are able to do completion, snippets, etc... @@ -8,7 +8,7 @@ capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) -- C/C++ if utils.is_executable("clangd") then - lsp.clangd.setup({ + lspconfig.clangd.setup({ capabilities = capabilities, on_attach = utils.on_attach, }) @@ -16,7 +16,7 @@ end -- Nix if utils.is_executable("rnix-lsp") then - lsp.rnix.setup({ + lspconfig.rnix.setup({ capabilities = capabilities, on_attach = utils.on_attach, }) @@ -24,7 +24,7 @@ end -- Python if utils.is_executable("pyright") then - lsp.pyright.setup({ + lspconfig.pyright.setup({ capabilities = capabilities, on_attach = utils.on_attach, }) @@ -32,7 +32,7 @@ end -- Rust if utils.is_executable("rust-analyzer") then - lsp.rust_analyzer.setup({ + lspconfig.rust_analyzer.setup({ capabilities = capabilities, on_attach = utils.on_attach, }) From 4c5c9deaaeeb1335ed4c9c8c7af5cdfa99285bac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 8 Mar 2022 20:20:22 +0100 Subject: [PATCH 0579/1588] home: vim: move 'on_attach' to 'ambroisie.lsp' --- home/vim/lua/ambroisie/lsp.lua | 83 ++++++++++++++++++++++++++ home/vim/lua/ambroisie/utils.lua | 78 ------------------------ home/vim/plugin/settings/lspconfig.vim | 9 +-- home/vim/plugin/settings/null-ls.vim | 3 +- 4 files changed, 90 insertions(+), 83 deletions(-) create mode 100644 home/vim/lua/ambroisie/lsp.lua diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua new file mode 100644 index 0000000..27e5e44 --- /dev/null +++ b/home/vim/lua/ambroisie/lsp.lua @@ -0,0 +1,83 @@ +local M = {} + +-- shared LSP configuration callback +-- @param client native client configuration +-- @param bufnr int? buffer number of the attched client +M.on_attach = function(client, bufnr) + -- Diagnostics + vim.diagnostic.config({ + -- Disable virtual test next to affected regions + virtual_text = false, + -- Show diagnostics signs + signs = true, + -- Underline offending regions + underline = true, + -- Do not bother me in the middle of insertion + update_in_insert = false, + -- Show highest severity first + severity_sort = true, + }) + + vim.cmd([[ + augroup DiagnosticsHover + autocmd! * + " Show diagnostics on "hover" + autocmd CursorHold,CursorHoldI lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"}) + augroup END + ]]) + + -- Format on save + if client.resolved_capabilities.document_formatting then + vim.cmd([[ + augroup LspFormatting + autocmd! * + autocmd BufWritePre lua vim.lsp.buf.formatting_sync() + augroup END + ]]) + end + + -- Mappings + local wk = require("which-key") + + local function list_workspace_folders() + local utils = require("ambroisie.utils") + utils.dump(vim.lsp.buf.list_workspace_folders()) + end + + local function show_line_diagnostics() + vim.diagnostic.open_float(nil, { scope="line" }) + end + + local function show_buffer_diagnostics() + vim.diagnostic.open_float(nil, { scope="buffer" }) + end + + local keys = { + K = { vim.lsp.buf.hover, "Show symbol information" }, + ["gd"] = { vim.lsp.buf.definition, "Go to definition" }, + ["gD"] = { vim.lsp.buf.declaration, "Go to declaration" }, + ["gi"] = { vim.lsp.buf.implementation, "Go to implementation" }, + ["gr"] = { vim.lsp.buf.references, "List all references" }, + + ["c"] = { + name = "Code", + a = { vim.lsp.buf.code_action, "Code actions" }, + d = { show_line_diagnostics, "Show line diagnostics" }, + D = { show_buffer_diagnostics, "Show buffer diagnostics" }, + r = { vim.lsp.buf.rename, "Rename symbol" }, + s = { vim.lsp.buf.signature_help, "Show signature" }, + t = { vim.lsp.buf.type_definition, "Go to type definition" }, + w = { + name = "Workspace", + a = { vim.lsp.buf.add_workspace_folder, "Add folder to workspace" }, + l = { list_workspace_folders, "List folders in workspace" }, + r = { vim.lsp.buf.remove_workspace_folder, "Remove folder from workspace" }, + }, + }, + } + + wk.register(keys, { buffer = bufnr }) +end + + +return M diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index 72f009c..88f3d27 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -34,82 +34,4 @@ M.list_lsp_clients = function(bufnr) return names end --- shared LSP configuration callback --- @param client native client configuration --- @param bufnr int? buffer number of the attched client -M.on_attach = function(client, bufnr) - -- Diagnostics - vim.diagnostic.config({ - -- Disable virtual test next to affected regions - virtual_text = false, - -- Show diagnostics signs - signs = true, - -- Underline offending regions - underline = true, - -- Do not bother me in the middle of insertion - update_in_insert = false, - -- Show highest severity first - severity_sort = true, - }) - - vim.cmd([[ - augroup DiagnosticsHover - autocmd! * - " Show diagnostics on "hover" - autocmd CursorHold,CursorHoldI lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"}) - augroup END - ]]) - - -- Format on save - if client.resolved_capabilities.document_formatting then - vim.cmd([[ - augroup LspFormatting - autocmd! * - autocmd BufWritePre lua vim.lsp.buf.formatting_sync() - augroup END - ]]) - end - - -- Mappings - local wk = require("which-key") - - local function list_workspace_folders() - M.dump(vim.lsp.buf.list_workspace_folders()) - end - - local function show_line_diagnostics() - vim.diagnostic.open_float(nil, { scope="line" }) - end - - local function show_buffer_diagnostics() - vim.diagnostic.open_float(nil, { scope="buffer" }) - end - - local keys = { - K = { vim.lsp.buf.hover, "Show symbol information" }, - ["gd"] = { vim.lsp.buf.definition, "Go to definition" }, - ["gD"] = { vim.lsp.buf.declaration, "Go to declaration" }, - ["gi"] = { vim.lsp.buf.implementation, "Go to implementation" }, - ["gr"] = { vim.lsp.buf.references, "List all references" }, - - ["c"] = { - name = "Code", - a = { vim.lsp.buf.code_action, "Code actions" }, - d = { show_line_diagnostics, "Show line diagnostics" }, - D = { show_buffer_diagnostics, "Show buffer diagnostics" }, - r = { vim.lsp.buf.rename, "Rename symbol" }, - s = { vim.lsp.buf.signature_help, "Show signature" }, - t = { vim.lsp.buf.type_definition, "Go to type definition" }, - w = { - name = "Workspace", - a = { vim.lsp.buf.add_workspace_folder, "Add folder to workspace" }, - l = { list_workspace_folders, "List folders in workspace" }, - r = { vim.lsp.buf.remove_workspace_folder, "Remove folder from workspace" }, - }, - }, - } - - wk.register(keys, { buffer = bufnr }) -end - return M diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim index fe04135..dc706cc 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.vim @@ -1,5 +1,6 @@ lua << EOF local lspconfig = require("lspconfig") +local lsp = require("ambroisie.lsp") local utils = require("ambroisie.utils") -- Inform servers we are able to do completion, snippets, etc... @@ -10,7 +11,7 @@ capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) if utils.is_executable("clangd") then lspconfig.clangd.setup({ capabilities = capabilities, - on_attach = utils.on_attach, + on_attach = lsp.on_attach, }) end @@ -18,7 +19,7 @@ end if utils.is_executable("rnix-lsp") then lspconfig.rnix.setup({ capabilities = capabilities, - on_attach = utils.on_attach, + on_attach = lsp.on_attach, }) end @@ -26,7 +27,7 @@ end if utils.is_executable("pyright") then lspconfig.pyright.setup({ capabilities = capabilities, - on_attach = utils.on_attach, + on_attach = lsp.on_attach, }) end @@ -34,7 +35,7 @@ end if utils.is_executable("rust-analyzer") then lspconfig.rust_analyzer.setup({ capabilities = capabilities, - on_attach = utils.on_attach, + on_attach = lsp.on_attach, }) end EOF diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim index 6fc0e25..bec8124 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.vim @@ -1,9 +1,10 @@ lua << EOF local null_ls = require("null-ls") +local lsp = require("ambroisie.lsp") local utils = require("ambroisie.utils") null_ls.setup({ - on_attach = utils.on_attach, + on_attach = lsp.on_attach, }) -- C, C++ From 8d4a1e61b4f26f7443f7c8b0b65643f0bd312e9f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 8 Mar 2022 20:57:28 +0100 Subject: [PATCH 0580/1588] home: vim: telescope: add LSP handler --- home/vim/default.nix | 1 + home/vim/plugin/settings/telescope.vim | 1 + 2 files changed, 2 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 0574e38..3561f14 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -84,6 +84,7 @@ in gitsigns-nvim # Fast git UI integration which-key-nvim # Show available mappings telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm + telescope-lsp-handlers-nvim # Use 'telescope' for various LSP actions telescope-nvim # Fuzzy finder interface ]; diff --git a/home/vim/plugin/settings/telescope.vim b/home/vim/plugin/settings/telescope.vim index 4f7aeb6..4731b39 100644 --- a/home/vim/plugin/settings/telescope.vim +++ b/home/vim/plugin/settings/telescope.vim @@ -13,4 +13,5 @@ telescope.setup({ }) telescope.load_extension("fzf") +telescope.load_extension("lsp_handlers") EOF From d103cbbb0e4313d01353bfd54edcfc30520b1785 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 9 Mar 2022 12:09:43 +0100 Subject: [PATCH 0581/1588] home: wm: i3bar: show microphone status --- home/wm/i3bar/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index a89c6bc..a330134 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -66,6 +66,11 @@ in block = "temperature"; collapsed = false; } + { + block = "sound"; + device_kind = "source"; # Microphone status + format = ""; # Only show icon + } { block = "sound"; show_volume_when_muted = true; From 6417b5f4ba0e573b4f986250ebf38bdc2abe62af Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Mar 2022 10:08:25 +0100 Subject: [PATCH 0582/1588] home: vim: sort plugin list --- home/vim/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index 3561f14..22268d3 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -82,10 +82,10 @@ in # UX improvements dressing-nvim # Integrate native UI hooks with Telescope etc... gitsigns-nvim # Fast git UI integration - which-key-nvim # Show available mappings telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm telescope-lsp-handlers-nvim # Use 'telescope' for various LSP actions telescope-nvim # Fuzzy finder interface + which-key-nvim # Show available mappings ]; extraConfig = builtins.readFile ./init.vim; From 7060891b2d879a898099d0b4e4ed9ff47592dc7c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Mar 2022 14:02:01 +0100 Subject: [PATCH 0583/1588] home: vim: set 'termguicolors' For once, I like the look *with* 24-bit colors better on this current color-scheme. --- home/vim/init.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/vim/init.vim b/home/vim/init.vim index ab5f648..e5e863c 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -82,6 +82,8 @@ set background=dark let g:gruvbox_plugin_hi_groups=1 " Include filetype integration let g:gruvbox_filetype_hi_groups=1 +" 24 bit colors +set termguicolors " Use my preferred colorscheme colorscheme gruvbox8 " }}} From fda1b235bc9086a76a1ed6237af9ff40659782db Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Mar 2022 14:03:18 +0100 Subject: [PATCH 0584/1588] home: vim: telescope: disable scrolling up --- home/vim/plugin/settings/telescope.vim | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/home/vim/plugin/settings/telescope.vim b/home/vim/plugin/settings/telescope.vim index 4731b39..66c0732 100644 --- a/home/vim/plugin/settings/telescope.vim +++ b/home/vim/plugin/settings/telescope.vim @@ -2,6 +2,14 @@ lua << EOF local telescope = require("telescope") telescope.setup({ + defaults = { + mappings = { + i = { + -- I want the normal readline mappings rather than scrolling + [""] = false, + } + } + }, extensions = { fzf = { fuzzy = true, From 20e0a96e65180eabdf2b34c6ef2556fb3437ce9d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Mar 2022 14:04:37 +0100 Subject: [PATCH 0585/1588] home: vim: telescope: add 'which-key' mapping This opens a little preview window with different mappings for telescope. --- home/vim/plugin/settings/telescope.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/plugin/settings/telescope.vim b/home/vim/plugin/settings/telescope.vim index 66c0732..fc2c5fb 100644 --- a/home/vim/plugin/settings/telescope.vim +++ b/home/vim/plugin/settings/telescope.vim @@ -5,6 +5,7 @@ telescope.setup({ defaults = { mappings = { i = { + [""] = "which_key", -- I want the normal readline mappings rather than scrolling [""] = false, } From b71be091a2886824524bddae0cdb1b877a23d1fb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Mar 2022 14:10:04 +0100 Subject: [PATCH 0586/1588] home: git: use 'zdiff3' merge conflict markers See GitHub's presentation about this feature [1]. [1]: https://github.blog/2022-01-24-highlights-from-git-2-35/ --- home/git/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/git/default.nix b/home/git/default.nix index 6f4434b..9f59d52 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -120,6 +120,10 @@ in defaultBranch = "main"; }; + merge = { + conflictStyle = "zdiff3"; + }; + pull = { # Avoid useless merge commits rebase = true; From 1801d008d9c81c13125aa846cd429140b9464517 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Mar 2022 14:28:09 +0100 Subject: [PATCH 0587/1588] overlays: add vim-plugins-overrides --- overlays/default.nix | 2 ++ overlays/vim-plugins-overrides/default.nix | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 overlays/vim-plugins-overrides/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index 3f5a246..81692be 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,4 +1,6 @@ { + null-ls-update = import ./vim-plugins-overrides; + sabnzbd-fix-missing-packages = import ./sabnzbd-fix-missing-dependencies; transgui-fix-duplicate-status = import ./transgui-fix-duplicate-status; diff --git a/overlays/vim-plugins-overrides/default.nix b/overlays/vim-plugins-overrides/default.nix new file mode 100644 index 0000000..36c622b --- /dev/null +++ b/overlays/vim-plugins-overrides/default.nix @@ -0,0 +1,17 @@ +final: prev: +let +in +{ + # FIXME: update null-ls + vimPlugins = prev.vimPlugins.extend (self: super: { + null-ls-nvim = super.null-ls-nvim.overrideAttrs (old: { + version = "2022-03-11"; + src = final.fetchFromGitHub { + owner = "jose-elias-alvarez"; + repo = "null-ls.nvim"; + rev = "1ee1da4970b3c94bed0d0250a353bff633901cd1"; + sha256 = "sha256-db9d2djNUCZzxIkycUn8Kcu4TS33w55eWxUn2OzcLas="; + }; + }); + }); +} From bab317e2f448c388525656be134d3fffd43be233 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Mar 2022 14:30:24 +0100 Subject: [PATCH 0588/1588] home: vim: null-ls: prefer 'pflake8' if available --- home/vim/plugin/settings/null-ls.vim | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.vim index bec8124..b2102bd 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.vim @@ -38,8 +38,14 @@ null_ls.register({ -- Python null_ls.register({ null_ls.builtins.diagnostics.flake8.with({ + -- Only used if available, but prefer pflake8 if available + condition = function() + return utils.is_executable("flake8") and not utils.is_executable("pflake8") + end, + }), + null_ls.builtins.diagnostics.pyproject_flake8.with({ -- Only used if available - condition = utils.is_executable_condition("flake8"), + condition = utils.is_executable_condition("pflake8"), }), null_ls.builtins.diagnostics.mypy.with({ -- Only used if available From 581aa1b4e3fe0f19f0b364561ffa91ef593506be Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 14 Mar 2022 14:01:36 +0100 Subject: [PATCH 0589/1588] machines: aramis: hardware: fix trackpoint device My trackpoint, and its buttons, had stopped working a while ago. Before that, I regularly had problems where the cursor jumped around randomly, or the buttons stopped working. This seems to have fixed it. --- machines/aramis/hardware.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/machines/aramis/hardware.nix b/machines/aramis/hardware.nix index 3ca556c..920725a 100644 --- a/machines/aramis/hardware.nix +++ b/machines/aramis/hardware.nix @@ -29,6 +29,8 @@ enable = true; emulateWheel = true; # Holding middle buttons allows scrolling + + device = "TPPS/2 Elan TrackPoint"; # Use the correct device name }; }; } From 15602412c848e5b0df0121e1ec519f569bff8a29 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 25 Mar 2022 15:48:46 +0100 Subject: [PATCH 0590/1588] home: gdb: remove HOME pollution Now that the version in nixpkgs contains the patch to look at XDG_CONFIG_HOME, use only that one. --- home/gdb/default.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/home/gdb/default.nix b/home/gdb/default.nix index f6db2e7..c498048 100644 --- a/home/gdb/default.nix +++ b/home/gdb/default.nix @@ -26,11 +26,7 @@ in gdb ]; - # FIXME: waiting for commit 64aaad6349d2b2c45063a5383f877ce9a3a0c354 xdg.configFile."gdb/gdbinit".source = ./gdbinit; - - # FIXME: remove once `gdb` is updated from version 10.2 - home.file.".gdbinit".source = ./gdbinit; }) (lib.mkIf cfg.rr.enable { From 7334a84a77c9a0eae912fa68d178b9a4544eb0f6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 29 Mar 2022 15:42:19 +0200 Subject: [PATCH 0591/1588] home: wm: i3: bigger 'htop' window It seems like one cannot use multiple commands in a `for_window` directive. So use two different ones. --- home/wm/i3/default.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index c92285f..ead5df9 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -370,6 +370,20 @@ in # FIXME # { commdand; always; notification; } ]; + + window = { + commands = [ + # Make htop window bigger + { + criteria = { title = "^htop$"; }; + command = "resize set 80 ppt 80 ppt"; + } + { + criteria = { title = "^htop$"; }; + command = "move position center"; + } + ]; + }; }; }; }; From d1f6a4933f32f25f1a8b56c647c47a86a49bdd8b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 4 Apr 2022 16:20:55 +0200 Subject: [PATCH 0592/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index db60e45..577f49c 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1646105662, - "narHash": "sha256-jdXCZbGZL0SWWi29GnAOFHUh/QvvP0IyaVLv1ZTDkBI=", + "lastModified": 1648942457, + "narHash": "sha256-i29Z1t3sVfCNfpp+KAfeExvpqHQSbLO1KWylTtfradU=", "owner": "ryantm", "repo": "agenix", - "rev": "297cd58b418249240b9f1f155d52b1b17f292884", + "rev": "0d5e59ed645e4c7b60174bc6f6aac6a203dc0b01", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "lastModified": 1648297722, + "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1646559628, - "narHash": "sha256-WDoqxH/IPTV8CkI15wwzvXYgXq9UPr8xd8WKziuaynw=", + "lastModified": 1648917498, + "narHash": "sha256-fdyVHsP6XeyCk9FRyjV6Wv+7qiOzWxykGXdNixadvyg=", "owner": "nix-community", "repo": "home-manager", - "rev": "afe96e7433c513bf82375d41473c57d1f66b4e68", + "rev": "cfab869fcebc56710be6ec3aca76036b25c04a0d", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1646497237, - "narHash": "sha256-Ccpot1h/rV8MgcngDp5OrdmLTMaUTbStZTR5/sI7zW0=", + "lastModified": 1648632716, + "narHash": "sha256-kCmnDeiaMsdhfnNKjxdOzwRh2H6eQb8yWAL+nNabC/Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "062a0c5437b68f950b081bbfc8a699d57a4ee026", + "rev": "710fed5a2483f945b14f4a58af2cd3676b42d8c8", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1646721260, - "narHash": "sha256-r8ZWtEwiRxLKOtsT2yvU9Rs1oqL/RsSkPkgupXsw1bU=", + "lastModified": 1649075444, + "narHash": "sha256-v5q61SJacHuKgFR5L7ZNwficpnoesvrTERhvmxsTjdg=", "owner": "nix-community", "repo": "NUR", - "rev": "25adb63e9381cb0342cdbe2d2d56266f4974a2c5", + "rev": "3235dcdc349f81b8ff909a51033419f4915df6b8", "type": "github" }, "original": { @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1646153636, - "narHash": "sha256-AlWHMzK+xJ1mG267FdT8dCq/HvLCA6jwmx2ZUy5O8tY=", + "lastModified": 1649054408, + "narHash": "sha256-wz8AH7orqUE4Xog29WMTqOYBs0DMj2wFM8ulrTRVgz0=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "b6bc0b21e1617e2b07d8205e7fae7224036dfa4b", + "rev": "e5e7b3b542e7f4f96967966a943d7e1c07558042", "type": "github" }, "original": { From 94143f9d33908015d4d774d38edcc67ee5fc067d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Apr 2022 20:49:48 +0200 Subject: [PATCH 0593/1588] modules: services: gitea: add 'mail' configuration --- modules/services/gitea/default.nix | 48 +++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/modules/services/gitea/default.nix b/modules/services/gitea/default.nix index 0ece12c..39332c5 100644 --- a/modules/services/gitea/default.nix +++ b/modules/services/gitea/default.nix @@ -12,12 +12,45 @@ in example = 8080; description = "Internal port"; }; + mail = { + enable = mkEnableOption { + description = "mailer configuration"; + }; + host = mkOption { + type = types.str; + example = "smtp.example.com:465"; + description = "Host for the mail account"; + }; + user = mkOption { + type = types.str; + example = "gitea@example.com"; + description = "User for the mail account"; + }; + passwordFile = mkOption { + type = types.str; + example = "/run/secrets/gitea-mail-password.txt"; + description = "Password for the mail account"; + }; + type = mkOption { + type = types.str; + default = "smtp"; + example = "smtp"; + description = "Password for the mail account"; + }; + tls = mkOption { + type = types.bool; + default = true; + example = false; + description = "Use TLS for connection"; + }; + }; }; config = lib.mkIf cfg.enable { services.gitea = let - giteaDomain = "gitea.${config.networking.domain}"; + inherit (config.networking) domain; + giteaDomain = "gitea.${domain}"; in { enable = true; @@ -45,6 +78,19 @@ in # but it produces a single .zip file that's not very backup friendly. # I configure my backup system manually below. dump.enable = false; + + mailerPasswordFile = lib.mkIf cfg.mail.enable cfg.mail.passwordFile; + + settings = { + mailer = lib.mkIf cfg.mail.enable { + ENABLED = true; + HOST = cfg.mail.host; + FROM = cfg.mail.user; + USER = cfg.mail.user; + MAILER_TYPE = cfg.mail.type; + IS_TLS_ENABLED = cfg.mail.tls; + }; + }; }; users.users.git = { From a9e004f7c1523871ee54881026c99af616442afb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Apr 2022 20:53:37 +0200 Subject: [PATCH 0594/1588] modules: secrets: gitea: add 'mail-password' --- modules/secrets/gitea/mail-password.age | 9 +++++++++ modules/secrets/secrets.nix | 5 +++++ 2 files changed, 14 insertions(+) create mode 100644 modules/secrets/gitea/mail-password.age diff --git a/modules/secrets/gitea/mail-password.age b/modules/secrets/gitea/mail-password.age new file mode 100644 index 0000000..915f8e9 --- /dev/null +++ b/modules/secrets/gitea/mail-password.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 jPowng BkIjie2KrwDLaZYYIguCs7TPA/wQy+YPguikuhfye0M +7viTA/EGYB/jRKQm6fFd86DMd4j+Jxsaw/xQ1T8ZKNo +-> ssh-ed25519 cKojmg t1Y8bZvPccNAX8vWQLTfCyOJIBXN515vyfFrEI2EVww +bJEjpIWrKeQrA/JfY7FRdB6hpHwR/aG4Vya1ChFNBKs +-> jK/-grease Oz.R ?;)G ], +AuHk9TcC9kl0dg8/L6UfHIk3e9fgGwSTJAJpVgInhok +--- 47z9lol5MtpX0IsO/0ggLDMcNVfl4lNNvoHUSwOU/18 +)gЪeu! - TYAM+GbMe@|A,&E!܆p=P=9P!Q|r \ No newline at end of file diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index d8e289e..1622d95 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -18,6 +18,11 @@ in "drone/secret.age".publicKeys = all; "drone/ssh/private-key.age".publicKeys = all; + "gitea/mail-password.age" = { + owner = "git"; + publicKeys = all; + }; + "lohr/secret.age".publicKeys = all; "lohr/ssh-key.age".publicKeys = all; From 676281d18b61b7414871964e99643a3ca2986b49 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 8 Apr 2022 20:54:39 +0200 Subject: [PATCH 0595/1588] machines: porthos: services: set-up gitea mail --- machines/porthos/services.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 4f3f345..615efd5 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -1,5 +1,5 @@ # Deployed services -{ config, ... }: +{ config, lib, ... }: let secrets = config.age.secrets; in @@ -39,7 +39,15 @@ in enable = true; }; # Gitea forge - gitea.enable = true; + gitea = { + enable = true; + mail = { + enable = true; + host = "smtp.migadu.com:465"; + user = lib.my.mkMailAddress "gitea" "belanyi.fr"; + passwordFile = secrets."gitea/mail-password".path; + }; + }; # Meta-indexers indexers = { prowlarr.enable = true; From e2e11d08bdbff044a5aaff1c9541122bae001708 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 9 Apr 2022 15:27:27 +0200 Subject: [PATCH 0596/1588] machines: aramis: networking: disable DHCP Let NetworkManager take care of it, this avoids the "waiting for dhcpd" message when shutting down my laptop. --- machines/aramis/networking.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/machines/aramis/networking.nix b/machines/aramis/networking.nix index 2759e9c..fbf4c6b 100644 --- a/machines/aramis/networking.nix +++ b/machines/aramis/networking.nix @@ -7,11 +7,6 @@ # Per-interface useDHCP will be mandatory in the future, so this generated config # replicates the default behaviour. useDHCP = false; - - interfaces = { - enp0s31f6.useDHCP = true; - wlp0s20f3.useDHCP = true; - }; }; my.hardware.networking = { From 13a218f2dbbd30fe30d209fdf04de872a2a54d84 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 11 Apr 2022 15:15:18 +0200 Subject: [PATCH 0597/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 577f49c..2e57b17 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1648297722, - "narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=", + "lastModified": 1649676176, + "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", "owner": "numtide", "repo": "flake-utils", - "rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade", + "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1648917498, - "narHash": "sha256-fdyVHsP6XeyCk9FRyjV6Wv+7qiOzWxykGXdNixadvyg=", + "lastModified": 1649642044, + "narHash": "sha256-V9ZjTJcbDPgWG+H3rIC6XuPHZAPK1VupBbSsuDbptkQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "cfab869fcebc56710be6ec3aca76036b25c04a0d", + "rev": "e39a9d0103e3b2e42059c986a8c633824b96c193", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1648632716, - "narHash": "sha256-kCmnDeiaMsdhfnNKjxdOzwRh2H6eQb8yWAL+nNabC/Y=", + "lastModified": 1649497218, + "narHash": "sha256-groqC9m1P4hpnL6jQvZ3C8NEtduhdkvwGT0+0LUrcYw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "710fed5a2483f945b14f4a58af2cd3676b42d8c8", + "rev": "fd364d268852561223a5ada15caad669fd72800e", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1649075444, - "narHash": "sha256-v5q61SJacHuKgFR5L7ZNwficpnoesvrTERhvmxsTjdg=", + "lastModified": 1649676035, + "narHash": "sha256-GjUAElCJqjZorW2U4q+hSIc/HYw3rKzn68mlyo5+53s=", "owner": "nix-community", "repo": "NUR", - "rev": "3235dcdc349f81b8ff909a51033419f4915df6b8", + "rev": "08069280d424b529b58a48d40fb86b616cae6da4", "type": "github" }, "original": { From f637401cd64c774c27e852ebfecc81cb80ffef71 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 11 Apr 2022 15:15:36 +0200 Subject: [PATCH 0598/1588] home: zsh: use packaged 'agkozak-zsh-prompt' --- home/zsh/default.nix | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 27ea8bc..4d61685 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -35,12 +35,8 @@ in } { name = "agkozak-zsh-prompt"; - src = fetchFromGitHub { - owner = "agkozak"; - repo = "agkozak-zsh-prompt"; - rev = "v3.9.0"; - sha256 = "sha256-VTRL+8ph2eI7iPht15epkLggAgtLGxB3DORFTW5GrhE="; - }; + file = "share/zsh/site-functions/agkozak-zsh-prompt.plugin.zsh"; + src = pkgs.agkozak-zsh-prompt; } ]; From b6ca6b28b91db6ee9c91c6d2a37c2a907ac6e0e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Apr 2022 10:37:40 +0200 Subject: [PATCH 0599/1588] overlays: remove vim-plugins-overrides --- overlays/default.nix | 2 -- overlays/vim-plugins-overrides/default.nix | 17 ----------------- 2 files changed, 19 deletions(-) delete mode 100644 overlays/vim-plugins-overrides/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index 81692be..3f5a246 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,6 +1,4 @@ { - null-ls-update = import ./vim-plugins-overrides; - sabnzbd-fix-missing-packages = import ./sabnzbd-fix-missing-dependencies; transgui-fix-duplicate-status = import ./transgui-fix-duplicate-status; diff --git a/overlays/vim-plugins-overrides/default.nix b/overlays/vim-plugins-overrides/default.nix deleted file mode 100644 index 36c622b..0000000 --- a/overlays/vim-plugins-overrides/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -final: prev: -let -in -{ - # FIXME: update null-ls - vimPlugins = prev.vimPlugins.extend (self: super: { - null-ls-nvim = super.null-ls-nvim.overrideAttrs (old: { - version = "2022-03-11"; - src = final.fetchFromGitHub { - owner = "jose-elias-alvarez"; - repo = "null-ls.nvim"; - rev = "1ee1da4970b3c94bed0d0250a353bff633901cd1"; - sha256 = "sha256-db9d2djNUCZzxIkycUn8Kcu4TS33w55eWxUn2OzcLas="; - }; - }); - }); -} From e3f021e832f4a9e734fd571aaab604e8b96bae4d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Apr 2022 10:43:54 +0200 Subject: [PATCH 0600/1588] flake: only use subset of systems Turns out pre-commit pulls dotnet in its closure, which is not supported on i686... --- flake.nix | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 3b8c722..d1e5d49 100644 --- a/flake.nix +++ b/flake.nix @@ -65,7 +65,16 @@ , pre-commit-hooks }: let - inherit (futils.lib) eachDefaultSystem; + inherit (futils.lib) eachSystem system; + + mySystems = [ + system.aarch64-darwin + system.aarch64-linux + system.x86_64-darwin + system.x86_64-linux + ]; + + eachMySystem = eachSystem mySystems; lib = nixpkgs.lib.extend (self: super: { my = import ./lib { inherit inputs; pkgs = nixpkgs; lib = self; }; @@ -100,7 +109,7 @@ }; }; in - eachDefaultSystem + eachMySystem (system: let pkgs = nixpkgs.legacyPackages.${system}; From 8ec992cbe3b4fba4eeaaa21c9cf0b45637bd82f5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Apr 2022 17:01:11 +0200 Subject: [PATCH 0601/1588] home: direnv: add 'postgres' library file --- home/direnv/default.nix | 23 +++++++++++++++++++---- home/direnv/lib/postgres.sh | 22 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 home/direnv/lib/postgres.sh diff --git a/home/direnv/default.nix b/home/direnv/default.nix index 86409f0..666f572 100644 --- a/home/direnv/default.nix +++ b/home/direnv/default.nix @@ -7,11 +7,26 @@ in enable = mkDisableOption "direnv configuration"; }; - config.programs.direnv = lib.mkIf cfg.enable { - enable = true; - nix-direnv = { - # A better `use_nix` + config = lib.mkIf cfg.enable { + programs.direnv = { enable = true; + nix-direnv = { + # A better `use_nix` + enable = true; + }; }; + + xdg.configFile = + let + libDir = ./lib; + contents = builtins.readDir libDir; + names = lib.attrNames contents; + files = lib.filter (name: contents.${name} == "regular") names; + linkLibFile = name: + lib.nameValuePair + "direnv/lib/${name}" + { source = libDir + "/${name}"; }; + in + lib.my.genAttrs' files linkLibFile; }; } diff --git a/home/direnv/lib/postgres.sh b/home/direnv/lib/postgres.sh new file mode 100644 index 0000000..c2e6a8f --- /dev/null +++ b/home/direnv/lib/postgres.sh @@ -0,0 +1,22 @@ +#shellcheck shell=bash + +layout_postgres() { + if ! has postgres || ! has initdb; then + # shellcheck disable=2016 + log_error 'layout_postgres: `postgres` and `initdb` are not in PATH' + return 1 + fi + + # shellcheck disable=2155 + export PGDATA="$(direnv_layout_dir)/postgres" + export PGHOST="$PGDATA" + + if [[ ! -d "$PGDATA" ]]; then + initdb + cat >> "$PGDATA/postgresql.conf" << EOF +listen_addresses = '' +unix_socket_directories = '$PGHOST' +EOF + echo "CREATE DATABASE $USER;" | postgres --single -E postgres + fi +} From 90053e52e1674454d70bb577e73e3e92fe72c7b2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Apr 2022 17:34:29 +0200 Subject: [PATCH 0602/1588] home: direnv: add 'python' library file --- home/direnv/lib/python.sh | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 home/direnv/lib/python.sh diff --git a/home/direnv/lib/python.sh b/home/direnv/lib/python.sh new file mode 100644 index 0000000..15a273f --- /dev/null +++ b/home/direnv/lib/python.sh @@ -0,0 +1,25 @@ +#shellcheck shell=bash + +layout_poetry() { + if ! has poetry; then + # shellcheck disable=2016 + log_error 'layout_poetry: `poetry` is not in PATH' + return 1 + fi + + if [[ ! -f pyproject.toml ]]; then + # shellcheck disable=2016 + log_error 'layout_poetry: no pyproject.toml found. Use `poetry new` or `poetry init` to create one first' + return 1 + fi + + # create venv if it doesn't exist + poetry run true + + # shellcheck disable=2155 + export VIRTUAL_ENV=$(poetry env info --path) + export POETRY_ACTIVE=1 + PATH_add "$VIRTUAL_ENV/bin" + watch_file pyproject.toml + watch_file poetry.lock +} From 9a57ba02b7981e1d4c298bb5812428155f3cfed9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 13 Apr 2022 09:51:13 +0200 Subject: [PATCH 0603/1588] home: direnv: add 'nix' library file --- home/direnv/lib/nix.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 home/direnv/lib/nix.sh diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh new file mode 100644 index 0000000..9fbd73d --- /dev/null +++ b/home/direnv/lib/nix.sh @@ -0,0 +1,31 @@ +#shellcheck shell=bash + +use_pkgs() { + if ! has nix; then + # shellcheck disable=2016 + log_error 'use_pkgs: `nix` is not in PATH' + return 1 + fi + + local DEFAULT_FLAKE="pkgs" + + # Allow changing the default flake through a command line switch + if [ "$1" = "-f" ] || [ "$1" = "--flake" ]; then + DEFAULT_FLAKE="$2" + shift 2 + fi + + + # Allow specifying a full installable, or just a package name and use the default flake + local packages=() + for pkg; do + if [[ $pkg =~ .*#.* ]]; then + packages+=("$pkg") + else + packages+=("$DEFAULT_FLAKE#$pkg") + fi + done + + # shellcheck disable=2154 + direnv_load nix shell "${packages[@]}" --command "$direnv" dump +} From ed8aae565e4db42e50af078757b0a7a58d3b7257 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 13 Apr 2022 10:04:38 +0200 Subject: [PATCH 0604/1588] home: direnv: allow specifying default flake --- home/direnv/default.nix | 18 ++++++++++++++++-- home/direnv/lib/nix.sh | 3 ++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/home/direnv/default.nix b/home/direnv/default.nix index 666f572..93a1f3b 100644 --- a/home/direnv/default.nix +++ b/home/direnv/default.nix @@ -3,8 +3,18 @@ let cfg = config.my.home.direnv; in { - options.my.home.direnv = with lib.my; { - enable = mkDisableOption "direnv configuration"; + options.my.home.direnv = with lib; { + enable = my.mkDisableOption "direnv configuration"; + + defaultFlake = mkOption { + type = types.str; + default = "pkgs"; + example = "nixpkgs"; + description = '' + Which flake from the registry should be used for + use pkgs by default. + ''; + }; }; config = lib.mkIf cfg.enable { @@ -28,5 +38,9 @@ in { source = libDir + "/${name}"; }; in lib.my.genAttrs' files linkLibFile; + + home.sessionVariables = { + DIRENV_DEFAULT_FLAKE = cfg.defaultFlake; + }; }; } diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh index 9fbd73d..2d40b20 100644 --- a/home/direnv/lib/nix.sh +++ b/home/direnv/lib/nix.sh @@ -7,7 +7,8 @@ use_pkgs() { return 1 fi - local DEFAULT_FLAKE="pkgs" + # Use user-provided default value, or fallback to nixpkgs + local DEFAULT_FLAKE="${DIRENV_DEFAULT_FLAKE:-nixpkgs}" # Allow changing the default flake through a command line switch if [ "$1" = "-f" ] || [ "$1" = "--flake" ]; then From 223f09b6557bf61a3f91c587a0f5e931d9970e02 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 18 Apr 2022 14:08:57 +0200 Subject: [PATCH 0605/1588] flake: update from deprecated flake attributes --- flake.nix | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.nix b/flake.nix index d1e5d49..7c98ae2 100644 --- a/flake.nix +++ b/flake.nix @@ -137,15 +137,17 @@ defaultApp = apps.diff-flake; - devShell = pkgs.mkShell { - name = "NixOS-config"; + devShells = { + default = pkgs.mkShell { + name = "NixOS-config"; - nativeBuildInputs = with pkgs; [ - gitAndTools.pre-commit - nixpkgs-fmt - ]; + nativeBuildInputs = with pkgs; [ + gitAndTools.pre-commit + nixpkgs-fmt + ]; - inherit (self.checks.${system}.pre-commit) shellHook; + inherit (self.checks.${system}.pre-commit) shellHook; + }; }; packages = @@ -157,8 +159,6 @@ in finalPackages; }) // { - overlay = self.overlays.pkgs; - overlays = import ./overlays // { lib = final: prev: { inherit lib; }; pkgs = final: prev: { From 0caa78af10ec00a50b030e8cda12ecbc7462c455 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 18 Apr 2022 14:09:38 +0200 Subject: [PATCH 0606/1588] flake: bump inputs And ensure that the renamed `paperless` services are configured correctly. --- flake.lock | 18 +++++++++--------- modules/services/paperless/default.nix | 16 ++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/flake.lock b/flake.lock index 2e57b17..e451ddf 100644 --- a/flake.lock +++ b/flake.lock @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1649642044, - "narHash": "sha256-V9ZjTJcbDPgWG+H3rIC6XuPHZAPK1VupBbSsuDbptkQ=", + "lastModified": 1650234580, + "narHash": "sha256-wTmlRedCrDl+XYJom65GMfI3RgA3eZE/w03lD28Txoc=", "owner": "nix-community", "repo": "home-manager", - "rev": "e39a9d0103e3b2e42059c986a8c633824b96c193", + "rev": "742c6cb3e9d866e095c629162fe5faf519adeb26", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1649497218, - "narHash": "sha256-groqC9m1P4hpnL6jQvZ3C8NEtduhdkvwGT0+0LUrcYw=", + "lastModified": 1650161686, + "narHash": "sha256-70ZWAlOQ9nAZ08OU6WY7n4Ij2kOO199dLfNlvO/+pf8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fd364d268852561223a5ada15caad669fd72800e", + "rev": "1ffba9f2f683063c2b14c9f4d12c55ad5f4ed887", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1649676035, - "narHash": "sha256-GjUAElCJqjZorW2U4q+hSIc/HYw3rKzn68mlyo5+53s=", + "lastModified": 1650270687, + "narHash": "sha256-It/SRKKhqjoRzXd40ThUxitZX3e4WD02rb2mlQ7Wc9I=", "owner": "nix-community", "repo": "NUR", - "rev": "08069280d424b529b58a48d40fb86b616cae6da4", + "rev": "43c55bab29a7d002e33cad7148a482f56b6b90b6", "type": "github" }, "original": { diff --git a/modules/services/paperless/default.nix b/modules/services/paperless/default.nix index e9ec6a3..b21efa8 100644 --- a/modules/services/paperless/default.nix +++ b/modules/services/paperless/default.nix @@ -45,7 +45,7 @@ in }; config = lib.mkIf cfg.enable { - services.paperless-ng = { + services.paperless = { enable = true; port = cfg.port; @@ -83,15 +83,15 @@ in }; systemd.services = { - paperless-ng-server.serviceConfig = { + paperless-scheduler.serviceConfig = { EnvironmentFile = cfg.secretKeyFile; }; - paperless-ng-consumer.serviceConfig = { + paperless-consumer.serviceConfig = { EnvironmentFile = cfg.secretKeyFile; }; - paperless-ng-web.serviceConfig = { + paperless-web.serviceConfig = { EnvironmentFile = cfg.secretKeyFile; }; }; @@ -111,13 +111,13 @@ in # Set-up media group users.groups.media = { }; - systemd.services.paperless-ng-server = { + systemd.services.paperless-server = { # Make sure the DB is available after = [ "postgresql.service" ]; }; - users.users.${config.services.paperless-ng.user} = { + users.users.${config.services.paperless.user} = { extraGroups = [ "media" ]; }; @@ -138,8 +138,8 @@ in my.services.backup = { paths = [ - config.services.paperless-ng.dataDir - config.services.paperless-ng.mediaDir + config.services.paperless.dataDir + config.services.paperless.mediaDir ]; }; }; From 481d5f6f53e1e6ff1d8f29d3ac996af723be2381 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 20 Apr 2022 13:55:48 +0200 Subject: [PATCH 0607/1588] home: vim: lualine: use 'FugitiveHead' The built-in `branch` indicator does not handle git worktrees quite correctly. It shows the wrong branch when used in `git commit`. --- home/vim/plugin/settings/lualine.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/vim/plugin/settings/lualine.vim b/home/vim/plugin/settings/lualine.vim index 0273c78..93c38bb 100644 --- a/home/vim/plugin/settings/lualine.vim +++ b/home/vim/plugin/settings/lualine.vim @@ -31,7 +31,7 @@ lualine.setup({ { "mode" }, }, lualine_b = { - { "branch" }, + { "FugitiveHead" }, { "filename", symbols = { readonly = "🔒" } }, }, lualine_c = { From e591344eb388c89d571df76fa43dd8f0cad4fa59 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 20 Apr 2022 14:01:00 +0200 Subject: [PATCH 0608/1588] home: vim: git: map keys on start Instead of mapping those keys when `gitsigns` attaches to a buffer... --- home/vim/plugin/settings/git.vim | 103 +++++++++++++++---------------- 1 file changed, 50 insertions(+), 53 deletions(-) diff --git a/home/vim/plugin/settings/git.vim b/home/vim/plugin/settings/git.vim index 0deba6a..8839fc9 100644 --- a/home/vim/plugin/settings/git.vim +++ b/home/vim/plugin/settings/git.vim @@ -1,5 +1,6 @@ lua << EOF local gitsigns = require('gitsigns') +local wk = require("which-key") gitsigns.setup({ -- I dislike the full-green sign column when this happens @@ -9,58 +10,54 @@ gitsigns.setup({ -- Show the blame quickly delay = 100, }, - - on_attach = function(bufnr) - local wk = require("which-key") - - local keys = { - -- Navigation - ["[c"] = { "&diff ? '[c' : 'Gitsigns prev_hunk'", "Previous hunk/diff", expr = true }, - ["]c"] = { "&diff ? ']c' : 'Gitsigns next_hunk'", "Next hunk/diff", expr = true }, - - - -- Commands - ["g"] = { - name = "Git", - -- Actions - b = { gitsigns.toggle_current_line_blame, "Toggle blame virtual text" }, - d = { gitsigns.diffthis, "Diff buffer" }, - D = { function() gitsigns.diffthis("~") end, "Diff buffer against last commit" }, - g = { "Git", "Git status" }, - h = { gitsigns.toggle_deleted, "Show deleted hunks" }, - L = { ":spT:Gllog --follow -- %:p", "Current buffer log" }, - m = { "(git-messenger)", "Current line blame" }, - p = { gitsigns.preview_hunk, "Preview hunk" }, - r = { gitsigns.reset_hunk, "Restore hunk" }, - R = { gitsigns.reset_buffer, "Restore buffer" }, - s = { gitsigns.stage_hunk, "Stage hunk" }, - S = { gitsigns.stage_buffer, "Stage buffer" }, - u = { gitsigns.undo_stage_hunk, "Undo stage hunk" }, - ["["] = { gitsigns.prev_hunk, "Previous hunk" }, - ["]"] = { gitsigns.next_hunk, "Next hunk" }, - }, - } - - local objects = { - ["ih"] = { gitsigns.select_hunk, "Git hunk" }, - } - - local visual = { - ["ih"] = { gitsigns.select_hunk, "Git hunk" }, - - -- Only the actual command can make use of the visual selection... - ["g"] = { - name = "Git", - p = { ":Gitsigns preview_hunk", "Preview selection" }, - r = { ":Gitsigns reset_hunk", "Restore selection" }, - s = { ":Gitsigns stage_hunk", "Stage selection" }, - u = { ":Gitsigns undo_stage_hunk", "Undo stage selection" }, - }, - } - - wk.register(keys, { buffer = bufnr }) - wk.register(objects, { buffer = bufnr, mode = "o" }) - wk.register(visual, { buffer = bufnr, mode = "x" }) - end, }) + +local keys = { + -- Navigation + ["[c"] = { "&diff ? '[c' : 'Gitsigns prev_hunk'", "Previous hunk/diff", expr = true }, + ["]c"] = { "&diff ? ']c' : 'Gitsigns next_hunk'", "Next hunk/diff", expr = true }, + + + -- Commands + ["g"] = { + name = "Git", + -- Actions + b = { gitsigns.toggle_current_line_blame, "Toggle blame virtual text" }, + d = { gitsigns.diffthis, "Diff buffer" }, + D = { function() gitsigns.diffthis("~") end, "Diff buffer against last commit" }, + g = { "Git", "Git status" }, + h = { gitsigns.toggle_deleted, "Show deleted hunks" }, + L = { ":spT:Gllog --follow -- %:p", "Current buffer log" }, + m = { "(git-messenger)", "Current line blame" }, + p = { gitsigns.preview_hunk, "Preview hunk" }, + r = { gitsigns.reset_hunk, "Restore hunk" }, + R = { gitsigns.reset_buffer, "Restore buffer" }, + s = { gitsigns.stage_hunk, "Stage hunk" }, + S = { gitsigns.stage_buffer, "Stage buffer" }, + u = { gitsigns.undo_stage_hunk, "Undo stage hunk" }, + ["["] = { gitsigns.prev_hunk, "Previous hunk" }, + ["]"] = { gitsigns.next_hunk, "Next hunk" }, + }, +} + +local objects = { + ["ih"] = { gitsigns.select_hunk, "Git hunk" }, +} + +local visual = { + ["ih"] = { gitsigns.select_hunk, "Git hunk" }, + + -- Only the actual command can make use of the visual selection... + ["g"] = { + name = "Git", + p = { ":Gitsigns preview_hunk", "Preview selection" }, + r = { ":Gitsigns reset_hunk", "Restore selection" }, + s = { ":Gitsigns stage_hunk", "Stage selection" }, + u = { ":Gitsigns undo_stage_hunk", "Undo stage selection" }, + }, +} + +wk.register(keys, { buffer = bufnr }) +wk.register(objects, { buffer = bufnr, mode = "o" }) +wk.register(visual, { buffer = bufnr, mode = "x" }) EOF From 5c7c89519bdce076ec72915687e0b61be61ff03c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 21 Apr 2022 11:53:26 +0200 Subject: [PATCH 0609/1588] profiles: gtk: remove typo --- profiles/gtk/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/gtk/default.nix b/profiles/gtk/default.nix index 61a3edc..a8d6d9a 100644 --- a/profiles/gtk/default.nix +++ b/profiles/gtk/default.nix @@ -4,7 +4,7 @@ let in { options.my.profiles.gtk = with lib; { - enable = mkEnableOption "bluetooth profile"; + enable = mkEnableOption "gtk profile"; }; config = lib.mkIf cfg.enable { From e514389a3d3ea25e311b3dd3b24cdd1f7c6eec65 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 21 Apr 2022 11:54:07 +0200 Subject: [PATCH 0610/1588] home: firefox: tridactyl: add 'Nitter' redirect --- home/firefox/tridactyl/tridactylrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index dc59a2e..b5197d3 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -65,6 +65,8 @@ unbind " Redirections {{{ " Always redirect Reddit to the old site autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www", "old") +" Use a better Twitter front-end +autocmd DocStart ^http(s?)://twitter.com js tri.excmds.urlmodify("-t", "twitter.com", "nitter.net") " }}} " Disabled websites {{{ From 70fc01d5dfe67242282c48f3c020fa8eb5c38e84 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 21 Apr 2022 11:56:09 +0200 Subject: [PATCH 0611/1588] home: firefox: tridactyl: fix comment toggle Ignore javascript event, like the upstream binding. --- home/firefox/tridactyl/tridactylrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index b5197d3..711bf6f 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -12,7 +12,7 @@ set editorcmd termite --class tridactyl_editor -e 'vim %f' " Binds {{{ " Reddit et al. {{{ " Toggle comments on Reddit, Hacker News, Lobste.rs -bind ;c hint -c [class*="expand"],[class*="togg"],[class="comment_folder"] +bind ;c hint -Jc [class*="expand"],[class*="togg"],[class="comment_folder"] " Make `gu` take me back to subreddit from comments bindurl reddit.com gu urlparent 3 From 93e50508c9fa26fd80e8c324efe92a4c022eb9bc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 25 Apr 2022 14:31:20 +0200 Subject: [PATCH 0612/1588] home: vim: lua: lsp: add signature help mapping --- home/vim/lua/ambroisie/lsp.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index 27e5e44..af87950 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -54,6 +54,7 @@ M.on_attach = function(client, bufnr) local keys = { K = { vim.lsp.buf.hover, "Show symbol information" }, + [""] = { vim.lsp.buf.signature_help, "Show signature information" }, ["gd"] = { vim.lsp.buf.definition, "Go to definition" }, ["gD"] = { vim.lsp.buf.declaration, "Go to declaration" }, ["gi"] = { vim.lsp.buf.implementation, "Go to implementation" }, From cb84b494386445be25e397e2f2231615b306865a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 25 Apr 2022 15:12:16 +0200 Subject: [PATCH 0613/1588] modules: hardware: bluetooth: add wireplumber conf Now that `media-session` is deprecated, I should at least replicate this configuration for `wireplumber`. --- modules/hardware/bluetooth/default.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/hardware/bluetooth/default.nix b/modules/hardware/bluetooth/default.nix index ffe0fbe..6aeb7dc 100644 --- a/modules/hardware/bluetooth/default.nix +++ b/modules/hardware/bluetooth/default.nix @@ -25,6 +25,21 @@ in package = pkgs.pulseaudioFull; }; + # FIXME: waiting for NixOS module configuration + environment.etc = { + "wireplumber/bluetooth.lua.d/50-bluez-config.lua".text = '' + bluez_monitor.properties = { + ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" + -- mSBC provides better audio + microphone + ["bluez5.enable-msbc"] = true, + -- SBC XQ provides better audio + ["bluez5.enable-sbc-xq"] = true, + -- Hardware volume control + ["bluez5.enable-hw-volume"] = true, + } + ''; + }; + services.pipewire = { media-session.config.bluez-monitor.rules = [ { From 43cb3ae5827a024bcbc45b995149794eb38da79c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 27 Apr 2022 13:55:00 +0200 Subject: [PATCH 0614/1588] modules: hardware: add firmware --- modules/hardware/default.nix | 1 + modules/hardware/firmware/default.nix | 38 +++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 modules/hardware/firmware/default.nix diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 9ab5d40..2a686f7 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -5,6 +5,7 @@ imports = [ ./bluetooth ./ergodox + ./firmware ./mx-ergo ./networking ./sound diff --git a/modules/hardware/firmware/default.nix b/modules/hardware/firmware/default.nix new file mode 100644 index 0000000..e899232 --- /dev/null +++ b/modules/hardware/firmware/default.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.hardware.firmware; +in +{ + options.my.hardware.firmware = with lib; { + enable = my.mkDisableOption "firmware configuration"; + + cpuFlavor = mkOption { + type = with types; nullOr (enum [ "intel" "amd" ]); + default = null; + example = "intel"; + description = "Which kind of CPU to activate micro-code updates"; + }; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + hardware = { + enableRedistributableFirmware = true; + }; + } + + # Intel CPU + (lib.mkIf (cfg.cpuFlavor == "intel") { + hardware = { + cpu.intel.updateMicrocode = true; + }; + }) + + # AMD CPU + (lib.mkIf (cfg.cpuFlavor == "amd") { + hardware = { + cpu.amd.updateMicrocode = true; + }; + }) + ]); +} From 9e9c7faf0d908d64abf8e1b4b1fdb53cff82a206 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 27 Apr 2022 13:58:03 +0200 Subject: [PATCH 0615/1588] machines: aramis: hardware: use 'hardware' module --- machines/aramis/hardware.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/machines/aramis/hardware.nix b/machines/aramis/hardware.nix index 920725a..c66b426 100644 --- a/machines/aramis/hardware.nix +++ b/machines/aramis/hardware.nix @@ -22,9 +22,13 @@ powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; - hardware = { - cpu.intel.updateMicrocode = true; + my.hardware = { + firmware = { + cpuFlavor = "intel"; + }; + }; + hardware = { trackpoint = { enable = true; From ea5e1042b44f87e7a2d7163adc4efc53c23a60d6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 28 Apr 2022 13:45:55 +0200 Subject: [PATCH 0616/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index e451ddf..d6585f4 100644 --- a/flake.lock +++ b/flake.lock @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1650234580, - "narHash": "sha256-wTmlRedCrDl+XYJom65GMfI3RgA3eZE/w03lD28Txoc=", + "lastModified": 1651007090, + "narHash": "sha256-C/OoQRzTUOWEr1sd3xTKA2GudA1YG1XB3MlL6KfTchg=", "owner": "nix-community", "repo": "home-manager", - "rev": "742c6cb3e9d866e095c629162fe5faf519adeb26", + "rev": "778af87a981eb2bfa3566dff8c3fb510856329ef", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1650161686, - "narHash": "sha256-70ZWAlOQ9nAZ08OU6WY7n4Ij2kOO199dLfNlvO/+pf8=", + "lastModified": 1651007983, + "narHash": "sha256-GNay7yDPtLcRcKCNHldug85AhAvBpTtPEJWSSDYBw8U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1ffba9f2f683063c2b14c9f4d12c55ad5f4ed887", + "rev": "e10da1c7f542515b609f8dfbcf788f3d85b14936", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1650270687, - "narHash": "sha256-It/SRKKhqjoRzXd40ThUxitZX3e4WD02rb2mlQ7Wc9I=", + "lastModified": 1651129914, + "narHash": "sha256-ZSqfvVdElD0yYRulscin6KAcELP0sw9sSIayaU9f3Mg=", "owner": "nix-community", "repo": "NUR", - "rev": "43c55bab29a7d002e33cad7148a482f56b6b90b6", + "rev": "3d4ba9a73109e240129ca6e36cb6b9654ef49389", "type": "github" }, "original": { From 46affd50571c7606665e083a0a095e9d1cda41b8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 2 May 2022 11:18:23 +0200 Subject: [PATCH 0617/1588] modules: hardware: bluetooth: remove wireplumber This configuration file completely breaks my sound setup. Will investigate more at a later time, in the mean time, since this is basically the default options, I will just remove the configuration file. This reverts commit c987206bc5e4bf84ea7bfb93a134f435c720ebae. --- modules/hardware/bluetooth/default.nix | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/modules/hardware/bluetooth/default.nix b/modules/hardware/bluetooth/default.nix index 6aeb7dc..ffe0fbe 100644 --- a/modules/hardware/bluetooth/default.nix +++ b/modules/hardware/bluetooth/default.nix @@ -25,21 +25,6 @@ in package = pkgs.pulseaudioFull; }; - # FIXME: waiting for NixOS module configuration - environment.etc = { - "wireplumber/bluetooth.lua.d/50-bluez-config.lua".text = '' - bluez_monitor.properties = { - ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" - -- mSBC provides better audio + microphone - ["bluez5.enable-msbc"] = true, - -- SBC XQ provides better audio - ["bluez5.enable-sbc-xq"] = true, - -- Hardware volume control - ["bluez5.enable-hw-volume"] = true, - } - ''; - }; - services.pipewire = { media-session.config.bluez-monitor.rules = [ { From a625f5b74119515c817602618ad214197e38121d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 3 May 2022 10:01:39 +0200 Subject: [PATCH 0618/1588] home: wm: i3: simplify 'htop' rule Turns out you can chain commands with `,` in a `for_window` statement. Of course this is inconsistent with `bindsym` which uses `;`... --- home/wm/i3/default.nix | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index ead5df9..57235ef 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -376,11 +376,7 @@ in # Make htop window bigger { criteria = { title = "^htop$"; }; - command = "resize set 80 ppt 80 ppt"; - } - { - criteria = { title = "^htop$"; }; - command = "move position center"; + command = "resize set 80 ppt 80 ppt, move position center"; } ]; }; From 80c574812263f958d3f1a9cb52ead6445e3d545b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 10 May 2022 13:51:47 +0200 Subject: [PATCH 0619/1588] home: packages: remove 'rr' No need for this, now that I have a dedicated option for the package. --- home/packages/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/packages/default.nix b/home/packages/default.nix index 434cb0d..84c1253 100644 --- a/home/packages/default.nix +++ b/home/packages/default.nix @@ -22,7 +22,6 @@ in file mosh ripgrep - rr termite.terminfo ] ++ cfg.additionalPackages); } From 50bf8b036b0e593dc32c7f9fd523184c6f4f2d5b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 15 May 2022 17:13:30 +0200 Subject: [PATCH 0620/1588] pkgs: dragger: fix meta information --- pkgs/dragger/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/dragger/default.nix b/pkgs/dragger/default.nix index cd0d453..e535944 100644 --- a/pkgs/dragger/default.nix +++ b/pkgs/dragger/default.nix @@ -23,7 +23,7 @@ qt5.mkDerivation rec { description = "A CLI drag-and-drop tool"; homepage = "https://gitea.belanyi.fr/ambroisie/dragger"; license = licenses.mit; - maintainers = [ ambroisie ]; + maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; }; } From 489b79f078bae85e36d8ebb5db12cbffc8e2a82b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 19 May 2022 14:53:05 +0200 Subject: [PATCH 0621/1588] home: vim: completion: activate 'ghost_text' I'm still thinking whether I would want to use one of those signature helper windows to go with this/replace this feature. Could be especially useful in C++. --- home/vim/plugin/settings/completion.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 9a3d7e6..43f6795 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -57,5 +57,8 @@ cmp.setup({ cmp.config.compare.order, }, }, + experimental = { + ghost_text = true, + }, }) EOF From 6fbacb8e596b4e6616efd51857d5b6b9f7431ad1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 23 May 2022 11:07:05 +0200 Subject: [PATCH 0622/1588] pkgs: unified-hosts-lists: 3.9.11 -> 3.10.1 --- pkgs/unified-hosts-lists/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index 4b0e0c6..61ac0c4 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -1,13 +1,13 @@ { lib, fetchFromGitHub, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "unified-hosts-lists"; - version = "3.9.11"; + version = "3.10.1"; src = fetchFromGitHub { owner = "StevenBlack"; repo = "hosts"; rev = version; - sha256 = "sha256-JFz6M0Mkwoby7I6LLWx0QfvZMzwET2FEQ1OGKQnFfho="; + sha256 = "sha256-PFKKYtssjAJGrP3AQE32ZJGlxwxnFa0vUTpCn94fCFI="; }; dontUnpack = true; From 641254614c6fe89dbeb94f63319d31b719ed947e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 23 May 2022 15:46:07 +0200 Subject: [PATCH 0623/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index d6585f4..6c36ed1 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1648942457, - "narHash": "sha256-i29Z1t3sVfCNfpp+KAfeExvpqHQSbLO1KWylTtfradU=", + "lastModified": 1652712410, + "narHash": "sha256-hMJ2TqLt0DleEnQFGUHK9sV2aAzJPU8pZeiZoqRozbE=", "owner": "ryantm", "repo": "agenix", - "rev": "0d5e59ed645e4c7b60174bc6f6aac6a203dc0b01", + "rev": "7e5e58b98c3dcbf497543ff6f22591552ebfe65b", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1649676176, - "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", + "lastModified": 1652776076, + "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", "owner": "numtide", "repo": "flake-utils", - "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", + "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1651007090, - "narHash": "sha256-C/OoQRzTUOWEr1sd3xTKA2GudA1YG1XB3MlL6KfTchg=", + "lastModified": 1653153149, + "narHash": "sha256-8B/tWWZziFq4DqnAm9uO7M4Z4PNfllYg5+teX1e5yDQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "778af87a981eb2bfa3566dff8c3fb510856329ef", + "rev": "94780dd888881bf35165dfdd334a57ef6b14ead8", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1651007983, - "narHash": "sha256-GNay7yDPtLcRcKCNHldug85AhAvBpTtPEJWSSDYBw8U=", + "lastModified": 1653060744, + "narHash": "sha256-kfRusllRumpt33J1hPV+CeCCylCXEU7e0gn2/cIM7cY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e10da1c7f542515b609f8dfbcf788f3d85b14936", + "rev": "dfd82985c273aac6eced03625f454b334daae2e8", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1651129914, - "narHash": "sha256-ZSqfvVdElD0yYRulscin6KAcELP0sw9sSIayaU9f3Mg=", + "lastModified": 1653301395, + "narHash": "sha256-T/RZd2MLugtJtZwXOSSwUIQdf2R95j8mj9LxGvKnvnM=", "owner": "nix-community", "repo": "NUR", - "rev": "3d4ba9a73109e240129ca6e36cb6b9654ef49389", + "rev": "2d836739ddb17a69e865c3cc2ca21d3a8bf5db78", "type": "github" }, "original": { @@ -100,11 +100,11 @@ ] }, "locked": { - "lastModified": 1649054408, - "narHash": "sha256-wz8AH7orqUE4Xog29WMTqOYBs0DMj2wFM8ulrTRVgz0=", + "lastModified": 1652714503, + "narHash": "sha256-qQKVEfDe5FqvGgkZtg5Pc491foeiDPIOeycHMqnPDps=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e5e7b3b542e7f4f96967966a943d7e1c07558042", + "rev": "521a524771a8e93caddaa0ac1d67d03766a8b0b3", "type": "github" }, "original": { From 052d5a3df73962485d45dd5986459da530cc5147 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 23 May 2022 15:49:15 +0200 Subject: [PATCH 0624/1588] modules: services: nextcloud: bump to 24 --- modules/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index 976d21f..f2d5484 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -31,7 +31,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud23; + package = pkgs.nextcloud24; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From 7fe49890be58185fa211bf9dacebf76ed5c4e646 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 May 2022 11:06:58 +0200 Subject: [PATCH 0625/1588] overlays: remove 'transgui-fix-duplicate-status' It has been patched in upstream nixpkgs. --- overlays/default.nix | 2 -- overlays/transgui-fix-duplicate-status/default.nix | 11 ----------- 2 files changed, 13 deletions(-) delete mode 100644 overlays/transgui-fix-duplicate-status/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index 3f5a246..6ea1d4d 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,5 +1,3 @@ { sabnzbd-fix-missing-packages = import ./sabnzbd-fix-missing-dependencies; - - transgui-fix-duplicate-status = import ./transgui-fix-duplicate-status; } diff --git a/overlays/transgui-fix-duplicate-status/default.nix b/overlays/transgui-fix-duplicate-status/default.nix deleted file mode 100644 index 85036ce..0000000 --- a/overlays/transgui-fix-duplicate-status/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -final: prev: -{ - transgui = prev.transgui.overrideAttrs (oldAttrs: { - patches = (oldAttrs.patches or [ ]) ++ [ - (final.fetchpatch { - url = "https://patch-diff.githubusercontent.com/raw/transmission-remote-gui/transgui/pull/1354.patch"; - sha256 = "sha256-Q4DAduqnTtNI0Zw9NIWpE8L0G8RusvPbZ3iW29k7XXA="; - }) - ]; - }); -} From e2098358ae3a8823aaec813a5b8a32a9b916c1b1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 May 2022 11:07:32 +0200 Subject: [PATCH 0626/1588] overlays: remove 'sabnzbd-fix-missing-packages' The upstream nixpkgs version has been fixed. --- overlays/default.nix | 2 +- .../default.nix | 4 -- .../sabnzbd.nix | 60 ------------------- 3 files changed, 1 insertion(+), 65 deletions(-) delete mode 100644 overlays/sabnzbd-fix-missing-dependencies/default.nix delete mode 100644 overlays/sabnzbd-fix-missing-dependencies/sabnzbd.nix diff --git a/overlays/default.nix b/overlays/default.nix index 6ea1d4d..7984ac0 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - sabnzbd-fix-missing-packages = import ./sabnzbd-fix-missing-dependencies; + # NOTE: no overlays at the moment } diff --git a/overlays/sabnzbd-fix-missing-dependencies/default.nix b/overlays/sabnzbd-fix-missing-dependencies/default.nix deleted file mode 100644 index e2e8eec..0000000 --- a/overlays/sabnzbd-fix-missing-dependencies/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -final: prev: -{ - sabnzbd = final.callPackage ./sabnzbd.nix { }; -} diff --git a/overlays/sabnzbd-fix-missing-dependencies/sabnzbd.nix b/overlays/sabnzbd-fix-missing-dependencies/sabnzbd.nix deleted file mode 100644 index 3da9b28..0000000 --- a/overlays/sabnzbd-fix-missing-dependencies/sabnzbd.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ lib -, stdenv -, fetchFromGitHub -, python3 -, par2cmdline -, unzip -, unrar -, p7zip -, makeWrapper -}: - -let - pythonEnv = python3.withPackages (ps: with ps; [ - chardet - cheetah3 - cherrypy - configobj - cryptography - feedparser - guessit - puremagic - sabyenc3 - ]); - path = lib.makeBinPath [ par2cmdline unrar unzip p7zip ]; -in -stdenv.mkDerivation rec { - version = "3.4.0"; - pname = "sabnzbd"; - - src = fetchFromGitHub { - owner = pname; - repo = pname; - rev = version; - sha256 = "sha256-zax+PuvCmYOlEhRmiCp7UOd9VI0i8dbgTPyTtqLuGUM="; - }; - - nativeBuildInputs = [ makeWrapper ]; - buildInputs = [ pythonEnv ]; - - installPhase = '' - runHook preInstall - - mkdir -p $out - cp -R * $out/ - mkdir $out/bin - echo "${pythonEnv}/bin/python $out/SABnzbd.py \$*" > $out/bin/sabnzbd - chmod +x $out/bin/sabnzbd - wrapProgram $out/bin/sabnzbd --set PATH ${path} - - runHook postInstall - ''; - - meta = with lib; { - description = "Usenet NZB downloader, par2 repairer and auto extracting server"; - homepage = "https://sabnzbd.org"; - license = licenses.gpl2Plus; - platforms = platforms.linux; - maintainers = with lib.maintainers; [ fridh ]; - }; -} From e35a4a1bd34cea8fbd009b293e6d7f04d09fa923 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 May 2022 13:41:42 +0200 Subject: [PATCH 0627/1588] flake: use new default app convention --- flake.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 7c98ae2..45b407d 100644 --- a/flake.nix +++ b/flake.nix @@ -117,6 +117,7 @@ rec { apps = { diff-flake = futils.lib.mkApp { drv = packages.diff-flake; }; + default = apps.diff-flake; }; checks = { @@ -135,8 +136,6 @@ }; }; - defaultApp = apps.diff-flake; - devShells = { default = pkgs.mkShell { name = "NixOS-config"; From 7689df40a43d158d0b3b0e53334768e9e0e56383 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 May 2022 13:42:57 +0200 Subject: [PATCH 0628/1588] pkgs: diff-flake: 0.1.0 -> 0.2.0 Use the new flake attributes conventions. --- pkgs/diff-flake/default.nix | 2 +- pkgs/diff-flake/diff-flake | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index c085e67..70c0fbb 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -1,7 +1,7 @@ { lib, coreutils, git, gnused, makeWrapper, shellcheck, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "diff-flake"; - version = "0.1.0"; + version = "0.2.0"; src = ./diff-flake; diff --git a/pkgs/diff-flake/diff-flake b/pkgs/diff-flake/diff-flake index ef03122..7c106c1 100755 --- a/pkgs/diff-flake/diff-flake +++ b/pkgs/diff-flake/diff-flake @@ -28,7 +28,7 @@ add_shell() { SYSTEM="$(nix eval --raw --impure --expr 'builtins.currentSystem')" fi # Use 'inputDerivation' attribute to make sure that it is build-able - FLAKE_OUTPUTS+=("devShell.$SYSTEM.inputDerivation") + FLAKE_OUTPUTS+=("devShells.$SYSTEM.default.inputDerivation") } add_host() { From eb0f923b4661e0b7d4cf92b300482384f664762e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 May 2022 13:48:18 +0200 Subject: [PATCH 0629/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 6c36ed1..56ca74f 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1652776076, - "narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=", + "lastModified": 1653893745, + "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8", + "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1653153149, - "narHash": "sha256-8B/tWWZziFq4DqnAm9uO7M4Z4PNfllYg5+teX1e5yDQ=", + "lastModified": 1653943687, + "narHash": "sha256-xXW9t24HLf89+n/92kOqRRfOBE3KDna+9rAOefs5WSQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "94780dd888881bf35165dfdd334a57ef6b14ead8", + "rev": "8f3e26705178cc8c1d982d37d881fc0d5b5b1837", "type": "github" }, "original": { @@ -60,11 +60,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1653060744, - "narHash": "sha256-kfRusllRumpt33J1hPV+CeCCylCXEU7e0gn2/cIM7cY=", + "lastModified": 1653845079, + "narHash": "sha256-7ghaQZ+7JXLI9FgNH8+RQHAt3/ubT92j8NtjZleP6t4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dfd82985c273aac6eced03625f454b334daae2e8", + "rev": "b62ada430501de88dfbb08cea4eb98ead3a5e3e7", "type": "github" }, "original": { @@ -76,11 +76,11 @@ }, "nur": { "locked": { - "lastModified": 1653301395, - "narHash": "sha256-T/RZd2MLugtJtZwXOSSwUIQdf2R95j8mj9LxGvKnvnM=", + "lastModified": 1653970042, + "narHash": "sha256-EcphYipFvqkFV9PrWUUz034G7WQHZwYVwzGiyU5384A=", "owner": "nix-community", "repo": "NUR", - "rev": "2d836739ddb17a69e865c3cc2ca21d3a8bf5db78", + "rev": "83f9a7c7287210b20da844b1ccd7c79cb696f51e", "type": "github" }, "original": { From 9f2bbaeff96e3bc1d4d1481352d7105ddb687788 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 May 2022 13:50:27 +0200 Subject: [PATCH 0630/1588] machines: aramis: home: add 'element-desktop' It's less buggy than the web version... --- machines/aramis/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 1c816a7..760174f 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -13,6 +13,7 @@ gpg.pinentry = "gtk2"; # Machine specific packages packages.additionalPackages = with pkgs; [ + element-desktop # Matrix client jellyfin-media-player # Wraps the webui and mpv together pavucontrol # Audio mixer GUI quasselClient # IRC client From 37d272fcfbf6128a46a7fab311897b569f18a570 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 31 May 2022 13:54:34 +0200 Subject: [PATCH 0631/1588] modules: services: lohr: add 'openssh' The git binary is not wrapped to add it in PATH anymore. --- modules/services/lohr/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/services/lohr/default.nix b/modules/services/lohr/default.nix index af218ac..f43bc40 100644 --- a/modules/services/lohr/default.nix +++ b/modules/services/lohr/default.nix @@ -88,6 +88,7 @@ in }; path = with pkgs; [ git + openssh ]; }; From 341450db5cf92a8a49730a09a924dc8d5ca4622b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 10 Jun 2022 10:21:47 +0200 Subject: [PATCH 0632/1588] home: vim: ftdetect: add tiger --- home/vim/ftdetect/tiger.vim | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 home/vim/ftdetect/tiger.vim diff --git a/home/vim/ftdetect/tiger.vim b/home/vim/ftdetect/tiger.vim new file mode 100644 index 0000000..d474fd7 --- /dev/null +++ b/home/vim/ftdetect/tiger.vim @@ -0,0 +1,3 @@ +" Use Tiger filetype for programs and header files +au BufNewFile,BufRead *.tig setfiletype tiger +au BufNewFile,BufRead *.tih setfiletype tiger From 530fb66e19f055072ca7cb283c596206dc3bb023 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 10 Jun 2022 16:19:44 +0200 Subject: [PATCH 0633/1588] home: migrate 'cursor' module to new option Make it part of 'home.wm' now, since that makes more sense. Not sure about making it related to 'i3' being activated though, will need to think about this in the future. --- home/wm/cursor/default.nix | 23 +++++++++++++++++++++++ home/wm/default.nix | 5 +++++ home/x/cursor/default.nix | 12 ------------ home/x/default.nix | 1 - 4 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 home/wm/cursor/default.nix delete mode 100644 home/x/cursor/default.nix diff --git a/home/wm/cursor/default.nix b/home/wm/cursor/default.nix new file mode 100644 index 0000000..9426232 --- /dev/null +++ b/home/wm/cursor/default.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.wm.cursor; + + cfg_x = config.my.home.x; + cfg_gtk = config.my.home.gtk; +in +{ + config = lib.mkIf cfg.enable { + home.pointerCursor = { + package = pkgs.ambroisie.vimix-cursors; + name = "Vimix-cursors"; + + x11 = { + inherit (cfg_x) enable; + }; + + gtk = { + inherit (cfg_gtk) enable; + }; + }; + }; +} diff --git a/home/wm/default.nix b/home/wm/default.nix index 1d5a371..fb9ecee 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -10,6 +10,7 @@ let in { imports = [ + ./cursor ./dunst ./i3 ./i3bar @@ -25,6 +26,10 @@ in description = "Which window manager to use for home session"; }; + cursor = { + enable = mkRelatedOption "dunst configuration" [ "i3" ]; + }; + dunst = { enable = mkRelatedOption "dunst configuration" [ "i3" ]; }; diff --git a/home/x/cursor/default.nix b/home/x/cursor/default.nix deleted file mode 100644 index 4762199..0000000 --- a/home/x/cursor/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, pkgs, ... }: -let - cfg = config.my.home.x; -in -{ - config = lib.mkIf cfg.enable { - xsession.pointerCursor = { - package = pkgs.ambroisie.vimix-cursors; - name = "Vimix-cursors"; - }; - }; -} diff --git a/home/x/default.nix b/home/x/default.nix index ac66a50..0312bc4 100644 --- a/home/x/default.nix +++ b/home/x/default.nix @@ -4,7 +4,6 @@ let in { imports = [ - ./cursor ./keyboard ]; From a8093bd62114a61e62cd8160de608ba66e5bb22c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Jun 2022 11:26:44 +0200 Subject: [PATCH 0634/1588] pkgs: drone-scp: 1.6.2 -> 1.6.3 --- pkgs/drone-scp/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/drone-scp/default.nix b/pkgs/drone-scp/default.nix index 863befd..0b51032 100644 --- a/pkgs/drone-scp/default.nix +++ b/pkgs/drone-scp/default.nix @@ -1,16 +1,16 @@ { lib, buildGoModule, fetchFromGitHub }: buildGoModule rec { pname = "drone-scp"; - version = "1.6.2"; + version = "1.6.3"; src = fetchFromGitHub { owner = "appleboy"; repo = "drone-scp"; rev = "v${version}"; - sha256 = "sha256-PNy1HA2qW4RY/VRHhuj/tIrdTuB7COr0Cuzurku+DZw="; + sha256 = "sha256-ELjPqoRR4O6gmc/PgthQuSXuSTQNzBZoAUT80zVVbV0="; }; - vendorSha256 = "sha256-7Aro6g3Tka0Cbi9LpqvKpQXlbxnHQWsMOkkNpENKh0U="; + vendorSha256 = "sha256-/c103hTJ/Qdz2KTkdl/ACvAaSSTKcl1DQY3+Us6OxaI="; doCheck = false; # Needs a specific user... From 7e4e41a07fbef6e9bf92cf0e2a94709744dd1db6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 14 Jun 2022 16:03:40 +0200 Subject: [PATCH 0635/1588] home: vim: add 'tiger' file-type configuration --- home/vim/after/ftplugin/tiger.vim | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 home/vim/after/ftplugin/tiger.vim diff --git a/home/vim/after/ftplugin/tiger.vim b/home/vim/after/ftplugin/tiger.vim new file mode 100644 index 0000000..81c2cfc --- /dev/null +++ b/home/vim/after/ftplugin/tiger.vim @@ -0,0 +1,6 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Use a small indentation value on tiger files +setlocal shiftwidth=2 +let b:undo_ftplugin.='|setlocal shiftwidth<' From 9c80bc07b92a7030ff4d3163a94fa612a165ef84 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 20 Jun 2022 14:34:34 +0200 Subject: [PATCH 0636/1588] pkgs: add drone-rsync A very simple wrapper script that I will migrate to, since 'drone-scp' does not work for me anymore. --- pkgs/default.nix | 2 ++ pkgs/drone-rsync/default.nix | 43 ++++++++++++++++++++++++++++++++++++ pkgs/drone-rsync/drone-rsync | 31 ++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 pkgs/drone-rsync/default.nix create mode 100755 pkgs/drone-rsync/drone-rsync diff --git a/pkgs/default.nix b/pkgs/default.nix index af39384..5d4e3d8 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -12,6 +12,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { dragger = pkgs.callPackage ./dragger { }; + drone-rsync = pkgs.callPackage ./drone-rsync { }; + drone-scp = pkgs.callPackage ./drone-scp { }; ff2mpv-go = pkgs.callPackage ./ff2mpv-go { }; diff --git a/pkgs/drone-rsync/default.nix b/pkgs/drone-rsync/default.nix new file mode 100644 index 0000000..16bc9e3 --- /dev/null +++ b/pkgs/drone-rsync/default.nix @@ -0,0 +1,43 @@ +{ lib, makeWrapper, openssh, rsync, shellcheck, sshpass, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "drone-rsync"; + version = "0.1.0"; + + src = ./drone-rsync; + + buildInputs = [ + makeWrapper + shellcheck + ]; + + dontUnpack = true; + + buildPhase = '' + shellcheck $src + ''; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${pname} + chmod a+x $out/bin/${pname} + ''; + + wrapperPath = lib.makeBinPath [ + openssh + rsync + sshpass + ]; + + fixupPhase = '' + patchShebangs $out/bin/${pname} + wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = "Helper script to run rsync in a CI pipeline"; + homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.unix; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/drone-rsync/drone-rsync b/pkgs/drone-rsync/drone-rsync new file mode 100755 index 0000000..b6491e7 --- /dev/null +++ b/pkgs/drone-rsync/drone-rsync @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +set -euo pipefail + +ARGS=( + # Show readable progress in log + --verbose + --human-readable + --progress + # Have a one-to-one copy + --archive + --compress + --recursive + --delete + # Configure ssh client + --rsh "ssh -p ${SYNC_PORT:-22} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" +) + +eval "$(ssh-agent)" +SSHPASS="${SYNC_PASSPHRASE:-}" sshpass -P 'passphrase' -v -e ssh-add <(echo "${SYNC_KEY}") + +if [ -n "${SYNC_DRY_RUN:-}" ]; then + ARGS+=(--dry-run) +fi + +# shellcheck disable=2086 +# FIXME: have a safer way to allow globbing the source +rsync \ + "${ARGS[@]}" \ + ${SYNC_SOURCE} \ + "${SYNC_USERNAME}@${SYNC_HOST}:${SYNC_TARGET}" From 7ab49dbeabb64e75140b1fc06df0258c17265dc0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Jun 2022 13:50:47 +0200 Subject: [PATCH 0637/1588] pkgs: remove 'shellcheck' as a 'buildPhase' I already verify those scripts with my pre-commit hook. And that way avoid spurious build failures in case a (transitive) dependency is broken. --- pkgs/bw-pass/default.nix | 7 ++----- pkgs/change-audio/default.nix | 7 ++----- pkgs/change-backlight/default.nix | 7 ++----- pkgs/comma/default.nix | 7 ++----- pkgs/diff-flake/default.nix | 7 ++----- pkgs/drone-rsync/default.nix | 7 ++----- pkgs/i3-get-window-criteria/default.nix | 7 ++----- 7 files changed, 14 insertions(+), 35 deletions(-) diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix index b11e7ea..fcd9d08 100644 --- a/pkgs/bw-pass/default.nix +++ b/pkgs/bw-pass/default.nix @@ -1,4 +1,4 @@ -{ lib, bitwarden-cli, coreutils, jq, keyutils, makeWrapper, rofi, shellcheck, stdenvNoCC }: +{ lib, bitwarden-cli, coreutils, jq, keyutils, makeWrapper, rofi, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "bw-pass"; version = "0.1.0"; @@ -7,14 +7,11 @@ stdenvNoCC.mkDerivation rec { buildInputs = [ makeWrapper - shellcheck ]; dontUnpack = true; - buildPhase = '' - shellcheck $src - ''; + dontBuild = true; installPhase = '' mkdir -p $out/bin diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index d2e76b0..3b3359d 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -1,4 +1,4 @@ -{ lib, libnotify, makeWrapper, pamixer, shellcheck, stdenvNoCC }: +{ lib, libnotify, makeWrapper, pamixer, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "change-audio"; version = "0.3.0"; @@ -7,14 +7,11 @@ stdenvNoCC.mkDerivation rec { buildInputs = [ makeWrapper - shellcheck ]; dontUnpack = true; - buildPhase = '' - shellcheck $src - ''; + dontBuild = true; installPhase = '' mkdir -p $out/bin diff --git a/pkgs/change-backlight/default.nix b/pkgs/change-backlight/default.nix index 799c814..83ba2fe 100644 --- a/pkgs/change-backlight/default.nix +++ b/pkgs/change-backlight/default.nix @@ -1,4 +1,4 @@ -{ lib, brightnessctl, libnotify, makeWrapper, shellcheck, stdenvNoCC }: +{ lib, brightnessctl, libnotify, makeWrapper, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "change-backlight"; version = "0.1.0"; @@ -7,14 +7,11 @@ stdenvNoCC.mkDerivation rec { buildInputs = [ makeWrapper - shellcheck ]; dontUnpack = true; - buildPhase = '' - shellcheck $src - ''; + dontBuild = true; installPhase = '' mkdir -p $out/bin diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix index 1c10eb2..d61c884 100644 --- a/pkgs/comma/default.nix +++ b/pkgs/comma/default.nix @@ -1,4 +1,4 @@ -{ lib, fzf, makeWrapper, nix-index, shellcheck, stdenvNoCC }: +{ lib, fzf, makeWrapper, nix-index, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "comma"; version = "0.1.0"; @@ -7,14 +7,11 @@ stdenvNoCC.mkDerivation rec { buildInputs = [ makeWrapper - shellcheck ]; dontUnpack = true; - buildPhase = '' - shellcheck $src - ''; + dontBuild = true; installPhase = '' mkdir -p $out/bin diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 70c0fbb..39e8921 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -1,4 +1,4 @@ -{ lib, coreutils, git, gnused, makeWrapper, shellcheck, stdenvNoCC }: +{ lib, coreutils, git, gnused, makeWrapper, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "diff-flake"; version = "0.2.0"; @@ -7,14 +7,11 @@ stdenvNoCC.mkDerivation rec { buildInputs = [ makeWrapper - shellcheck ]; dontUnpack = true; - buildPhase = '' - shellcheck $src - ''; + dontBuild = true; installPhase = '' mkdir -p $out/bin diff --git a/pkgs/drone-rsync/default.nix b/pkgs/drone-rsync/default.nix index 16bc9e3..cb70fed 100644 --- a/pkgs/drone-rsync/default.nix +++ b/pkgs/drone-rsync/default.nix @@ -1,4 +1,4 @@ -{ lib, makeWrapper, openssh, rsync, shellcheck, sshpass, stdenvNoCC }: +{ lib, makeWrapper, openssh, rsync, sshpass, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "drone-rsync"; version = "0.1.0"; @@ -7,14 +7,11 @@ stdenvNoCC.mkDerivation rec { buildInputs = [ makeWrapper - shellcheck ]; dontUnpack = true; - buildPhase = '' - shellcheck $src - ''; + dontBuild = true; installPhase = '' mkdir -p $out/bin diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix index acfde93..8b082d4 100644 --- a/pkgs/i3-get-window-criteria/default.nix +++ b/pkgs/i3-get-window-criteria/default.nix @@ -1,4 +1,4 @@ -{ lib, coreutils, gnused, makeWrapper, shellcheck, stdenvNoCC, xorg }: +{ lib, coreutils, gnused, makeWrapper, stdenvNoCC, xorg }: stdenvNoCC.mkDerivation rec { pname = "i3-get-window-criteria"; version = "0.1.0"; @@ -7,14 +7,11 @@ stdenvNoCC.mkDerivation rec { buildInputs = [ makeWrapper - shellcheck ]; dontUnpack = true; - buildPhase = '' - shellcheck $src - ''; + dontBuild = true; installPhase = '' mkdir -p $out/bin From c3706ff5375bdac53c12d140906ffd55e471e57e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Jun 2022 11:19:43 +0200 Subject: [PATCH 0638/1588] flake: bump inputs --- flake.lock | 72 +++++++++++++++++++++++++++++++++++++++++++++++------- flake.nix | 1 + 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 56ca74f..fdfe60b 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,22 @@ "type": "github" } }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "futils": { "locked": { "lastModified": 1653893745, @@ -39,16 +55,22 @@ }, "home-manager": { "inputs": { + "flake-compat": "flake-compat", "nixpkgs": [ "nixpkgs" + ], + "nmd": "nmd", + "nmt": "nmt", + "utils": [ + "futils" ] }, "locked": { - "lastModified": 1653943687, - "narHash": "sha256-xXW9t24HLf89+n/92kOqRRfOBE3KDna+9rAOefs5WSQ=", + "lastModified": 1655858799, + "narHash": "sha256-Ws6BKlVuEVO29Ab3OEUfVLbWTECv/5Ax3yOMq/UeY0E=", "owner": "nix-community", "repo": "home-manager", - "rev": "8f3e26705178cc8c1d982d37d881fc0d5b5b1837", + "rev": "06bb67ab24bd6e6c6d2bc97ecbcddd6c8b07ac18", "type": "github" }, "original": { @@ -60,11 +82,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1653845079, - "narHash": "sha256-7ghaQZ+7JXLI9FgNH8+RQHAt3/ubT92j8NtjZleP6t4=", + "lastModified": 1655624069, + "narHash": "sha256-7g1zwTdp35GMTERnSzZMWJ7PG3QdDE8VOX3WsnOkAtM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b62ada430501de88dfbb08cea4eb98ead3a5e3e7", + "rev": "0d68d7c857fe301d49cdcd56130e0beea4ecd5aa", "type": "github" }, "original": { @@ -74,13 +96,45 @@ "type": "github" } }, + "nmd": { + "flake": false, + "locked": { + "lastModified": 1653339422, + "narHash": "sha256-RNLq09vfj21TyYuUCeD6BNTNC6Ew8bLhQULZytN4Xx8=", + "owner": "rycee", + "repo": "nmd", + "rev": "91dee681dd1c478d6040a00835d73c0f4a4c5c29", + "type": "gitlab" + }, + "original": { + "owner": "rycee", + "repo": "nmd", + "type": "gitlab" + } + }, + "nmt": { + "flake": false, + "locked": { + "lastModified": 1648075362, + "narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=", + "owner": "rycee", + "repo": "nmt", + "rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae", + "type": "gitlab" + }, + "original": { + "owner": "rycee", + "repo": "nmt", + "type": "gitlab" + } + }, "nur": { "locked": { - "lastModified": 1653970042, - "narHash": "sha256-EcphYipFvqkFV9PrWUUz034G7WQHZwYVwzGiyU5384A=", + "lastModified": 1655884594, + "narHash": "sha256-ZwmYvED9P9RmMvQkV+PeZ5vGQyDDaR5y8A5vuRnrac0=", "owner": "nix-community", "repo": "NUR", - "rev": "83f9a7c7287210b20da844b1ccd7c79cb696f51e", + "rev": "4a38042992499ce141a38e7dc5a105c31fd77b98", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 45b407d..3f8f350 100644 --- a/flake.nix +++ b/flake.nix @@ -25,6 +25,7 @@ ref = "master"; inputs = { nixpkgs.follows = "nixpkgs"; + utils.follows = "futils"; }; }; From 8a556585afb7cf716b36d8bf476838b636d8e4ca Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Jun 2022 16:04:17 +0200 Subject: [PATCH 0639/1588] flake: remove 'aarch64-darwin' 'pyopenssl' has been marked as broken on this sytem, so remove it from my supported systems to avoid breaking 'nix flake check'. --- flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake.nix b/flake.nix index 3f8f350..a86ac33 100644 --- a/flake.nix +++ b/flake.nix @@ -69,7 +69,6 @@ inherit (futils.lib) eachSystem system; mySystems = [ - system.aarch64-darwin system.aarch64-linux system.x86_64-darwin system.x86_64-linux From 3eb1dc086b3fcd20029643bff37e399be197423d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Jun 2022 16:06:49 +0200 Subject: [PATCH 0640/1588] lib: fix formatting --- lib/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/default.nix b/lib/default.nix index fa37c23..8358d58 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -15,6 +15,4 @@ let mapModules ./. (file: import file { inherit self lib pkgs inputs; }) ); in -mylib.extend (self: super: - foldr (a: b: a // b) { } (attrValues super) -) +mylib.extend (self: super: foldr (a: b: a // b) { } (attrValues super)) From 9f8298160256fff7d780230b548f4088bc8361f1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 23 Jun 2022 10:02:30 +0200 Subject: [PATCH 0641/1588] home: vim: add 'nvim-lspconfig' For some reason I had not added it to my plug-in list, but it still worked until I bumped my inputs. --- home/vim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 22268d3..e803d00 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -62,6 +62,7 @@ in git-messenger-vim # A simple blame window # LSP and linting + nvim-lspconfig # Easy LSP configuration lsp_lines-nvim # Show diagnostics *over* regions null-ls-nvim # LSP integration for linters and formatters (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting From 468fbdd69a00c33a4e4d6ccd1d8cebd71053e23c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 11 Jul 2022 14:11:43 +0200 Subject: [PATCH 0642/1588] home: xdg: do not set 'WGETRC' I don't use it... --- home/xdg/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/xdg/default.nix b/home/xdg/default.nix index 1aa69ac..b335842 100644 --- a/home/xdg/default.nix +++ b/home/xdg/default.nix @@ -45,6 +45,5 @@ in INPUTRC = "${configHome}/readline/inputrc"; LESSHISTFILE = "${dataHome}/less/history"; LESSKEY = "${configHome}/less/lesskey"; - WGETRC = "${configHome}/wgetrc"; }; } From cde010a5f241c05451375cd0b15143a6b235d393 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 12 Jul 2022 13:48:25 +0200 Subject: [PATCH 0643/1588] flake: bump inputs --- flake.lock | 81 ++++++++++-------------------------------------------- 1 file changed, 15 insertions(+), 66 deletions(-) diff --git a/flake.lock b/flake.lock index fdfe60b..c5aa9fd 100644 --- a/flake.lock +++ b/flake.lock @@ -21,29 +21,13 @@ "type": "github" } }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "futils": { "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", "type": "github" }, "original": { @@ -55,22 +39,19 @@ }, "home-manager": { "inputs": { - "flake-compat": "flake-compat", "nixpkgs": [ "nixpkgs" ], - "nmd": "nmd", - "nmt": "nmt", "utils": [ "futils" ] }, "locked": { - "lastModified": 1655858799, - "narHash": "sha256-Ws6BKlVuEVO29Ab3OEUfVLbWTECv/5Ax3yOMq/UeY0E=", + "lastModified": 1657621596, + "narHash": "sha256-lRd1RHpuSaCvkXSLBV/eTW0cKt4pj51yW0d62Yg9dAs=", "owner": "nix-community", "repo": "home-manager", - "rev": "06bb67ab24bd6e6c6d2bc97ecbcddd6c8b07ac18", + "rev": "1e66e035e18ca02d72ebbbc83e4e75fa0acdf1af", "type": "github" }, "original": { @@ -82,11 +63,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1655624069, - "narHash": "sha256-7g1zwTdp35GMTERnSzZMWJ7PG3QdDE8VOX3WsnOkAtM=", + "lastModified": 1657447684, + "narHash": "sha256-FCP9AuU1q6PE3vOeM5SFf58f/UKPBAsoSGDUGamNBbo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0d68d7c857fe301d49cdcd56130e0beea4ecd5aa", + "rev": "5f43d8b088d3771274bcfb69d3c7435b1121ac88", "type": "github" }, "original": { @@ -96,45 +77,13 @@ "type": "github" } }, - "nmd": { - "flake": false, - "locked": { - "lastModified": 1653339422, - "narHash": "sha256-RNLq09vfj21TyYuUCeD6BNTNC6Ew8bLhQULZytN4Xx8=", - "owner": "rycee", - "repo": "nmd", - "rev": "91dee681dd1c478d6040a00835d73c0f4a4c5c29", - "type": "gitlab" - }, - "original": { - "owner": "rycee", - "repo": "nmd", - "type": "gitlab" - } - }, - "nmt": { - "flake": false, - "locked": { - "lastModified": 1648075362, - "narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=", - "owner": "rycee", - "repo": "nmt", - "rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae", - "type": "gitlab" - }, - "original": { - "owner": "rycee", - "repo": "nmt", - "type": "gitlab" - } - }, "nur": { "locked": { - "lastModified": 1655884594, - "narHash": "sha256-ZwmYvED9P9RmMvQkV+PeZ5vGQyDDaR5y8A5vuRnrac0=", + "lastModified": 1657625990, + "narHash": "sha256-o3mvJ1ihYyWZus96FC9XYuSmoR1v61MlHnRZigzSZu4=", "owner": "nix-community", "repo": "NUR", - "rev": "4a38042992499ce141a38e7dc5a105c31fd77b98", + "rev": "0e576376677b821c0ab1dbd5f37eeadd424c7f25", "type": "github" }, "original": { @@ -154,11 +103,11 @@ ] }, "locked": { - "lastModified": 1652714503, - "narHash": "sha256-qQKVEfDe5FqvGgkZtg5Pc491foeiDPIOeycHMqnPDps=", + "lastModified": 1656169028, + "narHash": "sha256-y9DRauokIeVHM7d29lwT8A+0YoGUBXV3H0VErxQeA8s=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "521a524771a8e93caddaa0ac1d67d03766a8b0b3", + "rev": "db3bd555d3a3ceab208bed48f983ccaa6a71a25e", "type": "github" }, "original": { From 914b064f7292775adf4f022c30ff056d69e0d743 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 28 Jul 2022 17:53:55 +0200 Subject: [PATCH 0644/1588] modules: services: paperless: fix DB dependency --- modules/services/paperless/default.nix | 30 +++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/modules/services/paperless/default.nix b/modules/services/paperless/default.nix index b21efa8..5ba9709 100644 --- a/modules/services/paperless/default.nix +++ b/modules/services/paperless/default.nix @@ -83,16 +83,28 @@ in }; systemd.services = { - paperless-scheduler.serviceConfig = { - EnvironmentFile = cfg.secretKeyFile; + paperless-scheduler = { + after = [ "postgresql.service" ]; + + serviceConfig = { + EnvironmentFile = cfg.secretKeyFile; + }; }; - paperless-consumer.serviceConfig = { - EnvironmentFile = cfg.secretKeyFile; + paperless-consumer = { + after = [ "postgresql.service" ]; + + serviceConfig = { + EnvironmentFile = cfg.secretKeyFile; + }; }; - paperless-web.serviceConfig = { - EnvironmentFile = cfg.secretKeyFile; + paperless-web = { + after = [ "postgresql.service" ]; + + serviceConfig = { + EnvironmentFile = cfg.secretKeyFile; + }; }; }; @@ -111,12 +123,6 @@ in # Set-up media group users.groups.media = { }; - systemd.services.paperless-server = { - # Make sure the DB is available - after = [ "postgresql.service" ]; - }; - - users.users.${config.services.paperless.user} = { extraGroups = [ "media" ]; }; From 2ba9c63f2ef68d3bf53334f07ae6b5e35cedd927 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 28 Jul 2022 17:53:23 +0200 Subject: [PATCH 0645/1588] modules: services: add grocy --- modules/services/default.nix | 1 + modules/services/grocy/default.nix | 33 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 modules/services/grocy/default.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 4ed40f0..a5d129b 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -9,6 +9,7 @@ ./drone ./flood ./gitea + ./grocy ./indexers ./jellyfin ./lohr diff --git a/modules/services/grocy/default.nix b/modules/services/grocy/default.nix new file mode 100644 index 0000000..22288e7 --- /dev/null +++ b/modules/services/grocy/default.nix @@ -0,0 +1,33 @@ +# Groceries and household management +{ config, lib, ... }: +let + cfg = config.my.services.grocy; +in +{ + options.my.services.grocy = with lib; { + enable = mkEnableOption "Grocy household ERP"; + }; + + config = lib.mkIf cfg.enable { + services.grocy = { + enable = true; + + # The service sets up the reverse proxy automatically + hostName = "grocy.${config.networking.domain}"; + + nginx = { + enableSSL = true; + }; + + settings = { + currency = "EUR"; + culture = "en"; + calendar = { + # Start on Monday + firstDayOfWeek = 1; + showWeekNumber = true; + }; + }; + }; + }; +} From 58971246e74464e428ac8e8db10161443790df6a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 28 Jul 2022 18:19:44 +0200 Subject: [PATCH 0646/1588] machines: porthos: services: enable grocy --- machines/porthos/services.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 615efd5..5cb8665 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -48,6 +48,10 @@ in passwordFile = secrets."gitea/mail-password".path; }; }; + # Grocy ERP + grocy = { + enable = true; + }; # Meta-indexers indexers = { prowlarr.enable = true; From 48495851bad6b9daf7b4f32df6b40e8ad5c8eb79 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 28 Jul 2022 18:26:02 +0200 Subject: [PATCH 0647/1588] modules: services: grocy: fix SSL configuration --- modules/services/grocy/default.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/services/grocy/default.nix b/modules/services/grocy/default.nix index 22288e7..87927d6 100644 --- a/modules/services/grocy/default.nix +++ b/modules/services/grocy/default.nix @@ -2,6 +2,7 @@ { config, lib, ... }: let cfg = config.my.services.grocy; + grocyDomain = "grocy.${config.networking.domain}"; in { options.my.services.grocy = with lib; { @@ -13,10 +14,11 @@ in enable = true; # The service sets up the reverse proxy automatically - hostName = "grocy.${config.networking.domain}"; + hostName = grocyDomain; + # Configure SSL by hand nginx = { - enableSSL = true; + enableSSL = false; }; settings = { @@ -29,5 +31,10 @@ in }; }; }; + + services.nginx.virtualHosts."${grocyDomain}" = { + forceSSL = true; + useACMEHost = config.networking.domain; + }; }; } From 3efba75169e68efd0bbf4d152b3983b4fdc220ad Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 15 Jul 2022 23:49:28 +0200 Subject: [PATCH 0648/1588] home: gdb: fix auto-load safe path --- home/gdb/gdbinit | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/gdb/gdbinit b/home/gdb/gdbinit index bdf7bfd..86e8c3c 100644 --- a/home/gdb/gdbinit +++ b/home/gdb/gdbinit @@ -19,6 +19,6 @@ set print demangle on set auto-load python-scripts # Allow autoloading project-local .gdbinit files -set auto-load safe-path ~/git/ +add-auto-load-safe-path ~/git/ # Allow autoloading from the Nix store -set auto-load safe-path /nix/store +add-auto-load-safe-path /nix/store From 235ab4794eca47e4425727c7dd7d83b380ae7683 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 31 Aug 2022 17:16:36 +0200 Subject: [PATCH 0649/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index c5aa9fd..4c4d554 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -47,11 +47,11 @@ ] }, "locked": { - "lastModified": 1657621596, - "narHash": "sha256-lRd1RHpuSaCvkXSLBV/eTW0cKt4pj51yW0d62Yg9dAs=", + "lastModified": 1661824092, + "narHash": "sha256-nSWLWytlXbeLrx5A+r5Pso7CvVrX5EgmIIXW/EXvPHQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "1e66e035e18ca02d72ebbbc83e4e75fa0acdf1af", + "rev": "5bd66dc6cd967033489c69d486402b75d338eeb6", "type": "github" }, "original": { @@ -63,11 +63,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1657447684, - "narHash": "sha256-FCP9AuU1q6PE3vOeM5SFf58f/UKPBAsoSGDUGamNBbo=", + "lastModified": 1661720780, + "narHash": "sha256-AJNGyaB2eKZAYaPNjBZOzap87yL+F9ZLaFzzMkvega0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5f43d8b088d3771274bcfb69d3c7435b1121ac88", + "rev": "a63021a330d8d33d862a8e29924b42d73037dd37", "type": "github" }, "original": { @@ -79,11 +79,11 @@ }, "nur": { "locked": { - "lastModified": 1657625990, - "narHash": "sha256-o3mvJ1ihYyWZus96FC9XYuSmoR1v61MlHnRZigzSZu4=", + "lastModified": 1661952120, + "narHash": "sha256-JwpT04L0mbLAKxTplG++RCHJgdXXHEQcGFihQqV/VF8=", "owner": "nix-community", "repo": "NUR", - "rev": "0e576376677b821c0ab1dbd5f37eeadd424c7f25", + "rev": "7dd0008c061609bc4dc5f2a0336f13082a35e00a", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1656169028, - "narHash": "sha256-y9DRauokIeVHM7d29lwT8A+0YoGUBXV3H0VErxQeA8s=", + "lastModified": 1660830093, + "narHash": "sha256-HUhx3a82C7bgp2REdGFeHJdhEAzMGCk3V8xIvfBqg1I=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "db3bd555d3a3ceab208bed48f983ccaa6a71a25e", + "rev": "8cb8ea5f1c7bc2984f460587fddd5f2e558f6eb8", "type": "github" }, "original": { From 6748b5b5e6f0af026dbf3fdc15c0e0051c0ab04e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 31 Aug 2022 16:08:10 +0200 Subject: [PATCH 0650/1588] home: mail: accounts: use 'outlook' flavor --- home/mail/accounts/default.nix | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/home/mail/accounts/default.nix b/home/mail/accounts/default.nix index 80d95ae..ee8ec46 100644 --- a/home/mail/accounts/default.nix +++ b/home/mail/accounts/default.nix @@ -51,21 +51,7 @@ let }; office365Config = { - imap = { - host = "outlook.office365.com"; - port = 993; - tls = { - enable = true; - }; - }; - smtp = { - host = "outlook.office365.com"; - port = 587; - tls = { - enable = true; - useStartTls = true; - }; - }; + flavor = "outlook.office365.com"; }; in { From c05fafefe890e4a5d19ca5aa5709de99a2d1fea2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 31 Aug 2022 17:19:58 +0200 Subject: [PATCH 0651/1588] modules: services: gitea: migrate to 'settings' --- modules/services/gitea/default.nix | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/modules/services/gitea/default.nix b/modules/services/gitea/default.nix index 39332c5..9c443f0 100644 --- a/modules/services/gitea/default.nix +++ b/modules/services/gitea/default.nix @@ -64,10 +64,6 @@ in lfs.enable = true; useWizard = false; - disableRegistration = true; - - # only send cookies via HTTPS - cookieSecure = true; database = { type = "postgres"; # Automatic setup @@ -90,6 +86,15 @@ in MAILER_TYPE = cfg.mail.type; IS_TLS_ENABLED = cfg.mail.tls; }; + + service = { + DISABLE_REGISTRATION = true; + }; + + session = { + # only send cookies via HTTPS + COOKIE_SECURE = true; + }; }; }; From e1e5a7c900f6b38c7275fb7601856ed8f71687cb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 2 Sep 2022 09:49:35 +0200 Subject: [PATCH 0652/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 4c4d554..430a448 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1652712410, - "narHash": "sha256-hMJ2TqLt0DleEnQFGUHK9sV2aAzJPU8pZeiZoqRozbE=", + "lastModified": 1662046976, + "narHash": "sha256-BrTReGRhkVm/Kmmf4zQrL+oYWy0sds/BDBgXNX1CL3c=", "owner": "ryantm", "repo": "agenix", - "rev": "7e5e58b98c3dcbf497543ff6f22591552ebfe65b", + "rev": "9f136ecfa5bf954538aed3245e4408cf87c85097", "type": "github" }, "original": { @@ -63,11 +63,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1661720780, - "narHash": "sha256-AJNGyaB2eKZAYaPNjBZOzap87yL+F9ZLaFzzMkvega0=", + "lastModified": 1662019588, + "narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a63021a330d8d33d862a8e29924b42d73037dd37", + "rev": "2da64a81275b68fdad38af669afeda43d401e94b", "type": "github" }, "original": { @@ -79,11 +79,11 @@ }, "nur": { "locked": { - "lastModified": 1661952120, - "narHash": "sha256-JwpT04L0mbLAKxTplG++RCHJgdXXHEQcGFihQqV/VF8=", + "lastModified": 1662103084, + "narHash": "sha256-zE6ftit1nllgrXJ3hnt/h/Ev+JsjkJQLKAgO5M31R5s=", "owner": "nix-community", "repo": "NUR", - "rev": "7dd0008c061609bc4dc5f2a0336f13082a35e00a", + "rev": "65fef905eaad9a585a3841103ed3f45608a50c56", "type": "github" }, "original": { From 4216c654e7f3103768067f9d6558ec8d75410c74 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 31 Aug 2022 15:50:22 +0200 Subject: [PATCH 0653/1588] home: vim: migrate to 'nvim-surround' It's potentially more customizable, and integrates with tree-sitter. It also allows for buffer/filetype specific pairs. --- home/vim/default.nix | 2 +- home/vim/plugin/settings/surround.vim | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 home/vim/plugin/settings/surround.vim diff --git a/home/vim/default.nix b/home/vim/default.nix index e803d00..2f17890 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -42,7 +42,6 @@ in vim-git # Sane git syntax files vim-repeat # Enanche '.' for plugins vim-rsi # Readline mappings - vim-surround # Deal with pairs vim-unimpaired # Some ex command mappings vim-vinegar # Better netrw @@ -83,6 +82,7 @@ in # UX improvements dressing-nvim # Integrate native UI hooks with Telescope etc... gitsigns-nvim # Fast git UI integration + nvim-surround # Deal with pairs, now in Lua telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm telescope-lsp-handlers-nvim # Use 'telescope' for various LSP actions telescope-nvim # Fuzzy finder interface diff --git a/home/vim/plugin/settings/surround.vim b/home/vim/plugin/settings/surround.vim new file mode 100644 index 0000000..e5eb81b --- /dev/null +++ b/home/vim/plugin/settings/surround.vim @@ -0,0 +1,5 @@ +lua << EOF +require("nvim-surround").setup({ + -- No configuration at the moment +}) +EOF From aed2e8c581783c67626e773998923c5ac1129bd6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 14 Sep 2022 13:41:07 +0200 Subject: [PATCH 0654/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 430a448..cf67e16 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1662046976, - "narHash": "sha256-BrTReGRhkVm/Kmmf4zQrL+oYWy0sds/BDBgXNX1CL3c=", + "lastModified": 1662241716, + "narHash": "sha256-urqPvSvvGUhkwzTDxUI8N1nsdMysbAfjmBNZaTYBZRU=", "owner": "ryantm", "repo": "agenix", - "rev": "9f136ecfa5bf954538aed3245e4408cf87c85097", + "rev": "c96da5835b76d3d8e8d99a0fec6fe32f8539ee2e", "type": "github" }, "original": { @@ -47,11 +47,11 @@ ] }, "locked": { - "lastModified": 1661824092, - "narHash": "sha256-nSWLWytlXbeLrx5A+r5Pso7CvVrX5EgmIIXW/EXvPHQ=", + "lastModified": 1663099612, + "narHash": "sha256-ucokjFDRwCFWbcGiqxz0mfHv82UqwyW7RXY6ZgKSl80=", "owner": "nix-community", "repo": "home-manager", - "rev": "5bd66dc6cd967033489c69d486402b75d338eeb6", + "rev": "60c6bfe322944d04bb38e76b64effcbd01258824", "type": "github" }, "original": { @@ -63,11 +63,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1662019588, - "narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=", + "lastModified": 1662996720, + "narHash": "sha256-XvLQ3SuXnDMJMpM1sv1ifPjBuRytiDYhB12H/BNTjgY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2da64a81275b68fdad38af669afeda43d401e94b", + "rev": "5f326e2a403e1cebaec378e72ceaf5725983376d", "type": "github" }, "original": { @@ -79,11 +79,11 @@ }, "nur": { "locked": { - "lastModified": 1662103084, - "narHash": "sha256-zE6ftit1nllgrXJ3hnt/h/Ev+JsjkJQLKAgO5M31R5s=", + "lastModified": 1663140352, + "narHash": "sha256-l6zXiLm/nYezRORU3QEfgTg/cXs67UhEW83r64XPckU=", "owner": "nix-community", "repo": "NUR", - "rev": "65fef905eaad9a585a3841103ed3f45608a50c56", + "rev": "930c526eccdc1b32ada04b9014724e15247cacf6", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1660830093, - "narHash": "sha256-HUhx3a82C7bgp2REdGFeHJdhEAzMGCk3V8xIvfBqg1I=", + "lastModified": 1663082609, + "narHash": "sha256-lmCCIu4dj59qbzkGKHQtolhpIEQMeAd2XUbXVPqgPYo=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "8cb8ea5f1c7bc2984f460587fddd5f2e558f6eb8", + "rev": "60cad1a326df17a8c6cf2bb23436609fdd83024e", "type": "github" }, "original": { From ad57052317ee5d597e750628897068ee3ba544a6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 14 Sep 2022 14:36:26 +0200 Subject: [PATCH 0655/1588] pkgs: unified-hosts-lists: 3.10.1 -> 3.11.16 --- pkgs/unified-hosts-lists/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index 61ac0c4..ed6d286 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -1,13 +1,13 @@ { lib, fetchFromGitHub, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "unified-hosts-lists"; - version = "3.10.1"; + version = "3.11.16"; src = fetchFromGitHub { owner = "StevenBlack"; repo = "hosts"; rev = version; - sha256 = "sha256-PFKKYtssjAJGrP3AQE32ZJGlxwxnFa0vUTpCn94fCFI="; + sha256 = "sha256-YB/3v6qMz/iERRV/AvbOMoLgtqHdXarCrZApfUqzwmo="; }; dontUnpack = true; From 84217afd07542b1df5b4f6ade310ccb8148fdada Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 22 Sep 2022 14:32:52 +0200 Subject: [PATCH 0656/1588] pkgs: remove 'psst' It has been included in nixpkgs. --- pkgs/default.nix | 2 -- pkgs/psst/default.nix | 34 ---------------------------------- 2 files changed, 36 deletions(-) delete mode 100644 pkgs/psst/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 5d4e3d8..5240dd8 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -28,8 +28,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { nolimips = pkgs.callPackage ./nolimips { }; - psst = pkgs.callPackage ./psst { }; - rofi-bluetooth = pkgs.callPackage ./rofi-bluetooth { }; unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; diff --git a/pkgs/psst/default.nix b/pkgs/psst/default.nix deleted file mode 100644 index 6eca44b..0000000 --- a/pkgs/psst/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ lib, alsa-lib, cairo, dbus, fetchFromGitHub, gtk3, openssl, pkg-config, rustPlatform }: -rustPlatform.buildRustPackage rec { - pname = "psst"; - version = "unstable-2022-01-13"; - - src = fetchFromGitHub { - owner = "jpochyla"; - repo = "psst"; - rev = "8f142a3232a706537c8477bff43d2e52309f6b78"; - sha256 = "sha256-YA9p6KHuZXt43OrfShO5d3Cj8L8GPpczRQlncJqM7QI="; - }; - - nativeBuildInputs = [ - pkg-config - ]; - - buildInputs = [ - alsa-lib - cairo - dbus - gtk3 - openssl - ]; - - cargoSha256 = "sha256-iA/ja7B73JyiXQ9kBzk1C5wtX+HPBrngCS+8rFDHbcs="; - - meta = with lib; { - description = "Fast and multi-platform Spotify client with native GUI"; - homepage = "https://github.com/jpochyla/psst"; - platforms = platforms.linux; - license = with licenses; [ mit ]; - maintainers = with maintainers; [ ambroisie ]; - }; -} From 5e021e64361d57228b10f6a531e8866f72d2c74e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 29 Sep 2022 21:58:48 +0200 Subject: [PATCH 0657/1588] all: remove package aliases --- bootstrap.sh | 2 +- home/git/default.nix | 10 +++++----- home/wm/i3bar/default.nix | 2 +- machines/porthos/install.sh | 2 +- modules/programs/steam/default.nix | 2 +- modules/services/drone/runner-exec/default.nix | 4 ++-- modules/system/nix/default.nix | 2 +- profiles/x/default.nix | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index df41c29..60290a4 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,5 +1,5 @@ #!/usr/bin/env nix-shell -#! nix-shell -i bash -p bitwarden-cli git gnupg jq nixFlakes +#! nix-shell -i bash -p bitwarden-cli git gnupg jq nix # Command failure is script failure set -e diff --git a/home/git/default.nix b/home/git/default.nix index 9f59d52..c78b25b 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -9,10 +9,10 @@ in enable = mkDisableOption "git configuration"; }; - config.home.packages = with pkgs.gitAndTools; lib.mkIf cfg.enable [ - gitAndTools.git-absorb - gitAndTools.git-revise - gitAndTools.tig + config.home.packages = with pkgs; lib.mkIf cfg.enable [ + git-absorb + git-revise + tig ]; config.programs.git = lib.mkIf cfg.enable { @@ -23,7 +23,7 @@ in userName = "Bruno BELANYI"; # I want the full experience - package = pkgs.gitAndTools.gitFull; + package = pkgs.gitFull; aliases = { git = "!git"; diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index a330134..8c1e879 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -5,7 +5,7 @@ in { config = lib.mkIf cfg.enable { home.packages = with pkgs; [ - alsaUtils # Used by `sound` block + alsa-utils # Used by `sound` block lm_sensors # Used by `temperature` block font-awesome # Icon font ]; diff --git a/machines/porthos/install.sh b/machines/porthos/install.sh index 44ea787..de87aa7 100644 --- a/machines/porthos/install.sh +++ b/machines/porthos/install.sh @@ -46,7 +46,7 @@ vim /mnt/etc/nixos/hardware-configuration.nix mkdir -p /mnt/home/ambroisie/git/nix/config cd /mnt/home/ambroisie/git/nix/config -nix-env -iA nixos.git nixos.nixFlakes nixos.git-crypt +nix-env -iA nixos.git nixos.nix nixos.git-crypt git clone . # Assuming you set up GPG key correctly git crypt unlock diff --git a/modules/programs/steam/default.nix b/modules/programs/steam/default.nix index dbdc0ce..f52effe 100644 --- a/modules/programs/steam/default.nix +++ b/modules/programs/steam/default.nix @@ -32,7 +32,7 @@ in (pkgs.writeScriptBin "steam-run" '' #!/bin/sh mkdir -p "${cfg.dataDir}" - HOME="${cfg.dataDir}" exec ${pkgs.steam-run-native}/bin/steam-run "$@" + HOME="${cfg.dataDir}" exec ${pkgs.steam-run}/bin/steam-run "$@" '') ]; }; diff --git a/modules/services/drone/runner-exec/default.nix b/modules/services/drone/runner-exec/default.nix index 6c776b4..f0dddb9 100644 --- a/modules/services/drone/runner-exec/default.nix +++ b/modules/services/drone/runner-exec/default.nix @@ -15,14 +15,14 @@ in git gnutar bash - nixUnstable + nix gzip ]; path = with pkgs; [ git gnutar bash - nixUnstable + nix gzip ]; serviceConfig = { diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 16db0b4..1203450 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -15,7 +15,7 @@ in config = lib.mkIf cfg.enable (lib.mkMerge [ { nix = { - package = pkgs.nixFlakes; + package = pkgs.nix; settings = { experimental-features = [ "nix-command" "flakes" ]; diff --git a/profiles/x/default.nix b/profiles/x/default.nix index e9d9cfd..ea77939 100644 --- a/profiles/x/default.nix +++ b/profiles/x/default.nix @@ -13,7 +13,7 @@ in # Nice wallpaper services.xserver.displayManager.lightdm.background = let - wallpapers = "${pkgs.plasma-workspace-wallpapers}/share/wallpapers"; + wallpapers = "${pkgs.plasma5Packages.plasma-workspace-wallpapers}/share/wallpapers"; in "${wallpapers}/summer_1am/contents/images/2560x1600.jpg"; From 4c0c6a75b22962ad0a6c9073d2050482a665c8b3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 29 Sep 2022 21:58:48 +0200 Subject: [PATCH 0658/1588] modules: system: packages: configure aliases Disallow them by default, but make it configurable. --- modules/system/packages/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/system/packages/default.nix b/modules/system/packages/default.nix index ceb85dd..5c29aa0 100644 --- a/modules/system/packages/default.nix +++ b/modules/system/packages/default.nix @@ -7,6 +7,8 @@ in options.my.system.packages = with lib; { enable = my.mkDisableOption "packages configuration"; + allowAliases = mkEnableOption "allow package aliases"; + allowUnfree = my.mkDisableOption "allow unfree packages"; }; @@ -27,7 +29,7 @@ in }; nixpkgs.config = { - allowUnfree = cfg.allowUnfree; # Because I don't care *that* much. + inherit (cfg) allowAliases allowUnfree; }; }; } From d0394bd149d6e3413f00d14f77bc773b2f7ff6c4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 29 Sep 2022 22:01:51 +0200 Subject: [PATCH 0659/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index cf67e16..26bb983 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1662241716, - "narHash": "sha256-urqPvSvvGUhkwzTDxUI8N1nsdMysbAfjmBNZaTYBZRU=", + "lastModified": 1664140963, + "narHash": "sha256-pFxDtOLduRFlol0Y4ShE+soRQX4kbhaCNBtDOvx7ykw=", "owner": "ryantm", "repo": "agenix", - "rev": "c96da5835b76d3d8e8d99a0fec6fe32f8539ee2e", + "rev": "6acb1fe5f8597d5ce63fc82bc7fcac7774b1cdf0", "type": "github" }, "original": { @@ -47,11 +47,11 @@ ] }, "locked": { - "lastModified": 1663099612, - "narHash": "sha256-ucokjFDRwCFWbcGiqxz0mfHv82UqwyW7RXY6ZgKSl80=", + "lastModified": 1664449551, + "narHash": "sha256-iTStJtZB1+MppkT+95Ckqy2NDaISb+QcUkOAa0DS0io=", "owner": "nix-community", "repo": "home-manager", - "rev": "60c6bfe322944d04bb38e76b64effcbd01258824", + "rev": "864ff685fe6443101a0a8f3950d21bcb4330e56a", "type": "github" }, "original": { @@ -63,11 +63,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1662996720, - "narHash": "sha256-XvLQ3SuXnDMJMpM1sv1ifPjBuRytiDYhB12H/BNTjgY=", + "lastModified": 1664370076, + "narHash": "sha256-NDnIo0nxJozLwEw0VPM+RApMA90uTfbvaNNtC5eB7Os=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5f326e2a403e1cebaec378e72ceaf5725983376d", + "rev": "854fdc68881791812eddd33b2fed94b954979a8e", "type": "github" }, "original": { @@ -79,11 +79,11 @@ }, "nur": { "locked": { - "lastModified": 1663140352, - "narHash": "sha256-l6zXiLm/nYezRORU3QEfgTg/cXs67UhEW83r64XPckU=", + "lastModified": 1664475443, + "narHash": "sha256-l3Re7eo0vOwTQTcJPrXQStG4i4of2eKkdDdDG96z1ZA=", "owner": "nix-community", "repo": "NUR", - "rev": "930c526eccdc1b32ada04b9014724e15247cacf6", + "rev": "05e2f3d002a53eeb192d5e8521c6d38f24609681", "type": "github" }, "original": { From e0b7103c8d59da01b82ae20ce65a931e2ae4632f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 Oct 2022 11:40:44 +0200 Subject: [PATCH 0660/1588] home: wm: i3: add floating-related mappings --- home/wm/i3/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 57235ef..94d7202 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -175,6 +175,10 @@ in "${modifier}+Control+space" = "floating toggle"; # Change focus between tiling/floating "${modifier}+space" = "focus mode_toggle"; + # Center floating window + "${modifier}+c" = "move absolute position center"; + # Center floating window + "${modifier}+Shift+s" = "sticky toggle"; } { # Focus parent container From 3c3e56002fed387e60bb3eaa52f97d8710eea5d1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 26 Oct 2022 14:14:01 +0200 Subject: [PATCH 0661/1588] home: vim: add 'nix' ftplugin --- home/vim/after/ftplugin/nix.vim | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 home/vim/after/ftplugin/nix.vim diff --git a/home/vim/after/ftplugin/nix.vim b/home/vim/after/ftplugin/nix.vim new file mode 100644 index 0000000..fb6126e --- /dev/null +++ b/home/vim/after/ftplugin/nix.vim @@ -0,0 +1,6 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Use a small indentation value on Nix files +setlocal shiftwidth=2 +let b:undo_ftplugin.='|setlocal shiftwidth<' From 30ce88f42f6d8bc93b29bb4e2b58a7349c7a35f9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 26 Oct 2022 14:15:34 +0200 Subject: [PATCH 0662/1588] flake: bump inputs And migrate to the new RFC42 grafana options. --- flake.lock | 36 ++++++++++++------------- modules/services/monitoring/default.nix | 22 +++++++++------ modules/services/nginx/default.nix | 2 +- 3 files changed, 33 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index 26bb983..341f628 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1664140963, - "narHash": "sha256-pFxDtOLduRFlol0Y4ShE+soRQX4kbhaCNBtDOvx7ykw=", + "lastModified": 1665870395, + "narHash": "sha256-Tsbqb27LDNxOoPLh0gw2hIb6L/6Ow/6lIBvqcHzEKBI=", "owner": "ryantm", "repo": "agenix", - "rev": "6acb1fe5f8597d5ce63fc82bc7fcac7774b1cdf0", + "rev": "a630400067c6d03c9b3e0455347dc8559db14288", "type": "github" }, "original": { @@ -23,11 +23,11 @@ }, "futils": { "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -47,11 +47,11 @@ ] }, "locked": { - "lastModified": 1664449551, - "narHash": "sha256-iTStJtZB1+MppkT+95Ckqy2NDaISb+QcUkOAa0DS0io=", + "lastModified": 1667468181, + "narHash": "sha256-806/nrDW6e7bl4/oJEdAykYz/NaBuTUi7EUYArw2oic=", "owner": "nix-community", "repo": "home-manager", - "rev": "864ff685fe6443101a0a8f3950d21bcb4330e56a", + "rev": "93335810751f0404fe424e61ad58bc8e94bf8e9d", "type": "github" }, "original": { @@ -63,11 +63,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1664370076, - "narHash": "sha256-NDnIo0nxJozLwEw0VPM+RApMA90uTfbvaNNtC5eB7Os=", + "lastModified": 1667231093, + "narHash": "sha256-RERXruzBEBuf0c7OfZeX1hxEKB+PTCUNxWeB6C1jd8Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "854fdc68881791812eddd33b2fed94b954979a8e", + "rev": "d40fea9aeb8840fea0d377baa4b38e39b9582458", "type": "github" }, "original": { @@ -79,11 +79,11 @@ }, "nur": { "locked": { - "lastModified": 1664475443, - "narHash": "sha256-l3Re7eo0vOwTQTcJPrXQStG4i4of2eKkdDdDG96z1ZA=", + "lastModified": 1667490385, + "narHash": "sha256-ySEDVzdyNWPM+eMeHu8dwkCU6Xuqmd9yE0e/VHxzd/s=", "owner": "nix-community", "repo": "NUR", - "rev": "05e2f3d002a53eeb192d5e8521c6d38f24609681", + "rev": "bdd9c8ca371a9d9fb14027d66c41e71656959848", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1663082609, - "narHash": "sha256-lmCCIu4dj59qbzkGKHQtolhpIEQMeAd2XUbXVPqgPYo=", + "lastModified": 1667416668, + "narHash": "sha256-FDYpOZIX7mvLJUFp2l1NbJ6RiYVy++1Hd01dxfgrF9U=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "60cad1a326df17a8c6cf2bb23436609fdd83024e", + "rev": "c070b473617337f935821498e7a728c98f4c2090", "type": "github" }, "original": { diff --git a/modules/services/monitoring/default.nix b/modules/services/monitoring/default.nix index ba5adf3..ece6cc1 100644 --- a/modules/services/monitoring/default.nix +++ b/modules/services/monitoring/default.nix @@ -49,19 +49,25 @@ in config = lib.mkIf cfg.enable { services.grafana = { enable = true; - domain = "monitoring.${config.networking.domain}"; - port = cfg.grafana.port; - addr = "127.0.0.1"; # Proxied through Nginx - security = { - adminUser = cfg.grafana.username; - adminPasswordFile = cfg.grafana.passwordFile; + settings = { + server = { + domain = "monitoring.${config.networking.domain}"; + root_url = "https://monitoring.${config.networking.domain}/"; + http_port = cfg.grafana.port; + http_addr = "127.0.0.1"; # Proxied through Nginx + }; + + security = { + admin_user = cfg.grafana.username; + admin_password = "$__file{${cfg.grafana.passwordFile}}"; + }; }; provision = { enable = true; - datasources = [ + datasources.settings.datasources = [ { name = "Prometheus"; type = "prometheus"; @@ -72,7 +78,7 @@ in } ]; - dashboards = [ + dashboards.settings.providers = [ { name = "Node Exporter"; options.path = pkgs.nur.repos.alarsyo.grafanaDashboards.node-exporter; diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index d99ff2d..379179e 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -405,7 +405,7 @@ in }; }; - services.grafana.provision.dashboards = lib.mkIf cfg.monitoring.enable [ + services.grafana.provision.dashboards.settings.providers = lib.mkIf cfg.monitoring.enable [ { name = "NGINX"; options.path = pkgs.nur.repos.alarsyo.grafanaDashboards.nginx; From 05be340b7e4c8c99b439a6bf72de8fd83e745cb6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 26 Oct 2022 14:15:34 +0200 Subject: [PATCH 0663/1588] modules: services: nextcloud: bump to 25 --- modules/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index f2d5484..4447727 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -31,7 +31,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud24; + package = pkgs.nextcloud25; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From f6a00ec83824bb2969cbf82391fe9f9d06074d4a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 7 Oct 2022 15:07:04 +0200 Subject: [PATCH 0664/1588] modules: services: paperless: require postgres --- modules/services/paperless/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/services/paperless/default.nix b/modules/services/paperless/default.nix index 5ba9709..9eebb2c 100644 --- a/modules/services/paperless/default.nix +++ b/modules/services/paperless/default.nix @@ -84,6 +84,7 @@ in systemd.services = { paperless-scheduler = { + requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; serviceConfig = { @@ -92,6 +93,7 @@ in }; paperless-consumer = { + requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; serviceConfig = { @@ -100,6 +102,7 @@ in }; paperless-web = { + requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; serviceConfig = { From 236d48befb60b53c2b117a21738f0319ff37af3c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Nov 2022 17:57:41 +0100 Subject: [PATCH 0665/1588] home: vim: lua: lsp: update for nvim 0.8 Two big changes: * Making use of the lua API for creating autocmds. * Using `client.supports_method`. --- home/vim/lua/ambroisie/lsp.lua | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index af87950..d4f3fad 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -18,22 +18,28 @@ M.on_attach = function(client, bufnr) severity_sort = true, }) - vim.cmd([[ - augroup DiagnosticsHover - autocmd! * - " Show diagnostics on "hover" - autocmd CursorHold,CursorHoldI lua vim.diagnostic.open_float(nil, {focus=false, scope="cursor"}) - augroup END - ]]) + -- Show diagnostics on "hover" + local augroup = vim.api.nvim_create_augroup("DiagnosticsHover", {}) + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd({"CursorHold", "CursorHoldI"}, { + group = augroup, + buffer = bufnr, + callback = function() + vim.diagnostic.open_float(nil, {focus=false, scope="cursor"}) + end, + }) -- Format on save - if client.resolved_capabilities.document_formatting then - vim.cmd([[ - augroup LspFormatting - autocmd! * - autocmd BufWritePre lua vim.lsp.buf.formatting_sync() - augroup END - ]]) + if client.supports_method("textDocument/formatting") then + local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format({ bufnr = bufnr }) + end, + }) end -- Mappings From 16d4147321fba989f7d92a578caf905823b2e3c6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Nov 2022 17:59:34 +0100 Subject: [PATCH 0666/1588] home: vim: lspconfig: update deprecated call --- home/vim/plugin/settings/lspconfig.vim | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim index dc706cc..4fbbb1d 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.vim @@ -4,8 +4,7 @@ local lsp = require("ambroisie.lsp") local utils = require("ambroisie.utils") -- Inform servers we are able to do completion, snippets, etc... -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities) +local capabilities = require("cmp_nvim_lsp").default_capabilities() -- C/C++ if utils.is_executable("clangd") then From 7ce0a4ad5c8218868f4c7fceb1342119dacae6d9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 17 Nov 2022 09:43:31 +0100 Subject: [PATCH 0667/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 341f628..54cc18b 100644 --- a/flake.lock +++ b/flake.lock @@ -47,11 +47,11 @@ ] }, "locked": { - "lastModified": 1667468181, - "narHash": "sha256-806/nrDW6e7bl4/oJEdAykYz/NaBuTUi7EUYArw2oic=", + "lastModified": 1668332334, + "narHash": "sha256-YT1qcE/MCqBO1Bi/Yr6GcFpNKsvmzrBKh8juyXDbxQc=", "owner": "nix-community", "repo": "home-manager", - "rev": "93335810751f0404fe424e61ad58bc8e94bf8e9d", + "rev": "bc90de24d898655542589237cc0a6ada7564cb6c", "type": "github" }, "original": { @@ -63,11 +63,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1667231093, - "narHash": "sha256-RERXruzBEBuf0c7OfZeX1hxEKB+PTCUNxWeB6C1jd8Y=", + "lastModified": 1668087632, + "narHash": "sha256-T/cUx44aYDuLMFfaiVpMdTjL4kpG7bh0VkN6JEM78/E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d40fea9aeb8840fea0d377baa4b38e39b9582458", + "rev": "5f588eb4a958f1a526ed8da02d6ea1bea0047b9f", "type": "github" }, "original": { @@ -79,11 +79,11 @@ }, "nur": { "locked": { - "lastModified": 1667490385, - "narHash": "sha256-ySEDVzdyNWPM+eMeHu8dwkCU6Xuqmd9yE0e/VHxzd/s=", + "lastModified": 1668433503, + "narHash": "sha256-jnpSgNkWhFC981czm1vtJyUcmWzsyz1DlRyh71wEsqU=", "owner": "nix-community", "repo": "NUR", - "rev": "bdd9c8ca371a9d9fb14027d66c41e71656959848", + "rev": "87eb4acbe3e415631986faaee87b181ec700a9d7", "type": "github" }, "original": { @@ -103,11 +103,11 @@ ] }, "locked": { - "lastModified": 1667416668, - "narHash": "sha256-FDYpOZIX7mvLJUFp2l1NbJ6RiYVy++1Hd01dxfgrF9U=", + "lastModified": 1667992213, + "narHash": "sha256-8Ens8ozllvlaFMCZBxg6S7oUyynYx2v7yleC5M0jJsE=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "c070b473617337f935821498e7a728c98f4c2090", + "rev": "ebcbfe09d2bd6d15f68de3a0ebb1e4dcb5cd324b", "type": "github" }, "original": { From 1967c8ef79eee011062967a92104720c89e3caa2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 20 Nov 2022 13:15:58 +0100 Subject: [PATCH 0668/1588] modules: services: transmission: limit memory use --- modules/services/transmission/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/services/transmission/default.nix b/modules/services/transmission/default.nix index cac075f..8e3506e 100644 --- a/modules/services/transmission/default.nix +++ b/modules/services/transmission/default.nix @@ -67,6 +67,14 @@ in }; }; + # Transmission wants to eat *all* my RAM if left to its own devices + systemd.services.transmission = { + serviceConfig = { + MemoryHigh = "25%"; + MemoryMax = "33%"; + }; + }; + # Set-up media group users.groups.media = { }; From 122eaf3a5ce138d6bec2c37772321dcec710374a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 21 Nov 2022 14:50:09 +0100 Subject: [PATCH 0669/1588] profiles: wm: enable 'udisks2' --- profiles/wm/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/profiles/wm/default.nix b/profiles/wm/default.nix index 473d49d..c227328 100644 --- a/profiles/wm/default.nix +++ b/profiles/wm/default.nix @@ -22,6 +22,8 @@ in my.home.flameshot.enable = true; # Auto disk mounter my.home.udiskie.enable = true; + # udiskie fails if it can't find this dbus service + services.udisks2.enable = true; }) ]; } From a73a05e0ac69971a718246f3f6f0977848c971ae Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 21 Nov 2022 14:59:35 +0100 Subject: [PATCH 0670/1588] profiles: devices: enable gvfs --- profiles/devices/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/profiles/devices/default.nix b/profiles/devices/default.nix index 54088b3..7dbd299 100644 --- a/profiles/devices/default.nix +++ b/profiles/devices/default.nix @@ -13,5 +13,8 @@ in mx-ergo.enable = true; }; + + # MTP devices auto-mount via file explorers + services.gvfs.enable = true; }; } From 072511a091fcb05b2f1c270e39433860794447fd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 28 Nov 2022 10:17:28 +0100 Subject: [PATCH 0671/1588] flake: bump inputs And reduce the closure size of 'pre-commit-hooks.nix' by making it follow my 'nixpkgs' input. --- flake.lock | 66 ++++++++++++++++++++++++++++++++++++++++++++---------- flake.nix | 1 + 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 54cc18b..1ed6037 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,22 @@ "type": "github" } }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1668681692, + "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "futils": { "locked": { "lastModified": 1667395993, @@ -37,6 +53,27 @@ "type": "github" } }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -47,11 +84,11 @@ ] }, "locked": { - "lastModified": 1668332334, - "narHash": "sha256-YT1qcE/MCqBO1Bi/Yr6GcFpNKsvmzrBKh8juyXDbxQc=", + "lastModified": 1669573161, + "narHash": "sha256-UAOXq+LIX+goAAY2MiC0+zCxdNPaO7NAPTvCQExpIBs=", "owner": "nix-community", "repo": "home-manager", - "rev": "bc90de24d898655542589237cc0a6ada7564cb6c", + "rev": "50c9bccb6abc52811a59db620606e016fcde32bd", "type": "github" }, "original": { @@ -63,11 +100,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1668087632, - "narHash": "sha256-T/cUx44aYDuLMFfaiVpMdTjL4kpG7bh0VkN6JEM78/E=", + "lastModified": 1669411043, + "narHash": "sha256-LfPd3+EY+jaIHTRIEOUtHXuanxm59YKgUacmSzaqMLc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5f588eb4a958f1a526ed8da02d6ea1bea0047b9f", + "rev": "5dc7114b7b256d217fe7752f1614be2514e61bb8", "type": "github" }, "original": { @@ -79,11 +116,11 @@ }, "nur": { "locked": { - "lastModified": 1668433503, - "narHash": "sha256-jnpSgNkWhFC981czm1vtJyUcmWzsyz1DlRyh71wEsqU=", + "lastModified": 1669616578, + "narHash": "sha256-uwecFtN1CMoUEaIKiGxK1t6h7RZUtZn5gmcInoptSl8=", "owner": "nix-community", "repo": "NUR", - "rev": "87eb4acbe3e415631986faaee87b181ec700a9d7", + "rev": "1d081971f9b7ae7f902628e30c7c6e58c3c4e8d6", "type": "github" }, "original": { @@ -95,19 +132,24 @@ }, "pre-commit-hooks": { "inputs": { + "flake-compat": "flake-compat", "flake-utils": [ "futils" ], + "gitignore": "gitignore", "nixpkgs": [ "nixpkgs" + ], + "nixpkgs-stable": [ + "nixpkgs" ] }, "locked": { - "lastModified": 1667992213, - "narHash": "sha256-8Ens8ozllvlaFMCZBxg6S7oUyynYx2v7yleC5M0jJsE=", + "lastModified": 1669152228, + "narHash": "sha256-FEDReoTLWJHXcNso7aaAlAUU7uOqIR6Hc/C/nqlfooE=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "ebcbfe09d2bd6d15f68de3a0ebb1e4dcb5cd324b", + "rev": "078b0dee35e2da01334af682ec347463b70a9986", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index a86ac33..4d6d600 100644 --- a/flake.nix +++ b/flake.nix @@ -51,6 +51,7 @@ inputs = { flake-utils.follows = "futils"; nixpkgs.follows = "nixpkgs"; + nixpkgs-stable.follows = "nixpkgs"; }; }; }; From b85a98c37766d57d0a8cd611970908c124f599b4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 28 Nov 2022 10:18:50 +0100 Subject: [PATCH 0672/1588] modules: services: nextcloud: disable broken SSE I don't use server-side encryption anyway. --- modules/services/nextcloud/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index 4447727..674617f 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -35,6 +35,7 @@ in hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; + enableBrokenCiphersForSSE = false; config = { adminuser = cfg.admin; adminpassFile = cfg.passwordFile; From 1e10c6630b2c46bd40c2b23fa6a4f7c8fa751823 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 29 Nov 2022 17:19:24 +0100 Subject: [PATCH 0673/1588] modules: services: nginx: fix SSL renewal See this issue [1]. [1]: https://github.com/go-acme/lego/issues/1772. --- modules/services/nginx/default.nix | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index 379179e..332a936 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -3,6 +3,8 @@ let cfg = config.my.services.nginx; + domain = config.networking.domain; + virtualHostOption = with lib; types.submodule { options = { subdomain = mkOption { @@ -392,10 +394,6 @@ in acceptTerms = true; # Use DNS wildcard certificate certs = - let - domain = config.networking.domain; - in - with pkgs; { "${domain}" = { extraDomainNames = [ "*.${domain}" ]; @@ -405,6 +403,15 @@ in }; }; + systemd.services."acme-${domain}" = { + serviceConfig = { + Environment = [ + # Since I do a "weird" setup with a wildcard CNAME + "LEGO_DISABLE_CNAME_SUPPORT=true" + ]; + }; + }; + services.grafana.provision.dashboards.settings.providers = lib.mkIf cfg.monitoring.enable [ { name = "NGINX"; From 6913e0f8969093e83741c8e41102696fc9d3a3ee Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 Dec 2022 12:39:04 +0100 Subject: [PATCH 0674/1588] flake: bump inputs Some new options were needed for `himalaya`. --- flake.lock | 24 ++++++++++++------------ home/mail/accounts/default.nix | 3 +++ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 1ed6037..ab6cc17 100644 --- a/flake.lock +++ b/flake.lock @@ -84,11 +84,11 @@ ] }, "locked": { - "lastModified": 1669573161, - "narHash": "sha256-UAOXq+LIX+goAAY2MiC0+zCxdNPaO7NAPTvCQExpIBs=", + "lastModified": 1670970889, + "narHash": "sha256-TWJo3/X3Q3r+HeX16QN4FE6ddBpGtAboymSEF+4Nnc0=", "owner": "nix-community", "repo": "home-manager", - "rev": "50c9bccb6abc52811a59db620606e016fcde32bd", + "rev": "e412025fffdcd6219ddd21c65d9a1b90005ce508", "type": "github" }, "original": { @@ -100,11 +100,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1669411043, - "narHash": "sha256-LfPd3+EY+jaIHTRIEOUtHXuanxm59YKgUacmSzaqMLc=", + "lastModified": 1671108576, + "narHash": "sha256-6ggOL6KoaELNA1562tnPjtAnQ9SwsKRTgeuaXvPzCwI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5dc7114b7b256d217fe7752f1614be2514e61bb8", + "rev": "0f5996b524c91677891a432cc99c7567c7c402b1", "type": "github" }, "original": { @@ -116,11 +116,11 @@ }, "nur": { "locked": { - "lastModified": 1669616578, - "narHash": "sha256-uwecFtN1CMoUEaIKiGxK1t6h7RZUtZn5gmcInoptSl8=", + "lastModified": 1671164982, + "narHash": "sha256-FUUCvNkl1h6REwdZwcDJwG40KlUR0PxZBnYsjLwgqVk=", "owner": "nix-community", "repo": "NUR", - "rev": "1d081971f9b7ae7f902628e30c7c6e58c3c4e8d6", + "rev": "f3916354fd1062404802f6a95fb8e1fd02392118", "type": "github" }, "original": { @@ -145,11 +145,11 @@ ] }, "locked": { - "lastModified": 1669152228, - "narHash": "sha256-FEDReoTLWJHXcNso7aaAlAUU7uOqIR6Hc/C/nqlfooE=", + "lastModified": 1671180323, + "narHash": "sha256-qAE390OdYvzSMe58HLpoMZ7llPlp+zIy84pXPnuXqCo=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "078b0dee35e2da01334af682ec347463b70a9986", + "rev": "a49fc91a606dbbb7a916c56bc09776fc67b5c121", "type": "github" }, "original": { diff --git a/home/mail/accounts/default.nix b/home/mail/accounts/default.nix index ee8ec46..f513605 100644 --- a/home/mail/accounts/default.nix +++ b/home/mail/accounts/default.nix @@ -17,6 +17,9 @@ let himalaya = { enable = cfg.himalaya.enable; + # FIXME: try to actually configure it at some point + backend = "imap"; + sender = "smtp"; }; msmtp = { From 18f81a05ebd8dbcfdfc9074020845354aa9ae611 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 Dec 2022 12:52:27 +0100 Subject: [PATCH 0675/1588] home: mail: disable himalaya I don't actually use it, should circle back to it in the future. --- home/mail/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/mail/default.nix b/home/mail/default.nix index ac44593..14f086a 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -15,7 +15,7 @@ in enable = my.mkDisableOption "email configuration"; himalaya = { - enable = mkRelatedOption "himalaya configuration"; + enable = mkEnableOption "himalaya configuration"; }; msmtp = { From 5f8ffe5af9d8eed0c6c6ead7c3b5589f662310fc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 Dec 2022 12:13:36 +0100 Subject: [PATCH 0676/1588] profiles: add printing --- profiles/default.nix | 1 + profiles/printing/default.nix | 47 +++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 profiles/printing/default.nix diff --git a/profiles/default.nix b/profiles/default.nix index 43d5a84..f7914a1 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -6,6 +6,7 @@ ./devices ./gtk ./laptop + ./printing ./wm ./x ]; diff --git a/profiles/printing/default.nix b/profiles/printing/default.nix new file mode 100644 index 0000000..90f6c6b --- /dev/null +++ b/profiles/printing/default.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.profiles.printing; +in +{ + options.my.profiles.printing = with lib; { + enable = mkEnableOption "printing profile"; + + usb = { + enable = my.mkDisableOption "USB printers"; + }; + + network = { + enable = my.mkDisableOption "network printers"; + }; + }; + + config = lib.mkIf cfg.enable { + # Setup CUPS + services.printing = { + enable = true; + + # Drivers are deprecated, but just in case + drivers = with pkgs; [ + gutenprint # Base set of drivers + brlaser # Brother drivers + + # Brother MFC-L3770CDW + mfcl3770cdwlpr + mfcl3770cdwcupswrapper + ]; + }; + + # Allow using USB printers + services.ipp-usb = lib.mkIf cfg.usb.enable { + enable = true; + }; + + # Allow using WiFi printers + services.avahi = lib.mkIf cfg.network.enable { + enable = true; + openFirewall = true; + # Allow resolution of '.local' addresses + nssmdns = true; + }; + }; +} From 0b7257cfb9a2614d8ce786de3eef2b7c00e98de1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 Dec 2022 12:14:14 +0100 Subject: [PATCH 0677/1588] machines: aramis: use 'printing' profile --- machines/aramis/default.nix | 3 --- machines/aramis/profiles.nix | 2 ++ 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index e2211f4..619013c 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -19,9 +19,6 @@ # Set your time zone. time.timeZone = "Europe/Paris"; - # Enable CUPS to print documents. - services.printing.enable = true; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. It‘s perfectly fine and recommended to leave diff --git a/machines/aramis/profiles.nix b/machines/aramis/profiles.nix index 4d2ac7d..d86da5a 100644 --- a/machines/aramis/profiles.nix +++ b/machines/aramis/profiles.nix @@ -9,6 +9,8 @@ gtk.enable = true; # Laptop specific configuration laptop.enable = true; + # Printers are hell, but so is the unability to print + printing.enable = true; # i3 configuration wm.windowManager = "i3"; # X configuration From c6b3325269d6b27aecfd706161d87c7cca32f7a6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 Dec 2022 12:34:01 +0100 Subject: [PATCH 0678/1588] profiles: printing: setup default paper size --- profiles/printing/default.nix | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/profiles/printing/default.nix b/profiles/printing/default.nix index 90f6c6b..9965797 100644 --- a/profiles/printing/default.nix +++ b/profiles/printing/default.nix @@ -6,6 +6,23 @@ in options.my.profiles.printing = with lib; { enable = mkEnableOption "printing profile"; + papersize = mkOption { + type = with types; either str (enum [ + "a3" + "a4" + "a5" + "b5" + "letter" + "legal" + "executive" + "note" + "11x17" + ]); + default = "a4"; + example = "paper"; + description = "preferred paper size"; + }; + usb = { enable = my.mkDisableOption "USB printers"; }; @@ -31,6 +48,11 @@ in ]; }; + # Setup paper size + systemd.services.cups.serviceConfig.Environment = [ + "PAPERSIZE=${cfg.papersize}" + ]; + # Allow using USB printers services.ipp-usb = lib.mkIf cfg.usb.enable { enable = true; From c961bdbfc4e3f436b91779f28e6fcfbc2329ae27 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 16 Dec 2022 21:43:47 +0100 Subject: [PATCH 0679/1588] modules: services: transmission: remove MemoryHigh The service does not actively try to reduce its memory usage, so to make sure we do reach `MemoryMax` let's remove the `MemoryHigh` configuration. --- modules/services/transmission/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/services/transmission/default.nix b/modules/services/transmission/default.nix index 8e3506e..dcba0aa 100644 --- a/modules/services/transmission/default.nix +++ b/modules/services/transmission/default.nix @@ -70,7 +70,6 @@ in # Transmission wants to eat *all* my RAM if left to its own devices systemd.services.transmission = { serviceConfig = { - MemoryHigh = "25%"; MemoryMax = "33%"; }; }; From aeb324532736895e4244c9d8a345c8085ca64299 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 18 Dec 2022 12:59:42 +0100 Subject: [PATCH 0680/1588] modules: services: blog: GNU T.P. --- modules/services/blog/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/services/blog/default.nix b/modules/services/blog/default.nix index 9149917..5c508a3 100644 --- a/modules/services/blog/default.nix +++ b/modules/services/blog/default.nix @@ -24,6 +24,11 @@ in useACMEHost = domain; root = "/var/www/blog"; default = true; # Redirect to my blog + + # http://www.gnuterrypratchett.com/ + extraConfig = '' + add_header X-Clacks-Overhead "GNU Terry Pratchett"; + ''; }; }; From 0ff4d2de01de1644261a453aa7105dce03b20274 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 4 Jan 2023 12:39:30 +0100 Subject: [PATCH 0681/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index ab6cc17..0d0acd4 100644 --- a/flake.lock +++ b/flake.lock @@ -84,11 +84,11 @@ ] }, "locked": { - "lastModified": 1670970889, - "narHash": "sha256-TWJo3/X3Q3r+HeX16QN4FE6ddBpGtAboymSEF+4Nnc0=", + "lastModified": 1672349765, + "narHash": "sha256-Ul3lSGglgHXhgU3YNqsNeTlRH1pqxbR64h+2hM+HtnM=", "owner": "nix-community", "repo": "home-manager", - "rev": "e412025fffdcd6219ddd21c65d9a1b90005ce508", + "rev": "dd99675ee81fef051809bc87d67eb07f5ba022e8", "type": "github" }, "original": { @@ -100,11 +100,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1671108576, - "narHash": "sha256-6ggOL6KoaELNA1562tnPjtAnQ9SwsKRTgeuaXvPzCwI=", + "lastModified": 1672350804, + "narHash": "sha256-jo6zkiCabUBn3ObuKXHGqqORUMH27gYDIFFfLq5P4wg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0f5996b524c91677891a432cc99c7567c7c402b1", + "rev": "677ed08a50931e38382dbef01cba08a8f7eac8f6", "type": "github" }, "original": { @@ -116,11 +116,11 @@ }, "nur": { "locked": { - "lastModified": 1671164982, - "narHash": "sha256-FUUCvNkl1h6REwdZwcDJwG40KlUR0PxZBnYsjLwgqVk=", + "lastModified": 1672487123, + "narHash": "sha256-MDRTDYfJ3fSxBbVAcNPyLO3BkbgDXsrU6+oWU3nVaDc=", "owner": "nix-community", "repo": "NUR", - "rev": "f3916354fd1062404802f6a95fb8e1fd02392118", + "rev": "db1234560c98fc604c929fbbaae836e50b43e838", "type": "github" }, "original": { @@ -145,11 +145,11 @@ ] }, "locked": { - "lastModified": 1671180323, - "narHash": "sha256-qAE390OdYvzSMe58HLpoMZ7llPlp+zIy84pXPnuXqCo=", + "lastModified": 1672050129, + "narHash": "sha256-GBQMcvJUSwAVOpDjVKzB6D5mmHI7Y4nFw+04bnS9QrM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "a49fc91a606dbbb7a916c56bc09776fc67b5c121", + "rev": "67d98f02443b9928bc77f1267741dcfdd3d7b65c", "type": "github" }, "original": { From 92e63eae2598e4a747c1a722c25d252e767d91b8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 14 Jan 2023 20:10:56 +0100 Subject: [PATCH 0682/1588] home: firefox: remove 'https-everywhere' It's been made redundant. --- home/firefox/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index 41389b5..8537aab 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -70,7 +70,6 @@ in bitwarden consent-o-matic form-history-control - https-everywhere reddit-comment-collapser reddit-enhancement-suite refined-github From 280593b9c0ce2507112860a437991cd07d5c0d1b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 14 Jan 2023 20:11:10 +0100 Subject: [PATCH 0683/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 0d0acd4..d53d5a8 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1665870395, - "narHash": "sha256-Tsbqb27LDNxOoPLh0gw2hIb6L/6Ow/6lIBvqcHzEKBI=", + "lastModified": 1673301561, + "narHash": "sha256-gRUWHbBAtMuPDJQXotoI8u6+3DGBIUZHkyQWpIv7WpM=", "owner": "ryantm", "repo": "agenix", - "rev": "a630400067c6d03c9b3e0455347dc8559db14288", + "rev": "42d371d861a227149dc9a7e03350c9ab8b8ddd68", "type": "github" }, "original": { @@ -84,11 +84,11 @@ ] }, "locked": { - "lastModified": 1672349765, - "narHash": "sha256-Ul3lSGglgHXhgU3YNqsNeTlRH1pqxbR64h+2hM+HtnM=", + "lastModified": 1673343300, + "narHash": "sha256-5Xdj6kpXYMie0MlnGwqK5FaMdsedxvyuakWtyKB3zaQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "dd99675ee81fef051809bc87d67eb07f5ba022e8", + "rev": "176e455371a8371586e8a3ff0d56ee9f3ca2324e", "type": "github" }, "original": { @@ -100,11 +100,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1672350804, - "narHash": "sha256-jo6zkiCabUBn3ObuKXHGqqORUMH27gYDIFFfLq5P4wg=", + "lastModified": 1673540789, + "narHash": "sha256-xqnxBOK3qctIeUVxecydrEDbEXjsvHCPGPbvsl63M/U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "677ed08a50931e38382dbef01cba08a8f7eac8f6", + "rev": "0f213d0fee84280d8c3a97f7469b988d6fe5fcdf", "type": "github" }, "original": { @@ -116,11 +116,11 @@ }, "nur": { "locked": { - "lastModified": 1672487123, - "narHash": "sha256-MDRTDYfJ3fSxBbVAcNPyLO3BkbgDXsrU6+oWU3nVaDc=", + "lastModified": 1673718268, + "narHash": "sha256-uy3y9J2Ve/ZCfKJczdza/Hghhmi5wzrg7+9n6WXkqAI=", "owner": "nix-community", "repo": "NUR", - "rev": "db1234560c98fc604c929fbbaae836e50b43e838", + "rev": "7f09ac18ca910d01880199d9f53b61da95d6fc34", "type": "github" }, "original": { @@ -145,11 +145,11 @@ ] }, "locked": { - "lastModified": 1672050129, - "narHash": "sha256-GBQMcvJUSwAVOpDjVKzB6D5mmHI7Y4nFw+04bnS9QrM=", + "lastModified": 1673627351, + "narHash": "sha256-oppRxEg/7ICcG67ErBvu1UlXt3su6zMcNoQmKaHPs5I=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "67d98f02443b9928bc77f1267741dcfdd3d7b65c", + "rev": "496e4505c2ddf5f205242eae8064d7d89cd976c0", "type": "github" }, "original": { From dc429b5491dd225c09651b84474cde895d0c8164 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 14 Jan 2023 20:12:51 +0100 Subject: [PATCH 0684/1588] machines: aramis: home: remove 'teams' --- machines/aramis/home.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index 760174f..bac77f4 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -17,7 +17,6 @@ jellyfin-media-player # Wraps the webui and mpv together pavucontrol # Audio mixer GUI quasselClient # IRC client - teams # Work requires it... transgui # Transmission remote ]; # Minimal video player From c45b8c7618a9e8cf35e95b5cea7ef8b617052772 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 17 Jan 2023 01:11:53 +0100 Subject: [PATCH 0685/1588] machines: aramis: change timezone I'm in London now :'). --- machines/aramis/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machines/aramis/default.nix b/machines/aramis/default.nix index 619013c..c49c2b5 100644 --- a/machines/aramis/default.nix +++ b/machines/aramis/default.nix @@ -17,7 +17,7 @@ ]; # Set your time zone. - time.timeZone = "Europe/Paris"; + time.timeZone = "Europe/London"; # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions From 5f3299e383b9955dbf171ca6448b8860927eb140 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 20 Jan 2023 19:10:14 +0000 Subject: [PATCH 0686/1588] home: vim: luasnip: use lazy-loading --- home/vim/plugin/settings/luasnip.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/vim/plugin/settings/luasnip.vim b/home/vim/plugin/settings/luasnip.vim index 9527d22..7d81a11 100644 --- a/home/vim/plugin/settings/luasnip.vim +++ b/home/vim/plugin/settings/luasnip.vim @@ -1,3 +1,3 @@ lua << EOF -require("luasnip.loaders.from_vscode").load() +require("luasnip.loaders.from_vscode").lazy_load() EOF From 19e42cdc264f62e1e2f88be7a4293dacc5f162f6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 20 Jan 2023 19:15:31 +0000 Subject: [PATCH 0687/1588] home: vim: reorder snippet plugins --- home/vim/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index 2f17890..c314a3b 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -70,14 +70,14 @@ in plenary-nvim # 'null-ls', 'telescope' dependency # Completion + luasnip # Snippet manager compatible with LSP + friendly-snippets # LSP snippets collection nvim-cmp # Completion engine cmp-buffer # Words from open buffers cmp-nvim-lsp # LSP suggestions cmp-nvim-lua # NeoVim lua API cmp-path # Path name suggestions cmp-under-comparator # Sort items that start with '_' lower - friendly-snippets # LSP snippets collection - luasnip # Snippet manager compatible with LSP # UX improvements dressing-nvim # Integrate native UI hooks with Telescope etc... From b4d745c50eb056aaaa52908e9a2da47f7ed08b77 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 20 Jan 2023 19:16:16 +0000 Subject: [PATCH 0688/1588] home: vim: add 'cmp_luasnip' I had forgotten to add it even though I configured it as a source... --- home/vim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index c314a3b..3f5065c 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -78,6 +78,7 @@ in cmp-nvim-lua # NeoVim lua API cmp-path # Path name suggestions cmp-under-comparator # Sort items that start with '_' lower + cmp_luasnip # Snippet suggestions from LuaSnip # UX improvements dressing-nvim # Integrate native UI hooks with Telescope etc... From 0821334a0ac6b5273fe8af35f9c3682e745d9d7f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 28 Jan 2023 22:49:36 +0100 Subject: [PATCH 0689/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index d53d5a8..9a8d315 100644 --- a/flake.lock +++ b/flake.lock @@ -24,11 +24,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1668681692, - "narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=", + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", "owner": "edolstra", "repo": "flake-compat", - "rev": "009399224d5e398d03b22badca40a37ac85412a1", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", "type": "github" }, "original": { @@ -84,11 +84,11 @@ ] }, "locked": { - "lastModified": 1673343300, - "narHash": "sha256-5Xdj6kpXYMie0MlnGwqK5FaMdsedxvyuakWtyKB3zaQ=", + "lastModified": 1674928308, + "narHash": "sha256-elVU4NUZEl11BdT4gC+lrpLYM8Ccxqxs19Ix84HTI9o=", "owner": "nix-community", "repo": "home-manager", - "rev": "176e455371a8371586e8a3ff0d56ee9f3ca2324e", + "rev": "08a778d80308353f4f65c9dcd3790b5da02d6306", "type": "github" }, "original": { @@ -100,11 +100,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1673540789, - "narHash": "sha256-xqnxBOK3qctIeUVxecydrEDbEXjsvHCPGPbvsl63M/U=", + "lastModified": 1674641431, + "narHash": "sha256-qfo19qVZBP4qn5M5gXc/h1MDgAtPA5VxJm9s8RUAkVk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0f213d0fee84280d8c3a97f7469b988d6fe5fcdf", + "rev": "9b97ad7b4330aacda9b2343396eb3df8a853b4fc", "type": "github" }, "original": { @@ -116,11 +116,11 @@ }, "nur": { "locked": { - "lastModified": 1673718268, - "narHash": "sha256-uy3y9J2Ve/ZCfKJczdza/Hghhmi5wzrg7+9n6WXkqAI=", + "lastModified": 1674935082, + "narHash": "sha256-dmC6iKS2biE9Pl+kCvvR7jdrZCC/rX5U5vfk3NdMS1o=", "owner": "nix-community", "repo": "NUR", - "rev": "7f09ac18ca910d01880199d9f53b61da95d6fc34", + "rev": "be36aaf543b636d7e62f65e55dabe932730f3f7a", "type": "github" }, "original": { @@ -145,11 +145,11 @@ ] }, "locked": { - "lastModified": 1673627351, - "narHash": "sha256-oppRxEg/7ICcG67ErBvu1UlXt3su6zMcNoQmKaHPs5I=", + "lastModified": 1674761200, + "narHash": "sha256-v0ypL0eDhFWmgd3f5nnbffaMA5BUoOnYUiEso7fk+q0=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "496e4505c2ddf5f205242eae8064d7d89cd976c0", + "rev": "8539119ba0b17b15e60de60da0348d8c73bbfdf2", "type": "github" }, "original": { From 6b4c01a2428a9427bd76e36bbba9b869cfc37890 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 28 Jan 2023 22:49:57 +0100 Subject: [PATCH 0690/1588] modules: services: ssh-server: use 'settings' --- modules/services/ssh-server/default.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/services/ssh-server/default.nix b/modules/services/ssh-server/default.nix index a41a673..9ae0fa8 100644 --- a/modules/services/ssh-server/default.nix +++ b/modules/services/ssh-server/default.nix @@ -12,9 +12,12 @@ in services.openssh = { # Enable the OpenSSH daemon. enable = true; - # Be more secure - permitRootLogin = "no"; - passwordAuthentication = false; + + settings = { + # Be more secure + PermitRootLogin = "no"; + PasswordAuthentication = false; + }; }; # Opens the relevant UDP ports. From 4971634115102a0443af0d4d2d29c7d8dbefd9f7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Feb 2023 14:19:46 +0000 Subject: [PATCH 0691/1588] home: vim: make it the default editor explicitly --- home/vim/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/vim/default.nix b/home/vim/default.nix index 3f5065c..55d07ac 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -24,6 +24,10 @@ in config.programs.neovim = lib.mkIf cfg.enable { enable = true; + + # This is the best editor + defaultEditor = true; + # All the aliases viAlias = true; vimAlias = true; From 0e4a4df5446f8c87814882c997035dac4f035c0b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 10:36:07 +0000 Subject: [PATCH 0692/1588] home: zsh: add usual aliases I forgot to add them, since on NixOS they are defined at the system level by default. --- home/zsh/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 4d61685..0b11f31 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -71,6 +71,10 @@ in }; shellAliases = { + # Well-known ls aliases + l = "ls -alh"; + ll = "ls -l"; + # Sometime `gpg-agent` errors out... reset-agent = "gpg-connect-agent updatestartuptty /bye"; }; From 2b3fb4fa5ab00bd4408e813528f1d734490d995b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 14:03:23 +0000 Subject: [PATCH 0693/1588] home: vim: use shorter tree-sitter alias --- home/vim/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index 55d07ac..a97472e 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -68,7 +68,7 @@ in nvim-lspconfig # Easy LSP configuration lsp_lines-nvim # Show diagnostics *over* regions null-ls-nvim # LSP integration for linters and formatters - (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) # Better highlighting + nvim-treesitter.withAllGrammars # Better highlighting nvim-treesitter-textobjects # More textobjects nvim-ts-context-commentstring # Comment string in nested language blocks plenary-nvim # 'null-ls', 'telescope' dependency From 5a07dda93b5dca9cabdba96bc6f267c9c95f988f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 14:24:05 +0000 Subject: [PATCH 0694/1588] home: git: setup work identity Now that I am at Google, gotta make sure I use the correct identity. --- home/git/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/home/git/default.nix b/home/git/default.nix index c78b25b..5a0187d 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -166,6 +166,15 @@ in }; }; } + { + condition = "gitdir:~/git/work/"; + contents = { + user = { + name = "Bruno BELANYI"; + email = mkMailAddress "ambroisie" "google.com"; + }; + }; + } ]; ignores = From 938fb71f9c1e403d0abfedf6e9473a03374248bf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 14:31:29 +0000 Subject: [PATCH 0695/1588] home: git: include local-only config file Useful for configuration options that should remain secret. --- home/git/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home/git/default.nix b/home/git/default.nix index 5a0187d..04d7786 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -120,6 +120,11 @@ in defaultBranch = "main"; }; + # Local configuration, not-versioned + include = { + path = "config.local"; + }; + merge = { conflictStyle = "zdiff3"; }; From 3a0fa3398deeedb3da7d7cd7343a220c512c5fca Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 14:43:39 +0000 Subject: [PATCH 0696/1588] home: zsh: modify 'initExtra' inclusion style --- home/zsh/default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 0b11f31..a134a05 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -53,11 +53,11 @@ in '' ; - initExtra = lib.concatMapStrings builtins.readFile [ - ./completion-styles.zsh - ./extra-mappings.zsh - ./options.zsh - ]; + initExtra = '' + source ${./completion-styles.zsh} + source ${./extra-mappings.zsh} + source ${./options.zsh} + ''; localVariables = { # I like having the full path From 699b6b8e33fc900bdf07324456ed9e073bc13692 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 14:44:20 +0000 Subject: [PATCH 0697/1588] home: zsh: include local-only config file Useful for configuration options that should remain secret. --- home/zsh/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index a134a05..bd26903 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -57,6 +57,11 @@ in source ${./completion-styles.zsh} source ${./extra-mappings.zsh} source ${./options.zsh} + + # Source local configuration + if [ -f "$ZDOTDIR/zshrc.local" ]; then + source "$ZDOTDIR/zshrc.local" + fi ''; localVariables = { From 2a26f65a51fe4820097d2a69bc0e2cdeca8f746a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 21:05:52 +0000 Subject: [PATCH 0698/1588] flake: futils has renamed its branch to 'main' --- flake.lock | 2 +- flake.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/flake.lock b/flake.lock index 9a8d315..8e1d6fa 100644 --- a/flake.lock +++ b/flake.lock @@ -48,7 +48,7 @@ }, "original": { "owner": "numtide", - "ref": "master", + "ref": "main", "repo": "flake-utils", "type": "github" } diff --git a/flake.nix b/flake.nix index 4d6d600..6d329bd 100644 --- a/flake.nix +++ b/flake.nix @@ -15,7 +15,7 @@ type = "github"; owner = "numtide"; repo = "flake-utils"; - ref = "master"; + ref = "main"; }; home-manager = { From 0a71548419d67c7be24c196885b9041e1c7caebb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 21:06:18 +0000 Subject: [PATCH 0699/1588] flake: bump inputs --- flake.lock | 53 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 8e1d6fa..46fea88 100644 --- a/flake.lock +++ b/flake.lock @@ -2,16 +2,17 @@ "nodes": { "agenix": { "inputs": { + "darwin": "darwin", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1673301561, - "narHash": "sha256-gRUWHbBAtMuPDJQXotoI8u6+3DGBIUZHkyQWpIv7WpM=", + "lastModified": 1675176355, + "narHash": "sha256-Qjxh5cmN56siY97mzmBLI1+cdjXSPqmfPVsKxBvHmwI=", "owner": "ryantm", "repo": "agenix", - "rev": "42d371d861a227149dc9a7e03350c9ab8b8ddd68", + "rev": "b7ffcfe77f817d9ee992640ba1f270718d197f28", "type": "github" }, "original": { @@ -21,6 +22,28 @@ "type": "github" } }, + "darwin": { + "inputs": { + "nixpkgs": [ + "agenix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1673295039, + "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "87b9d090ad39b25b2400029c64825fc2a8868943", + "type": "github" + }, + "original": { + "owner": "lnl7", + "ref": "master", + "repo": "nix-darwin", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -84,11 +107,11 @@ ] }, "locked": { - "lastModified": 1674928308, - "narHash": "sha256-elVU4NUZEl11BdT4gC+lrpLYM8Ccxqxs19Ix84HTI9o=", + "lastModified": 1675888750, + "narHash": "sha256-w3T9UiRN6SaKMYI62+Ic3ka1Tyr9zaBcclhh3e4RCUk=", "owner": "nix-community", "repo": "home-manager", - "rev": "08a778d80308353f4f65c9dcd3790b5da02d6306", + "rev": "1232d0e13305f462a5a7c29584f50eb232cc4ba0", "type": "github" }, "original": { @@ -100,11 +123,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1674641431, - "narHash": "sha256-qfo19qVZBP4qn5M5gXc/h1MDgAtPA5VxJm9s8RUAkVk=", + "lastModified": 1675763311, + "narHash": "sha256-bz0Q2H3mxsF1CUfk26Sl9Uzi8/HFjGFD/moZHz1HebU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9b97ad7b4330aacda9b2343396eb3df8a853b4fc", + "rev": "fab09085df1b60d6a0870c8a89ce26d5a4a708c2", "type": "github" }, "original": { @@ -116,11 +139,11 @@ }, "nur": { "locked": { - "lastModified": 1674935082, - "narHash": "sha256-dmC6iKS2biE9Pl+kCvvR7jdrZCC/rX5U5vfk3NdMS1o=", + "lastModified": 1675889104, + "narHash": "sha256-y+dbyqT0fG12Quz+3An9tX7YDp8ECvLUfzL1+kKv17s=", "owner": "nix-community", "repo": "NUR", - "rev": "be36aaf543b636d7e62f65e55dabe932730f3f7a", + "rev": "25532084181df9ea13551576233ab3e680525d2b", "type": "github" }, "original": { @@ -145,11 +168,11 @@ ] }, "locked": { - "lastModified": 1674761200, - "narHash": "sha256-v0ypL0eDhFWmgd3f5nnbffaMA5BUoOnYUiEso7fk+q0=", + "lastModified": 1675688762, + "narHash": "sha256-oit/SxMk0B380ASuztBGQLe8TttO1GJiXF8aZY9AYEc=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "8539119ba0b17b15e60de60da0348d8c73bbfdf2", + "rev": "ab608394886fb04b8a5df3cb0bab2598400e3634", "type": "github" }, "original": { From 8dcc59d4819ec8ca2d26e7984ceb9437419e85d4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Feb 2023 22:02:22 +0000 Subject: [PATCH 0700/1588] flake: bump inputs And migrate firefox extensions configuration to the profile-specific format. --- home/firefox/default.nix | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index 8537aab..61c8d64 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -63,21 +63,21 @@ in "signon.rememberSignons" = false; # Disable built-in password manager "ui.systemUsesDarkTheme" = true; # Dark mode }; + + extensions = with pkgs.nur.repos.rycee.firefox-addons; ([ + bitwarden + consent-o-matic + form-history-control + reddit-comment-collapser + reddit-enhancement-suite + refined-github + sponsorblock + ublock-origin + ] + ++ lib.optional (cfg.tridactyl.enable) tridactyl + ++ lib.optional (cfg.ff2mpv.enable) ff2mpv + ); }; }; - - extensions = with pkgs.nur.repos.rycee.firefox-addons; ([ - bitwarden - consent-o-matic - form-history-control - reddit-comment-collapser - reddit-enhancement-suite - refined-github - sponsorblock - ublock-origin - ] - ++ lib.optional (cfg.tridactyl.enable) tridactyl - ++ lib.optional (cfg.ff2mpv.enable) ff2mpv - ); }; } From 26bf4e3631a39855448118a6856af4e2d5721f04 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 11 Feb 2023 10:53:52 +0000 Subject: [PATCH 0701/1588] modules: system: nix: preprend to 'NIX_PATH' Instead of appending to the default value. This makes overriding some values that are defined as the default value easier. --- modules/system/nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 1203450..2decd78 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -35,11 +35,11 @@ in }) (lib.mkIf cfg.addToNixPath { - nix.nixPath = options.nix.nixPath.default ++ [ + nix.nixPath = [ "self=${inputs.self}" "pkgs=${inputs.nixpkgs}" "nur=${inputs.nur}" - ]; + ++ options.nix.nixPath.default; }) ]); } From 5bce2fafde5c01923fb1c4d45d25c24f77797a7a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 11 Feb 2023 11:03:32 +0000 Subject: [PATCH 0702/1588] modules: system: nix: override '' --- modules/system/nix/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 2decd78..f8e7c24 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -10,6 +10,8 @@ in addToRegistry = my.mkDisableOption "add inputs and self to registry"; addToNixPath = my.mkDisableOption "add inputs and self to nix path"; + + overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version"; }; config = lib.mkIf cfg.enable (lib.mkMerge [ @@ -29,6 +31,8 @@ in self.flake = inputs.self; # Use pinned nixpkgs when using `nix run pkgs#` pkgs.flake = inputs.nixpkgs; + # ... And with `nix run nixpkgs#` + nixpkgs.flake = lib.mkIf cfg.overrideNixpkgs inputs.nixpkgs; # Add NUR to run some packages that are only present there nur.flake = inputs.nur; }; @@ -39,6 +43,8 @@ in "self=${inputs.self}" "pkgs=${inputs.nixpkgs}" "nur=${inputs.nur}" + ] + ++ lib.optional cfg.overrideNixpkgs "nixpkgs=${inputs.nixpkgs}" ++ options.nix.nixPath.default; }) ]); From e04fa744122873d536ad0a56cdf038d17df005a2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 11 Feb 2023 22:16:35 +0000 Subject: [PATCH 0703/1588] home: vim: lua: utils: add 'is_ssh' --- home/vim/lua/ambroisie/utils.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index 88f3d27..ca6de28 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -20,6 +20,24 @@ M.is_executable_condition = function(cmd) return function() return M.is_executable(cmd) end end +-- whether or not we are currently in an SSH connection +-- @return boolean ssh connection +M.is_ssh = function() + local variables = { + "SSH_CONNECTION", + "SSH_CLIENT", + "SSH_TTY", + } + + for _, var in ipairs(variables) do + if string.len(os.getenv(var) or "") ~= 0 then + return true + end + end + + return false +end + -- list all active LSP clients for current buffer -- @param bufnr int? buffer number -- @return table all active LSP client names From fe73a304aa2e72721474371e1f3727ceb71311a8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 12:36:10 +0100 Subject: [PATCH 0704/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 46fea88..85d4882 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1675176355, - "narHash": "sha256-Qjxh5cmN56siY97mzmBLI1+cdjXSPqmfPVsKxBvHmwI=", + "lastModified": 1676153903, + "narHash": "sha256-uetRyjgMiZCs6srmZ10M764Vn7F53M9mVuqnzHmyBqU=", "owner": "ryantm", "repo": "agenix", - "rev": "b7ffcfe77f817d9ee992640ba1f270718d197f28", + "rev": "ea17cc71b4e1bc5b2601f210a1c85db9453ad723", "type": "github" }, "original": { @@ -107,11 +107,11 @@ ] }, "locked": { - "lastModified": 1675888750, - "narHash": "sha256-w3T9UiRN6SaKMYI62+Ic3ka1Tyr9zaBcclhh3e4RCUk=", + "lastModified": 1675935446, + "narHash": "sha256-WajulTn7QdwC7QuXRBavrANuIXE5z+08EdxdRw1qsNs=", "owner": "nix-community", "repo": "home-manager", - "rev": "1232d0e13305f462a5a7c29584f50eb232cc4ba0", + "rev": "2dce7f1a55e785a22d61668516df62899278c9e4", "type": "github" }, "original": { @@ -123,11 +123,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1675763311, - "narHash": "sha256-bz0Q2H3mxsF1CUfk26Sl9Uzi8/HFjGFD/moZHz1HebU=", + "lastModified": 1676110339, + "narHash": "sha256-kOS/L8OOL2odpCOM11IevfHxcUeE0vnZUQ74EOiwXcs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fab09085df1b60d6a0870c8a89ce26d5a4a708c2", + "rev": "e5530aba13caff5a4f41713f1265b754dc2abfd8", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nur": { "locked": { - "lastModified": 1675889104, - "narHash": "sha256-y+dbyqT0fG12Quz+3An9tX7YDp8ECvLUfzL1+kKv17s=", + "lastModified": 1676197247, + "narHash": "sha256-sPmIQooEOiWkjYPmjNqde+ml2NcDTockTQF2WdTSHK0=", "owner": "nix-community", "repo": "NUR", - "rev": "25532084181df9ea13551576233ab3e680525d2b", + "rev": "661a9358da62de5d4bdd9b6d510a8c17084e04ac", "type": "github" }, "original": { From 2ffb8e6ee6d2d678d0c06b0f36eae468675f6750 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 12:36:50 +0100 Subject: [PATCH 0705/1588] home: vim: add 'nvim-osc52' I do get the message when copying into the clipboard while ssh-ing. But trying to paste from my system clipboard shows that it did *not* get copied. This seems to only happen inside tmux. However tmux itself *does* copy to the clipboard correctly through OSC52. --- home/vim/default.nix | 1 + home/vim/plugin/settings/ssh.lua | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 home/vim/plugin/settings/ssh.lua diff --git a/home/vim/default.nix b/home/vim/default.nix index a97472e..abd185e 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -60,6 +60,7 @@ in # General enhancements vim-qf # Better quick-fix list + nvim-osc52 # Send clipboard data through terminal escape for SSH # Other wrappers git-messenger-vim # A simple blame window diff --git a/home/vim/plugin/settings/ssh.lua b/home/vim/plugin/settings/ssh.lua new file mode 100644 index 0000000..3af7b61 --- /dev/null +++ b/home/vim/plugin/settings/ssh.lua @@ -0,0 +1,17 @@ +if not require("ambroisie.utils").is_ssh() then + return +end + +local function copy(lines, _) + require('osc52').copy(table.concat(lines, '\n')) +end + +local function paste() + return {vim.fn.split(vim.fn.getreg(''), '\n'), vim.fn.getregtype('')} +end + +vim.g.clipboard = { + name = 'osc52', + copy = {['+'] = copy, ['*'] = copy}, + paste = {['+'] = paste, ['*'] = paste}, +} From 70f5e46860136a5c8d8c8b9bdeeecb7763fec080 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 12:03:10 +0000 Subject: [PATCH 0706/1588] home: tmux: fix OSC52 forwarding I want neovim to be able to set my clipboard, and don't care for the potential security issues of letting any program be able to do such a thing. --- home/tmux/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index f9b711c..4dbe7f7 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -57,6 +57,9 @@ in } # Block selection in vim mode bind-key -Tcopy-mode-vi 'C-v' send -X begin-selection \; send -X rectangle-toggle + + # Allow any application to send OSC52 escapes to set the clipboard + set -s set-clipboard on ''; }; } From c1c31463117c87fb1fb53ff33cb08096211a2f44 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 16:43:55 +0000 Subject: [PATCH 0707/1588] home: zsh: always enable VTE integration --- home/zsh/default.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index bd26903..646b6e3 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -84,11 +84,8 @@ in reset-agent = "gpg-connect-agent updatestartuptty /bye"; }; - # Enable VTE integration when using one of the affected shells - enableVteIntegration = - builtins.any (name: config.my.home.terminal.program == name) [ - "termite" - ]; + # Enable VTE integration + enableVteIntegration = true; }; # Fuzzy-wuzzy From d25922ef15dc628c4502fb236d9af8b041b19fcb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 16:46:18 +0000 Subject: [PATCH 0708/1588] home: packages: remove 'termite.terminfo' --- home/packages/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/packages/default.nix b/home/packages/default.nix index 84c1253..0cfa3b3 100644 --- a/home/packages/default.nix +++ b/home/packages/default.nix @@ -22,6 +22,5 @@ in file mosh ripgrep - termite.terminfo ] ++ cfg.additionalPackages); } From b6bbe5a01e5ea0a88865cfca6695ee7f60a75024 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 16:53:18 +0000 Subject: [PATCH 0709/1588] home: firefox: tridactyl: move cursor in editor This means that the cursor in vim will be in the same position as the one in the input form. --- home/firefox/tridactyl/tridactylrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index 711bf6f..4dbf7bb 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -6,7 +6,7 @@ colorscheme dark " Make tridactyl open Vim in my prefered terminal " FIXME: make it follow my prefered terminal -set editorcmd termite --class tridactyl_editor -e 'vim %f' +set editorcmd termite --class tridactyl_editor -e "vim %f '+normal!%lGzv%c|'" " }}} " Binds {{{ From f89e10fdca81564754f3007015282d7d807d49a2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 16:46:49 +0000 Subject: [PATCH 0710/1588] home: terminal: add alacritty --- home/terminal/alacritty/default.nix | 57 +++++++++++++++++++++++++++++ home/terminal/default.nix | 3 +- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 home/terminal/alacritty/default.nix diff --git a/home/terminal/alacritty/default.nix b/home/terminal/alacritty/default.nix new file mode 100644 index 0000000..a729d79 --- /dev/null +++ b/home/terminal/alacritty/default.nix @@ -0,0 +1,57 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.terminal; +in +{ + config = lib.mkIf (cfg.program == "alacritty") { + programs.alacritty = { + enable = true; + + settings = { + env = { + # DPI scaling means the font is way too big otherwise + WINIT_X11_SCALE_FACTOR = "1.0"; + }; + + font = { + size = 9; + }; + + colors = { + primary = { + background = cfg.colors.background; + foreground = cfg.colors.foreground; + + bright_foreground = cfg.colors.foregroundBold; + }; + + cursor = { + cursor = cfg.colors.cursor; + }; + + normal = { + black = cfg.colors.black; + red = cfg.colors.red; + green = cfg.colors.green; + yellow = cfg.colors.yellow; + blue = cfg.colors.blue; + magenta = cfg.colors.magenta; + cyan = cfg.colors.cyan; + white = cfg.colors.white; + }; + + bright = { + black = cfg.colors.blackBold; + red = cfg.colors.redBold; + green = cfg.colors.greenBold; + yellow = cfg.colors.yellowBold; + blue = cfg.colors.blueBold; + magenta = cfg.colors.magentaBold; + cyan = cfg.colors.cyanBold; + white = cfg.colors.whiteBold; + }; + }; + }; + }; + }; +} diff --git a/home/terminal/default.nix b/home/terminal/default.nix index 68ff44e..20f36b5 100644 --- a/home/terminal/default.nix +++ b/home/terminal/default.nix @@ -10,13 +10,14 @@ let in { imports = [ + ./alacritty ./termite ]; options.my.home = with lib; { terminal = { program = mkOption { - type = with types; nullOr (enum [ "termite" ]); + type = with types; nullOr (enum [ "alacritty" "termite" ]); default = null; example = "termite"; description = "Which terminal to use for home session"; From 4f883b019832ddecd883b60004c22efe4c6a2202 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 17:12:19 +0000 Subject: [PATCH 0711/1588] home: terminal: remove DPI workaround And instead change the font size to be *about* right. --- home/terminal/alacritty/default.nix | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/home/terminal/alacritty/default.nix b/home/terminal/alacritty/default.nix index a729d79..760162a 100644 --- a/home/terminal/alacritty/default.nix +++ b/home/terminal/alacritty/default.nix @@ -8,13 +8,8 @@ in enable = true; settings = { - env = { - # DPI scaling means the font is way too big otherwise - WINIT_X11_SCALE_FACTOR = "1.0"; - }; - font = { - size = 9; + size = 5.5; }; colors = { From e8a46ae2487a6289946076aa0b9f6d0c860489e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 17:33:45 +0000 Subject: [PATCH 0712/1588] home: firefox: tridactyl: use preferred terminal Thankfully, alacritty and termite both use the same command line arguments for this. If I ever want to use another one, I might have to make the logic a bit more robust. --- home/firefox/tridactyl/default.nix | 15 +++++++++++++-- home/firefox/tridactyl/tridactylrc | 3 +-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/home/firefox/tridactyl/default.nix b/home/firefox/tridactyl/default.nix index fd8e3fb..2a37d26 100644 --- a/home/firefox/tridactyl/default.nix +++ b/home/firefox/tridactyl/default.nix @@ -1,9 +1,20 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.home.firefox.tridactyl; in { config = lib.mkIf cfg.enable { - xdg.configFile."tridactyl/tridactylrc".source = ./tridactylrc; + xdg.configFile."tridactyl/tridactylrc".source = pkgs.substituteAll { + src = ./tridactylrc; + + editorcmd = lib.concatStringsSep " " [ + # Use my configured terminal + config.my.home.terminal.program + # Make it easy to pick out with a window class name + "--class tridactyl_editor" + # Open vim with the cursor in the correct position + ''-e "vim %f '+normal!%lGzv%c|'"'' + ]; + }; }; } diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index 4dbf7bb..200b74e 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -5,8 +5,7 @@ colorscheme dark " Make tridactyl open Vim in my prefered terminal -" FIXME: make it follow my prefered terminal -set editorcmd termite --class tridactyl_editor -e "vim %f '+normal!%lGzv%c|'" +set editorcmd @editorcmd@ " }}} " Binds {{{ From b4d050a5f89ebd9e56c68a17368a43f0aae96a4f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 12 Feb 2023 17:35:14 +0000 Subject: [PATCH 0713/1588] machines: aramis: home: migrate to 'alacritty' --- machines/aramis/home.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/machines/aramis/home.nix b/machines/aramis/home.nix index bac77f4..cdacf04 100644 --- a/machines/aramis/home.nix +++ b/machines/aramis/home.nix @@ -23,8 +23,8 @@ mpv.enable = true; # Network-Manager applet nm-applet.enable = true; - # Termite terminal - terminal.program = "termite"; + # Terminal + terminal.program = "alacritty"; # Zathura document viewer zathura.enable = true; }; From a61a602bd2e3fb19ee53779019e9279495acb112 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Feb 2023 15:02:15 +0000 Subject: [PATCH 0714/1588] home: ssh: include local-only config file Useful for configuration options that should remain secret. --- home/ssh/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home/ssh/default.nix b/home/ssh/default.nix index cbfd30c..bbf1bfc 100644 --- a/home/ssh/default.nix +++ b/home/ssh/default.nix @@ -10,6 +10,11 @@ in config.programs.ssh = lib.mkIf cfg.enable { enable = true; + includes = [ + # Local configuration, not-versioned + "config.local" + ]; + matchBlocks = { "github.com" = { hostname = "github.com"; From 2ec9aae6b72d2157d21c6e974e1adc32daca19ce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Feb 2023 12:06:22 +0000 Subject: [PATCH 0715/1588] home: pager: remove colored man pages It seems to have broken at some point, and I didn't notice. Might as well remove it since I do not care for it. --- home/pager/default.nix | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/home/pager/default.nix b/home/pager/default.nix index 00d29c0..d40210a 100644 --- a/home/pager/default.nix +++ b/home/pager/default.nix @@ -15,22 +15,5 @@ in # Clear the screen on start and exit LESS = "-R -+X -c"; }; - - programs.zsh.localVariables = { - # Colored man pages - LESS_TERMCAP_mb = "$(tput bold; tput setaf 2)"; - LESS_TERMCAP_md = "$(tput bold; tput setaf 6)"; - LESS_TERMCAP_me = "$(tput sgr0)"; - LESS_TERMCAP_so = "$(tput bold; tput setaf 3; tput setab 4)"; - LESS_TERMCAP_se = "$(tput rmso; tput sgr0)"; - LESS_TERMCAP_us = "$(tput bold; tput setaf 2)"; - LESS_TERMCAP_ue = "$(tput rmul; tput sgr0)"; - LESS_TERMCAP_mr = "$(tput rev)"; - LESS_TERMCAP_mh = "$(tput dim)"; - LESS_TERMCAP_ZN = "$(tput ssubm)"; - LESS_TERMCAP_ZV = "$(tput rsubm)"; - LESS_TERMCAP_ZO = "$(tput ssupm)"; - LESS_TERMCAP_ZW = "$(tput rsupm)"; - }; }; } From 225e8f236e102b239da2a9197c49ddcb066624a6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 17 Feb 2023 15:53:55 +0000 Subject: [PATCH 0716/1588] home: vim: ftdetect: add direnv --- home/vim/ftdetect/direnv.vim | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 home/vim/ftdetect/direnv.vim diff --git a/home/vim/ftdetect/direnv.vim b/home/vim/ftdetect/direnv.vim new file mode 100644 index 0000000..44fb811 --- /dev/null +++ b/home/vim/ftdetect/direnv.vim @@ -0,0 +1,2 @@ +" Use bash filetype for `.envrc` files +au BufNewFile,BufRead .envrc setfiletype bash From e667c042cba6c346a4091a624aeced022f2c1ecf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Feb 2023 12:25:40 +0000 Subject: [PATCH 0717/1588] home: zsh: add colorful aliases --- home/zsh/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 646b6e3..bd5906d 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -76,6 +76,13 @@ in }; shellAliases = { + # I like pretty colors + diff = "diff --color=auto"; + grep = "grep --color=auto"; + egrep = "egrep --color=auto"; + fgrep = "fgrep --color=auto"; + ls = "ls --color=auto"; + # Well-known ls aliases l = "ls -alh"; ll = "ls -l"; From 5d42f55fc674084d5ba7cf88dbf77ad9adec7a40 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Feb 2023 13:58:36 +0000 Subject: [PATCH 0718/1588] home: firefox: tridactyl: fix 'editorcmd' Turns out `alacritty` is smarter than `termit` with its handling of command execution (i.e: actually expects multiple arguments to exec(2)). So account for the difference in the module. --- home/firefox/tridactyl/default.nix | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/home/firefox/tridactyl/default.nix b/home/firefox/tridactyl/default.nix index 2a37d26..35b58c2 100644 --- a/home/firefox/tridactyl/default.nix +++ b/home/firefox/tridactyl/default.nix @@ -1,6 +1,14 @@ { config, lib, pkgs, ... }: let cfg = config.my.home.firefox.tridactyl; + + term = config.my.home.terminal.program; + + vimCommandLine = { + alacritty = ''-e "vim" "%f" "+normal!%lGzv%c|"''; + # Termite wants the whole command in a single argument... + termite = ''-e "vim %f '+normal!%lGzv%c|'"''; + }; in { config = lib.mkIf cfg.enable { @@ -9,11 +17,11 @@ in editorcmd = lib.concatStringsSep " " [ # Use my configured terminal - config.my.home.terminal.program + term # Make it easy to pick out with a window class name "--class tridactyl_editor" # Open vim with the cursor in the correct position - ''-e "vim %f '+normal!%lGzv%c|'"'' + vimCommandLine.${term} ]; }; }; From 75396c4c4c397e862b7542369fb88e0af129c8d4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Feb 2023 14:10:14 +0000 Subject: [PATCH 0719/1588] home: firefox: tridactyl: use more private editor --- home/firefox/tridactyl/tridactylrc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index 200b74e..7c0005f 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -6,6 +6,11 @@ colorscheme dark " Make tridactyl open Vim in my prefered terminal set editorcmd @editorcmd@ + +" Remove editor file after use +alias editor_rm composite editor | jsb -p tri.native.run(`rm -f '${JS_ARG[0]}'`) +bind --mode=insert editor_rm +bind --mode=input editor_rm " }}} " Binds {{{ From 4e59c0d55116e27d828c84105f177fae4111d6cc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Feb 2023 14:16:09 +0000 Subject: [PATCH 0720/1588] home: firefox: tridactyl: fix DDG mapping They broke, once again... --- home/firefox/tridactyl/tridactylrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc index 7c0005f..31d3cb7 100644 --- a/home/firefox/tridactyl/tridactylrc +++ b/home/firefox/tridactyl/tridactylrc @@ -26,8 +26,8 @@ bindurl www.google.com f hint -Jc #search div:not(.action-menu) > a bindurl www.google.com F hint -Jbc #search div:not(.action-menu) > a " Only hint search results on DuckDuckGo -bindurl ^https://duckduckgo.com f hint -Jc [class~=result__a] -bindurl ^https://duckduckgo.com F hint -Jbc [class~=result__a] +bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result-title-a"] +bindurl ^https://duckduckgo.com F hint -Jbc [data-testid="result-title-a"] " Only hint item pages on Hacker News bindurl news.ycombinator.com ;f hint -Jc .age > a From 13aa8abfaf220249ceb94b91eb6661fc65a849f3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Feb 2023 18:36:01 +0100 Subject: [PATCH 0721/1588] modules: services: add fail2ban --- modules/services/default.nix | 1 + modules/services/fail2ban/default.nix | 37 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 modules/services/fail2ban/default.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index a5d129b..b71fb2a 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -7,6 +7,7 @@ ./blog ./calibre-web ./drone + ./fail2ban ./flood ./gitea ./grocy diff --git a/modules/services/fail2ban/default.nix b/modules/services/fail2ban/default.nix new file mode 100644 index 0000000..ab80bda --- /dev/null +++ b/modules/services/fail2ban/default.nix @@ -0,0 +1,37 @@ +# A minimalist, opinionated feed reader +{ config, lib, ... }: +let + cfg = config.my.services.fail2ban; + wgNetCfg = config.my.services.wireguard.net; +in +{ + options.my.services.fail2ban = with lib; { + enable = mkEnableOption "fail2ban daemon"; + }; + + config = lib.mkIf cfg.enable { + services.fail2ban = { + enable = true; + + ignoreIP = [ + # Wireguard IPs + "${wgNetCfg.v4.subnet}.0/${toString wgNetCfg.v4.mask}" + "${wgNetCfg.v6.subnet}::/${toString wgNetCfg.v6.mask}" + # Loopback addresses + "127.0.0.0/8" + ]; + + maxretry = 5; + + bantime-increment = { + enable = true; + rndtime = "5m"; # Use 5 minute jitter to avoid unban evasion + }; + + jails.DEFAULT = ''; + findtime = 4h + bantime = 10m + ''; + }; + }; +} From b2ce0530dc36e7d8a7a55572af67cd26f7f540e6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 20 Feb 2023 09:04:23 +0000 Subject: [PATCH 0722/1588] machines: porthos: services: enable fail2ban --- machines/porthos/services.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/machines/porthos/services.nix b/machines/porthos/services.nix index 5cb8665..d0dbc82 100644 --- a/machines/porthos/services.nix +++ b/machines/porthos/services.nix @@ -34,6 +34,10 @@ in secretFile = secrets."drone/gitea".path; sharedSecretFile = secrets."drone/secret".path; }; + # Auto-ban spammy bots and incorrect logins + fail2ban = { + enable = true; + }; # Flood UI for transmission flood = { enable = true; From d64783091100edb612f78cf6f87239fe8ef882c4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Feb 2023 18:36:23 +0100 Subject: [PATCH 0723/1588] modules: services: order imports --- modules/services/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/default.nix b/modules/services/default.nix index b71fb2a..8a4f747 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -23,8 +23,8 @@ ./paperless ./pirate ./podgrab - ./postgresql-backup ./postgresql + ./postgresql-backup ./quassel ./rss-bridge ./sabnzbd From b9f6c5d5347ac0c869da25f2936ce60284152cb7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Feb 2023 18:36:41 +0100 Subject: [PATCH 0724/1588] modules: services: gitea: add fail2ban jail --- modules/services/gitea/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/services/gitea/default.nix b/modules/services/gitea/default.nix index 9c443f0..5e14175 100644 --- a/modules/services/gitea/default.nix +++ b/modules/services/gitea/default.nix @@ -126,5 +126,21 @@ in config.services.gitea.repositoryRoot ]; }; + + services.fail2ban.jails = { + gitea = '' + enabled = true + filter = gitea + action = iptables-allports + ''; + }; + + environment.etc = { + "fail2ban/filter.d/gitea.conf".text = '' + [Definition] + failregex = ^.*(Failed authentication attempt|invalid credentials|Attempted access of unknown user).* from $ + journalmatch = _SYSTEMD_UNIT=gitea.service + ''; + }; }; } From 2485a60d62d6798cffed560124d12b70ac87f13f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Feb 2023 18:36:52 +0100 Subject: [PATCH 0725/1588] modules: services: calibre-web: add fail2ban jail --- modules/services/calibre-web/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/services/calibre-web/default.nix b/modules/services/calibre-web/default.nix index e6ba10d..858851c 100644 --- a/modules/services/calibre-web/default.nix +++ b/modules/services/calibre-web/default.nix @@ -53,5 +53,21 @@ in cfg.libraryPath ]; }; + + services.fail2ban.jails = { + calibre-web = '' + enabled = true + filter = calibre-web + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/calibre-web.conf".text = '' + [Definition] + failregex = ^.*Login failed for user ".*" IP-address: $ + journalmatch = _SYSTEMD_UNIT=calibre-web.service + ''; + }; }; } From 9965c3846ff777cf385b1671cef9aab6597d6ac3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 20 Feb 2023 10:44:28 +0000 Subject: [PATCH 0726/1588] pkgs: add osc52 --- pkgs/default.nix | 2 + pkgs/osc52/default.nix | 40 +++++++++++ pkgs/osc52/osc52 | 153 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 195 insertions(+) create mode 100644 pkgs/osc52/default.nix create mode 100755 pkgs/osc52/osc52 diff --git a/pkgs/default.nix b/pkgs/default.nix index 5240dd8..2bf9056 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -28,6 +28,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { nolimips = pkgs.callPackage ./nolimips { }; + osc52 = pkgs.callPackage ./osc52 { }; + rofi-bluetooth = pkgs.callPackage ./rofi-bluetooth { }; unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; diff --git a/pkgs/osc52/default.nix b/pkgs/osc52/default.nix new file mode 100644 index 0000000..e9ef598 --- /dev/null +++ b/pkgs/osc52/default.nix @@ -0,0 +1,40 @@ +{ lib, coreutils, makeWrapper, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "osc52"; + version = "0.1.0"; + + src = ./osc52; + + buildInputs = [ + makeWrapper + ]; + + dontUnpack = true; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/osc52 + chmod a+x $out/bin/osc52 + ''; + + wrapperPath = lib.makeBinPath [ + coreutils + ]; + + fixupPhase = '' + patchShebangs $out/bin/osc52 + wrapProgram $out/bin/osc52 --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = '' + A script to copy strings using the OSC52 escape sequence + ''; + homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.linux; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/osc52/osc52 b/pkgs/osc52/osc52 new file mode 100755 index 0000000..f64ccb6 --- /dev/null +++ b/pkgs/osc52/osc52 @@ -0,0 +1,153 @@ +#!/usr/bin/env bash + +# Max length of the OSC 52 sequence. +: "${OSC52_MAX_SEQUENCE:=100000}" +# Whether to disable tmux/screen DCS escape sequences +: "${OSC52_NO_DCS:=0}" + +die() { + echo "ERROR: $*" + exit 1 +} + +usage() { + if [ $# -gt 0 ]; then + exec 1>&2 + fi + + cat << EOF +Usage: $0 [options] [string] +Send an arbitrary string to the terminal clipboard using the OSC 52 escape +sequence as specified in xterm: + https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands + Section "Operating System Commands", Ps => 52. +The data can either be read from stdin: + $ echo "hello world" | $0 +Or specified on the command line: + $ $0 "hello world" +Options: + -h, --help This screen. + -d, --no-dcs Disable tmux/screen specific DCS sequences, only use OSC 52 + -f, --force Ignore max byte limit (${OSC52_MAX_SEQUENCE}) + -- Stop options processing +EOF + + if [ $# -gt 0 ]; then + echo + die "$@" + else + exit 0 + fi +} + +tmux_seq() { + # shellcheck disable=1003 + printf '\033Ptmux;\033%s\033\\' "$1" +} + +screen_seq() { + # Screen limits the length of string sequences, so we have to break it up. + # Going by the screen history: + # (v4.2.1) Apr 2014 - today: 768 bytes + # Aug 2008 - Apr 2014 (v4.2.0): 512 bytes + # ??? - Aug 2008 (v4.0.3): 256 bytes + local limit=768 + # We go 4 bytes under the limit because we're going to insert two bytes + # before (\eP) and 2 bytes after (\e\) each string. + printf '%s' "$1" | + sed -E "s:.{$((limit - 4))}:&\n:g" | + sed -E -e 's:^:\x1bP:' -e 's:$:\x1b\\:' | + tr -d '\n' +} + +osc52_seq() { + printf '%s' "$1" +} + +print_seq() { + local seq="$1" + + if [ "${OSC52_NO_DCS}" != 0 ]; then + # Override TERM to avoid tmux/screen DCS escape logic + TERM=dummy + fi + + case ${TERM-} in + screen*) + # Since tmux defaults to setting TERM=screen, special case it. + if [ -n "${TMUX-}" ]; then + tmux_seq "${seq}" + else + screen_seq "${seq}" + fi + ;; + tmux*) + tmux_seq "${seq}" + ;; + *) + osc52_seq "${seq}" + ;; + esac +} + +b64enc() { + base64 | tr -d '\n' +} + +copy() { + local str + if [ $# -eq 0 ]; then + str="$(b64enc)" + else + str="$(printf '%s' "$1" | b64enc)" + fi + + if [ "${OSC52_MAX_SEQUENCE}" -gt 0 ]; then + local len=${#str} + if [ "${len}" -gt "${OSC52_MAX_SEQUENCE}" ]; then + die "selection too long to send to terminal:" \ + "${OSC52_MAX_SEQUENCE} limit, ${len} attempted" + fi + fi + + print_seq "$(printf '\033]52;c;%s\a' "${str}")" +} + +main() { + set -e + + local args=() + while [ $# -gt 0 ]; do + case $1 in + -h | --help) + usage + ;; + -f | --force) + OSC52_MAX_SEQUENCE=0 + ;; + -d | --no-dcs) + OSC52_NO_DCS=1 + ;; + --) + shift + args+=("$@") + break + ;; + -*) + usage "Unknown option: $1" + ;; + *) + args+=("$1") + ;; + esac + shift + done + + if [ "${#args[@]}" -gt 1 ]; then + usage "Only supply one argument" + fi + + copy "${args[@]}" +} + +main "$@" From 54f335d9849e09a1a027ec8cd7433b99329785dd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 20 Feb 2023 11:10:35 +0000 Subject: [PATCH 0727/1588] home: tmux: always use tmux-yank This plugin does have some useful binds. Since it still sends the OSC52 escape sequence when copying, I don't have a problem with remote hosts. --- home/tmux/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 4dbe7f7..15becfb 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -24,7 +24,7 @@ in pain-control # Better session management sessionist - (lib.optionalAttrs hasGUI { + { # X clipboard integration plugin = yank; extraConfig = '' @@ -33,7 +33,7 @@ in # Stay in copy mode after yanking set -g @yank_action 'copy-pipe' ''; - }) + } { # Show when prefix has been pressed plugin = prefix-highlight; From 86aa156fc06cd04eb6574b8ae6644f64c41bfb37 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 20 Feb 2023 11:06:34 +0000 Subject: [PATCH 0728/1588] home: tmux: fix 'hasGui' logic Take advantage of this fix to make the code more extensible. --- home/tmux/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 15becfb..88b35fb 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -1,7 +1,10 @@ { config, lib, pkgs, ... }: let cfg = config.my.home.tmux; - hasGUI = config.my.home.x.enable || (config.my.home.wm != null); + hasGUI = lib.any lib.id [ + config.my.home.x.enable + (config.my.home.wm.windowManager != null) + ]; in { options.my.home.tmux = with lib.my; { From 3505b4d7f01a47db1e3d680487dbcfde7e24be96 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 20 Feb 2023 22:26:51 +0100 Subject: [PATCH 0729/1588] modules: services: sabnzbd: add fail2ban jail --- modules/services/sabnzbd/default.nix | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/modules/services/sabnzbd/default.nix b/modules/services/sabnzbd/default.nix index b9b99cf..7ab145f 100644 --- a/modules/services/sabnzbd/default.nix +++ b/modules/services/sabnzbd/default.nix @@ -24,5 +24,34 @@ in inherit port; } ]; + + services.fail2ban.jails = { + sabnzbd = '' + enabled = true + filter = sabnzbd + port = http,https + # Unfortunately, sabnzbd does not log to systemd journal + backend = auto + logpath = /var/lib/sabnzbd/logs/sabnzbd.log + ''; + }; + + environment.etc = { + # FIXME: path to log file + "fail2ban/filter.d/sabnzbd.conf".text = '' + [Definition] + failregex = ^.*WARNING.*API Key incorrect, Use the api key from Config->General in your 3rd party program: .* \(X-Forwarded-For: \) .*$ + ^.*WARNING.*API Key incorrect, Use the api key from Config->General in your 3rd party program: .*$ + ^.*WARNING.*API Key missing, please enter the api key from Config->General into your 3rd party program: .* \(X-Forwarded-For: \) .*$ + ^.*WARNING.*API Key missing, please enter the api key from Config->General into your 3rd party program: .*$ + ^.*WARNING.*Refused connection from: .* \(X-Forwarded-For: \) .*$ + ^.*WARNING.*Refused connection from: .*$ + ^.*WARNING.*Refused connection with hostname ".*" from: .* \(X-Forwarded-For: \) .*$ + ^.*WARNING.*Refused connection with hostname ".*" from: .*$ + ^.*WARNING.*Unsuccessful login attempt from .* \(X-Forwarded-For: \) .*$ + ^.*WARNING.*Unsuccessful login attempt from .*$ + journalmatch = _SYSTEMD_UNIT=sabnzbd.service + ''; + }; }; } From ee6a735a2c3ae69622e6e01d849802d23bb16b84 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 21 Feb 2023 17:24:18 +0000 Subject: [PATCH 0730/1588] home: add nix This is basically the same thing as the NixOS module, except for NIX_PATH handling [1]. [1]: https://github.com/nix-community/home-manager/pull/2677 --- home/default.nix | 1 + home/nix/default.nix | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 home/nix/default.nix diff --git a/home/default.nix b/home/default.nix index 82d2cc3..3e34ddb 100644 --- a/home/default.nix +++ b/home/default.nix @@ -19,6 +19,7 @@ ./jq ./mail ./mpv + ./nix ./nix-index ./nm-applet ./packages diff --git a/home/nix/default.nix b/home/nix/default.nix new file mode 100644 index 0000000..a846baa --- /dev/null +++ b/home/nix/default.nix @@ -0,0 +1,39 @@ +# Nix related settings +{ config, inputs, lib, options, pkgs, ... }: +let + cfg = config.my.home.nix; +in +{ + options.my.home.nix = with lib; { + enable = my.mkDisableOption "nix configuration"; + + addToRegistry = my.mkDisableOption "add inputs and self to registry"; + + overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version"; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + nix = { + package = lib.mkDefault pkgs.nix; + + settings = { + experimental-features = [ "nix-command" "flakes" ]; + }; + }; + } + + (lib.mkIf cfg.addToRegistry { + nix.registry = { + # Allow me to use my custom package using `nix run self#pkg` + self.flake = inputs.self; + # Use pinned nixpkgs when using `nix run pkgs#` + pkgs.flake = inputs.nixpkgs; + # ... And also with `nix run nixpkgs#` + nixpkgs.flake = lib.mkIf cfg.overrideNixpkgs inputs.nixpkgs; + # Add NUR to run some packages that are only present there + nur.flake = inputs.nur; + }; + }) + ]); +} From 737747f8f5ce4fb1c3c0cf700390a77166f1f214 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 21 Feb 2023 17:23:36 +0000 Subject: [PATCH 0731/1588] flake: add 'homeConfigurations.ambroisie' --- flake.nix | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/flake.nix b/flake.nix index 6d329bd..75aea21 100644 --- a/flake.nix +++ b/flake.nix @@ -165,6 +165,39 @@ ambroisie = prev.recurseIntoAttrs (import ./pkgs { pkgs = prev; }); }; }; + homeConfigurations = + let + system = "x86_64-linux"; + pkgs = import nixpkgs { + inherit system; + overlays = (lib.attrValues self.overlays) ++ [ + nur.overlay + ]; + }; + in + { + ambroisie = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + + modules = [ + ./home + { + # The basics + home.username = "ambroisie"; + home.homeDirectory = "/home/ambroisie"; + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + # This is a generic linux install + targets.genericLinux.enable = true; + } + ]; + + extraSpecialArgs = { + # Inject inputs to use them in global registry + inherit inputs; + }; + }; + }; nixosConfigurations = lib.mapAttrs buildHost { aramis = "x86_64-linux"; From 0bbf522c03a513bcbb626d15ca386b2df0d5d064 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Feb 2023 16:00:26 +0000 Subject: [PATCH 0732/1588] home: tmux: change 'use lib.my' to 'use libs' --- home/zsh/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index bd5906d..e17bb49 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.zsh; in { - options.my.home.zsh = with lib.my; { - enable = mkDisableOption "zsh configuration"; + options.my.home.zsh = with lib; { + enable = my.mkDisableOption "zsh configuration"; }; config = lib.mkIf cfg.enable { From 34c13b077f679d3f5a22a456908240dc1c4b24ff Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Feb 2023 16:04:20 +0000 Subject: [PATCH 0733/1588] home: zsh: refactor tmux auto-launch configuration Introduce an actual option for this behaviour. --- home/zsh/default.nix | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index e17bb49..edbff52 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -5,6 +5,10 @@ in { options.my.home.zsh = with lib; { enable = my.mkDisableOption "zsh configuration"; + + launchTmux = mkEnableOption "auto launch tmux at shell start" // { + default = config.my.home.tmux.enable; + }; }; config = lib.mkIf cfg.enable { @@ -44,14 +48,16 @@ in defaultKeymap = "emacs"; # Make those happen early to avoid doing double the work - initExtraFirst = - lib.optionalString config.my.home.tmux.enable '' - # Launch tmux unless already inside one - if [ -z "$TMUX" ]; then - exec tmux new-session - fi - '' - ; + initExtraFirst = '' + ${ + lib.optionalString cfg.launchTmux '' + # Launch tmux unless already inside one + if [ -z "$TMUX" ]; then + exec tmux new-session + fi + '' + } + ''; initExtra = '' source ${./completion-styles.zsh} From 55b828cba9c01e9845640f38cbd040c7c05f056f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Feb 2023 16:05:28 +0000 Subject: [PATCH 0734/1588] machines: porthos: add home configuration --- machines/porthos/default.nix | 1 + machines/porthos/home.nix | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 machines/porthos/home.nix diff --git a/machines/porthos/default.nix b/machines/porthos/default.nix index abfc01a..6d7df29 100644 --- a/machines/porthos/default.nix +++ b/machines/porthos/default.nix @@ -5,6 +5,7 @@ imports = [ ./boot.nix ./hardware.nix + ./home.nix ./networking.nix ./services.nix ./users.nix diff --git a/machines/porthos/home.nix b/machines/porthos/home.nix new file mode 100644 index 0000000..ce312c4 --- /dev/null +++ b/machines/porthos/home.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + # To be filled out +} From 06989facc2f964d697f6400a50416c6d54eecda2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Feb 2023 16:09:15 +0000 Subject: [PATCH 0735/1588] machines: porthos: home: enable tmux auto-launch I'm about to flip the default to always disabled, so enable it explicitly. --- machines/porthos/home.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/machines/porthos/home.nix b/machines/porthos/home.nix index ce312c4..53d5d25 100644 --- a/machines/porthos/home.nix +++ b/machines/porthos/home.nix @@ -1,4 +1,7 @@ { ... }: { - # To be filled out + my.home = { + # Always start a tmux session when opening a shell session + zsh.launchTmux = true; + }; } From 607d11bbad7d72f927fac74e98eb749c2c9ab2d1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Feb 2023 16:09:45 +0000 Subject: [PATCH 0736/1588] home: zsh: disable tmux auto-launch by default --- home/zsh/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index edbff52..84eb7a3 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -6,9 +6,7 @@ in options.my.home.zsh = with lib; { enable = my.mkDisableOption "zsh configuration"; - launchTmux = mkEnableOption "auto launch tmux at shell start" // { - default = config.my.home.tmux.enable; - }; + launchTmux = mkEnableOption "auto launch tmux at shell start"; }; config = lib.mkIf cfg.enable { From c1214547da21d0075b63bedf1ca5f54af60c3691 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 20 Feb 2023 22:26:51 +0100 Subject: [PATCH 0737/1588] modules: system: nix: add '/etc/nix/inputs' links --- modules/system/nix/default.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index f8e7c24..bae6e6f 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -7,6 +7,8 @@ in options.my.system.nix = with lib; { enable = my.mkDisableOption "nix configuration"; + linkInputs = my.mkDisableOption "link inputs to `/etc/nix/inputs/`"; + addToRegistry = my.mkDisableOption "add inputs and self to registry"; addToNixPath = my.mkDisableOption "add inputs and self to nix path"; @@ -38,6 +40,24 @@ in }; }) + (lib.mkIf cfg.linkInputs { + environment.etc = + let + makeLink = n: v: { + name = "nix/inputs/${n}"; + value = { source = v.outPath; }; + }; + makeLinks = lib.mapAttrs' makeLink; + in + makeLinks { + inherit (inputs) + self + nixpkgs + nur + ; + }; + }) + (lib.mkIf cfg.addToNixPath { nix.nixPath = [ "self=${inputs.self}" From 6eb87c21b7be926d7a09a3fa582fc0919b57339d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 23 Feb 2023 21:00:30 +0000 Subject: [PATCH 0738/1588] modules: system: nix: use stable 'NIX_PATH' Since the links are updated on system switch, NIX_PATH will automatically point to the actual system version of the inputs at all times --- modules/system/nix/default.nix | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index bae6e6f..463c0f5 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -17,6 +17,18 @@ in }; config = lib.mkIf cfg.enable (lib.mkMerge [ + { + assertions = [ + { + assertion = cfg.addToNixPath -> cfg.linkInputs; + message = '' + enabling `my.system.nix.addToNixPath` needs to have + `my.system.nix.linkInputs = true` + ''; + } + ]; + } + { nix = { package = pkgs.nix; @@ -60,11 +72,11 @@ in (lib.mkIf cfg.addToNixPath { nix.nixPath = [ - "self=${inputs.self}" - "pkgs=${inputs.nixpkgs}" - "nur=${inputs.nur}" + "self=/etc/nix/inputs/self" + "pkgs=/etc/nix/inputs/nixpkgs" + "nur=/etc/nix/inputs/nur" ] - ++ lib.optional cfg.overrideNixpkgs "nixpkgs=${inputs.nixpkgs}" + ++ lib.optional cfg.overrideNixpkgs "nixpkgs=/etc/nix/inputs/nixpkgs" ++ options.nix.nixPath.default; }) ]); From a99954b12acd6d5bd4088681e5f8cca98fb301f6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Feb 2023 09:25:38 +0000 Subject: [PATCH 0739/1588] modules: system: nix: add explicit 'pkgs' link --- modules/system/nix/default.nix | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 463c0f5..127a20d 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -60,20 +60,21 @@ in value = { source = v.outPath; }; }; makeLinks = lib.mapAttrs' makeLink; + channels = { + self = inputs.self; + pkgs = inputs.nixpkgs; + nur = inputs.nur; + } // lib.optionalAttrs cfg.overrideNixpkgs { + nixpkgs = inputs.nixpkgs; + }; in - makeLinks { - inherit (inputs) - self - nixpkgs - nur - ; - }; + makeLinks channels; }) (lib.mkIf cfg.addToNixPath { nix.nixPath = [ "self=/etc/nix/inputs/self" - "pkgs=/etc/nix/inputs/nixpkgs" + "pkgs=/etc/nix/inputs/pkgs" "nur=/etc/nix/inputs/nur" ] ++ lib.optional cfg.overrideNixpkgs "nixpkgs=/etc/nix/inputs/nixpkgs" From 54a6be70c836de669ad93e82469fcc5badb3cc8b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Feb 2023 09:26:06 +0000 Subject: [PATCH 0740/1588] modules: system: nix: simplify 'NIX_PATH' Since we now have an explicit 'pkgs' link, we can just add the folder with all linked inputs directly instead of adding them all manually. --- modules/system/nix/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 127a20d..056b5da 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -73,11 +73,8 @@ in (lib.mkIf cfg.addToNixPath { nix.nixPath = [ - "self=/etc/nix/inputs/self" - "pkgs=/etc/nix/inputs/pkgs" - "nur=/etc/nix/inputs/nur" + "/etc/nix/inputs" ] - ++ lib.optional cfg.overrideNixpkgs "nixpkgs=/etc/nix/inputs/nixpkgs" ++ options.nix.nixPath.default; }) ]); From ae23f05a33a5d0c61d1c2d9d7256c0998dbf167f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Feb 2023 22:19:13 +0000 Subject: [PATCH 0741/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 85d4882..585ce5f 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1676153903, - "narHash": "sha256-uetRyjgMiZCs6srmZ10M764Vn7F53M9mVuqnzHmyBqU=", + "lastModified": 1677247280, + "narHash": "sha256-sa+8MtoAOSLsWP9vf0qiJUyMovIEYgDzHE8TkoK04Hk=", "owner": "ryantm", "repo": "agenix", - "rev": "ea17cc71b4e1bc5b2601f210a1c85db9453ad723", + "rev": "833f87c8ff574a29aea3e091045cbaed3cf86bc1", "type": "github" }, "original": { @@ -62,11 +62,11 @@ }, "futils": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "lastModified": 1676283394, + "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", "owner": "numtide", "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", "type": "github" }, "original": { @@ -107,11 +107,11 @@ ] }, "locked": { - "lastModified": 1675935446, - "narHash": "sha256-WajulTn7QdwC7QuXRBavrANuIXE5z+08EdxdRw1qsNs=", + "lastModified": 1677104801, + "narHash": "sha256-2V5nKOYVFMYlseYdDKiEaww2xqcE0GtS1ax3SoUX99I=", "owner": "nix-community", "repo": "home-manager", - "rev": "2dce7f1a55e785a22d61668516df62899278c9e4", + "rev": "4295fdfa6b0005c32f2e1f0b732faf5810c1bc7f", "type": "github" }, "original": { @@ -123,11 +123,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1676110339, - "narHash": "sha256-kOS/L8OOL2odpCOM11IevfHxcUeE0vnZUQ74EOiwXcs=", + "lastModified": 1677063315, + "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e5530aba13caff5a4f41713f1265b754dc2abfd8", + "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nur": { "locked": { - "lastModified": 1676197247, - "narHash": "sha256-sPmIQooEOiWkjYPmjNqde+ml2NcDTockTQF2WdTSHK0=", + "lastModified": 1677243766, + "narHash": "sha256-a+2V68cLjb951pYBEGbQGEVBcgti40uWtxTVnzvGFhY=", "owner": "nix-community", "repo": "NUR", - "rev": "661a9358da62de5d4bdd9b6d510a8c17084e04ac", + "rev": "9bde3171aeb5954b7955fcb09b231f53caf76b54", "type": "github" }, "original": { @@ -168,11 +168,11 @@ ] }, "locked": { - "lastModified": 1675688762, - "narHash": "sha256-oit/SxMk0B380ASuztBGQLe8TttO1GJiXF8aZY9AYEc=", + "lastModified": 1677160285, + "narHash": "sha256-tBzpCjMP+P3Y3nKLYvdBkXBg3KvTMo3gvi8tLQaqXVY=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "ab608394886fb04b8a5df3cb0bab2598400e3634", + "rev": "2bd861ab81469428d9c823ef72c4bb08372dd2c4", "type": "github" }, "original": { From 3c6e8933a176d3d3c25b5a640550c67f4e13bc54 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Feb 2023 01:03:24 +0000 Subject: [PATCH 0742/1588] lib: attrs: add 'merge' --- lib/attrs.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/attrs.nix b/lib/attrs.nix index 75114b2..31686ac 100644 --- a/lib/attrs.nix +++ b/lib/attrs.nix @@ -26,6 +26,13 @@ in # attrs genAttrs' = values: f: listToAttrs (map f values); + # Merge a list of attrs non-recursively, later values override previous ones. + # + # merge :: + # [ attrs ] + # attrs + merge = foldl (a: b: a // b) { }; + # Merge a list of attrs recursively, later values override previous ones. # # recursiveMerge :: From 8b9a01a0efc691239104330bc7fb4c797a614a83 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Feb 2023 01:03:42 +0000 Subject: [PATCH 0743/1588] modules: system: nix: DRY inputs handling --- modules/system/nix/default.nix | 38 +++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 056b5da..c8ce001 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -2,6 +2,21 @@ { config, inputs, lib, options, pkgs, ... }: let cfg = config.my.system.nix; + + channels = lib.my.merge [ + { + # Allow me to use my custom package using `nix run self#pkg` + self = inputs.self; + # Add NUR to run some packages that are only present there + nur = inputs.nur; + # Use pinned nixpkgs when using `nix run pkgs#` + pkgs = inputs.nixpkgs; + } + (lib.optionalAttrs cfg.overrideNixpkgs { + # ... And with `nix run nixpkgs#` + nixpkgs = inputs.nixpkgs; + }) + ]; in { options.my.system.nix = with lib; { @@ -40,16 +55,12 @@ in } (lib.mkIf cfg.addToRegistry { - nix.registry = { - # Allow me to use my custom package using `nix run self#pkg` - self.flake = inputs.self; - # Use pinned nixpkgs when using `nix run pkgs#` - pkgs.flake = inputs.nixpkgs; - # ... And with `nix run nixpkgs#` - nixpkgs.flake = lib.mkIf cfg.overrideNixpkgs inputs.nixpkgs; - # Add NUR to run some packages that are only present there - nur.flake = inputs.nur; - }; + nix.registry = + let + makeEntry = v: { flake = v; }; + makeEntries = lib.mapAttrs (lib.const makeEntry); + in + makeEntries channels; }) (lib.mkIf cfg.linkInputs { @@ -60,13 +71,6 @@ in value = { source = v.outPath; }; }; makeLinks = lib.mapAttrs' makeLink; - channels = { - self = inputs.self; - pkgs = inputs.nixpkgs; - nur = inputs.nur; - } // lib.optionalAttrs cfg.overrideNixpkgs { - nixpkgs = inputs.nixpkgs; - }; in makeLinks channels; }) From 58d03d589259a9ace131bc4f1765af21ef055b95 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Feb 2023 01:30:28 +0000 Subject: [PATCH 0744/1588] home: nix: add explanatory comment --- home/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/nix/default.nix b/home/nix/default.nix index a846baa..ddefddb 100644 --- a/home/nix/default.nix +++ b/home/nix/default.nix @@ -15,7 +15,7 @@ in config = lib.mkIf cfg.enable (lib.mkMerge [ { nix = { - package = lib.mkDefault pkgs.nix; + package = lib.mkDefault pkgs.nix; # NixOS module sets it unconditionally settings = { experimental-features = [ "nix-command" "flakes" ]; From ca1e2df1e9536e5f017e97d0e020dba6db698558 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Feb 2023 01:32:09 +0000 Subject: [PATCH 0745/1588] home: nix: refactor module This keeps it in line with the NixOS one. --- home/nix/default.nix | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/home/nix/default.nix b/home/nix/default.nix index ddefddb..b05a1d0 100644 --- a/home/nix/default.nix +++ b/home/nix/default.nix @@ -2,6 +2,21 @@ { config, inputs, lib, options, pkgs, ... }: let cfg = config.my.home.nix; + + channels = lib.my.merge [ + { + # Allow me to use my custom package using `nix run self#pkg` + self = inputs.self; + # Add NUR to run some packages that are only present there + nur = inputs.nur; + # Use pinned nixpkgs when using `nix run pkgs#` + pkgs = inputs.nixpkgs; + } + (lib.optionalAttrs cfg.overrideNixpkgs { + # ... And with `nix run nixpkgs#` + nixpkgs = inputs.nixpkgs; + }) + ]; in { options.my.home.nix = with lib; { @@ -24,16 +39,12 @@ in } (lib.mkIf cfg.addToRegistry { - nix.registry = { - # Allow me to use my custom package using `nix run self#pkg` - self.flake = inputs.self; - # Use pinned nixpkgs when using `nix run pkgs#` - pkgs.flake = inputs.nixpkgs; - # ... And also with `nix run nixpkgs#` - nixpkgs.flake = lib.mkIf cfg.overrideNixpkgs inputs.nixpkgs; - # Add NUR to run some packages that are only present there - nur.flake = inputs.nur; - }; + nix.registry = + let + makeEntry = v: { flake = v; }; + makeEntries = lib.mapAttrs (lib.const makeEntry); + in + makeEntries channels; }) ]); } From 4a6677b024fdc91a97c990d705f9f2e1fa046500 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Feb 2023 01:41:25 +0000 Subject: [PATCH 0746/1588] modules: system: nix: add 'linkInputs' option Once again, mirroring the work done in the NixOS module. --- home/nix/default.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/home/nix/default.nix b/home/nix/default.nix index b05a1d0..c46e990 100644 --- a/home/nix/default.nix +++ b/home/nix/default.nix @@ -22,6 +22,8 @@ in options.my.home.nix = with lib; { enable = my.mkDisableOption "nix configuration"; + linkInputs = my.mkDisableOption "link inputs to `$XDG_CONFIG_HOME/nix/inputs`"; + addToRegistry = my.mkDisableOption "add inputs and self to registry"; overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version"; @@ -46,5 +48,17 @@ in in makeEntries channels; }) + + (lib.mkIf cfg.linkInputs { + xdg.configFile = + let + makeLink = n: v: { + name = "nix/inputs/${n}"; + value = { source = v.outPath; }; + }; + makeLinks = lib.mapAttrs' makeLink; + in + makeLinks channels; + }) ]); } From 2a7e6197f5f1eb651b7e6f33bb2f61aa9c40d4b8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Feb 2023 13:12:53 +0000 Subject: [PATCH 0747/1588] flake: system-specific 'homeConfigurations' --- flake.nix | 70 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/flake.nix b/flake.nix index 75aea21..1ba900d 100644 --- a/flake.nix +++ b/flake.nix @@ -158,6 +158,43 @@ finalPackages = filterPackages system flattenedPackages; in finalPackages; + + # Work-around for https://github.com/nix-community/home-manager/issues/3075 + legacyPackages = { + homeConfigurations = { + ambroisie = home-manager.lib.homeManagerConfiguration { + # Work-around for home-manager + # * not letting me set `lib` as an extraSpecialArgs + # * not respecting `nixpkgs.overlays` [1] + # [1]: https://github.com/nix-community/home-manager/issues/2954 + pkgs = import nixpkgs { + inherit system; + + overlays = (lib.attrValues self.overlays) ++ [ + nur.overlay + ]; + }; + + modules = [ + ./home + { + # The basics + home.username = "ambroisie"; + home.homeDirectory = "/home/ambroisie"; + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + # This is a generic linux install + targets.genericLinux.enable = true; + } + ]; + + extraSpecialArgs = { + # Inject inputs to use them in global registry + inherit inputs; + }; + }; + }; + }; }) // { overlays = import ./overlays // { lib = final: prev: { inherit lib; }; @@ -165,39 +202,6 @@ ambroisie = prev.recurseIntoAttrs (import ./pkgs { pkgs = prev; }); }; }; - homeConfigurations = - let - system = "x86_64-linux"; - pkgs = import nixpkgs { - inherit system; - overlays = (lib.attrValues self.overlays) ++ [ - nur.overlay - ]; - }; - in - { - ambroisie = home-manager.lib.homeManagerConfiguration { - inherit pkgs; - - modules = [ - ./home - { - # The basics - home.username = "ambroisie"; - home.homeDirectory = "/home/ambroisie"; - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - # This is a generic linux install - targets.genericLinux.enable = true; - } - ]; - - extraSpecialArgs = { - # Inject inputs to use them in global registry - inherit inputs; - }; - }; - }; nixosConfigurations = lib.mapAttrs buildHost { aramis = "x86_64-linux"; From 3122db6536e61184707b45c94ab999c0394968ce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 26 Feb 2023 13:19:41 +0000 Subject: [PATCH 0748/1588] home: vim: disable mouse integration --- home/vim/init.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/vim/init.vim b/home/vim/init.vim index e5e863c..05635d5 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -75,6 +75,9 @@ set timeoutlen=500 " Timeout quickly for CursorHold events (and also swap file) set updatetime=250 +" Disable all mouse integrations +set mouse= + " Set dark mode by default set background=dark From a29deaa9bce57d32df5ed520b46522f008b36196 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 27 Feb 2023 14:53:31 +0000 Subject: [PATCH 0749/1588] home: vim: use 'lsp-formatting.nvim' A few things that are different: * Async by default. * Takes care of the order of formatters, if I ever need to do that. * Allows for easily disabling formatting (unfortunately this is global state, not buffer-local). * Gets rid of the formatting pause when doing `:wq`. --- home/vim/default.nix | 1 + home/vim/lua/ambroisie/lsp.lua | 15 ++++----------- home/vim/plugin/settings/formatting.lua | 3 +++ 3 files changed, 8 insertions(+), 11 deletions(-) create mode 100644 home/vim/plugin/settings/formatting.lua diff --git a/home/vim/default.nix b/home/vim/default.nix index abd185e..e462f93 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -67,6 +67,7 @@ in # LSP and linting nvim-lspconfig # Easy LSP configuration + lsp-format-nvim # Simplified formatting configuration lsp_lines-nvim # Show diagnostics *over* regions null-ls-nvim # LSP integration for linters and formatters nvim-treesitter.withAllGrammars # Better highlighting diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index d4f3fad..260ef8d 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -1,5 +1,8 @@ local M = {} +-- Simplified LSP formatting configuration +local lsp_format = require("lsp-format") + -- shared LSP configuration callback -- @param client native client configuration -- @param bufnr int? buffer number of the attched client @@ -30,17 +33,7 @@ M.on_attach = function(client, bufnr) }) -- Format on save - if client.supports_method("textDocument/formatting") then - local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - vim.lsp.buf.format({ bufnr = bufnr }) - end, - }) - end + lsp_format.on_attach(client, bufnr) -- Mappings local wk = require("which-key") diff --git a/home/vim/plugin/settings/formatting.lua b/home/vim/plugin/settings/formatting.lua new file mode 100644 index 0000000..1bb896b --- /dev/null +++ b/home/vim/plugin/settings/formatting.lua @@ -0,0 +1,3 @@ +local lsp_format = require("lsp-format") + +lsp_format.setup({}) From 41bd17e3cac9c5eba99cfd446bbde2ef121c1eba Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 27 Feb 2023 16:00:29 +0000 Subject: [PATCH 0750/1588] home: vim: migrate to 'gruvbox-nvim' I think this one will be more up-to-date with NeoVim evolutions, like LSP semantic tokens. --- home/vim/default.nix | 2 +- home/vim/init.vim | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index e462f93..159c080 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -35,7 +35,7 @@ in plugins = with pkgs.vimPlugins; [ # Theming - vim-gruvbox8 # Nice dark theme + gruvbox-nvim # Nice dark theme lualine-nvim # A lua-based status line lualine-lsp-progress # Show progress for LSP servers diff --git a/home/vim/init.vim b/home/vim/init.vim index 05635d5..259c782 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -81,14 +81,10 @@ set mouse= " Set dark mode by default set background=dark -" Include plug-in integration -let g:gruvbox_plugin_hi_groups=1 -" Include filetype integration -let g:gruvbox_filetype_hi_groups=1 " 24 bit colors set termguicolors " Use my preferred colorscheme -colorscheme gruvbox8 +colorscheme gruvbox " }}} " Search parameters {{{ From 068faea1e225853b3f90604eeab8f71ed679da5b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 1 Mar 2023 13:44:35 +0000 Subject: [PATCH 0751/1588] home: zsh: extra-mappings: use single quotes --- home/zsh/extra-mappings.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index 8f7cc4a..8c0d886 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -2,7 +2,7 @@ bindkey "\e[3~" delete-char # Fix Ctrl+u killing from the cursor instead of the whole line -bindkey \^U backward-kill-line +bindkey '^u' backward-kill-line # Use Ctrl+x-(Ctrl+)e to edit the current command line in VISUAL/EDITOR autoload -U edit-command-line From 3ed5e40285745497f13a370e4ddf0188cf147736 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 10:33:49 +0000 Subject: [PATCH 0752/1588] flake: expose 'lib' attribute This exposes `lib.my` which contains my custom library functions, as well as the entirety of the nixpkgs library. --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 1ba900d..36b1b56 100644 --- a/flake.nix +++ b/flake.nix @@ -196,6 +196,8 @@ }; }; }) // { + inherit lib; + overlays = import ./overlays // { lib = final: prev: { inherit lib; }; pkgs = final: prev: { From 453e5a925a3f5e637e5b55da65eb889031268ec9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 11:46:21 +0000 Subject: [PATCH 0753/1588] direnv: remove nix evaluation hack --- .envrc | 1 - 1 file changed, 1 deletion(-) diff --git a/.envrc b/.envrc index 4b297a5..116d0c6 100644 --- a/.envrc +++ b/.envrc @@ -4,6 +4,5 @@ use_flake() { eval "$(nix print-dev-env)" } -ulimit -s unlimited # Bypass current bug in `nix` flakes evaluation use flake eval "$shellHooks" From 8b7198d7e70c204e88208af381f991c98b5abc76 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 11:47:26 +0000 Subject: [PATCH 0754/1588] direnv: always use 'nix-direnv' --- .envrc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.envrc b/.envrc index 116d0c6..c912bf2 100644 --- a/.envrc +++ b/.envrc @@ -1,8 +1,6 @@ -use_flake() { - watch_file flake.nix - watch_file flake.lock - eval "$(nix print-dev-env)" -} +if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +fi use flake eval "$shellHooks" From 04734c8bd2366add04a8aad9aec1f0c81a9405f4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 12:34:07 +0000 Subject: [PATCH 0755/1588] pkgs: ff2mpv-go: fix 'vendorHash' --- pkgs/ff2mpv-go/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/ff2mpv-go/default.nix b/pkgs/ff2mpv-go/default.nix index 3dc229c..4689814 100644 --- a/pkgs/ff2mpv-go/default.nix +++ b/pkgs/ff2mpv-go/default.nix @@ -9,7 +9,7 @@ buildGoModule rec { sha256 = "sha256-e/AuOA3isFTyBf97Zwtr16yo49UdYzvktV5PKB/eH/s="; }; - vendorSha256 = "sha256-pQpattmS9VmO3ZIQUFn66az8GSmB4IvYhTTCFn6SUmo="; + vendorHash = null; postPatch = '' sed -i -e 's,"mpv","${mpv}/bin/mpv",' ff2mpv.go From b9083244ed37fbc9e69ddfcb7afe96b6a371d614 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 11:42:04 +0000 Subject: [PATCH 0756/1588] flake: add 'aarch64-darwin' again I don't get an error during `nix flake check` anymore. This reverts commit 8a556585afb7cf716b36d8bf476838b636d8e4ca. --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 36b1b56..8453b07 100644 --- a/flake.nix +++ b/flake.nix @@ -70,6 +70,7 @@ inherit (futils.lib) eachSystem system; mySystems = [ + system.aarch64-darwin system.aarch64-linux system.x86_64-darwin system.x86_64-linux From 819ce1a32053aeec7dc832d397328fbc906c56ae Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 10:36:27 +0000 Subject: [PATCH 0757/1588] flake: move 'overlays' to 'flake/' --- flake.nix | 7 +------ flake/overlays.nix | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 flake/overlays.nix diff --git a/flake.nix b/flake.nix index 8453b07..427ef24 100644 --- a/flake.nix +++ b/flake.nix @@ -199,12 +199,7 @@ }) // { inherit lib; - overlays = import ./overlays // { - lib = final: prev: { inherit lib; }; - pkgs = final: prev: { - ambroisie = prev.recurseIntoAttrs (import ./pkgs { pkgs = prev; }); - }; - }; + overlays = import ./flake/overlays.nix inputs; nixosConfigurations = lib.mapAttrs buildHost { aramis = "x86_64-linux"; diff --git a/flake/overlays.nix b/flake/overlays.nix new file mode 100644 index 0000000..bb5e546 --- /dev/null +++ b/flake/overlays.nix @@ -0,0 +1,16 @@ +{ self, ... }: + +let + default-overlays = import "${self}/overlays"; + + additional-overlays = { + # Expose my expanded library + lib = final: prev: { inherit (self) lib; }; + + # Expose my custom packages + pkgs = final: prev: { + ambroisie = prev.recurseIntoAttrs (import "${self}/pkgs" { pkgs = prev; }); + }; + }; +in +default-overlays // additional-overlays From 90d1d81983086adcc4e90c4ddaacdd414d5f0b63 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 10:44:29 +0000 Subject: [PATCH 0758/1588] flake: move 'lib' to 'flake/' --- flake.nix | 8 +++----- flake/lib.nix | 7 +++++++ 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 flake/lib.nix diff --git a/flake.nix b/flake.nix index 427ef24..43914fa 100644 --- a/flake.nix +++ b/flake.nix @@ -67,6 +67,8 @@ , pre-commit-hooks }: let + inherit (self) lib; + inherit (futils.lib) eachSystem system; mySystems = [ @@ -78,10 +80,6 @@ eachMySystem = eachSystem mySystems; - lib = nixpkgs.lib.extend (self: super: { - my = import ./lib { inherit inputs; pkgs = nixpkgs; lib = self; }; - }); - defaultModules = [ ({ ... }: { # Let 'nixos-version --json' know about the Git revision @@ -197,7 +195,7 @@ }; }; }) // { - inherit lib; + lib = import ./flake/lib.nix inputs; overlays = import ./flake/overlays.nix inputs; diff --git a/flake/lib.nix b/flake/lib.nix new file mode 100644 index 0000000..083c56c --- /dev/null +++ b/flake/lib.nix @@ -0,0 +1,7 @@ +{ self, nixpkgs, ... } @ inputs: +let + lib = nixpkgs.lib.extend (final: _: { + my = import "${self}/lib" { inherit inputs; pkgs = nixpkgs; lib = final; }; + }); +in +lib From fc02519c4fe82eae6f9ab69121de4ff7ac37e3a0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 10:49:12 +0000 Subject: [PATCH 0759/1588] flake: move 'checks' to 'flake/' --- .envrc | 3 +++ flake.nix | 16 +--------------- flake/checks.nix | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 flake/checks.nix diff --git a/.envrc b/.envrc index c912bf2..7ac50c1 100644 --- a/.envrc +++ b/.envrc @@ -3,4 +3,7 @@ if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then fi use flake + +watch_file ./flake/checks.nix + eval "$shellHooks" diff --git a/flake.nix b/flake.nix index 43914fa..3545b66 100644 --- a/flake.nix +++ b/flake.nix @@ -120,21 +120,7 @@ default = apps.diff-flake; }; - checks = { - pre-commit = pre-commit-hooks.lib.${system}.run { - src = ./.; - - hooks = { - nixpkgs-fmt = { - enable = true; - }; - - shellcheck = { - enable = true; - }; - }; - }; - }; + checks = import ./flake/checks.nix inputs system; devShells = { default = pkgs.mkShell { diff --git a/flake/checks.nix b/flake/checks.nix new file mode 100644 index 0000000..ea77620 --- /dev/null +++ b/flake/checks.nix @@ -0,0 +1,17 @@ +{ self, pre-commit-hooks, ... }: +system: +{ + pre-commit = pre-commit-hooks.lib.${system}.run { + src = self; + + hooks = { + nixpkgs-fmt = { + enable = true; + }; + + shellcheck = { + enable = true; + }; + }; + }; +} From 1ae2bca4452bb85915946806bedda623c352fbfd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 10:51:26 +0000 Subject: [PATCH 0760/1588] flake: move 'devShells' to 'flake/' --- .envrc | 1 + flake.nix | 13 +------------ flake/dev-shells.nix | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 12 deletions(-) create mode 100644 flake/dev-shells.nix diff --git a/.envrc b/.envrc index 7ac50c1..95ed6fb 100644 --- a/.envrc +++ b/.envrc @@ -5,5 +5,6 @@ fi use flake watch_file ./flake/checks.nix +watch_file ./flake/dev-shells.nix eval "$shellHooks" diff --git a/flake.nix b/flake.nix index 3545b66..49d5583 100644 --- a/flake.nix +++ b/flake.nix @@ -122,18 +122,7 @@ checks = import ./flake/checks.nix inputs system; - devShells = { - default = pkgs.mkShell { - name = "NixOS-config"; - - nativeBuildInputs = with pkgs; [ - gitAndTools.pre-commit - nixpkgs-fmt - ]; - - inherit (self.checks.${system}.pre-commit) shellHook; - }; - }; + devShells = import ./flake/dev-shells.nix inputs system; packages = let diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix new file mode 100644 index 0000000..064f57d --- /dev/null +++ b/flake/dev-shells.nix @@ -0,0 +1,17 @@ +{ self, nixpkgs, ... }: +system: +let + pkgs = nixpkgs.legacyPackages.${system}; +in +{ + default = pkgs.mkShell { + name = "NixOS-config"; + + nativeBuildInputs = with pkgs; [ + gitAndTools.pre-commit + nixpkgs-fmt + ]; + + inherit (self.checks.${system}.pre-commit) shellHook; + }; +} From 40fff4b13a930560424b39a582f9a43ff102fb1e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 10:53:47 +0000 Subject: [PATCH 0761/1588] flake: move 'packages' to 'flake/' --- flake.nix | 12 +----------- flake/packages.nix | 10 ++++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) create mode 100644 flake/packages.nix diff --git a/flake.nix b/flake.nix index 49d5583..fb2c6f4 100644 --- a/flake.nix +++ b/flake.nix @@ -111,9 +111,6 @@ in eachMySystem (system: - let - pkgs = nixpkgs.legacyPackages.${system}; - in rec { apps = { diff-flake = futils.lib.mkApp { drv = packages.diff-flake; }; @@ -124,14 +121,7 @@ devShells = import ./flake/dev-shells.nix inputs system; - packages = - let - inherit (futils.lib) filterPackages flattenTree; - packages = import ./pkgs { inherit pkgs; }; - flattenedPackages = flattenTree packages; - finalPackages = filterPackages system flattenedPackages; - in - finalPackages; + packages = import ./flake/packages.nix inputs system; # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { diff --git a/flake/packages.nix b/flake/packages.nix new file mode 100644 index 0000000..1eccfa3 --- /dev/null +++ b/flake/packages.nix @@ -0,0 +1,10 @@ +{ self, futils, nixpkgs, ... }: +system: +let + inherit (futils.lib) filterPackages flattenTree; + pkgs = nixpkgs.legacyPackages.${system}; + packages = import "${self}/pkgs" { inherit pkgs; }; + flattenedPackages = flattenTree packages; + finalPackages = filterPackages system flattenedPackages; +in +finalPackages From d14f96d584d116f197b658566c81af9f845db7ac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 12:20:14 +0000 Subject: [PATCH 0762/1588] flake: move 'nixosConfigurations' to 'flake/' --- flake.nix | 33 +-------------------------------- flake/nixos.nix | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 32 deletions(-) create mode 100644 flake/nixos.nix diff --git a/flake.nix b/flake.nix index fb2c6f4..cf397ba 100644 --- a/flake.nix +++ b/flake.nix @@ -80,34 +80,6 @@ eachMySystem = eachSystem mySystems; - defaultModules = [ - ({ ... }: { - # Let 'nixos-version --json' know about the Git revision - system.configurationRevision = self.rev or "dirty"; - }) - { - nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ - nur.overlay - ]; - } - # Include generic settings - ./modules - # Include bundles of settings - ./profiles - ]; - - buildHost = name: system: lib.nixosSystem { - inherit system; - modules = defaultModules ++ [ - (./. + "/machines/${name}") - ]; - specialArgs = { - # Use my extended lib in NixOS configuration - inherit lib; - # Inject inputs to use them in global registry - inherit inputs; - }; - }; in eachMySystem (system: @@ -164,9 +136,6 @@ overlays = import ./flake/overlays.nix inputs; - nixosConfigurations = lib.mapAttrs buildHost { - aramis = "x86_64-linux"; - porthos = "x86_64-linux"; - }; + nixosConfigurations = import ./flake/nixos.nix inputs; }; } diff --git a/flake/nixos.nix b/flake/nixos.nix new file mode 100644 index 0000000..2b117e1 --- /dev/null +++ b/flake/nixos.nix @@ -0,0 +1,37 @@ +{ self, nixpkgs, nur, ... } @ inputs: +let + inherit (self) lib; + + defaultModules = [ + ({ ... }: { + # Let 'nixos-version --json' know about the Git revision + system.configurationRevision = self.rev or "dirty"; + }) + { + nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ + nur.overlay + ]; + } + # Include generic settings + "${self}/modules" + # Include bundles of settings + "${self}/profiles" + ]; + + buildHost = name: system: lib.nixosSystem { + inherit system; + modules = defaultModules ++ [ + "${self}/machines/${name}" + ]; + specialArgs = { + # Use my extended lib in NixOS configuration + inherit lib; + # Inject inputs to use them in global registry + inherit inputs; + }; + }; +in +lib.mapAttrs buildHost { + aramis = "x86_64-linux"; + porthos = "x86_64-linux"; +} From 9f6a9d2ff7e5c6b625b9d8911becb1757cc345b3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 7 Mar 2023 14:25:46 +0000 Subject: [PATCH 0763/1588] flake: move ouputs logic to 'flake/' --- flake.nix | 73 +----------------------------------------- flake/default.nix | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 72 deletions(-) create mode 100644 flake/default.nix diff --git a/flake.nix b/flake.nix index cf397ba..63ade9a 100644 --- a/flake.nix +++ b/flake.nix @@ -66,76 +66,5 @@ , nur , pre-commit-hooks }: - let - inherit (self) lib; - - inherit (futils.lib) eachSystem system; - - mySystems = [ - system.aarch64-darwin - system.aarch64-linux - system.x86_64-darwin - system.x86_64-linux - ]; - - eachMySystem = eachSystem mySystems; - - in - eachMySystem - (system: - rec { - apps = { - diff-flake = futils.lib.mkApp { drv = packages.diff-flake; }; - default = apps.diff-flake; - }; - - checks = import ./flake/checks.nix inputs system; - - devShells = import ./flake/dev-shells.nix inputs system; - - packages = import ./flake/packages.nix inputs system; - - # Work-around for https://github.com/nix-community/home-manager/issues/3075 - legacyPackages = { - homeConfigurations = { - ambroisie = home-manager.lib.homeManagerConfiguration { - # Work-around for home-manager - # * not letting me set `lib` as an extraSpecialArgs - # * not respecting `nixpkgs.overlays` [1] - # [1]: https://github.com/nix-community/home-manager/issues/2954 - pkgs = import nixpkgs { - inherit system; - - overlays = (lib.attrValues self.overlays) ++ [ - nur.overlay - ]; - }; - - modules = [ - ./home - { - # The basics - home.username = "ambroisie"; - home.homeDirectory = "/home/ambroisie"; - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - # This is a generic linux install - targets.genericLinux.enable = true; - } - ]; - - extraSpecialArgs = { - # Inject inputs to use them in global registry - inherit inputs; - }; - }; - }; - }; - }) // { - lib = import ./flake/lib.nix inputs; - - overlays = import ./flake/overlays.nix inputs; - - nixosConfigurations = import ./flake/nixos.nix inputs; - }; + import ./flake inputs; } diff --git a/flake/default.nix b/flake/default.nix new file mode 100644 index 0000000..1e0ef12 --- /dev/null +++ b/flake/default.nix @@ -0,0 +1,80 @@ +{ self +, futils +, home-manager +, nixpkgs +, nur +, ... +} @ inputs: +let + inherit (self) lib; + + inherit (futils.lib) eachSystem system; + + mySystems = [ + system.aarch64-darwin + system.aarch64-linux + system.x86_64-darwin + system.x86_64-linux + ]; + + eachMySystem = eachSystem mySystems; + + systemDependant = system: { + apps = { + diff-flake = futils.lib.mkApp { drv = self.packages.${system}.diff-flake; }; + default = self.apps.${system}.diff-flake; + }; + + checks = import ./checks.nix inputs system; + + devShells = import ./dev-shells.nix inputs system; + + packages = import ./packages.nix inputs system; + + # Work-around for https://github.com/nix-community/home-manager/issues/3075 + legacyPackages = { + homeConfigurations = { + ambroisie = home-manager.lib.homeManagerConfiguration { + # Work-around for home-manager + # * not letting me set `lib` as an extraSpecialArgs + # * not respecting `nixpkgs.overlays` [1] + # [1]: https://github.com/nix-community/home-manager/issues/2954 + pkgs = import nixpkgs { + inherit system; + + overlays = (lib.attrValues self.overlays) ++ [ + nur.overlay + ]; + }; + + modules = [ + "${self}/home" + { + # The basics + home.username = "ambroisie"; + home.homeDirectory = "/home/ambroisie"; + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + # This is a generic linux install + targets.genericLinux.enable = true; + } + ]; + + extraSpecialArgs = { + # Inject inputs to use them in global registry + inherit inputs; + }; + }; + }; + }; + }; + + systemIndependant = { + lib = import ./lib.nix inputs; + + overlays = import ./overlays.nix inputs; + + nixosConfigurations = import ./nixos.nix inputs; + }; +in +(eachMySystem systemDependant) // systemIndependant From 4786552e8c5469b00ab8e4aecb99e551974d87eb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 13:39:28 +0000 Subject: [PATCH 0764/1588] home: zsh: verify history expansion This helps when I absentmindedly run a command which contains exclamation points. --- home/zsh/options.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/zsh/options.zsh b/home/zsh/options.zsh index e1e31f4..98aaa6b 100644 --- a/home/zsh/options.zsh +++ b/home/zsh/options.zsh @@ -8,6 +8,8 @@ setopt autopushd pushdminus pushdsilent setopt rcquotes # Single word commands can resume an existing job setopt autoresume +# Show history expansion before running a command +setopt hist_verify # Append commands to history as they are exectuted setopt inc_append_history_time # Remove useless whitespace from commands From ff66361f658f3af589c90925d9459b48d9696c95 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 13:40:55 +0000 Subject: [PATCH 0765/1588] home: zsh: use extended history I have `inc_append_history_time` set, so I should use extended history... --- home/zsh/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 84eb7a3..60798cf 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -22,7 +22,7 @@ in history = { size = 500000; save = 500000; - extended = false; + extended = true; ignoreSpace = true; ignoreDups = true; share = false; From 7dd221cc9312e3d083f1580ee7900e632ae846e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 13:41:26 +0000 Subject: [PATCH 0766/1588] home: zsh: expire duplicates first --- home/zsh/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 60798cf..057d900 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -23,6 +23,7 @@ in size = 500000; save = 500000; extended = true; + expireDuplicatesFirst = true; ignoreSpace = true; ignoreDups = true; share = false; From f1a7e9fd93c0bd2c1792f320a63f0eb08158dd96 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 13:41:45 +0000 Subject: [PATCH 0767/1588] home: zsh: enable history sharing --- home/zsh/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 057d900..c854c40 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -26,7 +26,7 @@ in expireDuplicatesFirst = true; ignoreSpace = true; ignoreDups = true; - share = false; + share = true; path = "${config.xdg.dataHome}/zsh/zsh_history"; }; From 2d2f7291382d5f8f0f4de01a1adb2184a67cd4f4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 14:36:27 +0000 Subject: [PATCH 0768/1588] home: zsh: don't hard-code '$XDG_CONFIG_HOME' --- home/zsh/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index c854c40..6713458 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -1,6 +1,14 @@ { config, pkgs, lib, ... }: let cfg = config.my.home.zsh; + + # Have a nice relative path for XDG_CONFIG_HOME, without leading `/` + relativeXdgConfig = + let + noHome = lib.removePrefix config.home.homeDirectory; + noSlash = lib.removePrefix "/"; + in + noSlash (noHome config.xdg.configHome); in { options.my.home.zsh = with lib; { @@ -16,7 +24,7 @@ in programs.zsh = { enable = true; - dotDir = ".config/zsh"; # Don't clutter $HOME + dotDir = "${relativeXdgConfig}/zsh"; # Don't clutter $HOME enableCompletion = true; history = { From fafbb93ea9cbafdeb8ebe63bde7e37312de9b6e0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 11 Mar 2023 20:43:39 +0000 Subject: [PATCH 0769/1588] modules: home: use named 'nixosModules' --- modules/home/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/default.nix b/modules/home/default.nix index a287f35..1e0e0aa 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -7,7 +7,7 @@ let in { imports = [ - inputs.home-manager.nixosModule # enable home-manager options + inputs.home-manager.nixosModules.home-manager # enable home-manager options (lib.mkAliasOptionModule aliasPath actualPath) # simplify setting home options ]; From 1e4d4650e22b4d4bf8a3d4a680561dc0a2559ea7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 11 Mar 2023 21:54:18 +0000 Subject: [PATCH 0770/1588] home: zsh: disable shared history I know I just activated it, but I can't get used to it... I would like to have a mixture of it: * Be able to search across *all* shell histories when using Ctrl-r. * Only go up/down my session's shell history when using Ctrl-n/Ctrl-p. Enabling shared history gets me the first one, but means I can't limit my up/down history to just the one session. Disabling shared history means that I can't search across all shell histories, but keeps my up/down history tidier. All-in-all I like the second one better. --- home/zsh/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 6713458..4760d39 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -34,7 +34,7 @@ in expireDuplicatesFirst = true; ignoreSpace = true; ignoreDups = true; - share = true; + share = false; path = "${config.xdg.dataHome}/zsh/zsh_history"; }; From 623bb6c8936eb6fc4ac71cdb26c8f82d93e1990f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 13 Mar 2023 15:46:45 +0000 Subject: [PATCH 0771/1588] home: vim: git: attach to untracked buffers Turns outs it looks way more discreet now. Whether that's due to an update to the plug-in or my changing colorscheme, I don't know. --- home/vim/plugin/settings/git.vim | 3 --- 1 file changed, 3 deletions(-) diff --git a/home/vim/plugin/settings/git.vim b/home/vim/plugin/settings/git.vim index 8839fc9..e67197f 100644 --- a/home/vim/plugin/settings/git.vim +++ b/home/vim/plugin/settings/git.vim @@ -3,9 +3,6 @@ local gitsigns = require('gitsigns') local wk = require("which-key") gitsigns.setup({ - -- I dislike the full-green sign column when this happens - attach_to_untracked = false, - current_line_blame_opts = { -- Show the blame quickly delay = 100, From e8c52175b64e2aeffa594e53f61a4b4df73eb2fa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 14 Mar 2023 17:00:31 +0000 Subject: [PATCH 0772/1588] home: git: add 'root' alias --- home/git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/git/default.nix b/home/git/default.nix index 04d7786..c63b2c8 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -35,6 +35,7 @@ in pick = "log -p -G"; push-new = "!git push -u origin " + ''"$(git branch | grep '^* ' | cut -f2- -d' ')"''; + root = "git rev-parse --show-toplevel"; }; lfs.enable = true; From eb75fcfa3f5885c447cbd3b0084ae7cabf9bae47 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 15:09:51 +0000 Subject: [PATCH 0773/1588] home: zsh: enable slash squeezing --- home/zsh/completion-styles.zsh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/zsh/completion-styles.zsh b/home/zsh/completion-styles.zsh index a0181a5..156bc2c 100644 --- a/home/zsh/completion-styles.zsh +++ b/home/zsh/completion-styles.zsh @@ -8,6 +8,8 @@ zstyle ':completion:*' menu select zstyle ':completion:*' group-name '' # Keep directories and files separated zstyle ':completion:*' list-dirs-first true +# Expand '//' to '/' +zstyle ':completion:*' squeeze-slashes true # Add colors to processes for kill completion zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' From ca047bfe97e45be02e8e109e1d2d3207e6829871 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 15:11:12 +0000 Subject: [PATCH 0774/1588] home: zsh: use more readable option names Since they ignore underscores, this is more readable. --- home/zsh/options.zsh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home/zsh/options.zsh b/home/zsh/options.zsh index 98aaa6b..82047ff 100644 --- a/home/zsh/options.zsh +++ b/home/zsh/options.zsh @@ -1,13 +1,13 @@ # Show an error when a globbing expansion doesn't find any match setopt nomatch # List on ambiguous completion and Insert first match immediately -setopt autolist menucomplete +setopt auto_list menu_complete # Use pushd when cd-ing around -setopt autopushd pushdminus pushdsilent +setopt auto_pushd pushd_minus pushd_silent # Use single quotes in string without the weird escape tricks -setopt rcquotes +setopt rc_quotes # Single word commands can resume an existing job -setopt autoresume +setopt auto_resume # Show history expansion before running a command setopt hist_verify # Append commands to history as they are exectuted @@ -15,4 +15,4 @@ setopt inc_append_history_time # Remove useless whitespace from commands setopt hist_reduce_blanks # Those options aren't wanted -unsetopt beep extendedglob notify +unsetopt beep extended_glob notify From bc5fa3f6796b0ab43dd408ac921279afce3c503c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 17:15:57 +0000 Subject: [PATCH 0775/1588] home: zsh: use terminfo for mappings --- home/zsh/extra-mappings.zsh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index 8c0d886..2158250 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -1,5 +1,13 @@ -# Fix delete key not working -bindkey "\e[3~" delete-char +# shellcheck disable=2154 + +# The expression: (( ${+terminfo} )) should never fail, but does if we +# don't have a tty, perhaps due to a bug in the zsh/terminfo module. +if [[ "$TERM" != emacs ]] && (( ${+terminfo} )) 2>/dev/null; then + # Fix delete key not working + ((${+terminfo[kdch1]})) && bindkey -- "${terminfo[kdch1]}" delete-char + # Enable Shift-Tab to go backwards in completion list + ((${+terminfo[kcbt]})) && bindkey -- "${terminfo[kcbt]}" reverse-menu-complete +fi # Fix Ctrl+u killing from the cursor instead of the whole line bindkey '^u' backward-kill-line From 2431f8f207c83a081c6a54e4eba72e0a4dc78057 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 17:23:04 +0000 Subject: [PATCH 0776/1588] home: zsh: refactor 'terminfo' handling This is more readable. Largely inspired by oh-my-zsh. --- home/zsh/extra-mappings.zsh | 40 +++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index 2158250..aa7fb54 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -1,14 +1,5 @@ # shellcheck disable=2154 -# The expression: (( ${+terminfo} )) should never fail, but does if we -# don't have a tty, perhaps due to a bug in the zsh/terminfo module. -if [[ "$TERM" != emacs ]] && (( ${+terminfo} )) 2>/dev/null; then - # Fix delete key not working - ((${+terminfo[kdch1]})) && bindkey -- "${terminfo[kdch1]}" delete-char - # Enable Shift-Tab to go backwards in completion list - ((${+terminfo[kcbt]})) && bindkey -- "${terminfo[kcbt]}" reverse-menu-complete -fi - # Fix Ctrl+u killing from the cursor instead of the whole line bindkey '^u' backward-kill-line @@ -18,5 +9,34 @@ zle -N edit-command-line bindkey '^xe' edit-command-line bindkey '^x^e' edit-command-line +# The expression: (( ${+terminfo} )) should never fail, but does if we +# don't have a tty, perhaps due to a bug in the zsh/terminfo module. +if ! { [ "$TERM" != emacs ] && (( ${+terminfo} )) 2>/dev/null; }; then + return +fi + +# Fix delete key not working +if [ -n "${terminfo[kdch1]}" ]; then + bindkey -M emacs "${terminfo[kdch1]}" delete-char + bindkey -M viins "${terminfo[kdch1]}" delete-char + bindkey -M vicmd "${terminfo[kdch1]}" delete-char +else + bindkey -M emacs "^[[3~" delete-char + bindkey -M viins "^[[3~" delete-char + bindkey -M vicmd "^[[3~" delete-char + + bindkey -M emacs "^[3;5~" delete-char + bindkey -M viins "^[3;5~" delete-char + bindkey -M vicmd "^[3;5~" delete-char +fi + # Enable Shift-Tab to go backwards in completion list -bindkey '^[[Z' reverse-menu-complete +if [ -n "${terminfo[kcbt]}" ]; then + bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete + bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete +else + bindkey -M emacs '^[[Z' reverse-menu-complete + bindkey -M viins '^[[Z' reverse-menu-complete + bindkey -M vicmd '^[[Z' reverse-menu-complete +fi From af8f3c814bf1bf67ce16051bc4e525665136a47e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 17:24:33 +0000 Subject: [PATCH 0777/1588] home: zsh: ensure application mode with zle --- home/zsh/extra-mappings.zsh | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index aa7fb54..c8682cc 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -15,6 +15,19 @@ if ! { [ "$TERM" != emacs ] && (( ${+terminfo} )) 2>/dev/null; }; then return fi +# Make sure that the terminal is in application mode when zle is active, since +# only then values from $terminfo are valid +if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then + autoload -Uz add-zle-hook-widget + + zle_application_mode_start() { echoti smkx; } + zle_application_mode_stop() { echoti rmkx; } + + add-zle-hook-widget -Uz zle-line-init zle_application_mode_start + add-zle-hook-widget -Uz zle-line-finish zle_application_mode_stop +fi + + # Fix delete key not working if [ -n "${terminfo[kdch1]}" ]; then bindkey -M emacs "${terminfo[kdch1]}" delete-char From c48f6261beb9f1b1afe356379e2c251b7b255380 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 17:26:09 +0000 Subject: [PATCH 0778/1588] home: zsh: add page{up,down} mapping --- home/zsh/extra-mappings.zsh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index c8682cc..d970b7d 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -53,3 +53,17 @@ else bindkey -M viins '^[[Z' reverse-menu-complete bindkey -M vicmd '^[[Z' reverse-menu-complete fi + +# PageUp goes backwards in history +if [ -n "${terminfo[kpp]}" ]; then + bindkey -M emacs "${terminfo[kpp]}" up-line-or-history + bindkey -M viins "${terminfo[kpp]}" up-line-or-history + bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history +fi + +# PageDown goes forward in history +if [ -n "${terminfo[knp]}" ]; then + bindkey -M emacs "${terminfo[knp]}" down-line-or-history + bindkey -M viins "${terminfo[knp]}" down-line-or-history + bindkey -M vicmd "${terminfo[knp]}" down-line-or-history +fi From 69fbc438c17dcb1acac64070df6b1faed1b27c8e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 17:27:25 +0000 Subject: [PATCH 0779/1588] home: zsh: add {home,end} mapping --- home/zsh/extra-mappings.zsh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index d970b7d..6378f7a 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -67,3 +67,17 @@ if [ -n "${terminfo[knp]}" ]; then bindkey -M viins "${terminfo[knp]}" down-line-or-history bindkey -M vicmd "${terminfo[knp]}" down-line-or-history fi + +# Home goes to the beginning of the line +if [ -n "${terminfo[khome]}" ]; then + bindkey -M emacs "${terminfo[khome]}" beginning-of-line + bindkey -M viins "${terminfo[khome]}" beginning-of-line + bindkey -M vicmd "${terminfo[khome]}" beginning-of-line +fi + +# End goes to the end of the line +if [ -n "${terminfo[kend]}" ]; then + bindkey -M emacs "${terminfo[kend]}" end-of-line + bindkey -M viins "${terminfo[kend]}" end-of-line + bindkey -M vicmd "${terminfo[kend]}" end-of-line +fi From 4f0a619921315e83b94090671a88ecf5be9bff9f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 17:39:13 +0000 Subject: [PATCH 0780/1588] home: zsh: add ctrl-delete mapping --- home/zsh/extra-mappings.zsh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index 6378f7a..baf72db 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -43,6 +43,17 @@ else bindkey -M vicmd "^[3;5~" delete-char fi +# Ctrl-Delete to delete a whole word forward +if [ -n "${terminfo[kdl1]}" ]; then + bindkey -M emacs "${terminfo[kdl1]}" kill-word + bindkey -M viins "${terminfo[kdl1]}" kill-word + bindkey -M vicmd "${terminfo[kdl1]}" kill-word +else + bindkey -M emacs '^[[3;5~' kill-word + bindkey -M viins '^[[3;5~' kill-word + bindkey -M vicmd '^[[3;5~' kill-word +fi + # Enable Shift-Tab to go backwards in completion list if [ -n "${terminfo[kcbt]}" ]; then bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete From 1db162f272064162c9be2368170c28ec26af639c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 15 Mar 2023 17:39:29 +0000 Subject: [PATCH 0781/1588] home: zsh: add ctrl-{left,right} mapping --- home/zsh/extra-mappings.zsh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index baf72db..2e9c18f 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -65,6 +65,28 @@ else bindkey -M vicmd '^[[Z' reverse-menu-complete fi +# Ctrl-Left moves backward one word +if [ -n "${terminfo[kLFT5]}" ]; then + bindkey -M emacs "${terminfo[kLFT5]}" backward-word + bindkey -M viins "${terminfo[kLFT5]}" backward-word + bindkey -M vicmd "${terminfo[kLFT5]}" backward-word +else + bindkey -M emacs '^[[1;5D' backward-word + bindkey -M viins '^[[1;5D' backward-word + bindkey -M vicmd '^[[1;5D' backward-word +fi + +# Ctrl-Right moves forward one word +if [ -n "${terminfo[kRIT5]}" ]; then + bindkey -M emacs "${terminfo[kRIT5]}" forward-word + bindkey -M viins "${terminfo[kRIT5]}" forward-word + bindkey -M vicmd "${terminfo[kRIT5]}" forward-word +else + bindkey -M emacs '^[[1;5C' forward-word + bindkey -M viins '^[[1;5C' forward-word + bindkey -M vicmd '^[[1;5C' forward-word +fi + # PageUp goes backwards in history if [ -n "${terminfo[kpp]}" ]; then bindkey -M emacs "${terminfo[kpp]}" up-line-or-history From 5413bf7fbb8d9392be4b685296ae19908c993350 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 10:18:59 +0000 Subject: [PATCH 0782/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 585ce5f..0986ddb 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1677247280, - "narHash": "sha256-sa+8MtoAOSLsWP9vf0qiJUyMovIEYgDzHE8TkoK04Hk=", + "lastModified": 1677969766, + "narHash": "sha256-AIp/ZYZMNLDZR/H7iiAlaGpu4lcXsVt9JQpBlf43HRY=", "owner": "ryantm", "repo": "agenix", - "rev": "833f87c8ff574a29aea3e091045cbaed3cf86bc1", + "rev": "03b51fe8e459a946c4b88dcfb6446e45efb2c24e", "type": "github" }, "original": { @@ -107,11 +107,11 @@ ] }, "locked": { - "lastModified": 1677104801, - "narHash": "sha256-2V5nKOYVFMYlseYdDKiEaww2xqcE0GtS1ax3SoUX99I=", + "lastModified": 1678271387, + "narHash": "sha256-H2dv/i1LRlunRtrESirELzfPWdlG/6ElDB1ksO529H4=", "owner": "nix-community", "repo": "home-manager", - "rev": "4295fdfa6b0005c32f2e1f0b732faf5810c1bc7f", + "rev": "36999b8d19eb6eebb41983ef017d7e0095316af2", "type": "github" }, "original": { @@ -123,11 +123,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1677063315, - "narHash": "sha256-qiB4ajTeAOVnVSAwCNEEkoybrAlA+cpeiBxLobHndE8=", + "lastModified": 1678293141, + "narHash": "sha256-lLlQHaR0y+q6nd6kfpydPTGHhl1rS9nU9OQmztzKOYs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "988cc958c57ce4350ec248d2d53087777f9e1949", + "rev": "c90c4025bb6e0c4eaf438128a3b2640314b1c58d", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nur": { "locked": { - "lastModified": 1677243766, - "narHash": "sha256-a+2V68cLjb951pYBEGbQGEVBcgti40uWtxTVnzvGFhY=", + "lastModified": 1678352374, + "narHash": "sha256-jm4BVy84iE76fbvIiR6o0s/Vz1y99AJlXWOj9S4c1MA=", "owner": "nix-community", "repo": "NUR", - "rev": "9bde3171aeb5954b7955fcb09b231f53caf76b54", + "rev": "347c26fcb8e1ea05fa38a38f1f8a3e5b0305c59a", "type": "github" }, "original": { @@ -168,11 +168,11 @@ ] }, "locked": { - "lastModified": 1677160285, - "narHash": "sha256-tBzpCjMP+P3Y3nKLYvdBkXBg3KvTMo3gvi8tLQaqXVY=", + "lastModified": 1677832802, + "narHash": "sha256-XQf+k6mBYTiQUjWRf/0fozy5InAs03O1b30adCpWeXs=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "2bd861ab81469428d9c823ef72c4bb08372dd2c4", + "rev": "382bee738397ca005206eefa36922cc10df8a21c", "type": "github" }, "original": { From b56674728f91cb0dc811ac1c0b5ab93cc977e819 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 11:33:19 +0000 Subject: [PATCH 0783/1588] pkgs: diff-flake: 0.2.0 -> 0.3.0 Change how `devShells` is handled: always build for the current system and instead query for the name of the shell that should be built. --- pkgs/diff-flake/default.nix | 2 +- pkgs/diff-flake/diff-flake | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 39e8921..f24bc59 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -1,7 +1,7 @@ { lib, coreutils, git, gnused, makeWrapper, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "diff-flake"; - version = "0.2.0"; + version = "0.3.0"; src = ./diff-flake; diff --git a/pkgs/diff-flake/diff-flake b/pkgs/diff-flake/diff-flake index 7c106c1..ffb5c65 100755 --- a/pkgs/diff-flake/diff-flake +++ b/pkgs/diff-flake/diff-flake @@ -22,13 +22,9 @@ sanitize_output() { add_shell() { local SYSTEM - if [ $# -gt 0 ] && [ -n "$1" ]; then - SYSTEM="$1" - else - SYSTEM="$(nix eval --raw --impure --expr 'builtins.currentSystem')" - fi + SYSTEM="$(nix eval --raw --impure --expr 'builtins.currentSystem')" # Use 'inputDerivation' attribute to make sure that it is build-able - FLAKE_OUTPUTS+=("devShells.$SYSTEM.default.inputDerivation") + FLAKE_OUTPUTS+=("devShells.$SYSTEM.$1.inputDerivation") } add_host() { @@ -56,10 +52,10 @@ usage() { print_err " specify the name of a NixOS output configuration whose" print_err " closure should be diffed, can be used multiple times" print_err " if no host name is given, defaults to current hostname" - print_err " --shell [system]" - print_err " specify a specific system's devShell output whose closure" + print_err " --shell [name]" + print_err " specify a specific devShell configuration name whose closure" print_err " should be diffed, can be used multiple times" - print_err " if no system is given, defaults to current system" + print_err " if no name is given, defaults to 'default'" print_err "" print_err "when no flake outputs are specified, automatically queries for" print_err "all NixOS configurations, and devShell for current system" @@ -108,7 +104,7 @@ parse_args() { add_shell "$1" shift else - add_shell + add_shell "default" fi ;; --) @@ -152,7 +148,7 @@ if [ "${#FLAKE_OUTPUTS[@]}" -eq 0 ]; then for host in $(list_nixos_configurations); do add_host "$host" done - add_shell + add_shell "default" fi for out in "${FLAKE_OUTPUTS[@]}"; do From a5da0abbc2a76b53c14e47e88db43e6dbcaaea02 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 11:41:30 +0000 Subject: [PATCH 0784/1588] pkgs: diff-flake: 0.3.0 -> 0.3.1 Add all dev shells when run without any arguments. --- pkgs/diff-flake/default.nix | 2 +- pkgs/diff-flake/diff-flake | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index f24bc59..ce38934 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -1,7 +1,7 @@ { lib, coreutils, git, gnused, makeWrapper, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "diff-flake"; - version = "0.3.0"; + version = "0.3.1"; src = ./diff-flake; diff --git a/pkgs/diff-flake/diff-flake b/pkgs/diff-flake/diff-flake index ffb5c65..fa4a88f 100755 --- a/pkgs/diff-flake/diff-flake +++ b/pkgs/diff-flake/diff-flake @@ -20,11 +20,13 @@ sanitize_output() { fi } +current_system() { + nix eval --raw --impure --expr 'builtins.currentSystem' +} + add_shell() { - local SYSTEM - SYSTEM="$(nix eval --raw --impure --expr 'builtins.currentSystem')" # Use 'inputDerivation' attribute to make sure that it is build-able - FLAKE_OUTPUTS+=("devShells.$SYSTEM.$1.inputDerivation") + FLAKE_OUTPUTS+=("devShells.$(current_system).\"$1\".inputDerivation") } add_host() { @@ -58,7 +60,7 @@ usage() { print_err " if no name is given, defaults to 'default'" print_err "" print_err "when no flake outputs are specified, automatically queries for" - print_err "all NixOS configurations, and devShell for current system" + print_err "all NixOS configurations, and devShells for current system" } is_option() { @@ -126,6 +128,12 @@ list_nixos_configurations() { --raw } +list_dev_shells() { + nix eval ".#devShells.$(current_system)" \ + --apply 'attrs: with builtins; concatStringsSep "\n" (attrNames attrs)' \ + --raw +} + diff_output() { local PREV NEW; PREV="$(mktemp --dry-run)" @@ -148,7 +156,9 @@ if [ "${#FLAKE_OUTPUTS[@]}" -eq 0 ]; then for host in $(list_nixos_configurations); do add_host "$host" done - add_shell "default" + for shell in $(list_dev_shells); do + add_shell "$shell" + done fi for out in "${FLAKE_OUTPUTS[@]}"; do From 66fc43f7ca62159ac5faf8ce34e2cd0eb0edba15 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 11:45:04 +0000 Subject: [PATCH 0785/1588] pkgs: diff-flake: 0.3.1 -> 0.4.0 Add home-manager configurations. --- pkgs/diff-flake/default.nix | 2 +- pkgs/diff-flake/diff-flake | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index ce38934..429b09a 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -1,7 +1,7 @@ { lib, coreutils, git, gnused, makeWrapper, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "diff-flake"; - version = "0.3.1"; + version = "0.4.0"; src = ./diff-flake; diff --git a/pkgs/diff-flake/diff-flake b/pkgs/diff-flake/diff-flake index fa4a88f..2dfc67d 100755 --- a/pkgs/diff-flake/diff-flake +++ b/pkgs/diff-flake/diff-flake @@ -29,6 +29,10 @@ add_shell() { FLAKE_OUTPUTS+=("devShells.$(current_system).\"$1\".inputDerivation") } +add_home() { + FLAKE_OUTPUTS+=("homeConfigurations.$1.activationPackage") +} + add_host() { FLAKE_OUTPUTS+=("nixosConfigurations.$1.config.system.build.toplevel") } @@ -50,6 +54,10 @@ usage() { print_err " -p, --previous-rev" print_err " which git revision should be considered the 'previous' state," print_err " defaults to HEAD~" + print_err " --home [name]" + print_err " specify the name of a home-manager output configuration whose" + print_err " closure should be diffed, can be used multiple times" + print_err " if no configuration name is given, defaults to current username" print_err " --host [name]" print_err " specify the name of a NixOS output configuration whose" print_err " closure should be diffed, can be used multiple times" @@ -93,6 +101,14 @@ parse_args() { PREVIOUS_REV="$(git rev-parse "$1")" shift ;; + --home) + if [ $# -gt 0 ] && ! is_option "$1"; then + add_home "$1" + shift + else + add_home "$USER" + fi + ;; --host) if [ $# -gt 0 ] && ! is_option "$1"; then add_host "$1" @@ -122,6 +138,12 @@ parse_args() { done } +list_home_configurations() { + nix eval '.#homeConfigurations' \ + --apply 'attrs: with builtins; concatStringsSep "\n" (attrNames attrs)' \ + --raw +} + list_nixos_configurations() { nix eval '.#nixosConfigurations' \ --apply 'attrs: with builtins; concatStringsSep "\n" (attrNames attrs)' \ @@ -153,6 +175,9 @@ diff_output() { parse_args "$@" if [ "${#FLAKE_OUTPUTS[@]}" -eq 0 ]; then + for home in $(list_home_configurations); do + add_home "$home" + done for host in $(list_nixos_configurations); do add_host "$host" done From 08740e846f6f4ee0c2d28d74788f32847347d04c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 11:47:18 +0000 Subject: [PATCH 0786/1588] pkgs: diff-flake: quote attribute names Since we don't know if they contain `.` or other characters that might need quoting. --- pkgs/diff-flake/diff-flake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/diff-flake/diff-flake b/pkgs/diff-flake/diff-flake index 2dfc67d..f3b41d6 100755 --- a/pkgs/diff-flake/diff-flake +++ b/pkgs/diff-flake/diff-flake @@ -26,15 +26,15 @@ current_system() { add_shell() { # Use 'inputDerivation' attribute to make sure that it is build-able - FLAKE_OUTPUTS+=("devShells.$(current_system).\"$1\".inputDerivation") + FLAKE_OUTPUTS+=("devShells.\"$(current_system)\".\"$1\".inputDerivation") } add_home() { - FLAKE_OUTPUTS+=("homeConfigurations.$1.activationPackage") + FLAKE_OUTPUTS+=("homeConfigurations.\"$1\".activationPackage") } add_host() { - FLAKE_OUTPUTS+=("nixosConfigurations.$1.config.system.build.toplevel") + FLAKE_OUTPUTS+=("nixosConfigurations.\"$1\".config.system.build.toplevel") } usage() { @@ -151,7 +151,7 @@ list_nixos_configurations() { } list_dev_shells() { - nix eval ".#devShells.$(current_system)" \ + nix eval ".#devShells.\"$(current_system)\"" \ --apply 'attrs: with builtins; concatStringsSep "\n" (attrNames attrs)' \ --raw } From 464ed92b00cf4bab860d92d3787abdfe54543e52 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 11:48:48 +0000 Subject: [PATCH 0787/1588] pkgs: diff-flake: re-order functions This makes it more consistent across the entire file, and follows alphabetical order (home -> host -> shell). --- pkgs/diff-flake/diff-flake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/diff-flake/diff-flake b/pkgs/diff-flake/diff-flake index f3b41d6..0572b4e 100755 --- a/pkgs/diff-flake/diff-flake +++ b/pkgs/diff-flake/diff-flake @@ -24,11 +24,6 @@ current_system() { nix eval --raw --impure --expr 'builtins.currentSystem' } -add_shell() { - # Use 'inputDerivation' attribute to make sure that it is build-able - FLAKE_OUTPUTS+=("devShells.\"$(current_system)\".\"$1\".inputDerivation") -} - add_home() { FLAKE_OUTPUTS+=("homeConfigurations.\"$1\".activationPackage") } @@ -37,6 +32,11 @@ add_host() { FLAKE_OUTPUTS+=("nixosConfigurations.\"$1\".config.system.build.toplevel") } +add_shell() { + # Use 'inputDerivation' attribute to make sure that it is build-able + FLAKE_OUTPUTS+=("devShells.\"$(current_system)\".\"$1\".inputDerivation") +} + usage() { print_err "Usage: $0 [option]... [-- [nix build option]...]" print_err "" From 20341a31297732bc015e0b8f2806206c5c9cf93e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 16:39:13 +0000 Subject: [PATCH 0788/1588] refactor: 'with lib.my' -> 'with lib' --- home/bat/default.nix | 4 ++-- home/documentation/default.nix | 4 ++-- home/git/default.nix | 4 ++-- home/htop/default.nix | 4 ++-- home/jq/default.nix | 4 ++-- home/nix-index/default.nix | 4 ++-- home/pager/default.nix | 4 ++-- home/ssh/default.nix | 4 ++-- home/tmux/default.nix | 4 ++-- home/vim/default.nix | 4 ++-- home/xdg/default.nix | 4 ++-- modules/system/documentation/default.nix | 14 +++++++------- 12 files changed, 29 insertions(+), 29 deletions(-) diff --git a/home/bat/default.nix b/home/bat/default.nix index ac58c06..67d80c2 100644 --- a/home/bat/default.nix +++ b/home/bat/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.bat; in { - options.my.home.bat = with lib.my; { - enable = mkDisableOption "bat configuration"; + options.my.home.bat = with lib; { + enable = my.mkDisableOption "bat configuration"; }; config.programs.bat = lib.mkIf cfg.enable { diff --git a/home/documentation/default.nix b/home/documentation/default.nix index e31665f..1a305e0 100644 --- a/home/documentation/default.nix +++ b/home/documentation/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.documentation; in { - options.my.home.documentation = with lib.my; { - enable = mkDisableOption "documentation integration"; + options.my.home.documentation = with lib; { + enable = my.mkDisableOption "documentation integration"; }; # Add documentation for user packages diff --git a/home/git/default.nix b/home/git/default.nix index c63b2c8..f63adaf 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -5,8 +5,8 @@ let inherit (lib.my) mkMailAddress; in { - options.my.home.git = with lib.my; { - enable = mkDisableOption "git configuration"; + options.my.home.git = with lib; { + enable = my.mkDisableOption "git configuration"; }; config.home.packages = with pkgs; lib.mkIf cfg.enable [ diff --git a/home/htop/default.nix b/home/htop/default.nix index c4b33a9..570fa47 100644 --- a/home/htop/default.nix +++ b/home/htop/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.htop; in { - options.my.home.htop = with lib.my; { - enable = mkDisableOption "htop configuration"; + options.my.home.htop = with lib; { + enable = my.mkDisableOption "htop configuration"; }; config.programs.htop = lib.mkIf cfg.enable { diff --git a/home/jq/default.nix b/home/jq/default.nix index d8bd59b..57e266f 100644 --- a/home/jq/default.nix +++ b/home/jq/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.jq; in { - options.my.home.jq = with lib.my; { - enable = mkDisableOption "jq configuration"; + options.my.home.jq = with lib; { + enable = my.mkDisableOption "jq configuration"; }; config.programs.jq = lib.mkIf cfg.enable { diff --git a/home/nix-index/default.nix b/home/nix-index/default.nix index ae6f338..383621e 100644 --- a/home/nix-index/default.nix +++ b/home/nix-index/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.nix-index; in { - options.my.home.nix-index = with lib.my; { - enable = mkDisableOption "nix-index configuration"; + options.my.home.nix-index = with lib; { + enable = my.mkDisableOption "nix-index configuration"; }; config.programs.nix-index = lib.mkIf cfg.enable { diff --git a/home/pager/default.nix b/home/pager/default.nix index d40210a..8c621b1 100644 --- a/home/pager/default.nix +++ b/home/pager/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.pager; in { - options.my.home.pager = with lib.my; { - enable = mkDisableOption "pager configuration"; + options.my.home.pager = with lib; { + enable = my.mkDisableOption "pager configuration"; }; diff --git a/home/ssh/default.nix b/home/ssh/default.nix index bbf1bfc..fa30baa 100644 --- a/home/ssh/default.nix +++ b/home/ssh/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.ssh; in { - options.my.home.ssh = with lib.my; { - enable = mkDisableOption "ssh configuration"; + options.my.home.ssh = with lib; { + enable = my.mkDisableOption "ssh configuration"; }; config.programs.ssh = lib.mkIf cfg.enable { diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 88b35fb..7234bb2 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -7,8 +7,8 @@ let ]; in { - options.my.home.tmux = with lib.my; { - enable = mkDisableOption "tmux terminal multiplexer"; + options.my.home.tmux = with lib; { + enable = my.mkDisableOption "tmux terminal multiplexer"; }; config.programs.tmux = lib.mkIf cfg.enable { diff --git a/home/vim/default.nix b/home/vim/default.nix index 159c080..1ac9652 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -18,8 +18,8 @@ let ]; in { - options.my.home.vim = with lib.my; { - enable = mkDisableOption "vim configuration"; + options.my.home.vim = with lib; { + enable = my.mkDisableOption "vim configuration"; }; config.programs.neovim = lib.mkIf cfg.enable { diff --git a/home/xdg/default.nix b/home/xdg/default.nix index b335842..bf49bd4 100644 --- a/home/xdg/default.nix +++ b/home/xdg/default.nix @@ -3,8 +3,8 @@ let cfg = config.my.home.xdg; in { - options.my.home.xdg = with lib.my; { - enable = mkDisableOption "XDG configuration"; + options.my.home.xdg = with lib; { + enable = my.mkDisableOption "XDG configuration"; }; config.xdg = lib.mkIf cfg.enable { diff --git a/modules/system/documentation/default.nix b/modules/system/documentation/default.nix index 74886ad..304c811 100644 --- a/modules/system/documentation/default.nix +++ b/modules/system/documentation/default.nix @@ -3,20 +3,20 @@ let cfg = config.my.system.documentation; in { - options.my.system.documentation = with lib.my; { - enable = mkDisableOption "Documentation integration"; + options.my.system.documentation = with lib; { + enable = my.mkDisableOption "Documentation integration"; - dev.enable = mkDisableOption "Documentation aimed at developers"; + dev.enable = my.mkDisableOption "Documentation aimed at developers"; - info.enable = mkDisableOption "Documentation aimed at developers"; + info.enable = my.mkDisableOption "Documentation aimed at developers"; man = { - enable = mkDisableOption "Documentation aimed at developers"; + enable = my.mkDisableOption "Documentation aimed at developers"; - linux = mkDisableOption "Linux man pages (section 2 & 3)"; + linux = my.mkDisableOption "Linux man pages (section 2 & 3)"; }; - nixos.enable = mkDisableOption "NixOS documentation"; + nixos.enable = my.mkDisableOption "NixOS documentation"; }; config = lib.mkIf cfg.enable { From 05973b93ffcacf864793b53ac0b4c143dd8c8769 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 15:45:15 +0000 Subject: [PATCH 0789/1588] home: tmux: add 'enabledPassthrough' This is useful for cases where some programs expect to be able to use the tmux passthrough escape sequences by using the tmux passthrough sequence. One such example is `osc52` script I packaged. However I like the idea of tmux filtering all escape sequences by default, so it's not enabled by default. --- home/tmux/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 7234bb2..8e673b1 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -9,6 +9,8 @@ in { options.my.home.tmux = with lib; { enable = my.mkDisableOption "tmux terminal multiplexer"; + + enabledPassthrough = mkEnableOption "tmux DCS passthrough sequence"; }; config.programs.tmux = lib.mkIf cfg.enable { @@ -63,6 +65,13 @@ in # Allow any application to send OSC52 escapes to set the clipboard set -s set-clipboard on + + ${ + lib.optionalString cfg.enabledPassthrough '' + # Allow any application to use the tmux DCS for passthrough + set -g allow-passthrough on + '' + } ''; }; } From b3d90be8b1dc458ab1606df74f15642686a5968d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 21:30:47 +0100 Subject: [PATCH 0790/1588] modules: services: nginx: add 'redirect' option --- modules/services/nginx/default.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index 332a936..3a633e7 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -26,6 +26,15 @@ let ''; }; + redirect = mkOption { + type = with types; nullOr str; + default = null; + example = "https://example.com"; + description = '' + Which domain to redirect to (301 response), for this virtual host. + ''; + }; + root = mkOption { type = with types; nullOr path; default = null; @@ -176,7 +185,7 @@ in assertions = [ ] ++ (lib.flip builtins.map cfg.virtualHosts ({ subdomain, ... } @ args: let - conflicts = [ "port" "root" ]; + conflicts = [ "port" "root" "redirect" ]; optionsNotNull = builtins.map (v: args.${v} != null) conflicts; optionsSet = lib.filter lib.id optionsNotNull; in @@ -249,6 +258,10 @@ in (lib.optionalAttrs (args.root != null) { inherit (args) root; }) + # Redirect to a different domain + (lib.optionalAttrs (args.redirect != null) { + locations."/".return = "301 ${args.redirect}$request_uri"; + }) # VHost specific configuration args.extraConfig # SSO configuration From e50b259a701213835dbe5a530601cee9bd865a49 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 21:31:19 +0100 Subject: [PATCH 0791/1588] modules: services: gitea: change domain to 'git.*' Because cool URLs don't change [1], setup a re-directed for it. [1]: https://www.w3.org/Provider/Style/URI.html --- modules/services/gitea/default.nix | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/modules/services/gitea/default.nix b/modules/services/gitea/default.nix index 5e14175..9349cd1 100644 --- a/modules/services/gitea/default.nix +++ b/modules/services/gitea/default.nix @@ -50,7 +50,7 @@ in services.gitea = let inherit (config.networking) domain; - giteaDomain = "gitea.${domain}"; + giteaDomain = "git.${domain}"; in { enable = true; @@ -112,11 +112,16 @@ in }; users.groups.git = { }; - # Proxy to Gitea my.services.nginx.virtualHosts = [ + # Proxy to Gitea + { + subdomain = "git"; + inherit (cfg) port; + } + # Redirect `gitea.` to actual forge subdomain { subdomain = "gitea"; - inherit (cfg) port; + redirect = config.services.gitea.rootUrl; } ]; From 89256fa29bb8a2ae95ce8491543f9e86bd5d3d03 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 21:37:52 +0100 Subject: [PATCH 0792/1588] pkgs: use 'git.*' subdomain Since I've changed the official subdomain for my forge, let's update it. --- pkgs/bw-pass/default.nix | 2 +- pkgs/change-audio/default.nix | 2 +- pkgs/change-backlight/default.nix | 2 +- pkgs/comma/default.nix | 2 +- pkgs/diff-flake/default.nix | 2 +- pkgs/dragger/default.nix | 2 +- pkgs/drone-rsync/default.nix | 2 +- pkgs/i3-get-window-criteria/default.nix | 2 +- pkgs/matrix-notifier/default.nix | 2 +- pkgs/osc52/default.nix | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix index fcd9d08..12cf4f1 100644 --- a/pkgs/bw-pass/default.nix +++ b/pkgs/bw-pass/default.nix @@ -34,7 +34,7 @@ stdenvNoCC.mkDerivation rec { meta = with lib; { description = "A simple script to query a password from bitwarden"; - homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index 3b3359d..2e3535c 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -33,7 +33,7 @@ stdenvNoCC.mkDerivation rec { description = '' A script to change the volume and notify about it ''; - homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; diff --git a/pkgs/change-backlight/default.nix b/pkgs/change-backlight/default.nix index 83ba2fe..2e2efa1 100644 --- a/pkgs/change-backlight/default.nix +++ b/pkgs/change-backlight/default.nix @@ -33,7 +33,7 @@ stdenvNoCC.mkDerivation rec { description = '' A script to change a screen's brightness and notify about it ''; - homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix index d61c884..1b6f9e5 100644 --- a/pkgs/comma/default.nix +++ b/pkgs/comma/default.nix @@ -32,7 +32,7 @@ stdenvNoCC.mkDerivation rec { meta = with lib; { mainProgram = ","; description = "A simple script inspired by Shopify's comma, for modern Nix"; - homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 429b09a..124b081 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -32,7 +32,7 @@ stdenvNoCC.mkDerivation rec { meta = with lib; { description = "Nix flake helper to visualize changes in closures"; - homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; diff --git a/pkgs/dragger/default.nix b/pkgs/dragger/default.nix index e535944..094e541 100644 --- a/pkgs/dragger/default.nix +++ b/pkgs/dragger/default.nix @@ -21,7 +21,7 @@ qt5.mkDerivation rec { meta = with lib; { description = "A CLI drag-and-drop tool"; - homepage = "https://gitea.belanyi.fr/ambroisie/dragger"; + homepage = "https://git.belanyi.fr/ambroisie/dragger"; license = licenses.mit; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; diff --git a/pkgs/drone-rsync/default.nix b/pkgs/drone-rsync/default.nix index cb70fed..7b2a664 100644 --- a/pkgs/drone-rsync/default.nix +++ b/pkgs/drone-rsync/default.nix @@ -32,7 +32,7 @@ stdenvNoCC.mkDerivation rec { meta = with lib; { description = "Helper script to run rsync in a CI pipeline"; - homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix index 8b082d4..6542e8a 100644 --- a/pkgs/i3-get-window-criteria/default.nix +++ b/pkgs/i3-get-window-criteria/default.nix @@ -33,7 +33,7 @@ stdenvNoCC.mkDerivation rec { meta = with lib; { description = "Helper script to query i3 window criterions"; - homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index 76765a7..c17bf28 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -36,7 +36,7 @@ stdenvNoCC.mkDerivation rec { A very simple bash script that can be used to send a message to a Matrix room ''; - homepage = "https://gitea.belanyi.fr/ambroisie/${pname}"; + homepage = "https://git.belanyi.fr/ambroisie/${pname}"; license = licenses.mit; platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; diff --git a/pkgs/osc52/default.nix b/pkgs/osc52/default.nix index e9ef598..d4bf771 100644 --- a/pkgs/osc52/default.nix +++ b/pkgs/osc52/default.nix @@ -32,7 +32,7 @@ stdenvNoCC.mkDerivation rec { description = '' A script to copy strings using the OSC52 escape sequence ''; - homepage = "https://gitea.belanyi.fr/ambroisie/nix-config"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; From 70e235dfccaa273e4c541809adb98cc95376a7f5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 16 Mar 2023 21:40:00 +0100 Subject: [PATCH 0793/1588] modules: secrets: drone: modify gitea domain Since I've changed the official subdomain for my forge, let's update it. --- modules/secrets/drone/gitea.age | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/secrets/drone/gitea.age b/modules/secrets/drone/gitea.age index d1c14e7..90ff83b 100644 --- a/modules/secrets/drone/gitea.age +++ b/modules/secrets/drone/gitea.age @@ -1,10 +1,10 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg vLLu1kbzyGxr5sU/Dl4xf0uGO+gVsvODiqEJU21lwyI -LbJO4Go+8G7/UtFWjv+x7Nqhn7n+kge/oHP8dGCBnM8 --> ssh-ed25519 jPowng obxX4ojPwp/DaerFzVbK5hUnshebh/chriT3a7uqYEw -x9jpbBefJZHz8o1lEkr48XhT7sVAM5tq3tZ8M91CDDo --> eZ.G`B3W-grease 6k|.\v -D0u3P4oCpPNnueqZAAYn71xEUGWlavwLTrEXJ+2tdYOX6BwwFReOlMZWIA+FikmZ -8Pg7dHnbYPWc33jMjv3UnNsxCGUsDw9C9NkI5vfZSLvUxQ ---- Cea09ivsGZeoWif7xbdrvfoGsoiD+tRh7HQsOL75cqE -tFa|G,o6$U"wi߹Swgh6^*=[g1%Vup-{`P(?&QV#KeX4dK:xt0LsbÆ6ޜ [ #E[>)|cwq+cw1$^I(wG9>jI(y!@OƉkEz]Pk \ No newline at end of file +-> ssh-ed25519 jPowng 3HjtINU02yfyvpaoTtCG/G3cgymFvKWf3qf/grw/+24 +G+KnHtrt5A3U1ICTpSceoE+FJSj6hAb4mjp2DkfDWr0 +-> ssh-ed25519 cKojmg CXrsCxJxWNIhvvwYjZ1rrSYTwLNMR3kWdPk5ExHEfFA +OJi3tFcnpdGvxc8ETcGt4lbFJiUU+lR3AqN4Y8PItDk +-> p-grease 7 AQO{DHzj j$B&+ dc +Q7zhy6hOfkEh6XgYNHQrH3zma1BLxnEKDopPAOnBoPFRfi7c +--- ZsL5zf7/jJ6yPor9j1V0iV/bXxgAsxlXsxDYwCqrLSk +AO&z?;\1f*='!.VV=ιvzY"P ; )K0Bs}hR=O*M2o \ No newline at end of file From c3c2a346067ac9dcddafe289cf0b4b916fe96cb6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Mar 2023 21:33:28 +0000 Subject: [PATCH 0794/1588] overlays: add 'i3status-rust-main-program' --- overlays/default.nix | 2 +- overlays/i3status-rust-main-program/default.nix | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 overlays/i3status-rust-main-program/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index 7984ac0..cf20bee 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - # NOTE: no overlays at the moment + i3status-rust-main-program = import ./i3status-rust-main-program; } diff --git a/overlays/i3status-rust-main-program/default.nix b/overlays/i3status-rust-main-program/default.nix new file mode 100644 index 0000000..b6bbb02 --- /dev/null +++ b/overlays/i3status-rust-main-program/default.nix @@ -0,0 +1,8 @@ +final: prev: +{ + i3status-rust = prev.i3status-rust.overrideAttrs (oa: { + meta = oa.meta or { } // { + mainProgram = "i3status-rs"; + }; + }); +} From 704df6b826013055a8b3a995e7a9c87a20a02bfb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Mar 2023 21:52:56 +0000 Subject: [PATCH 0795/1588] overlays: add 'i3status-rust_0_22' The latest version introduced breaking changes, let's do that correctly. --- overlays/default.nix | 2 ++ overlays/i3status-rust_0_22/default.nix | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 overlays/i3status-rust_0_22/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index cf20bee..4b033d0 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,5 @@ { i3status-rust-main-program = import ./i3status-rust-main-program; + + i3status-rust_0_22 = import ./i3status-rust_0_22; } diff --git a/overlays/i3status-rust_0_22/default.nix b/overlays/i3status-rust_0_22/default.nix new file mode 100644 index 0000000..b255c1f --- /dev/null +++ b/overlays/i3status-rust_0_22/default.nix @@ -0,0 +1,21 @@ +final: prev: +{ + i3status-rust_0_22 = final.i3status-rust.overrideAttrs (oa: rec { + name = "i3status-rust-${version}"; + version = "0.22.0"; + + src = final.fetchFromGitHub { + owner = "greshake"; + repo = "i3status"; + rev = "refs/tags/v${version}"; + hash = "sha256-9Fp5k14QkV1CwLSL1nUUu6NYIpjfvI9vNJRYNqvyr3M="; + }; + + # overrideAttrs with buildRustPackage is stupid + cargoDeps = oa.cargoDeps.overrideAttrs (_: { + name = "${name}-vendor.tar.gz"; + inherit src; + outputHash = "sha256-MzosatZ4yPHAdANqOBPVW2wpjnojLo9B9N9o4DtU0Iw="; + }); + }); +} From 887428fddd334f82ba97bf1aa541d9f7a1961a86 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Mar 2023 22:25:07 +0000 Subject: [PATCH 0796/1588] home: wm: i3: use explicit path to bar config The v0.30.0 is about to change how it resolves the configuration path, so make it explicit to ease the transition and simplify later. --- home/wm/i3/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 94d7202..d2d9916 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -80,7 +80,7 @@ in in [ { - statusCommand = "${i3status-rs} ${barConfigPath}"; + statusCommand = "${i3status-rs} ~/${barConfigPath}"; trayOutput = "primary"; position = "top"; From 176ff5d6e392ca687c0511339407819d6ec1aa7b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Mar 2023 21:14:26 +0000 Subject: [PATCH 0797/1588] flake: bump inputs Since the v0.30.0 version of `i3status-rust` was a breaking change, pin the package to v0.22.0 for now. --- flake.lock | 30 +++++++++++++++--------------- home/wm/i3bar/default.nix | 2 ++ 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 0986ddb..caccc7d 100644 --- a/flake.lock +++ b/flake.lock @@ -62,11 +62,11 @@ }, "futils": { "locked": { - "lastModified": 1676283394, - "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", + "lastModified": 1678901627, + "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", "owner": "numtide", "repo": "flake-utils", - "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", + "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", "type": "github" }, "original": { @@ -107,11 +107,11 @@ ] }, "locked": { - "lastModified": 1678271387, - "narHash": "sha256-H2dv/i1LRlunRtrESirELzfPWdlG/6ElDB1ksO529H4=", + "lastModified": 1679246045, + "narHash": "sha256-6yK601M0RpG9o0CqCl++9OCWEH+q+va6lEncLNg8iQ4=", "owner": "nix-community", "repo": "home-manager", - "rev": "36999b8d19eb6eebb41983ef017d7e0095316af2", + "rev": "bcc417b80f3bef3e0cf21160850525d8a03387e6", "type": "github" }, "original": { @@ -123,11 +123,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1678293141, - "narHash": "sha256-lLlQHaR0y+q6nd6kfpydPTGHhl1rS9nU9OQmztzKOYs=", + "lastModified": 1679172431, + "narHash": "sha256-XEh5gIt5otaUbEAPUY5DILUTyWe1goAyeqQtmwaFPyI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c90c4025bb6e0c4eaf438128a3b2640314b1c58d", + "rev": "1603d11595a232205f03d46e635d919d1e1ec5b9", "type": "github" }, "original": { @@ -139,11 +139,11 @@ }, "nur": { "locked": { - "lastModified": 1678352374, - "narHash": "sha256-jm4BVy84iE76fbvIiR6o0s/Vz1y99AJlXWOj9S4c1MA=", + "lastModified": 1679247967, + "narHash": "sha256-xRG+RFHTi6sRXO3vVzbyXmwBgS5NdIJ8OxEOb/u9BsA=", "owner": "nix-community", "repo": "NUR", - "rev": "347c26fcb8e1ea05fa38a38f1f8a3e5b0305c59a", + "rev": "21aeb2c533a08aa107e8c708bff7c765b5a1ea36", "type": "github" }, "original": { @@ -168,11 +168,11 @@ ] }, "locked": { - "lastModified": 1677832802, - "narHash": "sha256-XQf+k6mBYTiQUjWRf/0fozy5InAs03O1b30adCpWeXs=", + "lastModified": 1678976941, + "narHash": "sha256-skNr08frCwN9NO+7I77MjOHHAw+L410/37JknNld+W4=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "382bee738397ca005206eefa36922cc10df8a21c", + "rev": "32b1dbedfd77892a6e375737ef04d8efba634e9e", "type": "github" }, "original": { diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index 8c1e879..e21f171 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -13,6 +13,8 @@ in programs.i3status-rust = { enable = true; + package = pkgs.i3status-rust_0_22; + bars = { top = { icons = "awesome5"; From 7cec58e21560fff01534c8b39895e9c23c9727da Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Mar 2023 21:14:59 +0000 Subject: [PATCH 0798/1588] home: wm: i3bar: update to v0.30.X This should be equivalent to the previous version's configuration, since v0.30.0 introduced a lot of breaking changes. --- home/wm/i3bar/default.nix | 47 ++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index e21f171..d4fa107 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -13,8 +13,6 @@ in programs.i3status-rust = { enable = true; - package = pkgs.i3status-rust_0_22; - bars = { top = { icons = "awesome5"; @@ -22,28 +20,40 @@ in blocks = builtins.filter (attr: attr != { }) [ { block = "music"; - buttons = [ "prev" "play" "next" ]; - max_width = 50; - dynamic_width = true; - hide_when_empty = true; + # This format seems to remove the block when not playing, somehow + format = "{ $icon $combo.str(max_w:50,rot_interval:0.5) $prev $play $next |}"; + click = [ + { + button = "play"; + action = "music_play"; + } + { + button = "prev"; + action = "music_prev"; + } + { + button = "next"; + action = "music_next"; + } + ]; } (lib.optionalAttrs config.my.home.bluetooth.enable { block = "bluetooth"; mac = "4C:87:5D:06:40:D9"; - hide_disconnected = true; - format = "Boson {percentage}"; + format = " $icon Boson{ $percentage|} "; + disconnected_format = ""; }) (lib.optionalAttrs config.my.home.bluetooth.enable { block = "bluetooth"; mac = "94:DB:56:00:EE:93"; - hide_disconnected = true; - format = "Protons {percentage}"; + format = " $icon Protons{ $percentage|} "; + disconnected_format = ""; }) (lib.optionalAttrs config.my.home.bluetooth.enable { block = "bluetooth"; mac = "F7:78:BA:76:52:F7"; - hide_disconnected = true; - format = "MX Ergo {percentage}"; + format = " $icon MX Ergo{ $percentage|} "; + disconnected_format = ""; }) { block = "cpu"; @@ -53,7 +63,7 @@ in } { block = "net"; - format = "{ssid} {ip} {signal_strength}"; + format = " $icon $ssid $ip $signal_strength "; } { block = "backlight"; @@ -61,17 +71,17 @@ in } { block = "battery"; - format = "{percentage} ({time})"; - full_format = "{percentage}"; + format = " $percentage ($time) "; + full_format = " $icon $percentage "; } { block = "temperature"; - collapsed = false; + format_alt = " $icon "; } { block = "sound"; device_kind = "source"; # Microphone status - format = ""; # Only show icon + format = " $icon "; } { block = "sound"; @@ -79,7 +89,8 @@ in } { block = "time"; - format = "%F %T"; + format = " $icon $timestamp.datetime(f:'%F %T') "; + interval = 5; } ]; }; From 2e9704ed1ddb476dce7b1f1b302aaed37a4168e6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Mar 2023 21:14:12 +0000 Subject: [PATCH 0799/1588] home: wm: i3: simplify status command The v0.30.0 of `i3status-rs` automatically resolves a configuration name inside its configuration directory, making this much simpler. --- home/wm/i3/default.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index d2d9916..0c77830 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -73,14 +73,11 @@ in bars = let - barConfigPath = - config.xdg.configFile."i3status-rust/config-top.toml".target; - i3status-rs = - "${config.programs.i3status-rust.package}/bin/i3status-rs"; + i3status-rs = lib.getExe config.programs.i3status-rust.package; in [ { - statusCommand = "${i3status-rs} ~/${barConfigPath}"; + statusCommand = "${i3status-rs} config-top.toml"; trayOutput = "primary"; position = "top"; From a166a5b18b56537bcc04f6637b920dd2a8eb575a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 19 Mar 2023 22:28:45 +0000 Subject: [PATCH 0800/1588] overlays: remove 'i3status-rust_0_22' We don't need it now that we updated to the latest version. This reverts commit 704df6b826013055a8b3a995e7a9c87a20a02bfb. --- overlays/default.nix | 2 -- overlays/i3status-rust_0_22/default.nix | 21 --------------------- 2 files changed, 23 deletions(-) delete mode 100644 overlays/i3status-rust_0_22/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index 4b033d0..cf20bee 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,5 +1,3 @@ { i3status-rust-main-program = import ./i3status-rust-main-program; - - i3status-rust_0_22 = import ./i3status-rust_0_22; } diff --git a/overlays/i3status-rust_0_22/default.nix b/overlays/i3status-rust_0_22/default.nix deleted file mode 100644 index b255c1f..0000000 --- a/overlays/i3status-rust_0_22/default.nix +++ /dev/null @@ -1,21 +0,0 @@ -final: prev: -{ - i3status-rust_0_22 = final.i3status-rust.overrideAttrs (oa: rec { - name = "i3status-rust-${version}"; - version = "0.22.0"; - - src = final.fetchFromGitHub { - owner = "greshake"; - repo = "i3status"; - rev = "refs/tags/v${version}"; - hash = "sha256-9Fp5k14QkV1CwLSL1nUUu6NYIpjfvI9vNJRYNqvyr3M="; - }; - - # overrideAttrs with buildRustPackage is stupid - cargoDeps = oa.cargoDeps.overrideAttrs (_: { - name = "${name}-vendor.tar.gz"; - inherit src; - outputHash = "sha256-MzosatZ4yPHAdANqOBPVW2wpjnojLo9B9N9o4DtU0Iw="; - }); - }); -} From 0241bfc781d36ea12d67d7a730a042d9422a3fc2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 17 Mar 2023 13:08:01 +0000 Subject: [PATCH 0801/1588] home: vim: modify 'unimpaired' quickfix mappings --- home/vim/after/plugin/mappings/unimpaired.vim | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/home/vim/after/plugin/mappings/unimpaired.vim b/home/vim/after/plugin/mappings/unimpaired.vim index c4bb35b..069adb0 100644 --- a/home/vim/after/plugin/mappings/unimpaired.vim +++ b/home/vim/after/plugin/mappings/unimpaired.vim @@ -70,13 +70,13 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", - e = { "lwindow", "Location list" }, - f = { "cwindow", "Quickfix list" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", n = "Line numbers", r = "Relative line numbers", + p = { "lwindow", "Location list" }, + q = { "cwindow", "Quickfix list" }, u = "Cursor column", v = "Virtual editing", w = "Text wrapping", @@ -88,12 +88,12 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", - e = { "lclose", "Location list" }, - f = { "cclose", "Quickfix list" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", n = "Line numbers", + p = { "lclose", "Location list" }, + q = { "cclose", "Quickfix list" }, r = "Relative line numbers", u = "Cursor column", v = "Virtual editing", @@ -106,12 +106,12 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", - e = { "(qf_loc_toggle)", "Location list" }, - f = { "(qf_qf_toggle)", "Quickfix list" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", n = "Line numbers", + p = { "(qf_loc_toggle)", "Location list" }, + q = { "(qf_qf_toggle)", "Quickfix list" }, r = "Relative line numbers", u = "Cursor column", v = "Virtual editing", From 84fc1601c572ce10fada687d7bbae068ccd537b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 17 Mar 2023 16:53:19 +0000 Subject: [PATCH 0802/1588] home: vim: 'unimpaired' mappings for formatting I'll migrate to calling the lua API directly if they stop expecting a non-nil argument. --- home/vim/after/plugin/mappings/unimpaired.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/vim/after/plugin/mappings/unimpaired.vim b/home/vim/after/plugin/mappings/unimpaired.vim index 069adb0..12029cc 100644 --- a/home/vim/after/plugin/mappings/unimpaired.vim +++ b/home/vim/after/plugin/mappings/unimpaired.vim @@ -70,6 +70,7 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", + f = { "FormatEnable", "LSP Formatting" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", @@ -88,6 +89,7 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", + f = { "FormatDisable", "LSP Formatting" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", @@ -106,6 +108,7 @@ local keys = { b = "Light background", c = "Cursor line", d = "Diff", + f = { "FormatToggle", "LSP Formatting" }, h = "Search high-lighting", i = "Case insensitive search", l = "List mode", From 92438d35f66c162cab31c3a2e9a0b90d9ef1e103 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:41:00 +0000 Subject: [PATCH 0803/1588] flake: add 'flake-parts' --- flake.lock | 22 ++++++++++++++++++++++ flake.nix | 11 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/flake.lock b/flake.lock index caccc7d..e14f4e4 100644 --- a/flake.lock +++ b/flake.lock @@ -60,6 +60,27 @@ "type": "github" } }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1677714448, + "narHash": "sha256-Hq8qLs8xFu28aDjytfxjdC96bZ6pds21Yy09mSC156I=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "dc531e3a9ce757041e1afaff8ee932725ca60002", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "ref": "main", + "repo": "flake-parts", + "type": "github" + } + }, "futils": { "locked": { "lastModified": 1678901627, @@ -185,6 +206,7 @@ "root": { "inputs": { "agenix": "agenix", + "flake-parts": "flake-parts", "futils": "futils", "home-manager": "home-manager", "nixpkgs": "nixpkgs", diff --git a/flake.nix b/flake.nix index 63ade9a..058ac27 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,16 @@ }; }; + flake-parts = { + type = "github"; + owner = "hercules-ci"; + repo = "flake-parts"; + ref = "main"; + inputs = { + nixpkgs-lib.follows = "nixpkgs"; + }; + }; + futils = { type = "github"; owner = "numtide"; @@ -60,6 +70,7 @@ inputs @ { self , agenix + , flake-parts , futils , home-manager , nixpkgs From 922c6e75ca06a9dc6e92a1699b18c72b9b3e567b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:45:49 +0000 Subject: [PATCH 0804/1588] flake: use 'flake-parts' --- flake/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/flake/default.nix b/flake/default.nix index 1e0ef12..ff2832a 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -1,4 +1,5 @@ { self +, flake-parts , futils , home-manager , nixpkgs @@ -77,4 +78,8 @@ let nixosConfigurations = import ./nixos.nix inputs; }; in -(eachMySystem systemDependant) // systemIndependant +flake-parts.lib.mkFlake { inherit inputs; } { + systems = mySystems; + + flake = (eachMySystem systemDependant) // systemIndependant; +} From a88c99b9d7abca9f89fa0eb5fccf70bd4407ce4f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:46:10 +0000 Subject: [PATCH 0805/1588] flake: overlays: convert to 'flake-parts' --- flake/default.nix | 6 ++++-- flake/overlays.nix | 5 +++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index ff2832a..f3219e3 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -73,13 +73,15 @@ let systemIndependant = { lib = import ./lib.nix inputs; - overlays = import ./overlays.nix inputs; - nixosConfigurations = import ./nixos.nix inputs; }; in flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; + imports = [ + ./overlays.nix + ]; + flake = (eachMySystem systemDependant) // systemIndependant; } diff --git a/flake/overlays.nix b/flake/overlays.nix index bb5e546..1a5e8ba 100644 --- a/flake/overlays.nix +++ b/flake/overlays.nix @@ -1,5 +1,4 @@ { self, ... }: - let default-overlays = import "${self}/overlays"; @@ -13,4 +12,6 @@ let }; }; in -default-overlays // additional-overlays +{ + flake.overlays = default-overlays // additional-overlays; +} From b2f3bc955c0f83bc9a40d3f663963ea318d6bf37 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:47:47 +0000 Subject: [PATCH 0806/1588] flake: lib: convert to 'flake-parts' --- flake/default.nix | 3 +-- flake/lib.nix | 8 ++++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index f3219e3..9134085 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -71,8 +71,6 @@ let }; systemIndependant = { - lib = import ./lib.nix inputs; - nixosConfigurations = import ./nixos.nix inputs; }; in @@ -80,6 +78,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; imports = [ + ./lib.nix ./overlays.nix ]; diff --git a/flake/lib.nix b/flake/lib.nix index 083c56c..12e89c3 100644 --- a/flake/lib.nix +++ b/flake/lib.nix @@ -1,7 +1,11 @@ -{ self, nixpkgs, ... } @ inputs: +{ self, inputs, ... }: let + inherit (inputs) nixpkgs; + lib = nixpkgs.lib.extend (final: _: { my = import "${self}/lib" { inherit inputs; pkgs = nixpkgs; lib = final; }; }); in -lib +{ + flake.lib = lib; +} From 730e4abf1750e52399cb91aa961d567f8613f90f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:53:21 +0000 Subject: [PATCH 0807/1588] flake: nixos: convert to 'flake-parts' --- flake/default.nix | 7 ++----- flake/nixos.nix | 12 +++++++----- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index 9134085..c73378f 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -69,18 +69,15 @@ let }; }; }; - - systemIndependant = { - nixosConfigurations = import ./nixos.nix inputs; - }; in flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; imports = [ ./lib.nix + ./nixos.nix ./overlays.nix ]; - flake = (eachMySystem systemDependant) // systemIndependant; + flake = (eachMySystem systemDependant); } diff --git a/flake/nixos.nix b/flake/nixos.nix index 2b117e1..84dce54 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -1,4 +1,4 @@ -{ self, nixpkgs, nur, ... } @ inputs: +{ self, inputs, ... }: let inherit (self) lib; @@ -9,7 +9,7 @@ let }) { nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ - nur.overlay + inputs.nur.overlay ]; } # Include generic settings @@ -31,7 +31,9 @@ let }; }; in -lib.mapAttrs buildHost { - aramis = "x86_64-linux"; - porthos = "x86_64-linux"; +{ + flake.nixosConfigurations = lib.mapAttrs buildHost { + aramis = "x86_64-linux"; + porthos = "x86_64-linux"; + }; } From e1e6c39bf17f10b8290b7a9346ed3dd8564c1652 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 17:59:15 +0000 Subject: [PATCH 0808/1588] flake: checks: convert to 'flake-parts' --- flake/checks.nix | 24 ++++++++++++++---------- flake/default.nix | 3 +-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/flake/checks.nix b/flake/checks.nix index ea77620..50f20b1 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -1,16 +1,20 @@ -{ self, pre-commit-hooks, ... }: -system: +{ self, inputs, ... }: { - pre-commit = pre-commit-hooks.lib.${system}.run { - src = self; + perSystem = { system, ... }: { + checks = { + # NOTE: seems like inputs' does not output the 'lib' attribute + pre-commit = inputs.pre-commit-hooks.lib.${system}.run { + src = self; - hooks = { - nixpkgs-fmt = { - enable = true; - }; + hooks = { + nixpkgs-fmt = { + enable = true; + }; - shellcheck = { - enable = true; + shellcheck = { + enable = true; + }; + }; }; }; }; diff --git a/flake/default.nix b/flake/default.nix index c73378f..3ba2b19 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -26,8 +26,6 @@ let default = self.apps.${system}.diff-flake; }; - checks = import ./checks.nix inputs system; - devShells = import ./dev-shells.nix inputs system; packages = import ./packages.nix inputs system; @@ -74,6 +72,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; imports = [ + ./checks.nix ./lib.nix ./nixos.nix ./overlays.nix From 2b969f772671c264e6f746e51aa66b6f9a9fbe01 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 18:01:37 +0000 Subject: [PATCH 0809/1588] flake: dev-shells: convert to 'flake-parts' --- flake/default.nix | 3 +-- flake/dev-shells.nix | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index 3ba2b19..eb85017 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -26,8 +26,6 @@ let default = self.apps.${system}.diff-flake; }; - devShells = import ./dev-shells.nix inputs system; - packages = import ./packages.nix inputs system; # Work-around for https://github.com/nix-community/home-manager/issues/3075 @@ -73,6 +71,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { imports = [ ./checks.nix + ./dev-shells.nix ./lib.nix ./nixos.nix ./overlays.nix diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index 064f57d..15c1335 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -1,17 +1,17 @@ -{ self, nixpkgs, ... }: -system: -let - pkgs = nixpkgs.legacyPackages.${system}; -in +{ inputs, ... }: { - default = pkgs.mkShell { - name = "NixOS-config"; + perSystem = { self', pkgs, ... }: { + devShells = { + default = pkgs.mkShell { + name = "NixOS-config"; - nativeBuildInputs = with pkgs; [ - gitAndTools.pre-commit - nixpkgs-fmt - ]; + nativeBuildInputs = with pkgs; [ + gitAndTools.pre-commit + nixpkgs-fmt + ]; - inherit (self.checks.${system}.pre-commit) shellHook; + inherit (self'.checks.pre-commit) shellHook; + }; + }; }; } From ec036255adaf46a33ebac7ef4e41ea454b3598ce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 18:04:17 +0000 Subject: [PATCH 0810/1588] flake: packages: convert to 'flake-parts' --- flake/default.nix | 3 +-- flake/packages.nix | 23 +++++++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index eb85017..9c6b369 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -26,8 +26,6 @@ let default = self.apps.${system}.diff-flake; }; - packages = import ./packages.nix inputs system; - # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { homeConfigurations = { @@ -75,6 +73,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { ./lib.nix ./nixos.nix ./overlays.nix + ./packages.nix ]; flake = (eachMySystem systemDependant); diff --git a/flake/packages.nix b/flake/packages.nix index 1eccfa3..3515071 100644 --- a/flake/packages.nix +++ b/flake/packages.nix @@ -1,10 +1,13 @@ -{ self, futils, nixpkgs, ... }: -system: -let - inherit (futils.lib) filterPackages flattenTree; - pkgs = nixpkgs.legacyPackages.${system}; - packages = import "${self}/pkgs" { inherit pkgs; }; - flattenedPackages = flattenTree packages; - finalPackages = filterPackages system flattenedPackages; -in -finalPackages +{ self, inputs, ... }: +{ + perSystem = { pkgs, system, ... }: { + packages = + let + inherit (inputs.futils.lib) filterPackages flattenTree; + packages = import "${self}/pkgs" { inherit pkgs; }; + flattenedPackages = flattenTree packages; + finalPackages = filterPackages system flattenedPackages; + in + finalPackages; + }; +} From 59b1ab59dd6b44586345d173aeab6ee8e409c9ac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 18:07:58 +0000 Subject: [PATCH 0811/1588] flake: apps: convert to 'flake-parts' --- flake/apps.nix | 9 +++++++++ flake/default.nix | 6 +----- 2 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 flake/apps.nix diff --git a/flake/apps.nix b/flake/apps.nix new file mode 100644 index 0000000..f8dc2de --- /dev/null +++ b/flake/apps.nix @@ -0,0 +1,9 @@ +{ inputs, ... }: +{ + perSystem = { self', ... }: { + apps = { + diff-flake = inputs.futils.lib.mkApp { drv = self'.packages.diff-flake; }; + default = self'.apps.diff-flake; + }; + }; +} diff --git a/flake/default.nix b/flake/default.nix index 9c6b369..8ba9a02 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -21,11 +21,6 @@ let eachMySystem = eachSystem mySystems; systemDependant = system: { - apps = { - diff-flake = futils.lib.mkApp { drv = self.packages.${system}.diff-flake; }; - default = self.apps.${system}.diff-flake; - }; - # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { homeConfigurations = { @@ -68,6 +63,7 @@ flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; imports = [ + ./apps.nix ./checks.nix ./dev-shells.nix ./lib.nix From c82eb57070e2fff51e8084adec44e1a8b0567a7f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 8 Mar 2023 18:11:59 +0000 Subject: [PATCH 0812/1588] flake: home-manager: convert to 'flake-parts' --- flake/default.nix | 46 ++---------------------------------------- flake/home-manager.nix | 41 +++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 44 deletions(-) create mode 100644 flake/home-manager.nix diff --git a/flake/default.nix b/flake/default.nix index 8ba9a02..50eec92 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -9,7 +9,7 @@ let inherit (self) lib; - inherit (futils.lib) eachSystem system; + inherit (futils.lib) system; mySystems = [ system.aarch64-darwin @@ -17,47 +17,6 @@ let system.x86_64-darwin system.x86_64-linux ]; - - eachMySystem = eachSystem mySystems; - - systemDependant = system: { - # Work-around for https://github.com/nix-community/home-manager/issues/3075 - legacyPackages = { - homeConfigurations = { - ambroisie = home-manager.lib.homeManagerConfiguration { - # Work-around for home-manager - # * not letting me set `lib` as an extraSpecialArgs - # * not respecting `nixpkgs.overlays` [1] - # [1]: https://github.com/nix-community/home-manager/issues/2954 - pkgs = import nixpkgs { - inherit system; - - overlays = (lib.attrValues self.overlays) ++ [ - nur.overlay - ]; - }; - - modules = [ - "${self}/home" - { - # The basics - home.username = "ambroisie"; - home.homeDirectory = "/home/ambroisie"; - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - # This is a generic linux install - targets.genericLinux.enable = true; - } - ]; - - extraSpecialArgs = { - # Inject inputs to use them in global registry - inherit inputs; - }; - }; - }; - }; - }; in flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; @@ -66,11 +25,10 @@ flake-parts.lib.mkFlake { inherit inputs; } { ./apps.nix ./checks.nix ./dev-shells.nix + ./home-manager.nix ./lib.nix ./nixos.nix ./overlays.nix ./packages.nix ]; - - flake = (eachMySystem systemDependant); } diff --git a/flake/home-manager.nix b/flake/home-manager.nix new file mode 100644 index 0000000..df5b3e2 --- /dev/null +++ b/flake/home-manager.nix @@ -0,0 +1,41 @@ +{ self, inputs, ... }: +{ + perSystem = { system, ... }: { + # Work-around for https://github.com/nix-community/home-manager/issues/3075 + legacyPackages = { + homeConfigurations = { + ambroisie = inputs.home-manager.lib.homeManagerConfiguration { + # Work-around for home-manager + # * not letting me set `lib` as an extraSpecialArgs + # * not respecting `nixpkgs.overlays` [1] + # [1]: https://github.com/nix-community/home-manager/issues/2954 + pkgs = import inputs.nixpkgs { + inherit system; + + overlays = (lib.attrValues self.overlays) ++ [ + inputs.nur.overlay + ]; + }; + + modules = [ + "${self}/home" + { + # The basics + home.username = "ambroisie"; + home.homeDirectory = "/home/ambroisie"; + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + # This is a generic linux install + targets.genericLinux.enable = true; + } + ]; + + extraSpecialArgs = { + # Inject inputs to use them in global registry + inherit inputs; + }; + }; + }; + }; + }; +} From 8657774d06df97effc34239eaa5e2cbc3d0f862c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:04:34 +0000 Subject: [PATCH 0813/1588] flake: checks: use 'pre-commit-hooks' module --- flake/checks.nix | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/flake/checks.nix b/flake/checks.nix index 50f20b1..4a8c04f 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -1,11 +1,15 @@ { self, inputs, ... }: { - perSystem = { system, ... }: { - checks = { - # NOTE: seems like inputs' does not output the 'lib' attribute - pre-commit = inputs.pre-commit-hooks.lib.${system}.run { - src = self; + imports = [ + inputs.pre-commit-hooks.flakeModule + ]; + perSystem = { system, ... }: { + pre-commit = { + # Add itself to `nix flake check` + check.enable = true; + + settings = { hooks = { nixpkgs-fmt = { enable = true; From eac628963a2159a163686e385ee58070ce713243 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:07:49 +0000 Subject: [PATCH 0814/1588] flake: dev-shell: use exposed pre-commit script --- flake/dev-shells.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index 15c1335..daaa0fd 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -1,6 +1,6 @@ { inputs, ... }: { - perSystem = { self', pkgs, ... }: { + perSystem = { self', config, pkgs, ... }: { devShells = { default = pkgs.mkShell { name = "NixOS-config"; @@ -10,7 +10,9 @@ nixpkgs-fmt ]; - inherit (self'.checks.pre-commit) shellHook; + shellHook = '' + ${config.pre-commit.installationScript} + ''; }; }; }; From 2fb3d0f9cfaf3e2c8e8fce100f2a701a2d043068 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:11:12 +0000 Subject: [PATCH 0815/1588] machines: rename to 'hosts/nixos' This will be more consistent in the future if I want to introduce darwin or home-manager configurations. --- flake/nixos.nix | 2 +- {machines => hosts/nixos}/aramis/boot.nix | 0 {machines => hosts/nixos}/aramis/default.nix | 0 {machines => hosts/nixos}/aramis/hardware.nix | 0 {machines => hosts/nixos}/aramis/home.nix | 0 {machines => hosts/nixos}/aramis/install.sh | 0 {machines => hosts/nixos}/aramis/networking.nix | 0 {machines => hosts/nixos}/aramis/profiles.nix | 0 {machines => hosts/nixos}/aramis/programs.nix | 0 {machines => hosts/nixos}/aramis/services.nix | 0 {machines => hosts/nixos}/aramis/sound.nix | 0 {machines => hosts/nixos}/porthos/boot.nix | 0 {machines => hosts/nixos}/porthos/default.nix | 0 {machines => hosts/nixos}/porthos/hardware.nix | 0 {machines => hosts/nixos}/porthos/home.nix | 0 {machines => hosts/nixos}/porthos/install.sh | 0 {machines => hosts/nixos}/porthos/networking.nix | 0 {machines => hosts/nixos}/porthos/services.nix | 0 {machines => hosts/nixos}/porthos/ssh/drone.pub | 0 {machines => hosts/nixos}/porthos/users.nix | 0 20 files changed, 1 insertion(+), 1 deletion(-) rename {machines => hosts/nixos}/aramis/boot.nix (100%) rename {machines => hosts/nixos}/aramis/default.nix (100%) rename {machines => hosts/nixos}/aramis/hardware.nix (100%) rename {machines => hosts/nixos}/aramis/home.nix (100%) rename {machines => hosts/nixos}/aramis/install.sh (100%) rename {machines => hosts/nixos}/aramis/networking.nix (100%) rename {machines => hosts/nixos}/aramis/profiles.nix (100%) rename {machines => hosts/nixos}/aramis/programs.nix (100%) rename {machines => hosts/nixos}/aramis/services.nix (100%) rename {machines => hosts/nixos}/aramis/sound.nix (100%) rename {machines => hosts/nixos}/porthos/boot.nix (100%) rename {machines => hosts/nixos}/porthos/default.nix (100%) rename {machines => hosts/nixos}/porthos/hardware.nix (100%) rename {machines => hosts/nixos}/porthos/home.nix (100%) rename {machines => hosts/nixos}/porthos/install.sh (100%) rename {machines => hosts/nixos}/porthos/networking.nix (100%) rename {machines => hosts/nixos}/porthos/services.nix (100%) rename {machines => hosts/nixos}/porthos/ssh/drone.pub (100%) rename {machines => hosts/nixos}/porthos/users.nix (100%) diff --git a/flake/nixos.nix b/flake/nixos.nix index 84dce54..2d9d18b 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -21,7 +21,7 @@ let buildHost = name: system: lib.nixosSystem { inherit system; modules = defaultModules ++ [ - "${self}/machines/${name}" + "${self}/hosts/nixos/${name}" ]; specialArgs = { # Use my extended lib in NixOS configuration diff --git a/machines/aramis/boot.nix b/hosts/nixos/aramis/boot.nix similarity index 100% rename from machines/aramis/boot.nix rename to hosts/nixos/aramis/boot.nix diff --git a/machines/aramis/default.nix b/hosts/nixos/aramis/default.nix similarity index 100% rename from machines/aramis/default.nix rename to hosts/nixos/aramis/default.nix diff --git a/machines/aramis/hardware.nix b/hosts/nixos/aramis/hardware.nix similarity index 100% rename from machines/aramis/hardware.nix rename to hosts/nixos/aramis/hardware.nix diff --git a/machines/aramis/home.nix b/hosts/nixos/aramis/home.nix similarity index 100% rename from machines/aramis/home.nix rename to hosts/nixos/aramis/home.nix diff --git a/machines/aramis/install.sh b/hosts/nixos/aramis/install.sh similarity index 100% rename from machines/aramis/install.sh rename to hosts/nixos/aramis/install.sh diff --git a/machines/aramis/networking.nix b/hosts/nixos/aramis/networking.nix similarity index 100% rename from machines/aramis/networking.nix rename to hosts/nixos/aramis/networking.nix diff --git a/machines/aramis/profiles.nix b/hosts/nixos/aramis/profiles.nix similarity index 100% rename from machines/aramis/profiles.nix rename to hosts/nixos/aramis/profiles.nix diff --git a/machines/aramis/programs.nix b/hosts/nixos/aramis/programs.nix similarity index 100% rename from machines/aramis/programs.nix rename to hosts/nixos/aramis/programs.nix diff --git a/machines/aramis/services.nix b/hosts/nixos/aramis/services.nix similarity index 100% rename from machines/aramis/services.nix rename to hosts/nixos/aramis/services.nix diff --git a/machines/aramis/sound.nix b/hosts/nixos/aramis/sound.nix similarity index 100% rename from machines/aramis/sound.nix rename to hosts/nixos/aramis/sound.nix diff --git a/machines/porthos/boot.nix b/hosts/nixos/porthos/boot.nix similarity index 100% rename from machines/porthos/boot.nix rename to hosts/nixos/porthos/boot.nix diff --git a/machines/porthos/default.nix b/hosts/nixos/porthos/default.nix similarity index 100% rename from machines/porthos/default.nix rename to hosts/nixos/porthos/default.nix diff --git a/machines/porthos/hardware.nix b/hosts/nixos/porthos/hardware.nix similarity index 100% rename from machines/porthos/hardware.nix rename to hosts/nixos/porthos/hardware.nix diff --git a/machines/porthos/home.nix b/hosts/nixos/porthos/home.nix similarity index 100% rename from machines/porthos/home.nix rename to hosts/nixos/porthos/home.nix diff --git a/machines/porthos/install.sh b/hosts/nixos/porthos/install.sh similarity index 100% rename from machines/porthos/install.sh rename to hosts/nixos/porthos/install.sh diff --git a/machines/porthos/networking.nix b/hosts/nixos/porthos/networking.nix similarity index 100% rename from machines/porthos/networking.nix rename to hosts/nixos/porthos/networking.nix diff --git a/machines/porthos/services.nix b/hosts/nixos/porthos/services.nix similarity index 100% rename from machines/porthos/services.nix rename to hosts/nixos/porthos/services.nix diff --git a/machines/porthos/ssh/drone.pub b/hosts/nixos/porthos/ssh/drone.pub similarity index 100% rename from machines/porthos/ssh/drone.pub rename to hosts/nixos/porthos/ssh/drone.pub diff --git a/machines/porthos/users.nix b/hosts/nixos/porthos/users.nix similarity index 100% rename from machines/porthos/users.nix rename to hosts/nixos/porthos/users.nix From a0465697435800c2ce2a62236b837f42dec281b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 09:00:30 +0000 Subject: [PATCH 0816/1588] flake: home-manager: use a more modular design This means I can easily add new hosts now. --- flake/home-manager.nix | 76 +++++++++++++++++-------------- hosts/homes/ambroisie/default.nix | 5 ++ 2 files changed, 48 insertions(+), 33 deletions(-) create mode 100644 hosts/homes/ambroisie/default.nix diff --git a/flake/home-manager.nix b/flake/home-manager.nix index df5b3e2..ce6791d 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -1,40 +1,50 @@ -{ self, inputs, ... }: +{ self, inputs, lib, ... }: +let + defaultModules = [ + # Include generic settings + "${self}/home" + { + # Basic user information defaults + home.username = lib.mkDefault "ambroisie"; + home.homeDirectory = lib.mkDefault "/home/ambroisie"; + + # Make it a Linux installation by default + targets.genericLinux.enable = lib.mkDefault true; + + # Enable home-manager + programs.home-manager.enable = true; + } + ]; + + mkHome = name: system: inputs.home-manager.lib.homeManagerConfiguration { + # Work-around for home-manager + # * not letting me set `lib` as an extraSpecialArgs + # * not respecting `nixpkgs.overlays` [1] + # [1]: https://github.com/nix-community/home-manager/issues/2954 + pkgs = import inputs.nixpkgs { + inherit system; + + overlays = (lib.attrValues self.overlays) ++ [ + inputs.nur.overlay + ]; + }; + + modules = defaultModules ++ [ + "${self}/hosts/homes/${name}" + ]; + + extraSpecialArgs = { + # Inject inputs to use them in global registry + inherit inputs; + }; + }; +in { perSystem = { system, ... }: { # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { - homeConfigurations = { - ambroisie = inputs.home-manager.lib.homeManagerConfiguration { - # Work-around for home-manager - # * not letting me set `lib` as an extraSpecialArgs - # * not respecting `nixpkgs.overlays` [1] - # [1]: https://github.com/nix-community/home-manager/issues/2954 - pkgs = import inputs.nixpkgs { - inherit system; - - overlays = (lib.attrValues self.overlays) ++ [ - inputs.nur.overlay - ]; - }; - - modules = [ - "${self}/home" - { - # The basics - home.username = "ambroisie"; - home.homeDirectory = "/home/ambroisie"; - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - # This is a generic linux install - targets.genericLinux.enable = true; - } - ]; - - extraSpecialArgs = { - # Inject inputs to use them in global registry - inherit inputs; - }; - }; + homeConfigurations = lib.mapAttrs mkHome { + ambroisie = system; }; }; }; diff --git a/hosts/homes/ambroisie/default.nix b/hosts/homes/ambroisie/default.nix new file mode 100644 index 0000000..42ea5b8 --- /dev/null +++ b/hosts/homes/ambroisie/default.nix @@ -0,0 +1,5 @@ +# Default home-manager configuration +{ ... }: +{ + # Default configuration, nothing to do +} From 606cd8cf84f2d07cc26fbce286161f9765bfd37b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 9 Mar 2023 10:21:36 +0000 Subject: [PATCH 0817/1588] hosts: homes: add work cloudtop The unfortunate host naming can't be fixed at the moment... --- flake/home-manager.nix | 16 +++++++++++++--- hosts/homes/ambroisie@ambroisie/default.nix | 16 ++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 hosts/homes/ambroisie@ambroisie/default.nix diff --git a/flake/home-manager.nix b/flake/home-manager.nix index ce6791d..c55c8dd 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -38,14 +38,24 @@ let inherit inputs; }; }; + + hosts = { + "ambroisie@ambroisie" = "x86_64-linux"; # Unfortunate naming here... + }; in { perSystem = { system, ... }: { # Work-around for https://github.com/nix-community/home-manager/issues/3075 legacyPackages = { - homeConfigurations = lib.mapAttrs mkHome { - ambroisie = system; - }; + homeConfigurations = + let + filteredHosts = lib.filterAttrs (_: v: v == system) hosts; + allHosts = filteredHosts // { + # Default configuration + ambroisie = system; + }; + in + lib.mapAttrs mkHome allHosts; }; }; } diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix new file mode 100644 index 0000000..e4dabcf --- /dev/null +++ b/hosts/homes/ambroisie@ambroisie/default.nix @@ -0,0 +1,16 @@ +# Google Cloudtop configuration +{ ... }: +{ + # Google specific configuration + home.homeDirectory = "/usr/local/google/home/ambroisie"; + + home.sessionVariables = { + # Some tooling (e.g: SSH) need to use this library + LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; + }; + + my.home = { + # I don't need a GPG agent + gpg.enable = false; + }; +} From d8c19d45ad551af423ab33345788638cf20aee54 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Mar 2023 10:43:55 +0000 Subject: [PATCH 0818/1588] flake: checks: remove unused arguments --- flake/checks.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flake/checks.nix b/flake/checks.nix index 4a8c04f..a9c5af8 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -1,10 +1,10 @@ -{ self, inputs, ... }: +{ inputs, ... }: { imports = [ inputs.pre-commit-hooks.flakeModule ]; - perSystem = { system, ... }: { + perSystem = { ... }: { pre-commit = { # Add itself to `nix flake check` check.enable = true; From 31601f58b4e945d5348aff33a081e09787f52d94 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Mar 2023 10:44:11 +0000 Subject: [PATCH 0819/1588] flake: remove unused arguments --- flake/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index 50eec92..2def58d 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -1,9 +1,6 @@ { self , flake-parts , futils -, home-manager -, nixpkgs -, nur , ... } @ inputs: let From 1ff03e35f80c8284d4b2b06b760f55824fa956cf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Mar 2023 10:44:20 +0000 Subject: [PATCH 0820/1588] flake: dev-shells: remove unused arguments --- flake/dev-shells.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index daaa0fd..82d9581 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -1,6 +1,6 @@ -{ inputs, ... }: +{ ... }: { - perSystem = { self', config, pkgs, ... }: { + perSystem = { config, pkgs, ... }: { devShells = { default = pkgs.mkShell { name = "NixOS-config"; From 359456fbc1b208cb314b845d13bd4d9666156ccf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Mar 2023 10:44:40 +0000 Subject: [PATCH 0821/1588] home: terminal: alacritty: remove unused arguments --- home/terminal/alacritty/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/terminal/alacritty/default.nix b/home/terminal/alacritty/default.nix index 760162a..daf3e80 100644 --- a/home/terminal/alacritty/default.nix +++ b/home/terminal/alacritty/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.home.terminal; in From e799318a3639730e937abdef679d4e0d6944c11e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Mar 2023 10:45:07 +0000 Subject: [PATCH 0822/1588] modules: hardware: firmware: remove unused 'pkgs' --- modules/hardware/firmware/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/hardware/firmware/default.nix b/modules/hardware/firmware/default.nix index e899232..a77135c 100644 --- a/modules/hardware/firmware/default.nix +++ b/modules/hardware/firmware/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.hardware.firmware; in From 1751704ab3edc842d09b06b29e8225b27a53570a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 22 Mar 2023 10:46:10 +0000 Subject: [PATCH 0823/1588] modules: system: podman: remove unused arguments --- modules/system/podman/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/podman/default.nix b/modules/system/podman/default.nix index c267ec6..b04c52c 100644 --- a/modules/system/podman/default.nix +++ b/modules/system/podman/default.nix @@ -1,5 +1,5 @@ # Podman related settings -{ config, inputs, lib, options, pkgs, ... }: +{ config, lib, options, ... }: let cfg = config.my.system.podman; in From ad0c99c6f0e8d3a774d041ba027e7b1ffa7e817c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 23 Mar 2023 12:16:40 +0000 Subject: [PATCH 0824/1588] modules: services: paperless: fix postgres order --- modules/services/paperless/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/services/paperless/default.nix b/modules/services/paperless/default.nix index 9eebb2c..c9d6220 100644 --- a/modules/services/paperless/default.nix +++ b/modules/services/paperless/default.nix @@ -109,6 +109,15 @@ in EnvironmentFile = cfg.secretKeyFile; }; }; + + paperless-task-queue = { + requires = [ "postgresql.service" ]; + after = [ "postgresql.service" ]; + + serviceConfig = { + EnvironmentFile = cfg.secretKeyFile; + }; + }; }; # Set-up database From ddc296138c9bb2c8287de40976ac7455d7f7b2e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Mar 2023 11:18:08 +0000 Subject: [PATCH 0825/1588] home: move gpg-specific alias to 'gpg' --- home/gpg/default.nix | 5 +++++ home/zsh/default.nix | 3 --- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/home/gpg/default.nix b/home/gpg/default.nix index d48c200..7eadf48 100644 --- a/home/gpg/default.nix +++ b/home/gpg/default.nix @@ -27,5 +27,10 @@ in allow-loopback-pinentry ''; }; + + home.shellAliases = { + # Sometime `gpg-agent` errors out... + reset-agent = "gpg-connect-agent updatestartuptty /bye"; + }; }; } diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 4760d39..5bf9c34 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -99,9 +99,6 @@ in # Well-known ls aliases l = "ls -alh"; ll = "ls -l"; - - # Sometime `gpg-agent` errors out... - reset-agent = "gpg-connect-agent updatestartuptty /bye"; }; # Enable VTE integration From 677a5a11e6f5e3f4931a6e6513a639ec0d260f50 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Mar 2023 20:46:48 +0000 Subject: [PATCH 0826/1588] pkgs: unified-hosts-lists: 3.11.16 -> 3.12.15 --- pkgs/unified-hosts-lists/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index ed6d286..bed8f0d 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -1,13 +1,13 @@ { lib, fetchFromGitHub, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "unified-hosts-lists"; - version = "3.11.16"; + version = "3.12.15"; src = fetchFromGitHub { owner = "StevenBlack"; repo = "hosts"; rev = version; - sha256 = "sha256-YB/3v6qMz/iERRV/AvbOMoLgtqHdXarCrZApfUqzwmo="; + sha256 = "sha256-HoNX57lCoIr36B/7HMuazWSWeAPPfWY1oZf6dXnxYIE="; }; dontUnpack = true; From 83268e7db678cd8f2a319386d0dd595b6b35ea54 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 24 Mar 2023 21:09:52 +0000 Subject: [PATCH 0827/1588] home: xdg: force more XDG compliance Thanks a to a nifty tool [1] I learnt about some more easy fixes. [1]: https://github.com/b3nj5m1n/xdg-ninja --- home/xdg/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/xdg/default.nix b/home/xdg/default.nix index bf49bd4..3fd8dc9 100644 --- a/home/xdg/default.nix +++ b/home/xdg/default.nix @@ -38,6 +38,7 @@ in # I want a tidier home config.home.sessionVariables = with config.xdg; lib.mkIf cfg.enable { + ANDROID_HOME = "${dataHome}/android"; CARGO_HOME = "${dataHome}/cargo"; DOCKER_CONFIG = "${configHome}/docker"; GDBHISTFILE = "${dataHome}/gdb/gdb_history"; @@ -45,5 +46,8 @@ in INPUTRC = "${configHome}/readline/inputrc"; LESSHISTFILE = "${dataHome}/less/history"; LESSKEY = "${configHome}/less/lesskey"; + PSQL_HISTORY = "${dataHome}/psql_history"; + REDISCLI_HISTFILE = "${dataHome}/redis/rediscli_history"; + XCOMPOSECACHE = "${dataHome}/X11/xcompose"; }; } From 76edeffdc74ccc8c5d2e7337ec86939f01ba3e2f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 27 Mar 2023 08:22:55 +0000 Subject: [PATCH 0828/1588] home: pager: use XDG-compliant history location --- home/pager/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/pager/default.nix b/home/pager/default.nix index 8c621b1..aa72587 100644 --- a/home/pager/default.nix +++ b/home/pager/default.nix @@ -14,6 +14,8 @@ in PAGER = "less"; # Clear the screen on start and exit LESS = "-R -+X -c"; + # Better XDG compliance + LESSHISTFILE = "${config.xdg.dataHome}/less/history"; }; }; } From 4183f7b9639f5b0d3ae0f58723cdf647fc8881f3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 27 Mar 2023 08:25:22 +0000 Subject: [PATCH 0829/1588] hosts: homes: cloudtop: enable GPG --- hosts/homes/ambroisie@ambroisie/default.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix index e4dabcf..acc5a6f 100644 --- a/hosts/homes/ambroisie@ambroisie/default.nix +++ b/hosts/homes/ambroisie@ambroisie/default.nix @@ -8,9 +8,4 @@ # Some tooling (e.g: SSH) need to use this library LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; }; - - my.home = { - # I don't need a GPG agent - gpg.enable = false; - }; } From 642e58fc223de178d02052e12bfb58abfc3fc1cd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 28 Mar 2023 15:27:56 +0000 Subject: [PATCH 0830/1588] modules: hardware: bluetooth: use 'wireplumber' --- modules/hardware/bluetooth/default.nix | 49 ++++++++------------------ 1 file changed, 15 insertions(+), 34 deletions(-) diff --git a/modules/hardware/bluetooth/default.nix b/modules/hardware/bluetooth/default.nix index ffe0fbe..2d840f9 100644 --- a/modules/hardware/bluetooth/default.nix +++ b/modules/hardware/bluetooth/default.nix @@ -25,41 +25,22 @@ in package = pkgs.pulseaudioFull; }; - services.pipewire = { - media-session.config.bluez-monitor.rules = [ - { - # Matches all cards - matches = [{ "device.name" = "~bluez_card.*"; }]; - actions = { - "update-props" = { - "bluez5.reconnect-profiles" = [ - "hfp_hf" - "hsp_hs" - "a2dp_sink" - ]; - # mSBC provides better audio + microphone - "bluez5.msbc-support" = true; - # SBC XQ provides better audio - "bluez5.sbc-xq-support" = true; - }; - }; + environment.etc = { + "wireplumber/bluetooth.lua.d/51-bluez-config.lua".text = '' + bluez_monitor.properties = { + -- SBC XQ provides better audio + ["bluez5.enable-sbc-xq"] = true, + + -- mSBC provides better audio + microphone + ["bluez5.enable-msbc"] = true, + + -- Synchronize volume with bluetooth device + ["bluez5.enable-hw-volume"] = true, + + -- FIXME: Some devices may now support both hsp_ag and hfp_ag + ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" } - { - matches = [ - # Matches all sources - { - "node.name" = "~bluez_input.*"; - } - # Matches all outputs - { - "node.name" = "~bluez_output.*"; - } - ]; - actions = { - "node.pause-on-idle" = false; - }; - } - ]; + ''; }; }) From 838cdeb598f254d6447fe66ce117c2a6e7051640 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 28 Mar 2023 15:09:11 +0000 Subject: [PATCH 0831/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index e14f4e4..7ce469e 100644 --- a/flake.lock +++ b/flake.lock @@ -67,11 +67,11 @@ ] }, "locked": { - "lastModified": 1677714448, - "narHash": "sha256-Hq8qLs8xFu28aDjytfxjdC96bZ6pds21Yy09mSC156I=", + "lastModified": 1679737941, + "narHash": "sha256-srSD9CwsVPnUMsIZ7Kt/UegkKUEBcTyU1Rev7mO45S0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "dc531e3a9ce757041e1afaff8ee932725ca60002", + "rev": "3502ee99d6dade045bdeaf7b0cd8ec703484c25c", "type": "github" }, "original": { @@ -128,11 +128,11 @@ ] }, "locked": { - "lastModified": 1679246045, - "narHash": "sha256-6yK601M0RpG9o0CqCl++9OCWEH+q+va6lEncLNg8iQ4=", + "lastModified": 1680000368, + "narHash": "sha256-TlgC4IJ7aotynUdkGRtaAVxquaiddO38Ws89nB7VGY8=", "owner": "nix-community", "repo": "home-manager", - "rev": "bcc417b80f3bef3e0cf21160850525d8a03387e6", + "rev": "765e4007b6f9f111469a25d1df6540e8e0ca73a6", "type": "github" }, "original": { @@ -144,11 +144,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1679172431, - "narHash": "sha256-XEh5gIt5otaUbEAPUY5DILUTyWe1goAyeqQtmwaFPyI=", + "lastModified": 1679944645, + "narHash": "sha256-e5Qyoe11UZjVfgRfwNoSU57ZeKuEmjYb77B9IVW7L/M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1603d11595a232205f03d46e635d919d1e1ec5b9", + "rev": "4bb072f0a8b267613c127684e099a70e1f6ff106", "type": "github" }, "original": { @@ -160,11 +160,11 @@ }, "nur": { "locked": { - "lastModified": 1679247967, - "narHash": "sha256-xRG+RFHTi6sRXO3vVzbyXmwBgS5NdIJ8OxEOb/u9BsA=", + "lastModified": 1680014770, + "narHash": "sha256-Vh3vzS1Nrz3KnNVbtfPoVa4pRVv01GWh9OYYpgzVOfs=", "owner": "nix-community", "repo": "NUR", - "rev": "21aeb2c533a08aa107e8c708bff7c765b5a1ea36", + "rev": "7dec78f7ec6823c800afdc0b32d562b15ba954d3", "type": "github" }, "original": { From cae174b0f73ebff43bc76c854aa5de36afddd39f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 28 Mar 2023 14:48:41 +0000 Subject: [PATCH 0832/1588] modules: services: nginx: all recommended settings --- modules/services/nginx/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index 3a633e7..93afd8f 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -233,10 +233,12 @@ in enable = true; statusPage = true; # For monitoring scraping. + recommendedBrotliSettings = true; recommendedGzipSettings = true; recommendedOptimisation = true; recommendedTlsSettings = true; recommendedProxySettings = true; + recommendedZstdSettings = true; virtualHosts = let From b909f43269d8d485b4f02d6342891430fc789cc6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 28 Mar 2023 14:50:05 +0000 Subject: [PATCH 0833/1588] modules: services: nginx: sort settings --- modules/services/nginx/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index 93afd8f..944cd18 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -236,8 +236,8 @@ in recommendedBrotliSettings = true; recommendedGzipSettings = true; recommendedOptimisation = true; - recommendedTlsSettings = true; recommendedProxySettings = true; + recommendedTlsSettings = true; recommendedZstdSettings = true; virtualHosts = From f0a93f878b3820a0dfab3ab3100c9b0306d6ae3a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 30 Mar 2023 09:58:46 +0000 Subject: [PATCH 0834/1588] home: nix: add 'NIX_PATH' handling Still waiting for the actual home-manager module option to be added [1]. In the meantime, just do it by hand. [1]: https://github.com/nix-community/home-manager/pull/2677 --- home/nix/default.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/home/nix/default.nix b/home/nix/default.nix index c46e990..d8618e5 100644 --- a/home/nix/default.nix +++ b/home/nix/default.nix @@ -26,10 +26,24 @@ in addToRegistry = my.mkDisableOption "add inputs and self to registry"; + addToNixPath = my.mkDisableOption "add inputs and self to nix path"; + overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version"; }; config = lib.mkIf cfg.enable (lib.mkMerge [ + { + assertions = [ + { + assertion = cfg.addToNixPath -> cfg.linkInputs; + message = '' + enabling `my.home.nix.addToNixPath` needs to have + `my.home.nix.linkInputs = true` + ''; + } + ]; + } + { nix = { package = lib.mkDefault pkgs.nix; # NixOS module sets it unconditionally @@ -60,5 +74,9 @@ in in makeLinks channels; }) + + (lib.mkIf cfg.addToNixPath { + home.sessionVariables.NIX_PATH = "${config.xdg.configHome}/nix/inputs\${NIX_PATH:+:$NIX_PATH}"; + }) ]); } From 04681f6ee4d520ec0e164ad6ff26fe6cbf1bf67e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 30 Mar 2023 21:20:42 +0200 Subject: [PATCH 0835/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 7ce469e..f99e109 100644 --- a/flake.lock +++ b/flake.lock @@ -128,11 +128,11 @@ ] }, "locked": { - "lastModified": 1680000368, - "narHash": "sha256-TlgC4IJ7aotynUdkGRtaAVxquaiddO38Ws89nB7VGY8=", + "lastModified": 1680114304, + "narHash": "sha256-XymtLu8G2nzenjDUWI7XV2MMHztvPkEZUFpwmZFcxVM=", "owner": "nix-community", "repo": "home-manager", - "rev": "765e4007b6f9f111469a25d1df6540e8e0ca73a6", + "rev": "0e065e1b6f0776ebbacea9dcbc977af7bc9eddc0", "type": "github" }, "original": { @@ -144,11 +144,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1679944645, - "narHash": "sha256-e5Qyoe11UZjVfgRfwNoSU57ZeKuEmjYb77B9IVW7L/M=", + "lastModified": 1680125544, + "narHash": "sha256-mlqo1r+TZUOuypWdrZHluxWL+E5WzXlUXNZ9Y0WLDFU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4bb072f0a8b267613c127684e099a70e1f6ff106", + "rev": "9a6aabc4740790ef3bbb246b86d029ccf6759658", "type": "github" }, "original": { @@ -160,11 +160,11 @@ }, "nur": { "locked": { - "lastModified": 1680014770, - "narHash": "sha256-Vh3vzS1Nrz3KnNVbtfPoVa4pRVv01GWh9OYYpgzVOfs=", + "lastModified": 1680183987, + "narHash": "sha256-ww5/H0ZmV8ztnrDaL7GX2zLW82yURgrTebGEd4nTx6Y=", "owner": "nix-community", "repo": "NUR", - "rev": "7dec78f7ec6823c800afdc0b32d562b15ba954d3", + "rev": "fa953d3867d6f133eb4d72234d8dd0fa68d007e0", "type": "github" }, "original": { @@ -189,11 +189,11 @@ ] }, "locked": { - "lastModified": 1678976941, - "narHash": "sha256-skNr08frCwN9NO+7I77MjOHHAw+L410/37JknNld+W4=", + "lastModified": 1680170909, + "narHash": "sha256-FtKU/edv1jFRr/KwUxWTYWXEyj9g8GBrHntC2o8oFI8=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "32b1dbedfd77892a6e375737ef04d8efba634e9e", + "rev": "29dbe1efaa91c3a415d8b45d62d48325a4748816", "type": "github" }, "original": { From a22fe4e6365cf6c9cef88306bb4deb639e9980c9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 31 Mar 2023 10:06:25 +0000 Subject: [PATCH 0836/1588] modules: services: nextcloud: bump to 26 --- modules/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index 674617f..cffa58d 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -31,7 +31,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud25; + package = pkgs.nextcloud26; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From 84bed03367a916dcf875a6768da8b5894ffb95b0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 31 Mar 2023 10:44:06 +0000 Subject: [PATCH 0837/1588] home: ssh: remove old 'work' host I don't work there anymore. --- home/ssh/default.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/home/ssh/default.nix b/home/ssh/default.nix index fa30baa..a2a6752 100644 --- a/home/ssh/default.nix +++ b/home/ssh/default.nix @@ -45,12 +45,6 @@ in identityFile = "~/.ssh/shared_rsa"; user = "ambroisie"; }; - - work = { - hostname = "workspaces.dgexsol.fr"; - identityFile = "~/.ssh/shared_rsa"; - user = "bruno_belanyi"; - }; }; extraConfig = '' From b3b115ee1dd105c31baaaa0607232d867240ae5e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 31 Mar 2023 10:45:07 +0000 Subject: [PATCH 0838/1588] home: ssh: use canonical gitea subdomain --- home/ssh/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/ssh/default.nix b/home/ssh/default.nix index a2a6752..123190f 100644 --- a/home/ssh/default.nix +++ b/home/ssh/default.nix @@ -34,8 +34,8 @@ in user = "git"; }; - "gitea.belanyi.fr" = { - hostname = "gitea.belanyi.fr"; + "git.belanyi.fr" = { + hostname = "git.belanyi.fr"; identityFile = "~/.ssh/shared_rsa"; user = "git"; }; From 9c36d65d80c4d950da8662ab8e2bcc07c4c0d36f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 31 Mar 2023 10:45:13 +0000 Subject: [PATCH 0839/1588] home: ssh: use canonical gitea subdomain --- home/git/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/git/default.nix b/home/git/default.nix index f63adaf..4dba01e 100644 --- a/home/git/default.nix +++ b/home/git/default.nix @@ -147,8 +147,8 @@ in }; url = { - "git@gitea.belanyi.fr:" = { - insteadOf = "https://gitea.belanyi.fr/"; + "git@git.belanyi.fr:" = { + insteadOf = "https://git.belanyi.fr/"; }; "git@github.com:" = { From 5d9524dbdff8b228ee06c0ef83c549bfbc2b1dee Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 31 Mar 2023 21:53:11 +0000 Subject: [PATCH 0840/1588] modules: services: blog: better blog redirection --- modules/services/blog/default.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/services/blog/default.nix b/modules/services/blog/default.nix index 5c508a3..3d3fbdb 100644 --- a/modules/services/blog/default.nix +++ b/modules/services/blog/default.nix @@ -23,13 +23,21 @@ in forceSSL = true; useACMEHost = domain; root = "/var/www/blog"; - default = true; # Redirect to my blog # http://www.gnuterrypratchett.com/ extraConfig = '' add_header X-Clacks-Overhead "GNU Terry Pratchett"; ''; }; + + # Dummy vhost to redirect all unknown (sub-)domains to my blog + "_" = { + forceSSL = true; + useACMEHost = domain; + default = true; + + locations."/".return = "301 https://belanyi.fr$request_uri"; + }; }; # Those are all subdomains, no problem From 281d98b295056ac0888fba289107455aac45a4c0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Mar 2023 14:32:10 +0100 Subject: [PATCH 0841/1588] pkgs: add pnpm-lock-export --- pkgs/default.nix | 2 + pkgs/pnpm-lock-export/default.nix | 28 + pkgs/pnpm-lock-export/package-lock.json | 9847 +++++++++++++++++++++++ pkgs/pnpm-lock-export/update.sh | 47 + 4 files changed, 9924 insertions(+) create mode 100644 pkgs/pnpm-lock-export/default.nix create mode 100644 pkgs/pnpm-lock-export/package-lock.json create mode 100755 pkgs/pnpm-lock-export/update.sh diff --git a/pkgs/default.nix b/pkgs/default.nix index 2bf9056..29d6b40 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -30,6 +30,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { osc52 = pkgs.callPackage ./osc52 { }; + pnpm-lock-export = pkgs.callPackage ./pnpm-lock-export { }; + rofi-bluetooth = pkgs.callPackage ./rofi-bluetooth { }; unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; diff --git a/pkgs/pnpm-lock-export/default.nix b/pkgs/pnpm-lock-export/default.nix new file mode 100644 index 0000000..addfff8 --- /dev/null +++ b/pkgs/pnpm-lock-export/default.nix @@ -0,0 +1,28 @@ +{ lib, buildNpmPackage, fetchFromGitHub }: +buildNpmPackage rec { + pname = "pnpm-lock-export"; + version = "0.4.0"; + + src = fetchFromGitHub { + owner = "cvent"; + repo = "pnpm-lock-export"; + rev = "v${version}"; + hash = "sha256-vS6AW3R4go1Fdr3PBOCnuN4JDrDkl1lWVF7q+q+xDGg="; + }; + + npmDepsHash = "sha256-3uW/lzB+UDhFQtRb3X8szNlgAWTcSdwVdtyZvLu+cjI="; + + postPatch = '' + cp ${./package-lock.json} package-lock.json + # Make the executable get installed to `bin/` instead of `bin/@cvent` + substituteInPlace package.json --replace "@cvent/pnpm-lock-export" "pnpm-lock-export" + ''; + + meta = with lib; { + description = "A utility for converting pnpm-lock.yaml to other lockfile formats"; + homepage = "https://github.com/cvent/pnpm-lock-export"; + license = licenses.mit; + platforms = platforms.all; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/pnpm-lock-export/package-lock.json b/pkgs/pnpm-lock-export/package-lock.json new file mode 100644 index 0000000..9ef62b1 --- /dev/null +++ b/pkgs/pnpm-lock-export/package-lock.json @@ -0,0 +1,9847 @@ +{ + "name": "@cvent/pnpm-lock-export", + "version": "0.4.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@cvent/pnpm-lock-export", + "version": "0.4.0", + "license": "MIT", + "dependencies": { + "@manypkg/get-packages": "^1.1.3", + "@pnpm/lockfile-file": "^5.1.4", + "@pnpm/lockfile-utils": "^4.1.0", + "@pnpm/logger": "^4.0.0", + "@pnpm/prune-lockfile": "^4.0.12", + "@pnpm/read-project-manifest": "^3.0.6", + "@pnpm/types": "^8.4.0", + "argparse": "^2.0.1", + "dependency-path": "^9.2.3", + "semver": "^7.3.7" + }, + "bin": { + "pnpm-lock-export": "dist/src/bin/pnpm-lock-export.js" + }, + "devDependencies": { + "@pnpm/lockfile-types": "^4.2.0", + "@pnpm/registry-mock": "^2.20.0", + "@swc/core": "^1.2.218", + "@swc/jest": "^0.2.22", + "@tsconfig/node16-strictest": "^1.0.0", + "@types/argparse": "^2.0.10", + "@types/jest": "^28.1.6", + "@types/node": "^16", + "@types/semver": "^7.3.10", + "@typescript-eslint/eslint-plugin": "^5.31.0", + "@typescript-eslint/parser": "^5.31.0", + "eslint": "^8.20.0", + "jest": "^28.1.3", + "prettier": "^2.7.1", + "tmp-promise": "^3.0.3", + "typescript": "^4.7.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", + "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.3", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", + "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.21.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", + "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", + "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.3", + "@babel/types": "^7.21.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", + "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@changesets/types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", + "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==" + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.1.tgz", + "integrity": "sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "dev": true, + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", + "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", + "dev": true, + "dependencies": { + "@jest/types": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", + "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "dependencies": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", + "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@manypkg/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@types/node": "^12.7.1", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" + } + }, + "node_modules/@manypkg/find-root/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "node_modules/@manypkg/get-packages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", + "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@changesets/types": "^4.0.1", + "@manypkg/find-root": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "^11.0.0", + "read-yaml-file": "^1.1.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pnpm/constants": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/constants/-/constants-6.1.0.tgz", + "integrity": "sha512-L6AiU3OXv9kjKGTJN9j8n1TeJGDcLX9atQlZvAkthlvbXjvKc5SKNWESc/eXhr5nEfuMWhQhiKHDJCpYejmeCQ==", + "engines": { + "node": ">=14.19" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/crypto.base32-hash": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@pnpm/crypto.base32-hash/-/crypto.base32-hash-1.0.1.tgz", + "integrity": "sha512-pzAXNn6KxTA3kbcI3iEnYs4vtH51XEVqmK/1EiD18MaPKylhqy8UvMJK3zKG+jeP82cqQbozcTGm4yOQ8i3vNw==", + "dependencies": { + "rfc4648": "^1.5.1" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/dependency-path": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@pnpm/dependency-path/-/dependency-path-1.1.3.tgz", + "integrity": "sha512-HXmS9XzZ1CLCGFtfydAkWayn/o3jaftVFESXrJH0W6NENS92rYCUVvutqL/4Kfx72k0HHUbIZLQAsoISxKId8Q==", + "dependencies": { + "@pnpm/crypto.base32-hash": "1.0.1", + "@pnpm/types": "8.10.0", + "encode-registry": "^3.0.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/error/-/error-3.1.0.tgz", + "integrity": "sha512-bmXBD/kzlgHqlIZPP8QJUDAxGqug2qhPdnqNnuXyWQSyIEgeaXyPiUh91MLj9GwLoHA9Zdrx5+dfEougzxf4mA==", + "dependencies": { + "@pnpm/constants": "6.1.0" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/git-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/git-utils/-/git-utils-0.1.0.tgz", + "integrity": "sha512-W3zsG9585cKL+FqgcT+IfTgZX5C+CbNkFjOnJN+qbysT1N30+BbvEByCcDMsTy7QDrAk6oS7WU1Rym3U2xlh2Q==", + "dependencies": { + "execa": "npm:safe-execa@^0.1.1" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/graceful-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@pnpm/graceful-fs/-/graceful-fs-2.0.0.tgz", + "integrity": "sha512-ogUZCGf0/UILZt6d8PsO4gA4pXh7f0BumXeFkcCe4AQ65PXPKfAkHC0C30Lheh2EgFOpLZm3twDP1Eiww18gew==", + "dependencies": { + "graceful-fs": "^4.2.6" + }, + "engines": { + "node": ">=14.19" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/lockfile-file": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@pnpm/lockfile-file/-/lockfile-file-5.3.8.tgz", + "integrity": "sha512-fgXUwTeyW6yhJp1pUdMZJoFTg7qgi1yr7n3rlqm5sgM7leX1Zzx+6+oNSldeRfz0M2jMANU0PXvqyx2meknO/Q==", + "dependencies": { + "@pnpm/constants": "6.1.0", + "@pnpm/error": "3.1.0", + "@pnpm/git-utils": "0.1.0", + "@pnpm/lockfile-types": "4.3.3", + "@pnpm/merge-lockfile-changes": "3.0.11", + "@pnpm/types": "8.7.0", + "@zkochan/rimraf": "^2.1.2", + "comver-to-semver": "^1.0.0", + "dependency-path": "9.2.6", + "js-yaml": "npm:@zkochan/js-yaml@^0.0.6", + "normalize-path": "^3.0.0", + "ramda": "npm:@pnpm/ramda@0.28.1", + "semver": "^7.3.8", + "sort-keys": "^4.2.0", + "strip-bom": "^4.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + }, + "peerDependencies": { + "@pnpm/logger": "^4.0.0" + } + }, + "node_modules/@pnpm/lockfile-file/node_modules/@pnpm/lockfile-types": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@pnpm/lockfile-types/-/lockfile-types-4.3.3.tgz", + "integrity": "sha512-FY+u1JOclJNy/O3EuOPWhQyN23aQTisxmm29Tj52EGFy8zPz7SZev2+K06jUzqKuo7EChQlrR8Tqv/gTOMQN2w==", + "dependencies": { + "@pnpm/types": "8.7.0" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/lockfile-file/node_modules/@pnpm/types": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.7.0.tgz", + "integrity": "sha512-2j4ldzfOQNa3EZfJEmJrBQefE+OWBMgAoWWnVeXi5B7itVHRcg27Np+q0FxzuZE//O0N44WKH4WJG53sBsUqCQ==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/lockfile-file/node_modules/dependency-path": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/dependency-path/-/dependency-path-9.2.6.tgz", + "integrity": "sha512-B6t52bLlGj/vpyVcqGuido0QNYIMpFKzfZzmgmYVjwuzLrlIuY9Dky4Dru8J5vWPcj/GHu3DtXUUemzCVwJ3Iw==", + "dependencies": { + "@pnpm/crypto.base32-hash": "1.0.1", + "@pnpm/types": "8.7.0", + "encode-registry": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/lockfile-types": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@pnpm/lockfile-types/-/lockfile-types-4.3.6.tgz", + "integrity": "sha512-5vvdV3tEVOCzzeGv2FXK4590qPUVpZ+5gdqCawFuiNTJavx+4rmmY4aDUjdVXUcKGwqkIBPVKe/SNUBA3A2rtg==", + "dependencies": { + "@pnpm/types": "8.10.0" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/lockfile-utils": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@pnpm/lockfile-utils/-/lockfile-utils-4.2.8.tgz", + "integrity": "sha512-4vonZnjhNPd7GFzDmcQeBoIucNWpbbrTQNT61QxB5cNbdYej3WBVtuApwEzkZ65/rpnv3+ek1DoXomMi1ttozQ==", + "dependencies": { + "@pnpm/lockfile-types": "4.3.5", + "@pnpm/resolver-base": "9.1.4", + "@pnpm/types": "8.9.0", + "dependency-path": "9.2.8", + "get-npm-tarball-url": "^2.0.3", + "ramda": "npm:@pnpm/ramda@0.28.1" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/lockfile-utils/node_modules/@pnpm/lockfile-types": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@pnpm/lockfile-types/-/lockfile-types-4.3.5.tgz", + "integrity": "sha512-5GdnnhGdz+4JphrKYYZ7rcv9t37BllNwdCbFLYli6ajyIeoSCklNNCHWNewskWs3PZZUHW8LxD/nKHPaarbm9g==", + "dependencies": { + "@pnpm/types": "8.9.0" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/lockfile-utils/node_modules/@pnpm/types": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.9.0.tgz", + "integrity": "sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/logger": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@pnpm/logger/-/logger-4.0.0.tgz", + "integrity": "sha512-SIShw+k556e7S7tLZFVSIHjCdiVog1qWzcKW2RbLEHPItdisAFVNIe34kYd9fMSswTlSRLS/qRjw3ZblzWmJ9Q==", + "dependencies": { + "bole": "^4.0.0", + "ndjson": "^2.0.0" + }, + "engines": { + "node": ">=12.17" + } + }, + "node_modules/@pnpm/merge-lockfile-changes": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@pnpm/merge-lockfile-changes/-/merge-lockfile-changes-3.0.11.tgz", + "integrity": "sha512-LICYA0yc46ELJe6uECMO4rYhRb5W8DQDHFlVAkg7/tm9UT65aweiNopxVCHUNaHn5+m9u1QamsIXzvKnBwV+Kw==", + "dependencies": { + "@pnpm/lockfile-types": "4.3.3", + "comver-to-semver": "^1.0.0", + "ramda": "npm:@pnpm/ramda@0.28.1", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/merge-lockfile-changes/node_modules/@pnpm/lockfile-types": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@pnpm/lockfile-types/-/lockfile-types-4.3.3.tgz", + "integrity": "sha512-FY+u1JOclJNy/O3EuOPWhQyN23aQTisxmm29Tj52EGFy8zPz7SZev2+K06jUzqKuo7EChQlrR8Tqv/gTOMQN2w==", + "dependencies": { + "@pnpm/types": "8.7.0" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/merge-lockfile-changes/node_modules/@pnpm/types": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.7.0.tgz", + "integrity": "sha512-2j4ldzfOQNa3EZfJEmJrBQefE+OWBMgAoWWnVeXi5B7itVHRcg27Np+q0FxzuZE//O0N44WKH4WJG53sBsUqCQ==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/prune-lockfile": { + "version": "4.0.24", + "resolved": "https://registry.npmjs.org/@pnpm/prune-lockfile/-/prune-lockfile-4.0.24.tgz", + "integrity": "sha512-v0NA9ZkxUkaT9LxwCwN6JNrQ8ok1L7skxn9wk+1icLYKPQXgSNKap0zSAJeBtyNd9NXGXxO0QG8Noeto/MCAKg==", + "dependencies": { + "@pnpm/constants": "6.2.0", + "@pnpm/dependency-path": "1.1.3", + "@pnpm/lockfile-types": "4.3.6", + "@pnpm/types": "8.10.0", + "ramda": "npm:@pnpm/ramda@0.28.1" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/prune-lockfile/node_modules/@pnpm/constants": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@pnpm/constants/-/constants-6.2.0.tgz", + "integrity": "sha512-GlDVUkeTR2WK0oZAM+wtDY6RBMLw6b0Z/5qKgBbDszx4e+R7CHyfG7JofyypogRCfeWXeAXp2C2FkFTh+sNgIg==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/read-project-manifest": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@pnpm/read-project-manifest/-/read-project-manifest-3.0.13.tgz", + "integrity": "sha512-DEpAO64fA6VhcAudrjTAM4RIWCvw0Pmr4L0gaZqV0yta5zIkOTfFXT07lo80Zch4bvqmcOxlbM6Bazd4W+6Cww==", + "dependencies": { + "@pnpm/error": "3.1.0", + "@pnpm/graceful-fs": "2.0.0", + "@pnpm/types": "8.7.0", + "@pnpm/write-project-manifest": "3.0.10", + "detect-indent": "^6.1.0", + "fast-deep-equal": "^3.1.3", + "is-windows": "^1.0.2", + "json5": "^2.2.1", + "parse-json": "^5.2.0", + "read-yaml-file": "^2.1.0", + "sort-keys": "^4.2.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/read-project-manifest/node_modules/@pnpm/types": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.7.0.tgz", + "integrity": "sha512-2j4ldzfOQNa3EZfJEmJrBQefE+OWBMgAoWWnVeXi5B7itVHRcg27Np+q0FxzuZE//O0N44WKH4WJG53sBsUqCQ==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/read-project-manifest/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@pnpm/read-project-manifest/node_modules/read-yaml-file": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", + "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", + "dependencies": { + "js-yaml": "^4.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/@pnpm/registry-mock": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/@pnpm/registry-mock/-/registry-mock-2.20.0.tgz", + "integrity": "sha512-ADVI/RsdN+l4GHD9gKJvXpNd/UBX5W0Nfv/PEuc4kf++aBzDvEHd2n0QAnk5LZTidCHXvYCagFgcCy/oFkkIJg==", + "dev": true, + "dependencies": { + "anonymous-npm-registry-client": "^0.2.0", + "cpr": "^3.0.1", + "execa": "^5.1.1", + "read-yaml-file": "^2.1.0", + "rimraf": "^3.0.2", + "tempy": "^1.0.1", + "verdaccio": "^5.10.1", + "write-yaml-file": "^4.2.0" + }, + "bin": { + "registry-mock": "dist/bin/pnpm-registry-mock.js" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/@pnpm/registry-mock/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@pnpm/registry-mock/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@pnpm/registry-mock/node_modules/read-yaml-file": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", + "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", + "dev": true, + "dependencies": { + "js-yaml": "^4.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/@pnpm/resolver-base": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@pnpm/resolver-base/-/resolver-base-9.1.4.tgz", + "integrity": "sha512-OoclNn2NxqyJ+BjrB6gaR2Vj1rA6eryIn+xEh5UDX5y3rNrFL1pKCYHkEJv4qqKSayX1JsGHv7NzK5iSh4g3iA==", + "dependencies": { + "@pnpm/types": "8.9.0" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/resolver-base/node_modules/@pnpm/types": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.9.0.tgz", + "integrity": "sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/types": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.10.0.tgz", + "integrity": "sha512-A4pcNNvFJdkMXArEjTCOIYNL2VxD4uBynWZ6cBIELXb5qJ0tUzwKsaSz4J953I0rQFqnsFpUYqaWIquI10W1sw==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/write-project-manifest": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@pnpm/write-project-manifest/-/write-project-manifest-3.0.10.tgz", + "integrity": "sha512-sw5AXR+KplipHL3GiPq8xNib8XUsi8ieh4XFVgjrAGkLIhfOrslonULY7d0QpVMotFMS7ha74s0s059T/5cnmQ==", + "dependencies": { + "@pnpm/types": "8.7.0", + "json5": "^2.2.1", + "write-file-atomic": "^4.0.2", + "write-yaml-file": "^4.2.0" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@pnpm/write-project-manifest/node_modules/@pnpm/types": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.7.0.tgz", + "integrity": "sha512-2j4ldzfOQNa3EZfJEmJrBQefE+OWBMgAoWWnVeXi5B7itVHRcg27Np+q0FxzuZE//O0N44WKH4WJG53sBsUqCQ==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@swc/core": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.42.tgz", + "integrity": "sha512-nVFUd5+7tGniM2cT3LXaqnu3735Cu4az8A9gAKK+8sdpASI52SWuqfDBmjFCK9xG90MiVDVp2PTZr0BWqCIzpw==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.42", + "@swc/core-darwin-x64": "1.3.42", + "@swc/core-linux-arm-gnueabihf": "1.3.42", + "@swc/core-linux-arm64-gnu": "1.3.42", + "@swc/core-linux-arm64-musl": "1.3.42", + "@swc/core-linux-x64-gnu": "1.3.42", + "@swc/core-linux-x64-musl": "1.3.42", + "@swc/core-win32-arm64-msvc": "1.3.42", + "@swc/core-win32-ia32-msvc": "1.3.42", + "@swc/core-win32-x64-msvc": "1.3.42" + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.42.tgz", + "integrity": "sha512-hM6RrZFyoCM9mX3cj/zM5oXwhAqjUdOCLXJx7KTQps7NIkv/Qjvobgvyf2gAb89j3ARNo9NdIoLjTjJ6oALtiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.42.tgz", + "integrity": "sha512-bjsWtHMb6wJK1+RGlBs2USvgZ0txlMk11y0qBLKo32gLKTqzUwRw0Fmfzuf6Ue2a/w//7eqMlPFEre4LvJajGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.42.tgz", + "integrity": "sha512-Oe0ggMz3MyqXNfeVmY+bBTL0hFSNY3bx8dhcqsh4vXk/ZVGse94QoC4dd92LuPHmKT0x6nsUzB86x2jU9QHW5g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.42.tgz", + "integrity": "sha512-ZJsa8NIW1RLmmHGTJCbM7OPSbBZ9rOMrLqDtUOGrT0uoJXZnnQqolflamB5wviW0X6h3Z3/PSTNGNDCJ3u3Lqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.42.tgz", + "integrity": "sha512-YpZwlFAfOp5vkm/uVUJX1O7N3yJDO1fDQRWqsOPPNyIJkI2ydlRQtgN6ZylC159Qv+TimfXnGTlNr7o3iBAqjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.42.tgz", + "integrity": "sha512-0ccpKnsZbyHBzaQFdP8U9i29nvOfKitm6oJfdJzlqsY/jCqwvD8kv2CAKSK8WhJz//ExI2LqNrDI0yazx5j7+A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.42.tgz", + "integrity": "sha512-7eckRRuTZ6+3K21uyfXXgc2ZCg0mSWRRNwNT3wap2bYkKPeqTgb8pm8xYSZNEiMuDonHEat6XCCV36lFY6kOdQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.42.tgz", + "integrity": "sha512-t27dJkdw0GWANdN4TV0lY/V5vTYSx5SRjyzzZolep358ueCGuN1XFf1R0JcCbd1ojosnkQg2L7A7991UjXingg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.42.tgz", + "integrity": "sha512-xfpc/Zt/aMILX4IX0e3loZaFyrae37u3MJCv1gJxgqrpeLi7efIQr3AmERkTK3mxTO6R5urSliWw2W3FyZ7D3Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.42", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.42.tgz", + "integrity": "sha512-ra2K4Tu++EJLPhzZ6L8hWUsk94TdK/2UKhL9dzCBhtzKUixsGCEqhtqH1zISXNvW8qaVLFIMUP37ULe80/IJaA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/jest": { + "version": "0.2.24", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.24.tgz", + "integrity": "sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==", + "dev": true, + "dependencies": { + "@jest/create-cache-key-function": "^27.4.2", + "jsonc-parser": "^3.2.0" + }, + "engines": { + "npm": ">= 7.0.0" + }, + "peerDependencies": { + "@swc/core": "*" + } + }, + "node_modules/@tsconfig/node16-strictest": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16-strictest/-/node16-strictest-1.0.4.tgz", + "integrity": "sha512-kp6/DuAoKzHVv5U+p0uOesYbjrEvrYVNdQMl163a+yXXUv9twabvkCGEn3pmVxKXB45JU5MPGolDDWnONZL5ZQ==", + "dev": true + }, + "node_modules/@types/argparse": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-2.0.10.tgz", + "integrity": "sha512-C4wahC3gz3vQtvPazrJ5ONwmK1zSDllQboiWvpMM/iOswCYfBREFnjFbq/iWKIVOCl8+m5Pk6eva6/ZSsDuIGA==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "28.1.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz", + "integrity": "sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==", + "dev": true, + "dependencies": { + "expect": "^28.0.0", + "pretty-format": "^28.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.14.191", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", + "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.18.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.20.tgz", + "integrity": "sha512-9fH66vSJnF563exTu3y1g2IbDz1vCj01Lbqms97r8j0qzfFisT2biypSfybVv/eYrtTB74x9xQTdRU8RyMiRrg==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz", + "integrity": "sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.56.0", + "@typescript-eslint/type-utils": "5.56.0", + "@typescript-eslint/utils": "5.56.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.56.0.tgz", + "integrity": "sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.56.0", + "@typescript-eslint/types": "5.56.0", + "@typescript-eslint/typescript-estree": "5.56.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz", + "integrity": "sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.56.0", + "@typescript-eslint/visitor-keys": "5.56.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz", + "integrity": "sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.56.0", + "@typescript-eslint/utils": "5.56.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.56.0.tgz", + "integrity": "sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz", + "integrity": "sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.56.0", + "@typescript-eslint/visitor-keys": "5.56.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.56.0.tgz", + "integrity": "sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.56.0", + "@typescript-eslint/types": "5.56.0", + "@typescript-eslint/typescript-estree": "5.56.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz", + "integrity": "sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.56.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@verdaccio/commons-api": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@verdaccio/commons-api/-/commons-api-10.2.0.tgz", + "integrity": "sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==", + "dev": true, + "dependencies": { + "http-errors": "2.0.0", + "http-status-codes": "2.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/commons-api/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/@verdaccio/config": { + "version": "6.0.0-6-next.66", + "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-6.0.0-6-next.66.tgz", + "integrity": "sha512-xV35sMMXweg8xv0LY+uu1pBwz7FHAVsEqXKCqG9j7pRM7XIgEQMJ0NVsZBUALplRoZrH3vr3iFvnL9zS0LRKSA==", + "dev": true, + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.66", + "@verdaccio/utils": "6.0.0-6-next.34", + "debug": "4.3.4", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "minimatch": "3.1.2", + "yup": "0.32.11" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/config/node_modules/@verdaccio/core": { + "version": "6.0.0-6-next.66", + "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-6.0.0-6-next.66.tgz", + "integrity": "sha512-U31XNEbqFPgQovoEF2J56BO1CsP9kH9exmPQ87N9Le9MIQKebrSSwx3zGpHsTOw0hcckN/wi+Rj1V3roN845GA==", + "dev": true, + "dependencies": { + "ajv": "8.11.2", + "core-js": "3.28.0", + "http-errors": "1.8.1", + "http-status-codes": "2.2.0", + "process-warning": "1.0.0", + "semver": "7.3.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/config/node_modules/@verdaccio/utils": { + "version": "6.0.0-6-next.34", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-6.0.0-6-next.34.tgz", + "integrity": "sha512-aeGwqmcPYD880BwVb7SnqcyPLhBPKmtXWtKy159p8/RMRuU+bz+NTKHxdDotpZO/OU7P80D9GA5+7UwIpP0f+g==", + "dev": true, + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.66", + "lodash": "4.17.21", + "minimatch": "3.1.2", + "semver": "7.3.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/config/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@verdaccio/config/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@verdaccio/config/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@verdaccio/core": { + "version": "6.0.0-6-next.67", + "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-6.0.0-6-next.67.tgz", + "integrity": "sha512-JGPe+NUXrcAK2jBdYdvX1zrRnUfRvk3aNzwM1v+YeoHSnGuuhoEuO/7mhXtK94+BBkJH79ntRUtRKbolDb4ROg==", + "dev": true, + "dependencies": { + "ajv": "8.11.2", + "core-js": "3.28.0", + "http-errors": "1.8.1", + "http-status-codes": "2.2.0", + "process-warning": "1.0.0", + "semver": "7.3.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/core/node_modules/ajv": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", + "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@verdaccio/core/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@verdaccio/file-locking": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-10.3.0.tgz", + "integrity": "sha512-FE5D5H4wy/nhgR/d2J5e1Na9kScj2wMjlLPBHz7XF4XZAVSRdm45+kL3ZmrfA6b2HTADP/uH7H05/cnAYW8bhw==", + "dev": true, + "dependencies": { + "lockfile": "1.0.4" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/local-storage": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@verdaccio/local-storage/-/local-storage-10.3.1.tgz", + "integrity": "sha512-f3oArjXPOAwUAA2dsBhfL/rSouqJ2sfml8k97RtnBPKOzisb28bgyAQW0mqwQvN4MTK5S/2xudmobFpvJAIatg==", + "dev": true, + "dependencies": { + "@verdaccio/commons-api": "10.2.0", + "@verdaccio/file-locking": "10.3.0", + "@verdaccio/streams": "10.2.0", + "async": "3.2.4", + "debug": "4.3.4", + "lodash": "4.17.21", + "lowdb": "1.0.0", + "mkdirp": "1.0.4" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/local-storage/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@verdaccio/logger-7": { + "version": "6.0.0-6-next.12", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-7/-/logger-7-6.0.0-6-next.12.tgz", + "integrity": "sha512-L+HrcTZIJlve/FKyTrtAFwwHpt9f3Umwm6XbUAgbJxNbmQxdo5g1THLMMhbgJhGODOAJCtmf1UToKzhFopGxMg==", + "dev": true, + "dependencies": { + "@verdaccio/logger-commons": "6.0.0-6-next.35", + "pino": "7.11.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/logger-commons": { + "version": "6.0.0-6-next.35", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-6.0.0-6-next.35.tgz", + "integrity": "sha512-CVsDy2SpJq9ryY4z5I0T1Xd0/EPPyNI78Uk6U67odjUN8cbyDTwCe/bbOPKOL6HBiiOtm39oSVeoztLFDobYmg==", + "dev": true, + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.67", + "@verdaccio/logger-prettify": "6.0.0-6-next.9", + "colorette": "2.0.19", + "debug": "4.3.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/logger-prettify": { + "version": "6.0.0-6-next.9", + "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-6.0.0-6-next.9.tgz", + "integrity": "sha512-+VZa/O4HgEGl5kuTUL86Nf3T5xrPBnrIPRMEiubW4Lytj2Jo9FTxxhAFyJ0QD4FSIZqyzi8Ul9jM0SKDxsTbdw==", + "dev": true, + "dependencies": { + "colorette": "2.0.19", + "dayjs": "1.11.7", + "lodash": "4.17.21", + "pino-abstract-transport": "1.0.0", + "sonic-boom": "3.2.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/middleware": { + "version": "6.0.0-6-next.46", + "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-6.0.0-6-next.46.tgz", + "integrity": "sha512-hOWmKkGVZBAqLKN1mWwLe4lBR769L2r5Sw3tjfgF64bCBvmrEge5Q4b5cU9uIzvmjLLgG+r/7ZN5J3fo+lvHpA==", + "dev": true, + "dependencies": { + "@verdaccio/config": "6.0.0-6-next.67", + "@verdaccio/core": "6.0.0-6-next.67", + "@verdaccio/url": "11.0.0-6-next.33", + "@verdaccio/utils": "6.0.0-6-next.35", + "debug": "4.3.4", + "express": "4.18.2", + "express-rate-limit": "5.5.1", + "lodash": "4.17.21", + "lru-cache": "7.16.1", + "mime": "2.6.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/middleware/node_modules/@verdaccio/config": { + "version": "6.0.0-6-next.67", + "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-6.0.0-6-next.67.tgz", + "integrity": "sha512-cUu4IKhC80/11ArZNq7oYCWT9zrFrDC2L7vfW0O0HI0slaeSSQ2TN/2P91EX9WW4VCatfckBOloXDJl5OinDDg==", + "dev": true, + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.67", + "@verdaccio/utils": "6.0.0-6-next.35", + "debug": "4.3.4", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "minimatch": "3.1.2", + "yup": "0.32.11" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/middleware/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@verdaccio/middleware/node_modules/lru-cache": { + "version": "7.16.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.1.tgz", + "integrity": "sha512-9kkuMZHnLH/8qXARvYSjNvq8S1GYFFzynQTAfKeaJ0sIrR3PUPuu37Z+EiIANiZBvpfTf2B5y8ecDLSMWlLv+w==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@verdaccio/middleware/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@verdaccio/signature": { + "version": "6.0.0-6-next.2", + "resolved": "https://registry.npmjs.org/@verdaccio/signature/-/signature-6.0.0-6-next.2.tgz", + "integrity": "sha512-aFvMbxxHzJCpPmqSgVuQYvYN2RP11CoSEcTXikkyb1zF4Uf3cOy53zUZ1Y7iOKCRYTgWrmet9KP7+24e44GHxg==", + "dev": true, + "dependencies": { + "debug": "4.3.4", + "jsonwebtoken": "9.0.0", + "lodash": "4.17.21" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/streams": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@verdaccio/streams/-/streams-10.2.0.tgz", + "integrity": "sha512-FaIzCnDg0x0Js5kSQn1Le3YzDHl7XxrJ0QdIw5LrDUmLsH3VXNi4/NMlSHnw5RiTTMs4UbEf98V3RJRB8exqJA==", + "dev": true, + "engines": { + "node": ">=8", + "npm": ">=5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/tarball": { + "version": "11.0.0-6-next.36", + "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-11.0.0-6-next.36.tgz", + "integrity": "sha512-p5Apb9ppY6NkPUNJG3ymGqDEIw7lxey6zHWyFQr+Wj15BeyR8Ch7xVFfOz6w+GRVipnDYMmOpERVgenZgYAr3w==", + "dev": true, + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.67", + "@verdaccio/url": "11.0.0-6-next.33", + "@verdaccio/utils": "6.0.0-6-next.35", + "debug": "4.3.4", + "lodash": "4.17.21" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/ui-theme": { + "version": "6.0.0-6-next.67", + "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-6.0.0-6-next.67.tgz", + "integrity": "sha512-Ru17MwafWI7qeUZmtDaJyLSxkyhw+ZJyj4dppWwfx6SxwCzf86vUOpjSVh1TmWNBvGby5lcWouj55RkvlP3DtQ==", + "dev": true + }, + "node_modules/@verdaccio/url": { + "version": "11.0.0-6-next.33", + "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-11.0.0-6-next.33.tgz", + "integrity": "sha512-BjxSMM/UCoESEWxXBej2uEEuCP0WSOWeQmonwecJ5EPuKfMogbxf7ypzXVeq9XEYS9PVcdDyK6XWOX1cmEFRSQ==", + "dev": true, + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.67", + "debug": "4.3.4", + "lodash": "4.17.21", + "validator": "13.9.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@verdaccio/utils": { + "version": "6.0.0-6-next.35", + "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-6.0.0-6-next.35.tgz", + "integrity": "sha512-qyecJ5hBC/qsghnoKq60nf7Vf3kzJZEEc0YAYd8ApT8aN7op4CXhe7Ye3f+pasLo82rRhjpZeFQhkhZU37PXGg==", + "dev": true, + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.67", + "lodash": "4.17.21", + "minimatch": "3.1.2", + "semver": "7.3.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/@zkochan/rimraf": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@zkochan/rimraf/-/rimraf-2.1.2.tgz", + "integrity": "sha512-Lc2oK51J6aQWcLWTloobJun5ZF41BbTDdLvE+aMcexoVWFoFqvZmnZoyXR2IZk6NJEVoZW8tjgtvQLfTsmRs2Q==", + "dependencies": { + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=12.10" + } + }, + "node_modules/@zkochan/which": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@zkochan/which/-/which-2.0.3.tgz", + "integrity": "sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anonymous-npm-registry-client": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/anonymous-npm-registry-client/-/anonymous-npm-registry-client-0.2.0.tgz", + "integrity": "sha512-ym3GCDQU8B6PZrswCvanRiWoSg2QrrlPwoRlMr4oCpGvyK2KlwTujdCZfxrGapqxrqEY3TpxEqLf+7PhFnyaLA==", + "dev": true, + "dependencies": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.13.1", + "safe-buffer": "^5.1.1", + "semver": "^7.3.5", + "slide": "^1.1.3", + "ssri": "^8.0.1" + }, + "optionalDependencies": { + "npmlog": "2 || ^3.1.0 || ^4.0.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apache-md5": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.8.tgz", + "integrity": "sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true, + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "node_modules/babel-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^28.1.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/bole": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bole/-/bole-4.0.1.tgz", + "integrity": "sha512-42r0aSOJFJti2l6LasBHq2BuWJzohGs349olQnH/ETlJo87XnoWw7UT8pGE6UstjxzOKkwz7tjoFcmSr6L16vg==", + "dependencies": { + "fast-safe-stringify": "^2.0.7", + "individual": "^3.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001469", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz", + "integrity": "sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipanion": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-3.2.0.tgz", + "integrity": "sha512-XaPQiJQZKbyaaDbv5yR/cAt/ORfZfENkr4wGQj+Go/Uf/65ofTQBCPirgWFeJctZW24V3mxrFiEnEmqBflrJYA==", + "dev": true, + "dependencies": { + "typanion": "^3.8.0" + }, + "peerDependencies": { + "typanion": "*" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/comver-to-semver": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/comver-to-semver/-/comver-to-semver-1.0.0.tgz", + "integrity": "sha512-gcGtbRxjwROQOdXLUWH1fQAXqThUVRZ219aAwgtX3KfYw429/Zv6EIJRf5TBSzWdAGwePmqH7w70WTaX4MDqag==", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true, + "optional": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/core-js": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.28.0.tgz", + "integrity": "sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cpr": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz", + "integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.5", + "minimist": "^1.2.0", + "mkdirp": "~0.5.1", + "rimraf": "^2.5.4" + }, + "bin": { + "cpr": "bin/cpr" + } + }, + "node_modules/cpr/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dev": true, + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, + "optional": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-path": { + "version": "9.2.8", + "resolved": "https://registry.npmjs.org/dependency-path/-/dependency-path-9.2.8.tgz", + "integrity": "sha512-S0OhIK7sIyAsph8hVH/LMCTDL3jozKtlrPx3dMQrlE2nAlXTquTT+AcOufphDMTQqLkfn4acvfiem9I1IWZ4jQ==", + "dependencies": { + "@pnpm/crypto.base32-hash": "1.0.1", + "@pnpm/types": "8.9.0", + "encode-registry": "^3.0.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/dependency-path/node_modules/@pnpm/types": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.9.0.tgz", + "integrity": "sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==", + "engines": { + "node": ">=14.6" + }, + "funding": { + "url": "https://opencollective.com/pnpm" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.340", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz", + "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encode-registry": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/encode-registry/-/encode-registry-3.0.0.tgz", + "integrity": "sha512-2fRYji8K6FwYuQ6EPBKR/J9mcqb7kIoNqt1vGvJr3NrvKfncRiNm00Oxo6gi/YJF8R5Sp2bNFSFdGKTG0rje1Q==", + "dependencies": { + "mem": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "name": "safe-execa", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/safe-execa/-/safe-execa-0.1.3.tgz", + "integrity": "sha512-KuOb5C35fJRrhTfErHX+Bw03PayibKwpmOPHnyWMkwSqeiyjq2/D6E524rtJFrvqoUKH6iTe/NC4nOtgWflU7g==", + "dependencies": { + "@zkochan/which": "^2.0.3", + "execa": "^5.1.1", + "path-name": "^1.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/execa/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express-rate-limit": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.1.tgz", + "integrity": "sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==", + "dev": true + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-redact": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", + "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "optional": true, + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-npm-tarball-url": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz", + "integrity": "sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true, + "optional": true + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/http-status-codes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", + "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==", + "dev": true + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/individual": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/individual/-/individual-3.0.0.tgz", + "integrity": "sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "optional": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", + "dev": true, + "dependencies": { + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", + "import-local": "^3.0.2", + "jest-cli": "^28.1.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", + "dev": true, + "dependencies": { + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-cli/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-leak-detector": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-mock": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", + "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-mock/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "dev": true, + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-snapshot": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-util/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-util/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-validate": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest/node_modules/@types/yargs": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", + "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/js-sdsl": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "name": "@zkochan/js-yaml", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dev": true, + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lockfile": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", + "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", + "dev": true, + "dependencies": { + "signal-exit": "^3.0.2" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.3", + "is-promise": "^2.1.0", + "lodash": "4", + "pify": "^3.0.0", + "steno": "^0.4.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lowdb/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "dev": true + }, + "node_modules/lunr-mutable-indexes": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/lunr-mutable-indexes/-/lunr-mutable-indexes-2.3.2.tgz", + "integrity": "sha512-Han6cdWAPPFM7C2AigS2Ofl3XjAT0yVMrUixodJEpyg71zCtZ2yzXc3s+suc/OaNt4ca6WJBEzVnEIjxCTwFMw==", + "dev": true, + "dependencies": { + "lunr": ">= 2.3.0 < 2.4.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mem": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", + "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", + "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dev": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dev": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dev": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/nanoclone": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", + "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/ndjson": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", + "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", + "dependencies": { + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.5", + "readable-stream": "^3.6.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "ndjson": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ndjson/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "optional": true, + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-exit-leak-free": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", + "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/onetime/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-name": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/path-name/-/path-name-1.0.0.tgz", + "integrity": "sha512-/dcAb5vMXH0f51yvMuSUqFpxUcA8JelbRmE5mW/p4CUJxrNgK24IkstnV7ENtg2IDGBOu6izKTG6eilbnbNKWQ==" + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pino": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", + "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.0.0", + "on-exit-leak-free": "^0.2.0", + "pino-abstract-transport": "v0.5.0", + "pino-std-serializers": "^4.0.0", + "process-warning": "^1.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.1.0", + "safe-stable-stringify": "^2.1.0", + "sonic-boom": "^2.2.1", + "thread-stream": "^0.15.1" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dev": true, + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/pino-std-serializers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", + "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==", + "dev": true + }, + "node_modules/pino/node_modules/pino-abstract-transport": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", + "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", + "dev": true, + "dependencies": { + "duplexify": "^4.1.2", + "split2": "^4.0.0" + } + }, + "node_modules/pino/node_modules/sonic-boom": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", + "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/pino/node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/process-warning": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", + "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", + "dev": true + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/property-expr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", + "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true + }, + "node_modules/ramda": { + "name": "@pnpm/ramda", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@pnpm/ramda/-/ramda-0.28.1.tgz", + "integrity": "sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-yaml-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", + "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.6.1", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-yaml-file/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/read-yaml-file/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/read-yaml-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/real-require": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", + "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfc4648": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.2.tgz", + "integrity": "sha512-tLOizhR6YGovrEBLatX1sdcuhoSCXddw3mqNVAcKxGJ+J0hFeJ+SjeWCv5UPA/WU3YzWPPuCVYgXBKZUPGpKtg==" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "optional": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/sonic-boom": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", + "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/sort-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", + "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", + "dependencies": { + "is-plain-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/split2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.3" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "optional": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "optional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", + "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "dev": true, + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thread-stream": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", + "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", + "dev": true, + "dependencies": { + "real-require": "^0.1.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", + "dev": true + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/typanion": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/typanion/-/typanion-3.12.1.tgz", + "integrity": "sha512-3SJF/czpzqq6G3lprGFLa6ps12yb1uQ1EmitNnep2fDMNh1aO/Zbq9sWY+3lem0zYb2oHJnQWyabTGUZ+L1ScQ==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unix-crypt-td-js": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", + "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", + "dev": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dev": true, + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/validator": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", + "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verdaccio": { + "version": "5.23.1", + "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-5.23.1.tgz", + "integrity": "sha512-tPEm0hQub2jV5b5ID9B/dexAKI00iI+wCvLyhhg/OSu+E6OHMyJuj5KkT58AxM4Lsz0zOG58qhNwmy9JEgq6vA==", + "dev": true, + "dependencies": { + "@verdaccio/config": "6.0.0-6-next.66", + "@verdaccio/core": "6.0.0-6-next.67", + "@verdaccio/local-storage": "10.3.1", + "@verdaccio/logger-7": "6.0.0-6-next.12", + "@verdaccio/middleware": "6.0.0-6-next.46", + "@verdaccio/signature": "6.0.0-6-next.2", + "@verdaccio/streams": "10.2.0", + "@verdaccio/tarball": "11.0.0-6-next.36", + "@verdaccio/ui-theme": "6.0.0-6-next.67", + "@verdaccio/url": "11.0.0-6-next.33", + "@verdaccio/utils": "6.0.0-6-next.35", + "async": "3.2.4", + "body-parser": "1.20.2", + "clipanion": "3.2.0", + "compression": "1.7.4", + "cookies": "0.8.0", + "cors": "2.8.5", + "debug": "^4.3.4", + "envinfo": "7.8.1", + "express": "4.18.2", + "express-rate-limit": "5.5.1", + "fast-safe-stringify": "2.1.1", + "handlebars": "4.7.7", + "js-yaml": "4.1.0", + "JSONStream": "1.3.5", + "jsonwebtoken": "9.0.0", + "kleur": "4.1.5", + "lodash": "4.17.21", + "lru-cache": "7.18.3", + "lunr-mutable-indexes": "2.3.2", + "mime": "3.0.0", + "mkdirp": "1.0.4", + "mv": "2.1.1", + "pkginfo": "0.4.1", + "request": "2.88.2", + "semver": "7.3.8", + "validator": "13.9.0", + "verdaccio-audit": "11.0.0-6-next.30", + "verdaccio-htpasswd": "10.5.3" + }, + "bin": { + "verdaccio": "bin/verdaccio" + }, + "engines": { + "node": ">=12.18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/verdaccio-audit": { + "version": "11.0.0-6-next.30", + "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-11.0.0-6-next.30.tgz", + "integrity": "sha512-lCSUIdFv1ucFP7oUOx/lM7kH+s72aQk1kG15rtd5wwZoKffrjJRnQNu5P8UX2IWDDvwDYqW/ng0PthdokZwl2Q==", + "dev": true, + "dependencies": { + "@verdaccio/config": "6.0.0-6-next.67", + "@verdaccio/core": "6.0.0-6-next.67", + "express": "4.18.2", + "https-proxy-agent": "5.0.1", + "node-fetch": "cjs" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/verdaccio-audit/node_modules/@verdaccio/config": { + "version": "6.0.0-6-next.67", + "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-6.0.0-6-next.67.tgz", + "integrity": "sha512-cUu4IKhC80/11ArZNq7oYCWT9zrFrDC2L7vfW0O0HI0slaeSSQ2TN/2P91EX9WW4VCatfckBOloXDJl5OinDDg==", + "dev": true, + "dependencies": { + "@verdaccio/core": "6.0.0-6-next.67", + "@verdaccio/utils": "6.0.0-6-next.35", + "debug": "4.3.4", + "js-yaml": "4.1.0", + "lodash": "4.17.21", + "minimatch": "3.1.2", + "yup": "0.32.11" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/verdaccio-audit/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/verdaccio-htpasswd": { + "version": "10.5.3", + "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-10.5.3.tgz", + "integrity": "sha512-3QedFZaoOpRbyDT6pdktKxGHXakACxZgGflrxWYKh/B4Ds09QNonU6KyXPJTwFJZoAFb0Eey0KP6BY8pibi2Jw==", + "dev": true, + "dependencies": { + "@verdaccio/file-locking": "10.3.0", + "apache-md5": "1.1.8", + "bcryptjs": "2.4.3", + "http-errors": "2.0.0", + "unix-crypt-td-js": "1.1.4" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/verdaccio" + } + }, + "node_modules/verdaccio-htpasswd/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verdaccio/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/verdaccio/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/verdaccio/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/verdaccio/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/write-yaml-file": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/write-yaml-file/-/write-yaml-file-4.2.0.tgz", + "integrity": "sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==", + "dependencies": { + "js-yaml": "^4.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10.13" + } + }, + "node_modules/write-yaml-file/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/write-yaml-file/node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "0.32.11", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", + "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/lodash": "^4.14.175", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "nanoclone": "^0.2.1", + "property-expr": "^2.0.4", + "toposort": "^2.0.2" + }, + "engines": { + "node": ">=10" + } + } + } +} diff --git a/pkgs/pnpm-lock-export/update.sh b/pkgs/pnpm-lock-export/update.sh new file mode 100755 index 0000000..12c11c6 --- /dev/null +++ b/pkgs/pnpm-lock-export/update.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix wget nix-prefetch-github jq prefetch-npm-deps nodejs + +# shellcheck shell=bash + +if [ -n "$GITHUB_TOKEN" ]; then + TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN") +fi + +if [[ $# -gt 1 || $1 == -* ]]; then + echo "Regenerates packaging data for the pnpm-lock-export packages." + echo "Usage: $0 [git release tag]" + exit 1 +fi + +set -x + +cd "$(dirname "$0")" +version="$1" + +set -euo pipefail + +if [ -z "$version" ]; then + version="$(wget -O- "${TOKEN_ARGS[@]}" "https://api.github.com/repos/cvent/pnpm-lock-export/releases?per_page=1" | jq -r '.[0].tag_name')" +fi + +# strip leading "v" +version="${version#v}" + +# pnpm-lock-export repository +src_hash=$(nix-prefetch-github cvent pnpm-lock-export --rev "v${version}" | jq -r .sha256) + +# Front-end dependencies +upstream_src="https://raw.githubusercontent.com/cvent/pnpm-lock-export/v$version" + +trap 'rm -rf package.json' EXIT +wget "${TOKEN_ARGS[@]}" "$upstream_src/package.json" +npm install --package-lock-only +deps_hash=$(prefetch-npm-deps package-lock.json) + +# Use friendlier hashes +src_hash=$(nix hash to-sri --type sha256 "$src_hash") +deps_hash=$(nix hash to-sri --type sha256 "$deps_hash") + +sed -i -E -e "s#version = \".*\"#version = \"$version\"#" default.nix +sed -i -E -e "s#hash = \".*\"#hash = \"$src_hash\"#" default.nix +sed -i -E -e "s#npmDepsHash = \".*\"#npmDepsHash = \"$deps_hash\"#" default.nix From ea57ad3eb8a78b1f37caeb54f83fbaea5b636e6a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Mar 2023 15:22:30 +0100 Subject: [PATCH 0842/1588] pkgs: add woodpecker This is just the same version as upstream, but following the `next` version. --- pkgs/default.nix | 8 + pkgs/woodpecker/agent.nix | 25 + pkgs/woodpecker/cli.nix | 16 + pkgs/woodpecker/common.nix | 38 + pkgs/woodpecker/frontend.nix | 57 + pkgs/woodpecker/server.nix | 26 + pkgs/woodpecker/update.sh | 51 + pkgs/woodpecker/woodpecker-package.json | 71 + pkgs/woodpecker/yarn.lock | 3153 +++++++++++++++++++++++ 9 files changed, 3445 insertions(+) create mode 100644 pkgs/woodpecker/agent.nix create mode 100644 pkgs/woodpecker/cli.nix create mode 100644 pkgs/woodpecker/common.nix create mode 100644 pkgs/woodpecker/frontend.nix create mode 100644 pkgs/woodpecker/server.nix create mode 100755 pkgs/woodpecker/update.sh create mode 100644 pkgs/woodpecker/woodpecker-package.json create mode 100644 pkgs/woodpecker/yarn.lock diff --git a/pkgs/default.nix b/pkgs/default.nix index 29d6b40..dd92dc5 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -41,4 +41,12 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { vimix-cursors = pkgs.callPackage ./vimix-cursors { }; volantes-cursors = pkgs.callPackage ./volantes-cursors { }; + + woodpecker-agent = pkgs.callPackage ./woodpecker/agent.nix { }; + + woodpecker-cli = pkgs.callPackage ./woodpecker/cli.nix { }; + + woodpecker-frontend = pkgs.callPackage ./woodpecker/frontend.nix { }; + + woodpecker-server = pkgs.callPackage ./woodpecker/server.nix { }; }) diff --git a/pkgs/woodpecker/agent.nix b/pkgs/woodpecker/agent.nix new file mode 100644 index 0000000..53f49eb --- /dev/null +++ b/pkgs/woodpecker/agent.nix @@ -0,0 +1,25 @@ +{ lib, buildGoModule, callPackage, fetchFromGitHub, fetchpatch }: +let + common = callPackage ./common.nix { }; +in +buildGoModule { + pname = "woodpecker-agent"; + inherit (common) version src ldflags postInstall vendorHash; + + patches = [ + # https://github.com/woodpecker-ci/woodpecker/pull/1686 + (fetchpatch { + name = "fix-local-pipeline-home.patch"; + url = "https://github.com/woodpecker-ci/woodpecker/commit/d2c9b73ebf015bfa64062b9855c33e14484ccc3e.patch"; + hash = "sha256-1wYe4+oCWiV/6W4cIbdDT+mEL9ETQmcYQZhjJASvmUk="; + }) + ]; + + subPackages = "cmd/agent"; + + CGO_ENABLED = 0; + + meta = common.meta // { + description = "Woodpecker Continuous Integration agent"; + }; +} diff --git a/pkgs/woodpecker/cli.nix b/pkgs/woodpecker/cli.nix new file mode 100644 index 0000000..579df10 --- /dev/null +++ b/pkgs/woodpecker/cli.nix @@ -0,0 +1,16 @@ +{ lib, buildGoModule, callPackage, fetchFromGitHub }: +let + common = callPackage ./common.nix { }; +in +buildGoModule { + pname = "woodpecker-cli"; + inherit (common) version src ldflags postInstall vendorHash; + + subPackages = "cmd/cli"; + + CGO_ENABLED = 0; + + meta = common.meta // { + description = "Command line client for the Woodpecker Continuous Integration server"; + }; +} diff --git a/pkgs/woodpecker/common.nix b/pkgs/woodpecker/common.nix new file mode 100644 index 0000000..8ca96d4 --- /dev/null +++ b/pkgs/woodpecker/common.nix @@ -0,0 +1,38 @@ +{ lib, fetchFromGitHub }: +let + rev = "e7ca28026bc4576b2dd30aa2ab71c2d07dfc7197"; + srcHash = "sha256-vtttb+tRi3uDFn8liFgZcAqWLENfpTY7lWsNCoTFzEM="; + vendorHash = "sha256-u7HT8+LeqS7mCNbUhrvSW0xd/uduL2Kw7A0mUUpW2w4="; + yarnHash = "sha256-h+he2VxvZlStIoLb1PPxqKSmTfFNGgJmUXptjtc5xD8="; + version = "next-${lib.substring 0 8 rev}"; +in +{ + inherit version yarnHash vendorHash; + + src = fetchFromGitHub { + owner = "woodpecker-ci"; + repo = "woodpecker"; + inherit rev; + hash = srcHash; + }; + + postInstall = '' + cd $out/bin + for f in *; do + mv -- "$f" "woodpecker-$f" + done + cd - + ''; + + ldflags = [ + "-s" + "-w" + "-X github.com/woodpecker-ci/woodpecker/version.Version=${version}" + ]; + + meta = with lib; { + homepage = "https://woodpecker-ci.org/"; + license = licenses.asl20; + maintainers = with maintainers; [ ambroisie techknowlogick ]; + }; +} diff --git a/pkgs/woodpecker/frontend.nix b/pkgs/woodpecker/frontend.nix new file mode 100644 index 0000000..478892d --- /dev/null +++ b/pkgs/woodpecker/frontend.nix @@ -0,0 +1,57 @@ +{ lib, buildPackages, callPackage, fetchFromGitHub, fetchYarnDeps, mkYarnPackage }: +let + common = callPackage ./common.nix { }; + + esbuild_0_17_12 = buildPackages.esbuild.overrideAttrs (oa: rec { + version = "0.17.12"; + + src = fetchFromGitHub { + owner = "evanw"; + repo = "esbuild"; + rev = "v${version}"; + hash = "sha256-75qDQWAp6cmuXtq90oIIQCj5IKUoQxNARxhFo2Sm5mk="; + }; + + vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ="; + }); +in +mkYarnPackage { + pname = "woodpecker-frontend"; + inherit (common) version; + + src = "${common.src}/web"; + + packageJSON = ./woodpecker-package.json; + yarnLock = ./yarn.lock; + + offlineCache = fetchYarnDeps { + yarnLock = ./yarn.lock; + hash = common.yarnHash; + }; + + ESBUILD_BINARY_PATH = lib.getExe esbuild_0_17_12; + + buildPhase = '' + runHook preBuild + + yarn --offline build + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + cp -R deps/woodpecker-ci/dist $out + echo "${common.version}" > "$out/version" + + runHook postInstall + ''; + + # Do not attempt generating a tarball for woodpecker-frontend again. + doDist = false; + + meta = common.meta // { + description = "Woodpecker Continuous Integration server frontend"; + }; +} diff --git a/pkgs/woodpecker/server.nix b/pkgs/woodpecker/server.nix new file mode 100644 index 0000000..0d59a82 --- /dev/null +++ b/pkgs/woodpecker/server.nix @@ -0,0 +1,26 @@ +{ lib, buildGoModule, callPackage, fetchFromGitHub, woodpecker-frontend }: +let + common = callPackage ./common.nix { }; +in +buildGoModule { + pname = "woodpecker-server"; + inherit (common) version src ldflags postInstall vendorHash; + + postPatch = '' + cp -r ${woodpecker-frontend} web/dist + ''; + + subPackages = "cmd/server"; + + CGO_ENABLED = 1; + + passthru = { + inherit woodpecker-frontend; + + updateScript = ./update.sh; + }; + + meta = common.meta // { + description = "Woodpecker Continuous Integration server"; + }; +} diff --git a/pkgs/woodpecker/update.sh b/pkgs/woodpecker/update.sh new file mode 100755 index 0000000..1712845 --- /dev/null +++ b/pkgs/woodpecker/update.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p nix wget prefetch-yarn-deps nix-prefetch-github jq nix-prefetch +# FIXME: add pnpm-lock-export to shell + +# shellcheck shell=bash + +if [ -n "$GITHUB_TOKEN" ]; then + TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN") +fi + +if [[ $# -gt 1 || $1 == -* ]]; then + echo "Regenerates packaging data for the woodpecker packages." + echo "Usage: $0 [git release tag]" + exit 1 +fi + +set -x + +cd "$(dirname "$0")" +rev="$1" + +set -euo pipefail + +if [ -z "$rev" ]; then + rev="$(wget -O- "${TOKEN_ARGS[@]}" "https://api.github.com/repos/woodpecker-ci/woodpecker/commits?per_page=1" | jq -r '.[0].sha')" +fi + +# Woodpecker repository +src_hash=$(nix-prefetch-github woodpecker-ci woodpecker --rev "${rev}" | jq -r .sha256) + +# Go modules +mod_hash=$(nix-prefetch '{ sha256 }: (callPackage (import ./cli.nix) { }).go-modules.overrideAttrs (_: { modHash = sha256; })') + +# Front-end dependencies +woodpecker_src="https://raw.githubusercontent.com/woodpecker-ci/woodpecker/$rev" +wget "${TOKEN_ARGS[@]}" "$woodpecker_src/web/package.json" -O woodpecker-package.json + +trap 'rm -rf pnpm-lock.yaml' EXIT +wget "${TOKEN_ARGS[@]}" "$woodpecker_src/web/pnpm-lock.yaml" +pnpm-lock-export --schema yarn.lock@v1 +yarn_hash=$(prefetch-yarn-deps yarn.lock) + +# Use friendlier hashes +src_hash=$(nix hash to-sri --type sha256 "$src_hash") +mod_hash=$(nix hash to-sri --type sha256 "$mod_hash") +yarn_hash=$(nix hash to-sri --type sha256 "$yarn_hash") + +sed -i -E -e "s#rev = \".*\"#rev = \"$rev\"#" common.nix +sed -i -E -e "s#srcHash = \".*\"#srcHash = \"$src_hash\"#" common.nix +sed -i -E -e "s#modHash = \".*\"#modHash = \"$mod_hash\"#" common.nix +sed -i -E -e "s#yarnHash = \".*\"#yarnHash = \"$yarn_hash\"#" common.nix diff --git a/pkgs/woodpecker/woodpecker-package.json b/pkgs/woodpecker/woodpecker-package.json new file mode 100644 index 0000000..08210db --- /dev/null +++ b/pkgs/woodpecker/woodpecker-package.json @@ -0,0 +1,71 @@ +{ + "name": "woodpecker-ci", + "author": "Woodpecker CI", + "version": "0.0.0", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + }, + "scripts": { + "start": "vite", + "build": "vite build", + "serve": "vite preview", + "lint": "eslint --max-warnings 0 --ext .js,.ts,.vue,.json .", + "formatcheck": "prettier -c .", + "format:fix": "prettier --write .", + "typecheck": "vue-tsc --noEmit", + "test": "echo 'No tests configured' && exit 0" + }, + "dependencies": { + "@intlify/unplugin-vue-i18n": "^0.9.2", + "@kyvg/vue3-notification": "^2.9.0", + "@vueuse/core": "^9.13.0", + "ansi_up": "^5.1.0", + "dayjs": "^1.11.7", + "floating-vue": "^2.0.0-beta.20", + "fuse.js": "^6.6.2", + "humanize-duration": "^3.28.0", + "javascript-time-ago": "^2.5.9", + "lodash": "^4.17.21", + "node-emoji": "^1.11.0", + "pinia": "^2.0.33", + "prismjs": "^1.29.0", + "vue": "^3.2.47", + "vue-i18n": "^9.2.2", + "vue-router": "^4.1.6" + }, + "devDependencies": { + "@iconify/json": "^2.2.36", + "@types/humanize-duration": "^3.27.1", + "@types/javascript-time-ago": "^2.0.3", + "@types/lodash": "^4.14.191", + "@types/node": "^18.15.3", + "@types/node-emoji": "^1.8.2", + "@types/prismjs": "^1.26.0", + "@typescript-eslint/eslint-plugin": "^5.55.0", + "@typescript-eslint/parser": "^5.55.0", + "@vitejs/plugin-vue": "^4.1.0", + "@vue/compiler-sfc": "^3.2.47", + "eslint": "^8.36.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "^8.7.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-simple-import-sort": "^10.0.0", + "eslint-plugin-vue": "^9.9.0", + "eslint-plugin-vue-scoped-css": "^2.4.0", + "prettier": "^2.8.5", + "typescript": "5.0.2", + "unplugin-icons": "^0.15.3", + "unplugin-vue-components": "^0.24.1", + "vite": "^4.2.0", + "vite-plugin-prismjs": "^0.0.8", + "vite-plugin-windicss": "^1.8.10", + "vite-svg-loader": "^4.0.0", + "vue-eslint-parser": "^9.1.0", + "vue-tsc": "^1.2.0", + "windicss": "^3.5.6" + } +} diff --git a/pkgs/woodpecker/yarn.lock b/pkgs/woodpecker/yarn.lock new file mode 100644 index 0000000..f99656c --- /dev/null +++ b/pkgs/woodpecker/yarn.lock @@ -0,0 +1,3153 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@2.2.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + integrity "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" + dependencies: + "@jridgewell/gen-mapping" "0.1.1" + "@jridgewell/trace-mapping" "0.3.17" + +"@antfu/install-pkg@0.1.1": + version "0.1.1" + resolved "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz" + integrity "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==" + dependencies: + "execa" "5.1.1" + "find-up" "5.0.0" + +"@antfu/utils@0.7.2": + version "0.7.2" + resolved "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.2.tgz" + integrity "sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==" + +"@babel/code-frame@7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + integrity "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" + dependencies: + "@babel/highlight" "7.18.6" + +"@babel/compat-data@7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz" + integrity "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" + +"@babel/core@7.19.3": + version "7.19.3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz" + integrity "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==" + dependencies: + "@ampproject/remapping" "2.2.0" + "@babel/code-frame" "7.18.6" + "@babel/generator" "7.19.5" + "@babel/helper-compilation-targets" "7.19.3" + "@babel/helper-module-transforms" "7.19.0" + "@babel/helpers" "7.19.4" + "@babel/parser" "7.19.4" + "@babel/template" "7.18.10" + "@babel/traverse" "7.19.4" + "@babel/types" "7.19.4" + "convert-source-map" "1.9.0" + "debug" "4.3.4" + "gensync" "1.0.0-beta.2" + "json5" "2.2.1" + "semver" "6.3.0" + +"@babel/generator@7.19.5": + version "7.19.5" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz" + integrity "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==" + dependencies: + "@babel/types" "7.19.4" + "@jridgewell/gen-mapping" "0.3.2" + "jsesc" "2.5.2" + +"@babel/helper-compilation-targets@7.19.3": + version "7.19.3" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz" + integrity "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==" + dependencies: + "@babel/compat-data" "7.19.4" + "@babel/core" "7.19.3" + "@babel/helper-validator-option" "7.18.6" + "browserslist" "4.21.4" + "semver" "6.3.0" + +"@babel/helper-environment-visitor@7.18.9": + version "7.18.9" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" + integrity "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" + +"@babel/helper-function-name@7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" + integrity "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" + dependencies: + "@babel/template" "7.18.10" + "@babel/types" "7.19.4" + +"@babel/helper-hoist-variables@7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + integrity "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" + dependencies: + "@babel/types" "7.19.4" + +"@babel/helper-module-imports@7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + integrity "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" + dependencies: + "@babel/types" "7.19.4" + +"@babel/helper-module-transforms@7.19.0": + version "7.19.0" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz" + integrity "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==" + dependencies: + "@babel/helper-environment-visitor" "7.18.9" + "@babel/helper-module-imports" "7.18.6" + "@babel/helper-simple-access" "7.19.4" + "@babel/helper-split-export-declaration" "7.18.6" + "@babel/helper-validator-identifier" "7.19.1" + "@babel/template" "7.18.10" + "@babel/traverse" "7.19.4" + "@babel/types" "7.19.4" + +"@babel/helper-simple-access@7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz" + integrity "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==" + dependencies: + "@babel/types" "7.19.4" + +"@babel/helper-split-export-declaration@7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + integrity "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" + dependencies: + "@babel/types" "7.19.4" + +"@babel/helper-string-parser@7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" + integrity "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" + +"@babel/helper-validator-identifier@7.19.1": + version "7.19.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" + integrity "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" + +"@babel/helper-validator-option@7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + integrity "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" + +"@babel/helpers@7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz" + integrity "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==" + dependencies: + "@babel/template" "7.18.10" + "@babel/traverse" "7.19.4" + "@babel/types" "7.19.4" + +"@babel/highlight@7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + integrity "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" + dependencies: + "@babel/helper-validator-identifier" "7.19.1" + "chalk" "2.4.2" + "js-tokens" "4.0.0" + +"@babel/parser@7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz" + integrity "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==" + dependencies: + "@babel/types" "7.19.4" + +"@babel/template@7.18.10": + version "7.18.10" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" + integrity "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" + dependencies: + "@babel/code-frame" "7.18.6" + "@babel/parser" "7.19.4" + "@babel/types" "7.19.4" + +"@babel/traverse@7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz" + integrity "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==" + dependencies: + "@babel/code-frame" "7.18.6" + "@babel/generator" "7.19.5" + "@babel/helper-environment-visitor" "7.18.9" + "@babel/helper-function-name" "7.19.0" + "@babel/helper-hoist-variables" "7.18.6" + "@babel/helper-split-export-declaration" "7.18.6" + "@babel/parser" "7.19.4" + "@babel/types" "7.19.4" + "debug" "4.3.4" + "globals" "11.12.0" + +"@babel/types@7.19.4": + version "7.19.4" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz" + integrity "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==" + dependencies: + "@babel/helper-string-parser" "7.19.4" + "@babel/helper-validator-identifier" "7.19.1" + "to-fast-properties" "2.0.0" + +"@esbuild/android-arm@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz" + integrity "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==" + +"@esbuild/android-arm64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz" + integrity "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==" + +"@esbuild/android-x64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz" + integrity "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==" + +"@esbuild/darwin-arm64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz" + integrity "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==" + +"@esbuild/darwin-x64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz" + integrity "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==" + +"@esbuild/freebsd-arm64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz" + integrity "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==" + +"@esbuild/freebsd-x64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz" + integrity "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==" + +"@esbuild/linux-arm@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz" + integrity "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==" + +"@esbuild/linux-arm64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz" + integrity "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==" + +"@esbuild/linux-ia32@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz" + integrity "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==" + +"@esbuild/linux-loong64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz" + integrity "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==" + +"@esbuild/linux-mips64el@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz" + integrity "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==" + +"@esbuild/linux-ppc64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz" + integrity "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==" + +"@esbuild/linux-riscv64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz" + integrity "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==" + +"@esbuild/linux-s390x@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz" + integrity "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==" + +"@esbuild/linux-x64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz" + integrity "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==" + +"@esbuild/netbsd-x64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz" + integrity "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==" + +"@esbuild/openbsd-x64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz" + integrity "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==" + +"@esbuild/sunos-x64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz" + integrity "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==" + +"@esbuild/win32-arm64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz" + integrity "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==" + +"@esbuild/win32-ia32@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz" + integrity "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==" + +"@esbuild/win32-x64@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz" + integrity "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==" + +"@eslint-community/eslint-utils@4.3.0": + version "4.3.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz" + integrity "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==" + dependencies: + "eslint" "8.36.0" + "eslint-visitor-keys" "3.3.0" + +"@eslint-community/regexpp@4.4.0": + version "4.4.0" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz" + integrity "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==" + +"@eslint/eslintrc@2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz" + integrity "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==" + dependencies: + "ajv" "6.12.6" + "debug" "4.3.4" + "espree" "9.5.0" + "globals" "13.20.0" + "ignore" "5.2.0" + "import-fresh" "3.3.0" + "js-yaml" "4.1.0" + "minimatch" "3.1.2" + "strip-json-comments" "3.1.1" + +"@eslint/js@8.36.0": + version "8.36.0" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz" + integrity "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==" + +"@floating-ui/core@0.3.1": + version "0.3.1" + resolved "https://registry.npmjs.org/@floating-ui/core/-/core-0.3.1.tgz" + integrity "sha512-ensKY7Ub59u16qsVIFEo2hwTCqZ/r9oZZFh51ivcLGHfUwTn8l1Xzng8RJUe91H/UP8PeqeBronAGx0qmzwk2g==" + +"@floating-ui/dom@0.1.10": + version "0.1.10" + resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.1.10.tgz" + integrity "sha512-4kAVoogvQm2N0XE0G6APQJuCNuErjOfPW8Ux7DFxh8+AfugWflwVJ5LDlHOwrwut7z/30NUvdtHzQ3zSip4EzQ==" + dependencies: + "@floating-ui/core" "0.3.1" + +"@humanwhocodes/config-array@0.11.8": + version "0.11.8" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz" + integrity "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==" + dependencies: + "@humanwhocodes/object-schema" "1.2.1" + "debug" "4.3.4" + "minimatch" "3.1.2" + +"@humanwhocodes/module-importer@1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + +"@humanwhocodes/object-schema@1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + +"@iconify/json@^2.2.36", "@iconify/json@2.2.36": + version "2.2.36" + resolved "https://registry.npmjs.org/@iconify/json/-/json-2.2.36.tgz" + integrity "sha512-M3NzzLjmE5udIO24EgT9MV1LfU5FQDw9nfAfgrV3NySiLMtZFoOvFEdURJihH2SJWCoFhIpRRkgSZKN8qWIhuQ==" + dependencies: + "@iconify/types" "2.0.0" + "pathe" "1.1.0" + +"@iconify/types@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz" + integrity "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" + +"@iconify/utils@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.5.tgz" + integrity "sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q==" + dependencies: + "@antfu/install-pkg" "0.1.1" + "@antfu/utils" "0.7.2" + "@iconify/types" "2.0.0" + "debug" "4.3.4" + "kolorist" "1.7.0" + "local-pkg" "0.4.3" + +"@intlify/bundle-utils@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-5.2.0.tgz" + integrity "sha512-rIfoNUTBoZK6IfaEeuoYMQZSuAXhPyZoy+UsdZj+V4eM632ynN1bGt5ttkpGO8xe0c+esfYslgJxBz//bdu4qg==" + dependencies: + "@intlify/message-compiler" "9.3.0-beta.16" + "@intlify/shared" "9.3.0-beta.16" + "acorn" "8.8.2" + "estree-walker" "2.0.2" + "jsonc-eslint-parser" "1.4.1" + "source-map" "0.6.1" + "vue-i18n" "9.2.2" + "yaml-eslint-parser" "0.3.2" + +"@intlify/core-base@9.2.2": + version "9.2.2" + resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz" + integrity "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==" + dependencies: + "@intlify/devtools-if" "9.2.2" + "@intlify/message-compiler" "9.2.2" + "@intlify/shared" "9.2.2" + "@intlify/vue-devtools" "9.2.2" + +"@intlify/devtools-if@9.2.2": + version "9.2.2" + resolved "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz" + integrity "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==" + dependencies: + "@intlify/shared" "9.2.2" + +"@intlify/message-compiler@9.2.2": + version "9.2.2" + resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz" + integrity "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==" + dependencies: + "@intlify/shared" "9.2.2" + "source-map" "0.6.1" + +"@intlify/message-compiler@9.3.0-beta.16": + version "9.3.0-beta.16" + resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.3.0-beta.16.tgz" + integrity "sha512-CGQI3xRcs1ET75eDQ0DUy3MRYOqTauRIIgaMoISKiF83gqRWg93FqN8lGMKcpBqaF4tI0JhsfosCaGiBL9+dnw==" + dependencies: + "@intlify/shared" "9.3.0-beta.16" + "source-map" "0.6.1" + +"@intlify/shared@9.2.2": + version "9.2.2" + resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz" + integrity "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==" + +"@intlify/shared@9.3.0-beta.16": + version "9.3.0-beta.16" + resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.3.0-beta.16.tgz" + integrity "sha512-kXbm4svALe3lX+EjdJxfnabOphqS4yQ1Ge/iIlR8tvUiYRCoNz3hig1M4336iY++Dfx5ytEQJPNjIcknNIuvig==" + +"@intlify/unplugin-vue-i18n@^0.9.2", "@intlify/unplugin-vue-i18n@0.9.2": + version "0.9.2" + resolved "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-0.9.2.tgz" + integrity "sha512-cNfa90+NVNdYJ0qqwRaEb2kGGp9zAve2xaAKCL7EzcQcvSWw42mhiOxcNkUc1QKlXnSHERMd6aT4/GUlFT1zBw==" + dependencies: + "@intlify/bundle-utils" "5.2.0" + "@intlify/shared" "9.3.0-beta.16" + "@rollup/pluginutils" "5.0.2" + "@vue/compiler-sfc" "3.2.47" + "debug" "4.3.4" + "fast-glob" "3.2.12" + "js-yaml" "4.1.0" + "json5" "2.2.3" + "pathe" "1.1.0" + "picocolors" "1.0.0" + "source-map" "0.6.1" + "unplugin" "1.3.1" + "vue-i18n" "9.2.2" + +"@intlify/vue-devtools@9.2.2": + version "9.2.2" + resolved "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz" + integrity "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==" + dependencies: + "@intlify/core-base" "9.2.2" + "@intlify/shared" "9.2.2" + +"@jridgewell/gen-mapping@0.1.1": + version "0.1.1" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + integrity "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" + dependencies: + "@jridgewell/set-array" "1.1.2" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@jridgewell/gen-mapping@0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" + dependencies: + "@jridgewell/set-array" "1.1.2" + "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/trace-mapping" "0.3.17" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" + +"@jridgewell/set-array@1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + integrity "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + +"@jridgewell/trace-mapping@0.3.17": + version "0.3.17" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" + integrity "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==" + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@kyvg/vue3-notification@^2.9.0", "@kyvg/vue3-notification@2.9.0": + version "2.9.0" + resolved "https://registry.npmjs.org/@kyvg/vue3-notification/-/vue3-notification-2.9.0.tgz" + integrity "sha512-5Vxl8h/+PFtBmzGgMxTjkH4gwEpvmTEka+dLqpek+8GJFm6LDfSji+rFx9vumgBF7db0KenGWeSrA+Qnclz9vg==" + dependencies: + "vue" "3.2.47" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + dependencies: + "@nodelib/fs.stat" "2.0.5" + "run-parallel" "1.2.0" + +"@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + +"@nodelib/fs.walk@1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + dependencies: + "@nodelib/fs.scandir" "2.1.5" + "fastq" "1.13.0" + +"@rollup/pluginutils@5.0.2": + version "5.0.2" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz" + integrity "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==" + dependencies: + "@types/estree" "1.0.0" + "estree-walker" "2.0.2" + "picomatch" "2.3.1" + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + integrity "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" + +"@types/estree@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" + integrity "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + +"@types/humanize-duration@^3.27.1", "@types/humanize-duration@3.27.1": + version "3.27.1" + resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz" + integrity "sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w==" + +"@types/javascript-time-ago@^2.0.3", "@types/javascript-time-ago@2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@types/javascript-time-ago/-/javascript-time-ago-2.0.3.tgz" + integrity "sha512-G6SdYh6gHxgCTU0s4cMIRHwRO4p3f7jQSZbDPfUOZpUAG1od3rTjT0e8rxGThUiTTWQHwpBRws8eHO8D2QqfkA==" + +"@types/json-schema@7.0.11": + version "7.0.11" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + integrity "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + +"@types/json5@0.0.29": + version "0.0.29" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" + integrity "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + +"@types/lodash@^4.14.191", "@types/lodash@4.14.191": + version "4.14.191" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz" + integrity "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" + +"@types/node-emoji@^1.8.2", "@types/node-emoji@1.8.2": + version "1.8.2" + resolved "https://registry.npmjs.org/@types/node-emoji/-/node-emoji-1.8.2.tgz" + integrity "sha512-PfF1qL/9veo8BSHLV84C9ORNr3lHSlnWJ6yU8OdNufoftajeWHTLVbGHvp2B7e7DPDS9gMs6cfeSsqo5rqSitg==" + +"@types/node@^18.15.3", "@types/node@18.15.3": + version "18.15.3" + resolved "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz" + integrity "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==" + +"@types/prismjs@^1.26.0", "@types/prismjs@1.26.0": + version "1.26.0" + resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz" + integrity "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==" + +"@types/semver@7.3.12": + version "7.3.12" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz" + integrity "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==" + +"@types/web-bluetooth@0.0.16": + version "0.0.16" + resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz" + integrity "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + +"@typescript-eslint/eslint-plugin@^5.55.0", "@typescript-eslint/eslint-plugin@5.55.0": + version "5.55.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.55.0.tgz" + integrity "sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==" + dependencies: + "@eslint-community/regexpp" "4.4.0" + "@typescript-eslint/parser" "5.55.0" + "@typescript-eslint/scope-manager" "5.55.0" + "@typescript-eslint/type-utils" "5.55.0" + "@typescript-eslint/utils" "5.55.0" + "debug" "4.3.4" + "eslint" "8.36.0" + "grapheme-splitter" "1.0.4" + "ignore" "5.2.0" + "natural-compare-lite" "1.4.0" + "semver" "7.3.8" + "tsutils" "3.21.0" + "typescript" "5.0.2" + +"@typescript-eslint/parser@^5.55.0", "@typescript-eslint/parser@5.55.0": + version "5.55.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.55.0.tgz" + integrity "sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==" + dependencies: + "@typescript-eslint/scope-manager" "5.55.0" + "@typescript-eslint/types" "5.55.0" + "@typescript-eslint/typescript-estree" "5.55.0" + "debug" "4.3.4" + "eslint" "8.36.0" + "typescript" "5.0.2" + +"@typescript-eslint/scope-manager@5.55.0": + version "5.55.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.55.0.tgz" + integrity "sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==" + dependencies: + "@typescript-eslint/types" "5.55.0" + "@typescript-eslint/visitor-keys" "5.55.0" + +"@typescript-eslint/type-utils@5.55.0": + version "5.55.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.55.0.tgz" + integrity "sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==" + dependencies: + "@typescript-eslint/typescript-estree" "5.55.0" + "@typescript-eslint/utils" "5.55.0" + "debug" "4.3.4" + "eslint" "8.36.0" + "tsutils" "3.21.0" + "typescript" "5.0.2" + +"@typescript-eslint/types@5.55.0": + version "5.55.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.55.0.tgz" + integrity "sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==" + +"@typescript-eslint/typescript-estree@5.55.0": + version "5.55.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.55.0.tgz" + integrity "sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==" + dependencies: + "@typescript-eslint/types" "5.55.0" + "@typescript-eslint/visitor-keys" "5.55.0" + "debug" "4.3.4" + "globby" "11.1.0" + "is-glob" "4.0.3" + "semver" "7.3.8" + "tsutils" "3.21.0" + "typescript" "5.0.2" + +"@typescript-eslint/utils@5.55.0": + version "5.55.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.55.0.tgz" + integrity "sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==" + dependencies: + "@eslint-community/eslint-utils" "4.3.0" + "@types/json-schema" "7.0.11" + "@types/semver" "7.3.12" + "@typescript-eslint/scope-manager" "5.55.0" + "@typescript-eslint/types" "5.55.0" + "@typescript-eslint/typescript-estree" "5.55.0" + "eslint" "8.36.0" + "eslint-scope" "5.1.1" + "semver" "7.3.8" + +"@typescript-eslint/visitor-keys@5.55.0": + version "5.55.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.55.0.tgz" + integrity "sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==" + dependencies: + "@typescript-eslint/types" "5.55.0" + "eslint-visitor-keys" "3.3.0" + +"@vitejs/plugin-vue@^4.1.0", "@vitejs/plugin-vue@4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz" + integrity "sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==" + dependencies: + "vite" "4.2.0" + "vue" "3.2.47" + +"@volar/language-core@1.3.0-alpha.0": + version "1.3.0-alpha.0" + resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.3.0-alpha.0.tgz" + integrity "sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==" + dependencies: + "@volar/source-map" "1.3.0-alpha.0" + +"@volar/source-map@1.3.0-alpha.0": + version "1.3.0-alpha.0" + resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.3.0-alpha.0.tgz" + integrity "sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==" + dependencies: + "muggle-string" "0.2.2" + +"@volar/typescript@1.3.0-alpha.0": + version "1.3.0-alpha.0" + resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-1.3.0-alpha.0.tgz" + integrity "sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==" + dependencies: + "@volar/language-core" "1.3.0-alpha.0" + +"@volar/vue-language-core@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.2.0.tgz" + integrity "sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==" + dependencies: + "@volar/language-core" "1.3.0-alpha.0" + "@volar/source-map" "1.3.0-alpha.0" + "@vue/compiler-dom" "3.2.47" + "@vue/compiler-sfc" "3.2.47" + "@vue/reactivity" "3.2.47" + "@vue/shared" "3.2.47" + "minimatch" "6.2.0" + "muggle-string" "0.2.2" + "vue-template-compiler" "2.7.14" + +"@volar/vue-typescript@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.2.0.tgz" + integrity "sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==" + dependencies: + "@volar/typescript" "1.3.0-alpha.0" + "@volar/vue-language-core" "1.2.0" + +"@vue/compiler-core@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz" + integrity "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==" + dependencies: + "@babel/parser" "7.19.4" + "@vue/shared" "3.2.47" + "estree-walker" "2.0.2" + "source-map" "0.6.1" + +"@vue/compiler-dom@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz" + integrity "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==" + dependencies: + "@vue/compiler-core" "3.2.47" + "@vue/shared" "3.2.47" + +"@vue/compiler-sfc@^3.2.47", "@vue/compiler-sfc@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz" + integrity "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==" + dependencies: + "@babel/parser" "7.19.4" + "@vue/compiler-core" "3.2.47" + "@vue/compiler-dom" "3.2.47" + "@vue/compiler-ssr" "3.2.47" + "@vue/reactivity-transform" "3.2.47" + "@vue/shared" "3.2.47" + "estree-walker" "2.0.2" + "magic-string" "0.25.9" + "postcss" "8.4.18" + "source-map" "0.6.1" + +"@vue/compiler-ssr@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz" + integrity "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==" + dependencies: + "@vue/compiler-dom" "3.2.47" + "@vue/shared" "3.2.47" + +"@vue/devtools-api@6.4.5": + version "6.4.5" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz" + integrity "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==" + +"@vue/devtools-api@6.5.0": + version "6.5.0" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz" + integrity "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" + +"@vue/reactivity-transform@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz" + integrity "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==" + dependencies: + "@babel/parser" "7.19.4" + "@vue/compiler-core" "3.2.47" + "@vue/shared" "3.2.47" + "estree-walker" "2.0.2" + "magic-string" "0.25.9" + +"@vue/reactivity@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz" + integrity "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==" + dependencies: + "@vue/shared" "3.2.47" + +"@vue/runtime-core@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz" + integrity "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==" + dependencies: + "@vue/reactivity" "3.2.47" + "@vue/shared" "3.2.47" + +"@vue/runtime-dom@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz" + integrity "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==" + dependencies: + "@vue/runtime-core" "3.2.47" + "@vue/shared" "3.2.47" + "csstype" "2.6.21" + +"@vue/server-renderer@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz" + integrity "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==" + dependencies: + "@vue/compiler-ssr" "3.2.47" + "@vue/shared" "3.2.47" + "vue" "3.2.47" + +"@vue/shared@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz" + integrity "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==" + +"@vueuse/core@^9.13.0", "@vueuse/core@9.13.0": + version "9.13.0" + resolved "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz" + integrity "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==" + dependencies: + "@types/web-bluetooth" "0.0.16" + "@vueuse/metadata" "9.13.0" + "@vueuse/shared" "9.13.0" + "vue-demi" "0.13.11" + +"@vueuse/metadata@9.13.0": + version "9.13.0" + resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz" + integrity "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" + +"@vueuse/shared@9.13.0": + version "9.13.0" + resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz" + integrity "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==" + dependencies: + "vue-demi" "0.13.11" + +"@windicss/config@1.8.10": + version "1.8.10" + resolved "https://registry.npmjs.org/@windicss/config/-/config-1.8.10.tgz" + integrity "sha512-O9SsC110b1Ik3YYa4Ck/0TWuCo7YFfA9KDrwD5sAeqscT5COIGK1HszdCT3oh0MJFej2wNrvpfyW9h6yQaW6PA==" + dependencies: + "debug" "4.3.4" + "jiti" "1.16.0" + "windicss" "3.5.6" + +"@windicss/plugin-utils@1.8.10": + version "1.8.10" + resolved "https://registry.npmjs.org/@windicss/plugin-utils/-/plugin-utils-1.8.10.tgz" + integrity "sha512-Phqk5OW1w+Mv+ry6t7BzAeDq3aMhbI94gR49j9vQCufFfDGCHndhhjtMK0sBv+NPJUsIAIh6qayb1iwBCXUGrw==" + dependencies: + "@antfu/utils" "0.7.2" + "@windicss/config" "1.8.10" + "debug" "4.3.4" + "fast-glob" "3.2.12" + "magic-string" "0.27.0" + "micromatch" "4.0.5" + "windicss" "3.5.6" + +"acorn-jsx@5.3.2": + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + dependencies: + "acorn" "8.8.0" + +"acorn@7.4.1": + version "7.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + integrity "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + +"acorn@8.8.0": + version "8.8.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" + integrity "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + +"acorn@8.8.2": + version "8.8.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" + integrity "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" + +"ajv@6.12.6": + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + dependencies: + "fast-deep-equal" "3.1.3" + "fast-json-stable-stringify" "2.1.0" + "json-schema-traverse" "0.4.1" + "uri-js" "4.4.1" + +"ansi-regex@5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + +"ansi-styles@3.2.1": + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + dependencies: + "color-convert" "1.9.3" + +"ansi-styles@4.3.0": + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + dependencies: + "color-convert" "2.0.1" + +"ansi_up@^5.1.0", "ansi_up@5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/ansi_up/-/ansi_up-5.1.0.tgz" + integrity "sha512-3wwu+nJCKBVBwOCurm0uv91lMoVkhFB+3qZQz3U11AmAdDJ4tkw1sNPWJQcVxMVYwe0pGEALOjSBOxdxNc+pNQ==" + +"anymatch@3.1.2": + version "3.1.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + integrity "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" + dependencies: + "normalize-path" "3.0.0" + "picomatch" "2.3.1" + +"argparse@2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + +"array-includes@3.1.6": + version "3.1.6" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" + integrity "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "es-abstract" "1.20.4" + "get-intrinsic" "1.1.3" + "is-string" "1.0.7" + +"array-union@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + +"array.prototype.flat@1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" + integrity "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "es-abstract" "1.20.4" + "es-shim-unscopables" "1.0.0" + +"array.prototype.flatmap@1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" + integrity "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "es-abstract" "1.20.4" + "es-shim-unscopables" "1.0.0" + +"atob@2.1.2": + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + +"babel-plugin-prismjs@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/babel-plugin-prismjs/-/babel-plugin-prismjs-2.1.0.tgz" + integrity "sha512-ehzSKYfeAz4U78zi/sfwsjDPlq0LvDKxNefcZTJ/iKBu+plsHsLqZhUeGf1+82LAcA35UZGbU6ksEx2Utphc/g==" + dependencies: + "prismjs" "1.29.0" + +"balanced-match@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + +"binary-extensions@2.2.0": + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + +"boolbase@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + +"brace-expansion@1.1.11": + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + dependencies: + "balanced-match" "1.0.2" + "concat-map" "0.0.1" + +"brace-expansion@2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" + dependencies: + "balanced-match" "1.0.2" + +"braces@3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + dependencies: + "fill-range" "7.0.1" + +"browserslist@4.21.4": + version "4.21.4" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" + integrity "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" + dependencies: + "caniuse-lite" "1.0.30001422" + "electron-to-chromium" "1.4.284" + "node-releases" "2.0.6" + "update-browserslist-db" "1.0.10" + +"call-bind@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" + dependencies: + "function-bind" "1.1.1" + "get-intrinsic" "1.1.3" + +"callsites@3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + +"caniuse-lite@1.0.30001422": + version "1.0.30001422" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001422.tgz" + integrity "sha512-hSesn02u1QacQHhaxl/kNMZwqVG35Sz/8DgvmgedxSH8z9UUpcDYSPYgsj3x5dQNRcNp6BwpSfQfVzYUTm+fog==" + +"chalk@2.4.2": + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + dependencies: + "ansi-styles" "3.2.1" + "escape-string-regexp" "1.0.5" + "supports-color" "5.5.0" + +"chalk@4.1.2": + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + dependencies: + "ansi-styles" "4.3.0" + "supports-color" "7.2.0" + +"chokidar@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" + dependencies: + "anymatch" "3.1.2" + "braces" "3.0.2" + "glob-parent" "5.1.2" + "is-binary-path" "2.1.0" + "is-glob" "4.0.3" + "normalize-path" "3.0.0" + "readdirp" "3.6.0" + +"color-convert@1.9.3": + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + dependencies: + "color-name" "1.1.3" + +"color-convert@2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + dependencies: + "color-name" "1.1.4" + +"color-name@1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + +"color-name@1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + +"commander@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + +"concat-map@0.0.1": + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + +"confusing-browser-globals@1.0.11": + version "1.0.11" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" + integrity "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" + +"convert-source-map@1.9.0": + version "1.9.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" + integrity "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + +"cross-spawn@7.0.3": + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + dependencies: + "path-key" "3.1.1" + "shebang-command" "2.0.0" + "which" "2.0.2" + +"css-select@5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" + integrity "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" + dependencies: + "boolbase" "1.0.0" + "css-what" "6.1.0" + "domhandler" "5.0.3" + "domutils" "3.0.1" + "nth-check" "2.1.1" + +"css-tree@2.2.1": + version "2.2.1" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" + integrity "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==" + dependencies: + "mdn-data" "2.0.28" + "source-map-js" "1.0.2" + +"css-tree@2.3.1": + version "2.3.1" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" + integrity "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==" + dependencies: + "mdn-data" "2.0.30" + "source-map-js" "1.0.2" + +"css-what@6.1.0": + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" + +"css@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/css/-/css-3.0.0.tgz" + integrity "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==" + dependencies: + "inherits" "2.0.4" + "source-map" "0.6.1" + "source-map-resolve" "0.6.0" + +"cssesc@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + +"csso@5.0.5": + version "5.0.5" + resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" + integrity "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==" + dependencies: + "css-tree" "2.2.1" + +"csstype@2.6.21": + version "2.6.21" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" + integrity "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + +"dayjs@^1.11.7", "dayjs@1.11.7": + version "1.11.7" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" + integrity "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + +"de-indent@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" + integrity "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" + +"debug@3.2.7": + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + dependencies: + "ms" "2.1.3" + +"debug@4.3.4": + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + dependencies: + "ms" "2.1.2" + +"decode-uri-component@0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" + +"deep-is@0.1.4": + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + +"define-properties@1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + integrity "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" + dependencies: + "has-property-descriptors" "1.0.0" + "object-keys" "1.1.1" + +"dir-glob@3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + dependencies: + "path-type" "4.0.0" + +"doctrine@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" + integrity "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" + dependencies: + "esutils" "2.0.3" + +"doctrine@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + dependencies: + "esutils" "2.0.3" + +"dom-serializer@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" + integrity "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" + dependencies: + "domelementtype" "2.3.0" + "domhandler" "5.0.3" + "entities" "4.4.0" + +"domelementtype@2.3.0": + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" + +"domhandler@5.0.3": + version "5.0.3" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" + integrity "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" + dependencies: + "domelementtype" "2.3.0" + +"domutils@3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" + integrity "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==" + dependencies: + "dom-serializer" "2.0.0" + "domelementtype" "2.3.0" + "domhandler" "5.0.3" + +"electron-to-chromium@1.4.284": + version "1.4.284" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" + integrity "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + +"entities@4.4.0": + version "4.4.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" + integrity "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" + +"es-abstract@1.20.4": + version "1.20.4" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz" + integrity "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==" + dependencies: + "call-bind" "1.0.2" + "es-to-primitive" "1.2.1" + "function-bind" "1.1.1" + "function.prototype.name" "1.1.5" + "get-intrinsic" "1.1.3" + "get-symbol-description" "1.0.0" + "has" "1.0.3" + "has-property-descriptors" "1.0.0" + "has-symbols" "1.0.3" + "internal-slot" "1.0.3" + "is-callable" "1.2.7" + "is-negative-zero" "2.0.2" + "is-regex" "1.1.4" + "is-shared-array-buffer" "1.0.2" + "is-string" "1.0.7" + "is-weakref" "1.0.2" + "object-inspect" "1.12.2" + "object-keys" "1.1.1" + "object.assign" "4.1.4" + "regexp.prototype.flags" "1.4.3" + "safe-regex-test" "1.0.0" + "string.prototype.trimend" "1.0.5" + "string.prototype.trimstart" "1.0.5" + "unbox-primitive" "1.0.2" + +"es-shim-unscopables@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" + integrity "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" + dependencies: + "has" "1.0.3" + +"es-to-primitive@1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" + dependencies: + "is-callable" "1.2.7" + "is-date-object" "1.0.5" + "is-symbol" "1.0.4" + +"esbuild@0.17.12": + version "0.17.12" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz" + integrity "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==" + +"escalade@3.1.1": + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + +"escape-string-regexp@1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + +"escape-string-regexp@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + +"eslint-config-airbnb-base@^15.0.0", "eslint-config-airbnb-base@15.0.0": + version "15.0.0" + resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz" + integrity "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==" + dependencies: + "confusing-browser-globals" "1.0.11" + "eslint" "8.36.0" + "eslint-plugin-import" "2.27.5" + "object.assign" "4.1.4" + "object.entries" "1.1.5" + "semver" "6.3.0" + +"eslint-config-airbnb-typescript@^17.0.0", "eslint-config-airbnb-typescript@17.0.0": + version "17.0.0" + resolved "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz" + integrity "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==" + dependencies: + "@typescript-eslint/eslint-plugin" "5.55.0" + "@typescript-eslint/parser" "5.55.0" + "eslint" "8.36.0" + "eslint-config-airbnb-base" "15.0.0" + "eslint-plugin-import" "2.27.5" + +"eslint-config-prettier@^8.7.0", "eslint-config-prettier@8.7.0": + version "8.7.0" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz" + integrity "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==" + dependencies: + "eslint" "8.36.0" + +"eslint-import-resolver-node@0.3.7": + version "0.3.7" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz" + integrity "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==" + dependencies: + "debug" "3.2.7" + "is-core-module" "2.11.0" + "resolve" "1.22.1" + +"eslint-module-utils@2.7.4": + version "2.7.4" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" + integrity "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==" + dependencies: + "@typescript-eslint/parser" "5.55.0" + "debug" "3.2.7" + "eslint" "8.36.0" + "eslint-import-resolver-node" "0.3.7" + +"eslint-plugin-import@^2.27.5", "eslint-plugin-import@2.27.5": + version "2.27.5" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz" + integrity "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==" + dependencies: + "@typescript-eslint/parser" "5.55.0" + "array-includes" "3.1.6" + "array.prototype.flat" "1.3.1" + "array.prototype.flatmap" "1.3.1" + "debug" "3.2.7" + "doctrine" "2.1.0" + "eslint" "8.36.0" + "eslint-import-resolver-node" "0.3.7" + "eslint-module-utils" "2.7.4" + "has" "1.0.3" + "is-core-module" "2.11.0" + "is-glob" "4.0.3" + "minimatch" "3.1.2" + "object.values" "1.1.6" + "resolve" "1.22.1" + "semver" "6.3.0" + "tsconfig-paths" "3.14.1" + +"eslint-plugin-prettier@^4.2.1", "eslint-plugin-prettier@4.2.1": + version "4.2.1" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + integrity "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==" + dependencies: + "eslint" "8.36.0" + "eslint-config-prettier" "8.7.0" + "prettier" "2.8.5" + "prettier-linter-helpers" "1.0.0" + +"eslint-plugin-promise@^6.1.1", "eslint-plugin-promise@6.1.1": + version "6.1.1" + resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" + integrity "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==" + dependencies: + "eslint" "8.36.0" + +"eslint-plugin-simple-import-sort@^10.0.0", "eslint-plugin-simple-import-sort@10.0.0": + version "10.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz" + integrity "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==" + dependencies: + "eslint" "8.36.0" + +"eslint-plugin-vue-scoped-css@^2.4.0", "eslint-plugin-vue-scoped-css@2.4.0": + version "2.4.0" + resolved "https://registry.npmjs.org/eslint-plugin-vue-scoped-css/-/eslint-plugin-vue-scoped-css-2.4.0.tgz" + integrity "sha512-H2GdGyaNuz58gMwJYrPAyok2ZZFklb1wnI4jqLyQZf17gvZeTOpYzCxqhhcT5hBeaCUHhjxU5akCI7A4AtBHew==" + dependencies: + "eslint" "8.36.0" + "eslint-utils" "3.0.0" + "lodash" "4.17.21" + "postcss" "8.4.18" + "postcss-safe-parser" "6.0.0" + "postcss-scss" "4.0.5" + "postcss-selector-parser" "6.0.10" + "postcss-styl" "0.12.3" + "vue-eslint-parser" "9.1.0" + +"eslint-plugin-vue@^9.9.0", "eslint-plugin-vue@9.9.0": + version "9.9.0" + resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.9.0.tgz" + integrity "sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==" + dependencies: + "eslint" "8.36.0" + "eslint-utils" "3.0.0" + "natural-compare" "1.4.0" + "nth-check" "2.1.1" + "postcss-selector-parser" "6.0.10" + "semver" "7.3.8" + "vue-eslint-parser" "9.1.0" + "xml-name-validator" "4.0.0" + +"eslint-scope@5.1.1": + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + dependencies: + "esrecurse" "4.3.0" + "estraverse" "4.3.0" + +"eslint-scope@7.1.1": + version "7.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + integrity "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" + dependencies: + "esrecurse" "4.3.0" + "estraverse" "5.3.0" + +"eslint-utils@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + integrity "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" + dependencies: + "eslint-visitor-keys" "1.3.0" + +"eslint-utils@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" + dependencies: + "eslint" "8.36.0" + "eslint-visitor-keys" "2.1.0" + +"eslint-visitor-keys@1.3.0": + version "1.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + integrity "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + +"eslint-visitor-keys@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + +"eslint-visitor-keys@3.3.0": + version "3.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + integrity "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + +"eslint@^8.36.0", "eslint@8.36.0": + version "8.36.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz" + integrity "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==" + dependencies: + "@eslint-community/eslint-utils" "4.3.0" + "@eslint-community/regexpp" "4.4.0" + "@eslint/eslintrc" "2.0.1" + "@eslint/js" "8.36.0" + "@humanwhocodes/config-array" "0.11.8" + "@humanwhocodes/module-importer" "1.0.1" + "@nodelib/fs.walk" "1.2.8" + "ajv" "6.12.6" + "chalk" "4.1.2" + "cross-spawn" "7.0.3" + "debug" "4.3.4" + "doctrine" "3.0.0" + "escape-string-regexp" "4.0.0" + "eslint-scope" "7.1.1" + "eslint-visitor-keys" "3.3.0" + "espree" "9.5.0" + "esquery" "1.5.0" + "esutils" "2.0.3" + "fast-deep-equal" "3.1.3" + "file-entry-cache" "6.0.1" + "find-up" "5.0.0" + "glob-parent" "6.0.2" + "globals" "13.20.0" + "grapheme-splitter" "1.0.4" + "ignore" "5.2.0" + "import-fresh" "3.3.0" + "imurmurhash" "0.1.4" + "is-glob" "4.0.3" + "is-path-inside" "3.0.3" + "js-sdsl" "4.1.5" + "js-yaml" "4.1.0" + "json-stable-stringify-without-jsonify" "1.0.1" + "levn" "0.4.1" + "lodash.merge" "4.6.2" + "minimatch" "3.1.2" + "natural-compare" "1.4.0" + "optionator" "0.9.1" + "strip-ansi" "6.0.1" + "strip-json-comments" "3.1.1" + "text-table" "0.2.0" + +"espree@6.2.1": + version "6.2.1" + resolved "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz" + integrity "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==" + dependencies: + "acorn" "7.4.1" + "acorn-jsx" "5.3.2" + "eslint-visitor-keys" "1.3.0" + +"espree@9.4.0": + version "9.4.0" + resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz" + integrity "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==" + dependencies: + "acorn" "8.8.0" + "acorn-jsx" "5.3.2" + "eslint-visitor-keys" "3.3.0" + +"espree@9.5.0": + version "9.5.0" + resolved "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz" + integrity "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==" + dependencies: + "acorn" "8.8.0" + "acorn-jsx" "5.3.2" + "eslint-visitor-keys" "3.3.0" + +"esquery@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + integrity "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" + dependencies: + "estraverse" "5.3.0" + +"esquery@1.5.0": + version "1.5.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" + integrity "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" + dependencies: + "estraverse" "5.3.0" + +"esrecurse@4.3.0": + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + dependencies: + "estraverse" "5.3.0" + +"estraverse@4.3.0": + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + +"estraverse@5.3.0": + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + +"estree-walker@2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + integrity "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + +"esutils@2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + +"execa@5.1.1": + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + dependencies: + "cross-spawn" "7.0.3" + "get-stream" "6.0.1" + "human-signals" "2.1.0" + "is-stream" "2.0.1" + "merge-stream" "2.0.0" + "npm-run-path" "4.0.1" + "onetime" "5.1.2" + "signal-exit" "3.0.7" + "strip-final-newline" "2.0.0" + +"fast-deep-equal@3.1.3": + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + +"fast-diff@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + integrity "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" + +"fast-glob@3.2.12": + version "3.2.12" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" + integrity "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==" + dependencies: + "@nodelib/fs.stat" "2.0.5" + "@nodelib/fs.walk" "1.2.8" + "glob-parent" "5.1.2" + "merge2" "1.4.1" + "micromatch" "4.0.5" + +"fast-json-stable-stringify@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + +"fast-levenshtein@2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + +"fastq@1.13.0": + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + integrity "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" + dependencies: + "reusify" "1.0.4" + +"file-entry-cache@6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + dependencies: + "flat-cache" "3.0.4" + +"fill-range@7.0.1": + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + dependencies: + "to-regex-range" "5.0.1" + +"find-up@5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + dependencies: + "locate-path" "6.0.0" + "path-exists" "4.0.0" + +"flat-cache@3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + integrity "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" + dependencies: + "flatted" "3.2.7" + "rimraf" "3.0.2" + +"flatted@3.2.7": + version "3.2.7" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" + integrity "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + +"floating-vue@^2.0.0-beta.20", "floating-vue@2.0.0-beta.20": + version "2.0.0-beta.20" + resolved "https://registry.npmjs.org/floating-vue/-/floating-vue-2.0.0-beta.20.tgz" + integrity "sha512-N68otcpp6WwcYC7zP8GeJqNZVdfvS7tEY88lwmuAHeqRgnfWx1Un8enzLxROyVnBDZ3TwUoUdj5IFg+bUT7JeA==" + dependencies: + "@floating-ui/dom" "0.1.10" + "vue" "3.2.47" + "vue-resize" "2.0.0-alpha.1" + +"fs.realpath@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + +"fsevents@2.3.2": + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" + +"function-bind@1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + +"function.prototype.name@1.1.5": + version "1.1.5" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + integrity "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "es-abstract" "1.20.4" + "functions-have-names" "1.2.3" + +"functions-have-names@1.2.3": + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + +"fuse.js@^6.6.2", "fuse.js@6.6.2": + version "6.6.2" + resolved "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz" + integrity "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==" + +"gensync@1.0.0-beta.2": + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + +"get-intrinsic@1.1.3": + version "1.1.3" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" + integrity "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" + dependencies: + "function-bind" "1.1.1" + "has" "1.0.3" + "has-symbols" "1.0.3" + +"get-stream@6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + +"get-symbol-description@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" + dependencies: + "call-bind" "1.0.2" + "get-intrinsic" "1.1.3" + +"glob-parent@5.1.2": + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + dependencies: + "is-glob" "4.0.3" + +"glob-parent@6.0.2": + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + integrity "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + dependencies: + "is-glob" "4.0.3" + +"glob@7.2.3": + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + dependencies: + "fs.realpath" "1.0.0" + "inflight" "1.0.6" + "inherits" "2.0.4" + "minimatch" "3.1.2" + "once" "1.4.0" + "path-is-absolute" "1.0.1" + +"globals@11.12.0": + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + +"globals@13.20.0": + version "13.20.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz" + integrity "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==" + dependencies: + "type-fest" "0.20.2" + +"globby@11.1.0": + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" + integrity "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" + dependencies: + "array-union" "2.1.0" + "dir-glob" "3.0.1" + "fast-glob" "3.2.12" + "ignore" "5.2.0" + "merge2" "1.4.1" + "slash" "3.0.0" + +"grapheme-splitter@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + integrity "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + +"has-bigints@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + +"has-flag@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + +"has-flag@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + +"has-property-descriptors@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" + dependencies: + "get-intrinsic" "1.1.3" + +"has-symbols@1.0.3": + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + +"has-tostringtag@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" + dependencies: + "has-symbols" "1.0.3" + +"has@1.0.3": + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + dependencies: + "function-bind" "1.1.1" + +"he@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + +"human-signals@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + +"humanize-duration@^3.28.0", "humanize-duration@3.28.0": + version "3.28.0" + resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.28.0.tgz" + integrity "sha512-jMAxraOOmHuPbffLVDKkEKi/NeG8dMqP8lGRd6Tbf7JgAeG33jjgPWDbXXU7ypCI0o+oNKJFgbSB9FKVdWNI2A==" + +"ignore@5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + integrity "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + +"import-fresh@3.3.0": + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + dependencies: + "parent-module" "1.0.1" + "resolve-from" "4.0.0" + +"imurmurhash@0.1.4": + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + +"inflight@1.0.6": + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" + dependencies: + "once" "1.4.0" + "wrappy" "1.0.2" + +"inherits@2.0.4": + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + +"internal-slot@1.0.3": + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" + dependencies: + "get-intrinsic" "1.1.3" + "has" "1.0.3" + "side-channel" "1.0.4" + +"is-bigint@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" + dependencies: + "has-bigints" "1.0.2" + +"is-binary-path@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + dependencies: + "binary-extensions" "2.2.0" + +"is-boolean-object@1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" + dependencies: + "call-bind" "1.0.2" + "has-tostringtag" "1.0.0" + +"is-callable@1.2.7": + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + +"is-core-module@2.11.0": + version "2.11.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" + integrity "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==" + dependencies: + "has" "1.0.3" + +"is-date-object@1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" + dependencies: + "has-tostringtag" "1.0.0" + +"is-extglob@2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + +"is-glob@4.0.3": + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + dependencies: + "is-extglob" "2.1.1" + +"is-negative-zero@2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + +"is-number-object@1.0.7": + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" + dependencies: + "has-tostringtag" "1.0.0" + +"is-number@7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + +"is-path-inside@3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + +"is-regex@1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" + dependencies: + "call-bind" "1.0.2" + "has-tostringtag" "1.0.0" + +"is-shared-array-buffer@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" + dependencies: + "call-bind" "1.0.2" + +"is-stream@2.0.1": + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + +"is-string@1.0.7": + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" + dependencies: + "has-tostringtag" "1.0.0" + +"is-symbol@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" + dependencies: + "has-symbols" "1.0.3" + +"is-weakref@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" + dependencies: + "call-bind" "1.0.2" + +"isexe@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + +"javascript-time-ago@^2.5.9", "javascript-time-ago@2.5.9": + version "2.5.9" + resolved "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.9.tgz" + integrity "sha512-pQ8mNco/9g9TqWXWWjP0EWl6i/lAQScOyEeXy5AB+f7MfLSdgyV9BJhiOD1zrIac/lrxPYOWNbyl/IW8CW5n0A==" + dependencies: + "relative-time-format" "1.1.6" + +"jiti@1.16.0": + version "1.16.0" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.16.0.tgz" + integrity "sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg==" + +"js-sdsl@4.1.5": + version "4.1.5" + resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz" + integrity "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" + +"js-tokens@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + +"js-yaml@4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + dependencies: + "argparse" "2.0.1" + +"jsesc@2.5.2": + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + +"json-schema-traverse@0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + +"json-stable-stringify-without-jsonify@1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + +"json5@1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" + integrity "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" + dependencies: + "minimist" "1.2.7" + +"json5@2.2.1": + version "2.2.1" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" + integrity "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" + +"json5@2.2.3": + version "2.2.3" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + integrity "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + +"jsonc-eslint-parser@1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-1.4.1.tgz" + integrity "sha512-hXBrvsR1rdjmB2kQmUjf1rEIa+TqHBGMge8pwi++C+Si1ad7EjZrJcpgwym+QGK/pqTx+K7keFAtLlVNdLRJOg==" + dependencies: + "acorn" "7.4.1" + "eslint-utils" "2.1.0" + "eslint-visitor-keys" "1.3.0" + "espree" "6.2.1" + "semver" "6.3.0" + +"kolorist@1.6.0": + version "1.6.0" + resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz" + integrity "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==" + +"kolorist@1.7.0": + version "1.7.0" + resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.7.0.tgz" + integrity "sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==" + +"levn@0.4.1": + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + dependencies: + "prelude-ls" "1.2.1" + "type-check" "0.4.0" + +"local-pkg@0.4.3": + version "0.4.3" + resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz" + integrity "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==" + +"locate-path@6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + dependencies: + "p-locate" "5.0.0" + +"lodash.merge@4.6.2": + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + +"lodash.sortedlastindex@4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/lodash.sortedlastindex/-/lodash.sortedlastindex-4.1.0.tgz" + integrity "sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==" + +"lodash@^4.17.21", "lodash@4.17.21": + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + +"lru-cache@6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + dependencies: + "yallist" "4.0.0" + +"magic-string@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" + integrity "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" + dependencies: + "sourcemap-codec" "1.4.8" + +"magic-string@0.27.0": + version "0.27.0" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz" + integrity "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==" + dependencies: + "@jridgewell/sourcemap-codec" "1.4.14" + +"magic-string@0.30.0": + version "0.30.0" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz" + integrity "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==" + dependencies: + "@jridgewell/sourcemap-codec" "1.4.14" + +"mdn-data@2.0.28": + version "2.0.28" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" + integrity "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + +"mdn-data@2.0.30": + version "2.0.30" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" + integrity "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + +"merge-stream@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + +"merge2@1.4.1": + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + +"micromatch@4.0.5": + version "4.0.5" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" + integrity "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" + dependencies: + "braces" "3.0.2" + "picomatch" "2.3.1" + +"mimic-fn@2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + +"minimatch@3.1.2": + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + dependencies: + "brace-expansion" "1.1.11" + +"minimatch@6.2.0": + version "6.2.0" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz" + integrity "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==" + dependencies: + "brace-expansion" "2.0.1" + +"minimatch@7.4.2": + version "7.4.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz" + integrity "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==" + dependencies: + "brace-expansion" "2.0.1" + +"minimist@1.2.7": + version "1.2.7" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" + integrity "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + +"ms@2.1.2": + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + +"ms@2.1.3": + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + +"muggle-string@0.2.2": + version "0.2.2" + resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.2.2.tgz" + integrity "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==" + +"nanoid@3.3.4": + version "3.3.4" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" + integrity "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" + +"natural-compare-lite@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" + integrity "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" + +"natural-compare@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + +"node-emoji@^1.11.0", "node-emoji@1.11.0": + version "1.11.0" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" + integrity "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==" + dependencies: + "lodash" "4.17.21" + +"node-releases@2.0.6": + version "2.0.6" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" + integrity "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" + +"normalize-path@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + +"npm-run-path@4.0.1": + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + dependencies: + "path-key" "3.1.1" + +"nth-check@2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" + dependencies: + "boolbase" "1.0.0" + +"object-inspect@1.12.2": + version "1.12.2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" + integrity "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" + +"object-keys@1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + +"object.assign@4.1.4": + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + integrity "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "has-symbols" "1.0.3" + "object-keys" "1.1.1" + +"object.entries@1.1.5": + version "1.1.5" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" + integrity "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "es-abstract" "1.20.4" + +"object.values@1.1.6": + version "1.1.6" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" + integrity "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "es-abstract" "1.20.4" + +"once@1.4.0": + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" + dependencies: + "wrappy" "1.0.2" + +"onetime@5.1.2": + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + dependencies: + "mimic-fn" "2.1.0" + +"optionator@0.9.1": + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + integrity "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" + dependencies: + "deep-is" "0.1.4" + "fast-levenshtein" "2.0.6" + "levn" "0.4.1" + "prelude-ls" "1.2.1" + "type-check" "0.4.0" + "word-wrap" "1.2.3" + +"p-limit@3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + dependencies: + "yocto-queue" "0.1.0" + +"p-locate@5.0.0": + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + dependencies: + "p-limit" "3.1.0" + +"parent-module@1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + dependencies: + "callsites" "3.1.0" + +"path-exists@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + +"path-is-absolute@1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + +"path-key@3.1.1": + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + +"path-parse@1.0.7": + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + +"path-type@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + +"pathe@1.1.0": + version "1.1.0" + resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz" + integrity "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==" + +"picocolors@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + +"picomatch@2.3.1": + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + +"pinia@^2.0.33", "pinia@2.0.33": + version "2.0.33" + resolved "https://registry.npmjs.org/pinia/-/pinia-2.0.33.tgz" + integrity "sha512-HOj1yVV2itw6rNIrR2f7+MirGNxhORjrULL8GWgRwXsGSvEqIQ+SE0MYt6cwtpegzCda3i+rVTZM+AM7CG+kRg==" + dependencies: + "@vue/devtools-api" "6.5.0" + "typescript" "5.0.2" + "vue" "3.2.47" + "vue-demi" "0.13.11" + +"postcss-safe-parser@6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz" + integrity "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==" + dependencies: + "postcss" "8.4.18" + +"postcss-scss@4.0.5": + version "4.0.5" + resolved "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.5.tgz" + integrity "sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA==" + dependencies: + "postcss" "8.4.18" + +"postcss-selector-parser@6.0.10": + version "6.0.10" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" + integrity "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==" + dependencies: + "cssesc" "3.0.0" + "util-deprecate" "1.0.2" + +"postcss-styl@0.12.3": + version "0.12.3" + resolved "https://registry.npmjs.org/postcss-styl/-/postcss-styl-0.12.3.tgz" + integrity "sha512-8I7Cd8sxiEITIp32xBK4K/Aj1ukX6vuWnx8oY/oAH35NfQI4OZaY5nd68Yx8HeN5S49uhQ6DL0rNk0ZBu/TaLg==" + dependencies: + "debug" "4.3.4" + "fast-diff" "1.2.0" + "lodash.sortedlastindex" "4.1.0" + "postcss" "8.4.21" + "stylus" "0.57.0" + +"postcss@8.4.18": + version "8.4.18" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz" + integrity "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==" + dependencies: + "nanoid" "3.3.4" + "picocolors" "1.0.0" + "source-map-js" "1.0.2" + +"postcss@8.4.21": + version "8.4.21" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz" + integrity "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==" + dependencies: + "nanoid" "3.3.4" + "picocolors" "1.0.0" + "source-map-js" "1.0.2" + +"prelude-ls@1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + +"prettier-linter-helpers@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + integrity "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" + dependencies: + "fast-diff" "1.2.0" + +"prettier@^2.8.5", "prettier@2.8.5": + version "2.8.5" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.5.tgz" + integrity "sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ==" + +"prismjs@^1.29.0", "prismjs@1.29.0": + version "1.29.0" + resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" + integrity "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" + +"punycode@2.1.1": + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + +"queue-microtask@1.2.3": + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + +"readdirp@3.6.0": + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + dependencies: + "picomatch" "2.3.1" + +"regexp.prototype.flags@1.4.3": + version "1.4.3" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + integrity "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "functions-have-names" "1.2.3" + +"relative-time-format@1.1.6": + version "1.1.6" + resolved "https://registry.npmjs.org/relative-time-format/-/relative-time-format-1.1.6.tgz" + integrity "sha512-aCv3juQw4hT1/P/OrVltKWLlp15eW1GRcwP1XdxHrPdZE9MtgqFpegjnTjLhi2m2WI9MT/hQQtE+tjEWG1hgkQ==" + +"resolve-from@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + +"resolve@1.22.1": + version "1.22.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + integrity "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" + dependencies: + "is-core-module" "2.11.0" + "path-parse" "1.0.7" + "supports-preserve-symlinks-flag" "1.0.0" + +"reusify@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + +"rimraf@3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + dependencies: + "glob" "7.2.3" + +"rollup@3.19.1": + version "3.19.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz" + integrity "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==" + +"run-parallel@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + dependencies: + "queue-microtask" "1.2.3" + +"safe-regex-test@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + integrity "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" + dependencies: + "call-bind" "1.0.2" + "get-intrinsic" "1.1.3" + "is-regex" "1.1.4" + +"safer-buffer@2.1.2": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + +"sax@1.2.4": + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + +"semver@6.3.0": + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + +"semver@7.3.8": + version "7.3.8" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + integrity "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" + dependencies: + "lru-cache" "6.0.0" + +"shebang-command@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + dependencies: + "shebang-regex" "3.0.0" + +"shebang-regex@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + +"side-channel@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" + dependencies: + "call-bind" "1.0.2" + "get-intrinsic" "1.1.3" + "object-inspect" "1.12.2" + +"signal-exit@3.0.7": + version "3.0.7" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + integrity "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + +"slash@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + +"source-map-js@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + +"source-map-resolve@0.6.0": + version "0.6.0" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz" + integrity "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==" + dependencies: + "atob" "2.1.2" + "decode-uri-component" "0.2.0" + +"source-map@0.6.1": + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + +"source-map@0.7.4": + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + +"sourcemap-codec@1.4.8": + version "1.4.8" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + integrity "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + +"string.prototype.trimend@1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" + integrity "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "es-abstract" "1.20.4" + +"string.prototype.trimstart@1.0.5": + version "1.0.5" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" + integrity "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==" + dependencies: + "call-bind" "1.0.2" + "define-properties" "1.1.4" + "es-abstract" "1.20.4" + +"strip-ansi@6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + dependencies: + "ansi-regex" "5.0.1" + +"strip-bom@3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" + +"strip-final-newline@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + +"strip-json-comments@3.1.1": + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + +"stylus@0.57.0": + version "0.57.0" + resolved "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz" + integrity "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==" + dependencies: + "css" "3.0.0" + "debug" "4.3.4" + "glob" "7.2.3" + "safer-buffer" "2.1.2" + "sax" "1.2.4" + "source-map" "0.7.4" + +"supports-color@5.5.0": + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + dependencies: + "has-flag" "3.0.0" + +"supports-color@7.2.0": + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + dependencies: + "has-flag" "4.0.0" + +"supports-preserve-symlinks-flag@1.0.0": + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + +"svgo@3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" + integrity "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==" + dependencies: + "@trysound/sax" "0.2.0" + "commander" "7.2.0" + "css-select" "5.1.0" + "css-tree" "2.3.1" + "csso" "5.0.5" + "picocolors" "1.0.0" + +"text-table@0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + +"to-fast-properties@2.0.0": + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" + +"to-regex-range@5.0.1": + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + dependencies: + "is-number" "7.0.0" + +"tsconfig-paths@3.14.1": + version "3.14.1" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" + integrity "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" + dependencies: + "@types/json5" "0.0.29" + "json5" "1.0.1" + "minimist" "1.2.7" + "strip-bom" "3.0.0" + +"tslib@1.14.1": + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + +"tsutils@3.21.0": + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + dependencies: + "tslib" "1.14.1" + "typescript" "5.0.2" + +"type-check@0.4.0": + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + dependencies: + "prelude-ls" "1.2.1" + +"type-fest@0.20.2": + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + +"typescript@5.0.2": + version "5.0.2" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz" + integrity "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==" + +"unbox-primitive@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" + dependencies: + "call-bind" "1.0.2" + "has-bigints" "1.0.2" + "has-symbols" "1.0.3" + "which-boxed-primitive" "1.0.2" + +"unplugin-icons@^0.15.3", "unplugin-icons@0.15.3": + version "0.15.3" + resolved "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.15.3.tgz" + integrity "sha512-YWgJqv5AahrokeOnta8uX/m1damZA6Rf6zPClgHg2Fa/45iyOe3Lj+Wn/Ba+CSsq9yBffn17YfKfJNyWCNZPvw==" + dependencies: + "@antfu/install-pkg" "0.1.1" + "@antfu/utils" "0.7.2" + "@iconify/utils" "2.1.5" + "@vue/compiler-sfc" "3.2.47" + "debug" "4.3.4" + "kolorist" "1.7.0" + "local-pkg" "0.4.3" + "unplugin" "1.3.1" + +"unplugin-vue-components@^0.24.1", "unplugin-vue-components@0.24.1": + version "0.24.1" + resolved "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.24.1.tgz" + integrity "sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==" + dependencies: + "@antfu/utils" "0.7.2" + "@rollup/pluginutils" "5.0.2" + "chokidar" "3.5.3" + "debug" "4.3.4" + "fast-glob" "3.2.12" + "local-pkg" "0.4.3" + "magic-string" "0.30.0" + "minimatch" "7.4.2" + "resolve" "1.22.1" + "unplugin" "1.3.1" + "vue" "3.2.47" + +"unplugin@1.3.1": + version "1.3.1" + resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.3.1.tgz" + integrity "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==" + dependencies: + "acorn" "8.8.2" + "chokidar" "3.5.3" + "webpack-sources" "3.2.3" + "webpack-virtual-modules" "0.5.0" + +"update-browserslist-db@1.0.10": + version "1.0.10" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" + integrity "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" + dependencies: + "browserslist" "4.21.4" + "escalade" "3.1.1" + "picocolors" "1.0.0" + +"uri-js@4.4.1": + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + dependencies: + "punycode" "2.1.1" + +"util-deprecate@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + +"vite-plugin-prismjs@^0.0.8", "vite-plugin-prismjs@0.0.8": + version "0.0.8" + resolved "https://registry.npmjs.org/vite-plugin-prismjs/-/vite-plugin-prismjs-0.0.8.tgz" + integrity "sha512-mBPPMS/hwVUArdqCtp/oajZT7iq1qwJDDCciNZ3R5+Q5tQUuUHXtDKuZHYnklPLElNbENf2FyuOtC4FrgxQRAA==" + dependencies: + "@babel/core" "7.19.3" + "babel-plugin-prismjs" "2.1.0" + +"vite-plugin-windicss@^1.8.10", "vite-plugin-windicss@1.8.10": + version "1.8.10" + resolved "https://registry.npmjs.org/vite-plugin-windicss/-/vite-plugin-windicss-1.8.10.tgz" + integrity "sha512-scywsuzo46lcTBohspmF0WiwhWEte6p+OUVrX4yr7VMRvLHMHVfLtJReyD5pppjijG7YOwVsZn7XBWWZtF658Q==" + dependencies: + "@windicss/plugin-utils" "1.8.10" + "debug" "4.3.4" + "kolorist" "1.6.0" + "vite" "4.2.0" + "windicss" "3.5.6" + +"vite-svg-loader@^4.0.0", "vite-svg-loader@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/vite-svg-loader/-/vite-svg-loader-4.0.0.tgz" + integrity "sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA==" + dependencies: + "@vue/compiler-sfc" "3.2.47" + "svgo" "3.0.2" + +"vite@^4.2.0", "vite@4.2.0": + version "4.2.0" + resolved "https://registry.npmjs.org/vite/-/vite-4.2.0.tgz" + integrity "sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g==" + dependencies: + "@types/node" "18.15.3" + "esbuild" "0.17.12" + "postcss" "8.4.21" + "resolve" "1.22.1" + "rollup" "3.19.1" + +"vue-demi@0.13.11": + version "0.13.11" + resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz" + integrity "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==" + dependencies: + "vue" "3.2.47" + +"vue-eslint-parser@^9.1.0", "vue-eslint-parser@9.1.0": + version "9.1.0" + resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz" + integrity "sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==" + dependencies: + "debug" "4.3.4" + "eslint" "8.36.0" + "eslint-scope" "7.1.1" + "eslint-visitor-keys" "3.3.0" + "espree" "9.4.0" + "esquery" "1.4.0" + "lodash" "4.17.21" + "semver" "7.3.8" + +"vue-i18n@^9.2.2", "vue-i18n@9.2.2": + version "9.2.2" + resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz" + integrity "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==" + dependencies: + "@intlify/core-base" "9.2.2" + "@intlify/shared" "9.2.2" + "@intlify/vue-devtools" "9.2.2" + "@vue/devtools-api" "6.4.5" + "vue" "3.2.47" + +"vue-resize@2.0.0-alpha.1": + version "2.0.0-alpha.1" + resolved "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz" + integrity "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==" + dependencies: + "vue" "3.2.47" + +"vue-router@^4.1.6", "vue-router@4.1.6": + version "4.1.6" + resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz" + integrity "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==" + dependencies: + "@vue/devtools-api" "6.4.5" + "vue" "3.2.47" + +"vue-template-compiler@2.7.14": + version "2.7.14" + resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz" + integrity "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==" + dependencies: + "de-indent" "1.0.2" + "he" "1.2.0" + +"vue-tsc@^1.2.0", "vue-tsc@1.2.0": + version "1.2.0" + resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.2.0.tgz" + integrity "sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==" + dependencies: + "@volar/vue-language-core" "1.2.0" + "@volar/vue-typescript" "1.2.0" + "typescript" "5.0.2" + +"vue@^3.2.47", "vue@3.2.47": + version "3.2.47" + resolved "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz" + integrity "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==" + dependencies: + "@vue/compiler-dom" "3.2.47" + "@vue/compiler-sfc" "3.2.47" + "@vue/runtime-dom" "3.2.47" + "@vue/server-renderer" "3.2.47" + "@vue/shared" "3.2.47" + +"webpack-sources@3.2.3": + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" + integrity "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + +"webpack-virtual-modules@0.5.0": + version "0.5.0" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz" + integrity "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==" + +"which-boxed-primitive@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" + dependencies: + "is-bigint" "1.0.4" + "is-boolean-object" "1.1.2" + "is-number-object" "1.0.7" + "is-string" "1.0.7" + "is-symbol" "1.0.4" + +"which@2.0.2": + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + dependencies: + "isexe" "2.0.0" + +"windicss@^3.5.6", "windicss@3.5.6": + version "3.5.6" + resolved "https://registry.npmjs.org/windicss/-/windicss-3.5.6.tgz" + integrity "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==" + +"word-wrap@1.2.3": + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + +"wrappy@1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + +"xml-name-validator@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + integrity "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" + +"yallist@4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + +"yaml-eslint-parser@0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-0.3.2.tgz" + integrity "sha512-32kYO6kJUuZzqte82t4M/gB6/+11WAuHiEnK7FreMo20xsCKPeFH5tDBU7iWxR7zeJpNnMXfJyXwne48D0hGrg==" + dependencies: + "eslint-visitor-keys" "1.3.0" + "lodash" "4.17.21" + "yaml" "1.10.2" + +"yaml@1.10.2": + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + +"yocto-queue@0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" From c857e4cd2e60f34f12b7a148d994f91bbc8cc9de Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 25 Mar 2023 15:22:30 +0100 Subject: [PATCH 0843/1588] pkgs: add woodpecker-plugin-git --- pkgs/default.nix | 2 ++ pkgs/woodpecker-plugin-git/default.nix | 37 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 pkgs/woodpecker-plugin-git/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index dd92dc5..33775c6 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -48,5 +48,7 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { woodpecker-frontend = pkgs.callPackage ./woodpecker/frontend.nix { }; + woodpecker-plugin-git = pkgs.callPackage ./woodpecker-plugin-git { }; + woodpecker-server = pkgs.callPackage ./woodpecker/server.nix { }; }) diff --git a/pkgs/woodpecker-plugin-git/default.nix b/pkgs/woodpecker-plugin-git/default.nix new file mode 100644 index 0000000..8411216 --- /dev/null +++ b/pkgs/woodpecker-plugin-git/default.nix @@ -0,0 +1,37 @@ +{ lib, buildGoModule, fetchFromGitHub, fetchpatch }: +buildGoModule rec { + pname = "woodpecker-plugin-git"; + version = "2.0.3"; + + src = fetchFromGitHub { + owner = "woodpecker-ci"; + repo = "plugin-git"; + rev = "v${version}"; + hash = "sha256-KU/A3V7KS8R1nAZoJJwkDc9C8y3t148kUzGnkeYtFjs="; + }; + + vendorHash = "sha256-63Ly/9yIJu2K/DwOfGs9pYU3fokbs2senZkl3MJ1UIY="; + + patches = [ + # https://github.com/woodpecker-ci/plugin-git/pull/67 + (fetchpatch { + name = "do-not-overwrite-command-env.patch"; + url = "https://github.com/woodpecker-ci/plugin-git/commit/970cc63a9b212872deac565c6292feb3f4cf4b51.patch"; + hash = "sha256-izu0X7j+OyNbrOkksf+7VF3KiKVylVv2o00xaX/b1Rg="; + }) + ]; + + CGO_ENABLED = "0"; + + # Checks fail because they require network access. + doCheck = false; + + meta = with lib; { + description = "Woodpecker plugin for cloning Git repositories."; + homepage = "https://woodpecker-ci.org/"; + license = licenses.asl20; + mainProgram = "pluging-git"; + maintainers = with maintainers; [ thehedgeh0g ]; + platforms = platforms.all; + }; +} From 020a32b9e802b6e2a3e86cbab60c7668c300fca7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 18 Mar 2023 11:51:12 +0000 Subject: [PATCH 0844/1588] modules: services: add woodpecker --- modules/services/default.nix | 1 + .../woodpecker/agent-docker/default.nix | 48 +++++++++++++ .../woodpecker/agent-exec/default.nix | 64 +++++++++++++++++ modules/services/woodpecker/default.nix | 46 ++++++++++++ .../services/woodpecker/server/default.nix | 72 +++++++++++++++++++ 5 files changed, 231 insertions(+) create mode 100644 modules/services/woodpecker/agent-docker/default.nix create mode 100644 modules/services/woodpecker/agent-exec/default.nix create mode 100644 modules/services/woodpecker/default.nix create mode 100644 modules/services/woodpecker/server/default.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 8a4f747..bea2139 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -32,5 +32,6 @@ ./tlp ./transmission ./wireguard + ./woodpecker ]; } diff --git a/modules/services/woodpecker/agent-docker/default.nix b/modules/services/woodpecker/agent-docker/default.nix new file mode 100644 index 0000000..23e61b1 --- /dev/null +++ b/modules/services/woodpecker/agent-docker/default.nix @@ -0,0 +1,48 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.woodpecker; + + hasRunner = (name: builtins.elem name cfg.runners); +in +{ + # TODO + config = lib.mkIf (cfg.enable && hasRunner "docker") { + services.woodpecker-agents = { + agents.docker = { + enable = true; + + package = pkgs.ambroisie.woodpecker-agent; + + environment = { + WOODPECKER_SERVER = "localhost:${toString cfg.rpcPort}"; + WOODPECKER_MAX_WORKFLOWS = "10"; + WOODPECKER_BACKEND = "docker"; + WOODPECKER_FILTER_LABELS = "type=docker"; + WOODPECKER_HEALTHCHECK = "false"; + }; + + environmentFile = [ cfg.sharedSecretFile ]; + + extraGroups = [ "docker" ]; + }; + }; + + # Make sure it is activated in that case + virtualisation.docker.enable = true; + + # FIXME: figure out the issue + services.unbound.resolveLocalQueries = false; + + # Adjust runner service for nix usage + systemd.services.woodpecker-agent-docker = { + after = [ "docker.socket" ]; # Needs the socket to be available + # might break deployment + restartIfChanged = false; + serviceConfig = { + BindPaths = [ + "/var/run/docker.sock" + ]; + }; + }; + }; +} diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/services/woodpecker/agent-exec/default.nix new file mode 100644 index 0000000..743dfbb --- /dev/null +++ b/modules/services/woodpecker/agent-exec/default.nix @@ -0,0 +1,64 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.woodpecker; + + hasRunner = (name: builtins.elem name cfg.runners); +in +{ + # TODO + config = lib.mkIf (cfg.enable && hasRunner "exec") { + services.woodpecker-agents = { + agents.exec = { + enable = true; + + package = pkgs.ambroisie.woodpecker-agent; + + environment = { + WOODPECKER_SERVER = "localhost:${toString cfg.rpcPort}"; + WOODPECKER_MAX_WORKFLOWS = "10"; + WOODPECKER_BACKEND = "local"; + WOODPECKER_FILTER_LABELS = "type=exec"; + WOODPECKER_HEALTHCHECK = "false"; + + NIX_REMOTE = "daemon"; + PAGER = "cat"; + }; + + environmentFile = [ cfg.sharedSecretFile ]; + }; + }; + + # Adjust runner service for nix usage + systemd.services.woodpecker-agent-exec = { + # Might break deployment + restartIfChanged = false; + + path = with pkgs; [ + ambroisie.woodpecker-plugin-git + bash + coreutils + git + git-lfs + gnutar + gzip + nix + ]; + + serviceConfig = { + BindPaths = [ + "/nix/var/nix/daemon-socket/socket" + "/run/nscd/socket" + ]; + BindReadOnlyPaths = [ + "/etc/passwd:/etc/passwd" + "/etc/group:/etc/group" + "/nix/var/nix/profiles/system/etc/nix:/etc/nix" + "${config.environment.etc."ssh/ssh_known_hosts".source}:/etc/ssh/ssh_known_hosts" + "/etc/machine-id" + # channels are dynamic paths in the nix store, therefore we need to bind mount the whole thing + "/nix/" + ]; + }; + }; + }; +} diff --git a/modules/services/woodpecker/default.nix b/modules/services/woodpecker/default.nix new file mode 100644 index 0000000..34ffca6 --- /dev/null +++ b/modules/services/woodpecker/default.nix @@ -0,0 +1,46 @@ +{ lib, ... }: +{ + imports = [ + ./agent-docker + ./agent-exec + ./server + ]; + + options.my.services.woodpecker = with lib; { + enable = mkEnableOption "Woodpecker CI"; + runners = mkOption { + type = with types; listOf (enum [ "exec" "docker" ]); + default = [ ]; + example = [ "exec" "docker" ]; + description = "Types of runners to enable"; + }; + admin = mkOption { + type = types.str; + default = "ambroisie"; + example = "admin"; + description = "Name of the admin user"; + }; + port = mkOption { + type = types.port; + default = 3030; + example = 8080; + description = "Internal port of the Woodpecker UI"; + }; + rpcPort = mkOption { + type = types.port; + default = 3031; + example = 8080; + description = "Internal port of the Woodpecker UI"; + }; + secretFile = mkOption { + type = types.str; + example = "/run/secrets/woodpecker.env"; + description = "Secrets to inject into Woodpecker server"; + }; + sharedSecretFile = mkOption { + type = types.str; + example = "/run/secrets/woodpecker.env"; + description = "Shared RPC secret to inject into server and runners"; + }; + }; +} diff --git a/modules/services/woodpecker/server/default.nix b/modules/services/woodpecker/server/default.nix new file mode 100644 index 0000000..8d8a5a6 --- /dev/null +++ b/modules/services/woodpecker/server/default.nix @@ -0,0 +1,72 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.woodpecker; +in +{ + config = lib.mkIf cfg.enable { + services.woodpecker-server = { + enable = true; + + package = pkgs.ambroisie.woodpecker-server; + + environment = { + WOODPECKER_OPEN = "true"; + WOODPECKER_HOST = "https://woodpecker.${config.networking.domain}"; + WOODPECKER_DATABASE_DRIVER = "postgres"; + WOODPECKER_DATABASE_DATASOURCE = "postgres:///woodpecker?host=/run/postgresql"; + WOODPECKER_ADMIN = "${cfg.admin}"; + WOODPECKER_SERVER_ADDR = ":${toString cfg.port}"; + WOODPECKER_GRPC_ADDR = ":${toString cfg.rpcPort}"; + + WOODPECKER_GITEA = "true"; + WOODPECKER_GITEA_URL = config.services.gitea.rootUrl; + + WOODPECKER_LOG_LEVEL = "debug"; + + # FIXME: remove those? + WOODPECKER_JSONNET_ENABLED = "true"; + WOODPECKER_STARLARK_ENABLED = "true"; + }; + }; + + systemd.services.woodpecker-server = { + serviceConfig = { + # Set username for DB access + User = "woodpecker"; + + BindPaths = [ + # Allow access to DB path + "/run/postgresql" + ]; + + EnvironmentFile = [ + cfg.secretFile + cfg.sharedSecretFile + ]; + }; + }; + + services.postgresql = { + enable = true; + ensureDatabases = [ "woodpecker" ]; + ensureUsers = [{ + name = "woodpecker"; + ensurePermissions = { + "DATABASE woodpecker" = "ALL PRIVILEGES"; + }; + }]; + }; + + my.services.nginx.virtualHosts = [ + { + subdomain = "woodpecker"; + inherit (cfg) port; + } + # I might want to be able to RPC from other hosts in the future + { + subdomain = "woodpecker-rpc"; + port = cfg.rpcPort; + } + ]; + }; +} From 7e06f75a5d241377ddb93dd10067c26c4dc5dbaf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 18 Mar 2023 11:51:12 +0000 Subject: [PATCH 0845/1588] modules: secrets: add woodpecker --- modules/secrets/secrets.nix | 4 ++++ modules/secrets/woodpecker/gitea.age | Bin 0 -> 543 bytes modules/secrets/woodpecker/secret.age | 10 ++++++++++ modules/secrets/woodpecker/ssh/private-key.age | Bin 0 -> 3799 bytes 4 files changed, 14 insertions(+) create mode 100644 modules/secrets/woodpecker/gitea.age create mode 100644 modules/secrets/woodpecker/secret.age create mode 100644 modules/secrets/woodpecker/ssh/private-key.age diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index 1622d95..e17c4a5 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -63,4 +63,8 @@ in "wireguard/milady/private-key.age".publicKeys = all; "wireguard/porthos/private-key.age".publicKeys = all; "wireguard/richelieu/private-key.age".publicKeys = all; + + "woodpecker/gitea.age".publicKeys = all; + "woodpecker/secret.age".publicKeys = all; + "woodpecker/ssh/private-key.age".publicKeys = all; } diff --git a/modules/secrets/woodpecker/gitea.age b/modules/secrets/woodpecker/gitea.age new file mode 100644 index 0000000000000000000000000000000000000000..e6ede6cc39553e75fd77dee696e90dd193a3daf0 GIT binary patch literal 543 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCU73dk?dOIOJ7Dypao zb;&m@_4dl}G|4wiFRHN2urM!k3-q^44G7Kg^r#Bdt}yYcbmhwNbt?=qb<7HKH?s_k zs7&_FPR$DN_Q}n(aP$pw_BTuO$xhQRF?MlJ3PiUp**iZgH(kNp&)?fD*U_lR!z(aC zzr-*qBrw^nEHO>HJUGR|-OMt>)UqO=A|%zqF`ug>z|^BsJI$ghIo&MTE!8L_#NE{- zBFZ_yBD*3Z$FJDa#6LA9+a$`%s2F6MnZBWKT1k#>dQoa(ajJrutA1g*t3sNUg04al zmuscJS!uAZWr>qtafC@yM7n87R!&lZiGER#zJ7X;hoNzhWpI9|cdpJypucl=Kwg@8Sdv$oQ&OQ>sFNpGR!03COWx;A zQyPrS<0I-PX+AiUyV32NuF&fI7b?;LfAETHLX6?!A literal 0 HcmV?d00001 diff --git a/modules/secrets/woodpecker/secret.age b/modules/secrets/woodpecker/secret.age new file mode 100644 index 0000000..63a4862 --- /dev/null +++ b/modules/secrets/woodpecker/secret.age @@ -0,0 +1,10 @@ +age-encryption.org/v1 +-> ssh-ed25519 jPowng yz0I+AazPmamF7NOnwYNrPE/ArarU01jd2mVDJUPSTY +6Y/YQ7gb8cAZf3zT9SKOorvfUnU7kYff+gHh8fG2mY8 +-> ssh-ed25519 cKojmg 0FZU9v8eHsVeE+EoX9Y4IgfIj/8+45waPaSnSDb961I +L6SzJoh5xqai45scoVAa6v9zslBGFYNnZY044d470uQ +-> I[G-grease p +AMRQY1alSzHi/PLL80kcvnM1Z9YNfoUo9u5alWXYMyzrRsg+vXjMuBvAXg3fmnzr +wdOowTYMRV+jEG8vzkcQTsv+f7JIyo4DvOOaPyGfWMl1 +--- ih3IAFPcN1JP3FP1vcRGnPrfk91yrnIX0m/Szkbcf7Q +mWr_\)Ͱ]QxMs/݃ݪ6kYxMyJG)i2_'֜HF.g_e5#utՠ7jP'Tޥ8\IWUK1ں9 \ No newline at end of file diff --git a/modules/secrets/woodpecker/ssh/private-key.age b/modules/secrets/woodpecker/ssh/private-key.age new file mode 100644 index 0000000000000000000000000000000000000000..0211701ba0ee3d8ef341b6d69d70ccaa25b8379b GIT binary patch literal 3799 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;@NW2`?`+ zPsvL6@G|jp@hZ%UO3L;q%Zo4!s&bAj3-wF$O?S>MaP@c3%;t(nPc}*Rbj)*&2-45? zt$}K!Jt=vC5xwJIW zA|k`2FfTVh!ptQ@Kg1nMm~MJeYGQG!LVTr>LU~SJgonL}f|{R~t%47i zuTO=UkCS(1s;R4!M{bIDZc2V+MpAKpl!u|CpIMcUaam5TV^ErRS&nbENkv*vWk5<; zepp^|kcE-AYd}>lm#(g^LXd?~nR`)WzGJ3&MqX;Fe@I1;WkF!6nY&M+ziEzJc$sUk zn`LpaftPt8*MVa{E@+%JKU2KHS^m_5%||zQ+rRbaOg>X{_QmSIrWLO5UFA-5ewp!) zOSUxdeO!O3NZE|HhgF(a%uR4S^y^miX_>(81G^Qr{f;d;`E1?RdpiFwWGnh7Ik?^b zA7v8hwmQ0f%F*Rsd=ghVa?P9$OxSnP;KuPCEw3#;>xx?5SikVx7T*ekph=ADtS4~Z zm@#RKQbNz+i-%r*opJY{hDwJ`(}tv~n+*aL7cVq=nU-)u;2o$>Y^_xHqCU%njTxvV#L z$-CKi&g%5PmY){KuuP$l0hj~oKM@6Ir&!WrZZ=xDL&ccq58q`$HUlI`4vV{jc3Ca zyFc#{-0;lLuHcDJmf^wGXH3E^j@|5>E_i1(ukpb^VX1%}0`K4T-&_3t+(n*~Z=)ht z-l*kS>QsK-T%UQ}#VHy0ABRbwMY4{ulX| zDG9711~R9oZsXgc_O+HjIrz|a=QfMm-oi_j~>BZT__>%&v0J^c(V(dQ(}JtXUYoZV4kVd#>D!z_qN~1i5}1 zCa}!d!Lf+lFwt6(FWP>4{-=9qR&8_<_cXJd=$N)M{)@j#WkY-;~-%VQlvpG}G9 z%oYqkb^rde_D{3=QY}-I7%bPDZiu|MC1B|lwWYT2rmxz$t0i+s{F3jk(V4T2qE4Q? zS-=`SeYRqO_SeXJ7x)%P3!JF?xaTCd{yGiUzBghMV}8B+zbZqn$oRtAyM|J;I$o)* zWi`kQoI5q<&duZNPO$~vT03$dSm^7+q~PbXQs zglQ~w`}5iP;+-QMPqxYhBuudPdiN+;f!`=^p2^C0o4%gcvDl_Kjm>0f2kSDHNw*{Q zzr0tre-$>%{)pi3z&+(@%%QU4*7mG69~GGs8|Kg7{wVnPtOduKCU4%bO3H8T@8Fc{ z@`qkskKty$QTBABk%e1`$#>?G+Vbh|zVP;*{~T%}ulitu)C!iSna>>`ucF0{jn)F{jQ&(xL;JY1+n?LzDPm-}q`26+29KlTv z+iJ27d(2v~b}rY4KgL19M+}{F;y&b%4yZJ+Juj!;(il|Lj@c32ezbZ(e@-YEI3kd-Y-S_eFbgSq4tnFIL&{J?dlL*8R4z zWs4&Y1sT;Uv^f8jHQmG-=#(7YxcU@pr|`*s-lDA^&VLZ86XGrSDXOpWc%_P^-@B;^ z@>NV`*X>_g|7)4L{@(OFVY^vHrvztqd~$Jp_|`Im?Y&lSgWTfq|2tL*Z&>;G(yyzU zk-7^EX2+>b<=FJ`e1@QHU;DqD9V%6}Dy|uK?k1f1cX`RCh_;o!KWkR#Zq><YC%-|0chgCFCW)chikSi&s@CWj?kNZ762H_}nSsUiqA?t38|A^tGED zX1%hhnpAad?X!rJsSi$BhhN@y_uzW_Sw6a%52Y_eKMQvj-oVqWY@ws6bn+%&F6-y- zJLXudoPGMg56?Y6jf*}vB+rwK5Xj0;HLHOm#%RCeR93@>%8zIt?7NX zdAF*qcI>KNdTOJ}*6Vx^8dg`XogTHo-!D;p*_?CA39d@7XZI8bKCks_UnLe}+VFJF zbyuKKUow{pwXSqqutuZYP!y{pru+@kb2nQhPfh)u04KZaRv+tXt6#eh$lu`BY5 z+H&4W3Z6UcdXA+&@^to^Z^lM=*HZ{s`MmH4|Bu zEqU*%{7Gu&nN;5I{U>6+O;p^vZP(<$OQ-Trtuy@3)GBJ6aH_DUeaDuJ`TO5A_uUZ| z^Z8gcQDfK7qmEyn-L+QmGS6QoyudoOwQ%0<8NFR|`}u9#ORvXy{!Gb_4!&T=byGxp z#pMaMbJj*YT)28m%+f!yH#wA35+g&r8QlJrZ<#h=#EwT z{4P(QujkSWzFFGt{dY?K+J0oVx_;GpM?rj~xu!;l?H})Askg2FPCK+F75mw8FqW~i zdCPc|Zk%iR{{`ov5BJTMWkkKsGj+6Y{IS7Tq9*vawA`e5MOYZWXr zimX?k2{lyR!9TC^$>K>f@6hNrt(_5>&F7*^s{&5oH0ceA4gRW~Z{w4s#wkN0SaJBrpb!9JE!ul;pMLGZktQz=Sjam{-E_rO={(K_Z$1Zd}v#B;isfd z_0jZqPH#WyYc4<27T5E?Yn7a>(>j&+<=mbTGd)E07aB?J^Im#1-RJrzcl2Ycle|9 zs#n`57i7QAUU+FC<5N3}vsVS~owWXuy4cw4_;l+=`9+t-?yvD?nJKpR+kvxR%IC&( zRo+`#KX3Q3r(dqW5&5PSU>AGfhI4PWHFk;;Yqk-Egks>qE8v-Ul*&M6+!d5WDH0C-7p{ zqED@F&#l^X?s*mSOYRv>9l5pK;ft2O@D2F(_w9wnoEgcj)6YD;I@5D&(%i~h!E@iA zDZamFs&mQw#gCdly47-v9S_fPOyIm9J^kzvuf0-h93+cBpLr*Jc6sj7&86CAHIJ?* dKeP;5bk>p0qW`T_@y>laN{U{!uw>4i0{~1wH){X@ literal 0 HcmV?d00001 From f306cc84bc47eadd658a962eb7b4b2f1d166cf58 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 13:14:18 +0200 Subject: [PATCH 0846/1588] hosts: nixos: porthos: services: enable woodpecker --- hosts/nixos/porthos/services.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index d0dbc82..4085957 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -148,5 +148,14 @@ in enable = true; startAtBoot = true; # Server must be started to ensure clients can connect }; + woodpecker = { + enable = true; + # Avoid clashes with drone + port = 3035; + rpcPort = 3036; + runners = [ "docker" "exec" ]; + secretFile = secrets."woodpecker/gitea".path; + sharedSecretFile = secrets."woodpecker/secret".path; + }; }; } From d20e921e33bdff3c1b4f8810b4067c386b9278b2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 13:56:06 +0200 Subject: [PATCH 0847/1588] modules: secrets: fix 'matrix/secret' --- modules/secrets/matrix/secret.age | Bin 378 -> 478 bytes modules/secrets/secrets.nix | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/secrets/matrix/secret.age b/modules/secrets/matrix/secret.age index a287435c07ec354868e1a17c8a0ade4a1c7243e7..539c33e136a17f9caf49f42d65bbb528d78d7158 100644 GIT binary patch delta 451 zcmeyxbdPz0YJFBfetBNHLQ-N{sHs6ng`=ranNhK)X-H_ekyEi@h`Fg#N?JyGh?`?X zZhmr-nR9MBmy4yNYngjwQI2U@Zc%=Lk*85WkxQ0weqvN`p`(|+kEwTArJufqkG^vt zm#&>cadC!jYKoDmsiCDpvUh$~Zn{Exrn{MWVvw_Ae!XEUYNqM@5M|OsPnPX|FwpUefa%re} zQki2_Rb)QMy4;K!KV9AQqSVCVR0Y-QI^*IT{dg|R2*Z3+SI=Z;gFwq-{VZQEKSxVn zU&Eq$0}tm=ePhc+!;DZaU0q#;0)qmxB1aSLutcMD{lFYg567s~f}kv?${b7oB%@N3 zl5+nLS6A(dBJ+H%Z0Fdc^8#Aa7CicsZ6cadC!jYKoDmsiCDpRzQAvUb=!|d1_HoNolyZLA^_;TScK|u48zCeqfcahqIxR zMQB=LN@+=%x0!a9WrQnNWUga*WWI5PfkC>jlci&2V48n%kcE+RXnDcT@9_e6EFuHfEjQ;PcGIZP$k@3KgXljf{T{xkB|H vJ;=Z1o}T~swC3?w-?i?&*FP>bC582bfRc|gV-VZdBN^dh0k?V1{$33L_(gp> diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index e17c4a5..c8a67ad 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -30,7 +30,10 @@ in owner = "matrix-synapse"; publicKeys = all; }; - "matrix/secret.age".publicKeys = all; + "matrix/secret.age" = { + owner = "matrix-synapse"; + publicKeys = all; + }; "miniflux/credentials.age".publicKeys = all; From 8d0f29bd33e5d24369c5bcba01ee47f3f32e90de Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 13:50:05 +0200 Subject: [PATCH 0848/1588] hosts: nixos: porthos: services: set matrix secret --- hosts/nixos/porthos/services.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 4085957..75ebe6b 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -73,7 +73,7 @@ in enable = true; mailConfigFile = secrets."matrix/mail".path; # Only necessary when doing the initial registration - # secret = "change-me"; + secretFile = secrets."matrix/secret".path; }; miniflux = { enable = true; From 7a5842f03ac81f6da91f5d5806b525e0d22a19dd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 13:50:35 +0200 Subject: [PATCH 0849/1588] modules: services: matrix: remove obsolete comment --- modules/services/matrix/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/services/matrix/default.nix b/modules/services/matrix/default.nix index 6adcd00..c581df8 100644 --- a/modules/services/matrix/default.nix +++ b/modules/services/matrix/default.nix @@ -56,7 +56,6 @@ in public_baseurl = "https://matrix.${domain}"; enable_registration = false; - # registration_shared_secret = cfg.secret; # FIXME: use a secret file for this listeners = [ # Federation From 1221d5b6d6dd337f2c301c198ed1bc028bed63de Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 16:20:05 +0100 Subject: [PATCH 0850/1588] pkgs: remove 'havm' Now that the CRI packages it. --- pkgs/default.nix | 2 -- pkgs/havm/default.nix | 34 ---------------------------------- 2 files changed, 36 deletions(-) delete mode 100644 pkgs/havm/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 33775c6..df96369 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -18,8 +18,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { ff2mpv-go = pkgs.callPackage ./ff2mpv-go { }; - havm = pkgs.callPackage ./havm { }; - i3-get-window-criteria = pkgs.callPackage ./i3-get-window-criteria { }; lohr = pkgs.callPackage ./lohr { }; diff --git a/pkgs/havm/default.nix b/pkgs/havm/default.nix deleted file mode 100644 index 51eb9f0..0000000 --- a/pkgs/havm/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ lib, fetchurl, ghc, stdenv, which }: -stdenv.mkDerivation rec { - pname = "havm"; - version = "0.28"; - - src = fetchurl { - url = "https://www.lrde.epita.fr/~tiger/download/${pname}-${version}.tar.gz"; - sha256 = "sha256-FDi4FZ8rjGqRkFlROtcJsv+mks7MmIXQGV4bZrwkQrA="; - }; - - nativeBuildInputs = [ - ghc - ]; - - checkInputs = [ - which - ]; - - doCheck = true; - - meta = with lib; { - description = "A simple virtual machine to execute Andrew Appel's HIR/LIR"; - longDescription = '' - HAVM is a virtual machine designed to execute simple register based high - level intermediate code. It is based on the intermediate representations - ("canonicalized" or not) defined by Andrew Appel in his "Modern Compiler - Implementation". - ''; - homepage = "https://www.lrde.epita.fr/wiki/Havm"; - license = licenses.gpl2Plus; - platforms = platforms.all; - maintainers = with maintainers; [ ambroisie ]; - }; -} From f6d648a87a9d457499e3b6cd479ee565da4a0d43 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 16:20:29 +0100 Subject: [PATCH 0851/1588] pkgs: remove 'nolimips' Now that the CRI packages it. --- pkgs/default.nix | 2 -- pkgs/nolimips/default.nix | 24 ------------------------ 2 files changed, 26 deletions(-) delete mode 100644 pkgs/nolimips/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index df96369..0a3aa84 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -24,8 +24,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { matrix-notifier = pkgs.callPackage ./matrix-notifier { }; - nolimips = pkgs.callPackage ./nolimips { }; - osc52 = pkgs.callPackage ./osc52 { }; pnpm-lock-export = pkgs.callPackage ./pnpm-lock-export { }; diff --git a/pkgs/nolimips/default.nix b/pkgs/nolimips/default.nix deleted file mode 100644 index 65d847d..0000000 --- a/pkgs/nolimips/default.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ lib, fetchurl, stdenv }: -stdenv.mkDerivation rec { - pname = "nolimips"; - version = "0.11"; - - src = fetchurl { - url = "https://www.lrde.epita.fr/~tiger/download/${pname}-${version}.tar.gz"; - sha256 = "sha256-OjbfcBwCZtFP0usz8YXA0lN8xs0jS4I19mkh9p7VHc8="; - }; - - doCheck = true; - - meta = with lib; { - description = "A basic MIPS architecture simulator"; - longDescription = '' - A basic MIPS architecture simulator, which implements a few system calls - and supports an arbitrary number of registers. - ''; - homepage = "https://www.lrde.epita.fr/wiki/Nolimips"; - license = licenses.gpl2; - platforms = platforms.all; - maintainers = with maintainers; [ ambroisie ]; - }; -} From f9ddcff5eedc3be29126f76740a3b8f82d97149d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 16:20:55 +0100 Subject: [PATCH 0852/1588] home: wm: i3: use upstream 'rofi-bluetooth' --- home/wm/i3/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 0c77830..b5316f3 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -192,7 +192,7 @@ in "${modifier}+b" = let inherit (config.my.home.bluetooth) enable; - prog = "${pkgs.ambroisie.rofi-bluetooth}/bin/rofi-bluetooth"; + prog = lib.getExe pkgs.rofi-bluetooth; in lib.mkIf enable "exec ${prog}"; }) From 8fa1b9952c8b9dc51e17e8548af4d0bbcca06c85 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 16:22:08 +0100 Subject: [PATCH 0853/1588] pkgs: remove 'rofi-bluetooth' Now that it is packaged upstream. --- pkgs/default.nix | 2 -- pkgs/rofi-bluetooth/default.nix | 40 --------------------------------- 2 files changed, 42 deletions(-) delete mode 100644 pkgs/rofi-bluetooth/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 0a3aa84..e408dfb 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -28,8 +28,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { pnpm-lock-export = pkgs.callPackage ./pnpm-lock-export { }; - rofi-bluetooth = pkgs.callPackage ./rofi-bluetooth { }; - unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { }; diff --git a/pkgs/rofi-bluetooth/default.nix b/pkgs/rofi-bluetooth/default.nix deleted file mode 100644 index 2ff40a1..0000000 --- a/pkgs/rofi-bluetooth/default.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ lib, bluez, fetchFromGitHub, makeWrapper, rofi, stdenvNoCC }: -stdenvNoCC.mkDerivation rec { - pname = "rofi-bluetooth"; - version = "unstable-2021-10-15"; - - src = fetchFromGitHub { - owner = "nickclyde"; - repo = "rofi-bluetooth"; - rev = "893db1f2b549e7bc0e9c62e7670314349a29cdf2"; - sha256 = "sha256-3oROJKEQCuSnLfbJ+JSSc9hcmJTPrLHRQJsrUcaOMss="; - }; - - buildInputs = [ - makeWrapper - ]; - - installPhase = '' - mkdir -p $out/bin - cp $src/rofi-bluetooth $out/bin/ - chmod a+x $out/bin/rofi-bluetooth - ''; - - wrapperPath = lib.makeBinPath [ - rofi - bluez - ]; - - fixupPhase = '' - patchShebangs $out/bin/${pname} - wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}" - ''; - - meta = with lib; { - description = "A rofi menu for managing bluetooth connections"; - homepage = "https://github.com/nickclyde/rofi-bluetooth/commit/"; - license = with licenses; [ gpl3Only ]; - platforms = platforms.linux; - maintainers = with maintainers; [ ambroisie ]; - }; -} From eb34d23e3d681746a7fd90d66c68fff0f7d28a88 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 16:31:42 +0100 Subject: [PATCH 0854/1588] pkgs: lohr: 0.4.0 -> 0.4.2 --- pkgs/lohr/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix index c71dbd0..38892bb 100644 --- a/pkgs/lohr/default.nix +++ b/pkgs/lohr/default.nix @@ -1,16 +1,16 @@ { lib, fetchFromGitHub, rustPlatform }: rustPlatform.buildRustPackage rec { pname = "lohr"; - version = "0.4.0"; + version = "0.4.2"; src = fetchFromGitHub { owner = "alarsyo"; repo = "lohr"; rev = "v${version}"; - sha256 = "sha256-MplTVJG+SoeLMXQP+ix/zM3OSHuQmZnunn900YnyCBw="; + hash = "sha256-2pN/Me5fCdE++TzBUswPXzjuUIIB7Uck+Scp361JgE4="; }; - cargoSha256 = "sha256-iuMJj8tqetlmdfsrfudnU1afwUzjls/UdYLq1u0gr+g="; + cargoHash = "sha256-YHg4b6rKcnVJSDoWh9/o+p40NBog65Gd2/UwIDXiUe0="; meta = with lib; { description = "Git mirroring daemon"; From ffd3fb06bd5b01483e96e39d952687816cd761de Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 16:33:26 +0100 Subject: [PATCH 0855/1588] pkgs: refactor 'sha256' -> 'hash' --- pkgs/dragger/default.nix | 2 +- pkgs/drone-scp/default.nix | 4 ++-- pkgs/ff2mpv-go/default.nix | 2 +- pkgs/matrix-notifier/default.nix | 4 ++-- pkgs/unified-hosts-lists/default.nix | 2 +- pkgs/vimix-cursors/default.nix | 2 +- pkgs/volantes-cursors/default.nix | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkgs/dragger/default.nix b/pkgs/dragger/default.nix index 094e541..255cc01 100644 --- a/pkgs/dragger/default.nix +++ b/pkgs/dragger/default.nix @@ -7,7 +7,7 @@ qt5.mkDerivation rec { owner = "ambroisie"; repo = "dragger"; rev = "v${version}"; - sha256 = "sha256-WAC720DxfkQxy1BeeGzE6IerFb4ejoMRAPEJv5HGDHM="; + hash = "sha256-WAC720DxfkQxy1BeeGzE6IerFb4ejoMRAPEJv5HGDHM="; }; configurePhase = '' diff --git a/pkgs/drone-scp/default.nix b/pkgs/drone-scp/default.nix index 0b51032..0affedb 100644 --- a/pkgs/drone-scp/default.nix +++ b/pkgs/drone-scp/default.nix @@ -7,10 +7,10 @@ buildGoModule rec { owner = "appleboy"; repo = "drone-scp"; rev = "v${version}"; - sha256 = "sha256-ELjPqoRR4O6gmc/PgthQuSXuSTQNzBZoAUT80zVVbV0="; + hash = "sha256-ELjPqoRR4O6gmc/PgthQuSXuSTQNzBZoAUT80zVVbV0="; }; - vendorSha256 = "sha256-/c103hTJ/Qdz2KTkdl/ACvAaSSTKcl1DQY3+Us6OxaI="; + vendorHash = "sha256-/c103hTJ/Qdz2KTkdl/ACvAaSSTKcl1DQY3+Us6OxaI="; doCheck = false; # Needs a specific user... diff --git a/pkgs/ff2mpv-go/default.nix b/pkgs/ff2mpv-go/default.nix index 4689814..dcdb7f3 100644 --- a/pkgs/ff2mpv-go/default.nix +++ b/pkgs/ff2mpv-go/default.nix @@ -6,7 +6,7 @@ buildGoModule rec { src = fetchgit { url = "https://git.clsr.net/util/ff2mpv-go/"; rev = "v${version}"; - sha256 = "sha256-e/AuOA3isFTyBf97Zwtr16yo49UdYzvktV5PKB/eH/s="; + hash = "sha256-e/AuOA3isFTyBf97Zwtr16yo49UdYzvktV5PKB/eH/s="; }; vendorHash = null; diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index c17bf28..8c0237f 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -1,13 +1,13 @@ { lib, curl, jq, fetchFromGitHub, makeWrapper, pandoc, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "matrix-notifier"; - version = "0.2.0"; + version = "0.3.0"; src = fetchFromGitHub { owner = "ambroisie"; repo = "matrix-notifier"; rev = "v${version}"; - sha256 = "sha256-JiKPDrr9wyD2q5Vsac+OkFdvrDkx6mj/oC7XDVnka74="; + hash = "sha256-JiKPDrr9wyD2q5Vsac+OkFdvrDkx6mj/oC7XDVnka74="; }; nativeBuildInputs = [ diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index bed8f0d..1bafb03 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -7,7 +7,7 @@ stdenvNoCC.mkDerivation rec { owner = "StevenBlack"; repo = "hosts"; rev = version; - sha256 = "sha256-HoNX57lCoIr36B/7HMuazWSWeAPPfWY1oZf6dXnxYIE="; + hash = "sha256-HoNX57lCoIr36B/7HMuazWSWeAPPfWY1oZf6dXnxYIE="; }; dontUnpack = true; diff --git a/pkgs/vimix-cursors/default.nix b/pkgs/vimix-cursors/default.nix index 1bbbe4e..8f92595 100644 --- a/pkgs/vimix-cursors/default.nix +++ b/pkgs/vimix-cursors/default.nix @@ -10,7 +10,7 @@ stdenvNoCC.mkDerivation rec { owner = "vinceliuice"; repo = pname; rev = "27ebb1935944bc986bf8ae85ee3343b8351d9823"; - sha256 = "sha256-bIPRrKaNQ2Eo+T6zv7qeA1z7uRHXezM0yxh+uqA01Gs="; + hash = "sha256-bIPRrKaNQ2Eo+T6zv7qeA1z7uRHXezM0yxh+uqA01Gs="; }; nativeBuildInputs = [ diff --git a/pkgs/volantes-cursors/default.nix b/pkgs/volantes-cursors/default.nix index e300a36..0a49912 100644 --- a/pkgs/volantes-cursors/default.nix +++ b/pkgs/volantes-cursors/default.nix @@ -7,7 +7,7 @@ stdenvNoCC.mkDerivation rec { owner = "varlesh"; repo = pname; rev = "d1d290ff42cc4fa643716551bd0b02582b90fd2f"; - sha256 = "sha256-irMN/enoo90nYLfvSOScZoYdvhZKvqqp+grZB2BQD9o="; + hash = "sha256-irMN/enoo90nYLfvSOScZoYdvhZKvqqp+grZB2BQD9o="; }; nativeBuildInputs = [ From 29a1a48d1921ee1c831d1e5dcc1433418914b8ce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 16:33:43 +0100 Subject: [PATCH 0856/1588] pkgs: matrix-notifier: 0.2.0 -> 0.3.0 --- pkgs/matrix-notifier/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index 8c0237f..1762b62 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -7,7 +7,7 @@ stdenvNoCC.mkDerivation rec { owner = "ambroisie"; repo = "matrix-notifier"; rev = "v${version}"; - hash = "sha256-JiKPDrr9wyD2q5Vsac+OkFdvrDkx6mj/oC7XDVnka74="; + hash = "sha256-NE9RO0ep2ibrT9EUPGTnUE3ofdNTCHwelxnX9tCflg0="; }; nativeBuildInputs = [ From 85f7a34d852ee623015d624f48987d6085eb3c67 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 16:35:58 +0100 Subject: [PATCH 0857/1588] ci: add Woodpecker CI workflow --- .woodpecker/check.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .woodpecker/check.yml diff --git a/.woodpecker/check.yml b/.woodpecker/check.yml new file mode 100644 index 0000000..c3b00ef --- /dev/null +++ b/.woodpecker/check.yml @@ -0,0 +1,26 @@ +labels: + type: exec + +pipeline: +- name: nix flake check + image: bash + commands: + - nix flake check + +- name: notifiy + image: bash + secrets: + - source: matrix_homeserver + target: address + - source: matrix_roomid + target: room + - source: matrix_username + target: user + - source: matrix_password + target: pass + commands: + - nix run '.#matrix-notifier' + when: + status: + - failure + - success From 0da267664cfa5e737a78e533f00b21a1953d04f0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 17:14:13 +0100 Subject: [PATCH 0858/1588] ci: remove Drone CI --- .drone.yml | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 .drone.yml diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index b192230..0000000 --- a/.drone.yml +++ /dev/null @@ -1,27 +0,0 @@ ---- -kind: pipeline -type: exec -name: NixOS config check - -steps: -- name: nix flake check - commands: - - nix flake check - -- name: notifiy - commands: - - nix run .#matrix-notifier - environment: - ADDRESS: - from_secret: matrix_homeserver - ROOM: - from_secret: matrix_roomid - USER: - from_secret: matrix_username - PASS: - from_secret: matrix_password - when: - status: - - failure - - success -... From f15b3aa23dcb24afb802c6b5eb2ef2f3998977cf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 21:05:20 +0200 Subject: [PATCH 0859/1588] modules: services: woodpecker: allow setuid I need it to be able to use `ssh-agent`, for some of my workflows. --- modules/services/woodpecker/agent-exec/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/services/woodpecker/agent-exec/default.nix index 743dfbb..0fa8f0a 100644 --- a/modules/services/woodpecker/agent-exec/default.nix +++ b/modules/services/woodpecker/agent-exec/default.nix @@ -45,6 +45,9 @@ in ]; serviceConfig = { + # Same option as upstream, without @setuid + SystemCallFilter = lib.mkForce "~@clock @privileged @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @reboot @swap"; + BindPaths = [ "/nix/var/nix/daemon-socket/socket" "/run/nscd/socket" From 72dd9ae8344812952f4b271900fb9789aca55c5b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 20:20:44 +0100 Subject: [PATCH 0860/1588] home: wm: i3bar: fix 'battery' block icon --- home/wm/i3bar/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index d4fa107..afe0d91 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -71,7 +71,7 @@ in } { block = "battery"; - format = " $percentage ($time) "; + format = " $icon $percentage ($time) "; full_format = " $icon $percentage "; } { From 9781ef06b035467c04c4f18b59e87cdec248023a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 1 Apr 2023 20:29:16 +0100 Subject: [PATCH 0861/1588] home: wm: i3bar: better 'battery' formats --- home/wm/i3bar/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index afe0d91..a2c9f3a 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -71,7 +71,8 @@ in } { block = "battery"; - format = " $icon $percentage ($time) "; + format = " $icon $percentage{ ($time)|} "; + not_charging_format = " $icon $percentage "; full_format = " $icon $percentage "; } { From 951770904f14afa57c7ce3670cdb46665504dd18 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 Apr 2023 15:30:59 +0000 Subject: [PATCH 0862/1588] flake: add templates --- flake/default.nix | 1 + flake/templates.nix | 4 ++++ templates/default.nix | 3 +++ 3 files changed, 8 insertions(+) create mode 100644 flake/templates.nix create mode 100644 templates/default.nix diff --git a/flake/default.nix b/flake/default.nix index 2def58d..d1b360c 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -27,5 +27,6 @@ flake-parts.lib.mkFlake { inherit inputs; } { ./nixos.nix ./overlays.nix ./packages.nix + ./templates.nix ]; } diff --git a/flake/templates.nix b/flake/templates.nix new file mode 100644 index 0000000..28e534e --- /dev/null +++ b/flake/templates.nix @@ -0,0 +1,4 @@ +{ self, ... }: +{ + flake.templates = import "${self}/templates"; +} diff --git a/templates/default.nix b/templates/default.nix new file mode 100644 index 0000000..679b267 --- /dev/null +++ b/templates/default.nix @@ -0,0 +1,3 @@ +{ + # Add templates +} From 9822b034f796807d06b24a4bc152f6ad3b26e1d5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 Apr 2023 15:48:04 +0000 Subject: [PATCH 0863/1588] templates: add c++-cmake --- templates/c++-cmake/.clang-format | 23 ++++ templates/c++-cmake/.envrc | 10 ++ templates/c++-cmake/.gitignore | 7 ++ templates/c++-cmake/.woodpecker/check.yml | 26 ++++ templates/c++-cmake/CMakeLists.txt | 18 +++ templates/c++-cmake/flake.nix | 112 ++++++++++++++++++ templates/c++-cmake/src/CMakeLists.txt | 4 + templates/c++-cmake/src/main.cc | 5 + templates/c++-cmake/tests/CMakeLists.txt | 1 + templates/c++-cmake/tests/unit/CMakeLists.txt | 15 +++ templates/c++-cmake/tests/unit/dummy_test.cc | 5 + templates/default.nix | 5 +- 12 files changed, 230 insertions(+), 1 deletion(-) create mode 100644 templates/c++-cmake/.clang-format create mode 100644 templates/c++-cmake/.envrc create mode 100644 templates/c++-cmake/.gitignore create mode 100644 templates/c++-cmake/.woodpecker/check.yml create mode 100644 templates/c++-cmake/CMakeLists.txt create mode 100644 templates/c++-cmake/flake.nix create mode 100644 templates/c++-cmake/src/CMakeLists.txt create mode 100644 templates/c++-cmake/src/main.cc create mode 100644 templates/c++-cmake/tests/CMakeLists.txt create mode 100644 templates/c++-cmake/tests/unit/CMakeLists.txt create mode 100644 templates/c++-cmake/tests/unit/dummy_test.cc diff --git a/templates/c++-cmake/.clang-format b/templates/c++-cmake/.clang-format new file mode 100644 index 0000000..19c58aa --- /dev/null +++ b/templates/c++-cmake/.clang-format @@ -0,0 +1,23 @@ +# vim: ft=yaml +--- +BasedOnStyle: LLVM +IndentWidth: 4 +--- +Language: Cpp +# Force pointers to the type for C++. +DerivePointerAlignment: false +PointerAlignment: Left + +# Short functions should not be on a single line, unless empty +AllowShortFunctionsOnASingleLine: Empty + +# Make them level +AccessModifierOffset: -4 + +# It makes more sense this way +BreakBeforeBinaryOperators: All +BreakBeforeTernaryOperators: true + +# Aesthetic +AlignOperands: AlignAfterOperator +--- diff --git a/templates/c++-cmake/.envrc b/templates/c++-cmake/.envrc new file mode 100644 index 0000000..95ed6fb --- /dev/null +++ b/templates/c++-cmake/.envrc @@ -0,0 +1,10 @@ +if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +fi + +use flake + +watch_file ./flake/checks.nix +watch_file ./flake/dev-shells.nix + +eval "$shellHooks" diff --git a/templates/c++-cmake/.gitignore b/templates/c++-cmake/.gitignore new file mode 100644 index 0000000..09ba440 --- /dev/null +++ b/templates/c++-cmake/.gitignore @@ -0,0 +1,7 @@ +# CMake build directories +/build +/build-* + +# Nix generated files +/.pre-commit-config.yaml +/result diff --git a/templates/c++-cmake/.woodpecker/check.yml b/templates/c++-cmake/.woodpecker/check.yml new file mode 100644 index 0000000..c3b00ef --- /dev/null +++ b/templates/c++-cmake/.woodpecker/check.yml @@ -0,0 +1,26 @@ +labels: + type: exec + +pipeline: +- name: nix flake check + image: bash + commands: + - nix flake check + +- name: notifiy + image: bash + secrets: + - source: matrix_homeserver + target: address + - source: matrix_roomid + target: room + - source: matrix_username + target: user + - source: matrix_password + target: pass + commands: + - nix run '.#matrix-notifier' + when: + status: + - failure + - success diff --git a/templates/c++-cmake/CMakeLists.txt b/templates/c++-cmake/CMakeLists.txt new file mode 100644 index 0000000..122d8b3 --- /dev/null +++ b/templates/c++-cmake/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.10) +project(project VERSION 0.0.0 LANGUAGES CXX) +enable_testing() + +add_library(common_options INTERFACE) +target_compile_features(common_options INTERFACE + cxx_std_20 +) +target_compile_options(common_options INTERFACE + -Wall + -Wextra +) +target_include_directories(common_options INTERFACE + src +) + +add_subdirectory(src) +add_subdirectory(tests) diff --git a/templates/c++-cmake/flake.nix b/templates/c++-cmake/flake.nix new file mode 100644 index 0000000..c7e2794 --- /dev/null +++ b/templates/c++-cmake/flake.nix @@ -0,0 +1,112 @@ +{ + description = "A C++ project"; + + inputs = { + futils = { + type = "github"; + owner = "numtide"; + repo = "flake-utils"; + ref = "main"; + }; + + nixpkgs = { + type = "github"; + owner = "NixOS"; + repo = "nixpkgs"; + ref = "nixos-unstable"; + }; + + pre-commit-hooks = { + type = "github"; + owner = "cachix"; + repo = "pre-commit-hooks.nix"; + ref = "master"; + inputs = { + flake-utils.follows = "futils"; + nixpkgs.follows = "nixpkgs"; + }; + }; + }; + + outputs = { self, futils, nixpkgs, pre-commit-hooks }: + { + overlays = { + default = final: prev: { + project = with final; stdenv.mkDerivation { + pname = "project"; + version = "0.0.0"; + + src = self; + + nativeBuildInputs = with pkgs; [ + cmake + ninja + pkg-config + ]; + + checkInputs = with pkgs; [ + gtest + ]; + + doCheck = true; + + meta = with lib; { + description = "A C++ project"; + homepage = "https://gitea.belanyi.fr/ambroisie/project"; + license = licenses.mit; + maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; + }; + }; + }; + }; + } // futils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ + self.overlays.default + ]; + }; + + pre-commit = pre-commit-hooks.lib.${system}.run { + src = self; + + hooks = { + nixpkgs-fmt = { + enable = true; + }; + + clang-format = { + enable = true; + }; + }; + }; + in + { + checks = { + inherit (self.packages.${system}) project; + + inherit pre-commit; + }; + + devShells = { + default = pkgs.mkShell { + inputsFrom = with self.packages.${system}; [ + project + ]; + + packages = with pkgs; [ + clang-tools + ]; + + inherit (pre-commit) shellHook; + }; + }; + + packages = futils.lib.flattenTree { + default = pkgs.project; + inherit (pkgs) project; + }; + }); +} diff --git a/templates/c++-cmake/src/CMakeLists.txt b/templates/c++-cmake/src/CMakeLists.txt new file mode 100644 index 0000000..d91cef1 --- /dev/null +++ b/templates/c++-cmake/src/CMakeLists.txt @@ -0,0 +1,4 @@ +add_executable(project main.cc) +target_link_libraries(project PRIVATE common_options) + +install(TARGETS project) diff --git a/templates/c++-cmake/src/main.cc b/templates/c++-cmake/src/main.cc new file mode 100644 index 0000000..5eb9e4a --- /dev/null +++ b/templates/c++-cmake/src/main.cc @@ -0,0 +1,5 @@ +#include + +int main() { + std::cout << "Hello World!\n"; +} diff --git a/templates/c++-cmake/tests/CMakeLists.txt b/templates/c++-cmake/tests/CMakeLists.txt new file mode 100644 index 0000000..269aea0 --- /dev/null +++ b/templates/c++-cmake/tests/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(unit) diff --git a/templates/c++-cmake/tests/unit/CMakeLists.txt b/templates/c++-cmake/tests/unit/CMakeLists.txt new file mode 100644 index 0000000..bb94448 --- /dev/null +++ b/templates/c++-cmake/tests/unit/CMakeLists.txt @@ -0,0 +1,15 @@ +find_package(GTest) + +if (${GTest_FOUND}) +include(GoogleTest) + +add_executable(dummy_test dummy_test.cc) +target_link_libraries(dummy_test PRIVATE common_options) + +target_link_libraries(dummy_test PRIVATE + GTest::gtest + GTest::gtest_main +) + +gtest_discover_tests(dummy_test) +endif (${GTest_FOUND}) diff --git a/templates/c++-cmake/tests/unit/dummy_test.cc b/templates/c++-cmake/tests/unit/dummy_test.cc new file mode 100644 index 0000000..4573678 --- /dev/null +++ b/templates/c++-cmake/tests/unit/dummy_test.cc @@ -0,0 +1,5 @@ +#include + +TEST(misc, passing) { + ASSERT_EQ(1, 1); +} diff --git a/templates/default.nix b/templates/default.nix index 679b267..60671f9 100644 --- a/templates/default.nix +++ b/templates/default.nix @@ -1,3 +1,6 @@ { - # Add templates + "c++-cmake" = { + path = ./c++-cmake; + description = "A C++ project using CMake"; + }; } From b3e75b374a7a297bac0eb77861e38c711d3e0ee1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 Apr 2023 16:21:05 +0000 Subject: [PATCH 0864/1588] templates: add c++-meson --- templates/c++-meson/.clang-format | 23 ++++ templates/c++-meson/.gitignore | 7 ++ templates/c++-meson/.woodpecker/check.yml | 26 +++++ templates/c++-meson/flake.nix | 112 +++++++++++++++++++ templates/c++-meson/meson.build | 13 +++ templates/c++-meson/src/main.cc | 5 + templates/c++-meson/src/meson.build | 8 ++ templates/c++-meson/tests/meson.build | 1 + templates/c++-meson/tests/unit/dummy_test.cc | 5 + templates/c++-meson/tests/unit/meson.build | 13 +++ templates/default.nix | 4 + 11 files changed, 217 insertions(+) create mode 100644 templates/c++-meson/.clang-format create mode 100644 templates/c++-meson/.gitignore create mode 100644 templates/c++-meson/.woodpecker/check.yml create mode 100644 templates/c++-meson/flake.nix create mode 100644 templates/c++-meson/meson.build create mode 100644 templates/c++-meson/src/main.cc create mode 100644 templates/c++-meson/src/meson.build create mode 100644 templates/c++-meson/tests/meson.build create mode 100644 templates/c++-meson/tests/unit/dummy_test.cc create mode 100644 templates/c++-meson/tests/unit/meson.build diff --git a/templates/c++-meson/.clang-format b/templates/c++-meson/.clang-format new file mode 100644 index 0000000..19c58aa --- /dev/null +++ b/templates/c++-meson/.clang-format @@ -0,0 +1,23 @@ +# vim: ft=yaml +--- +BasedOnStyle: LLVM +IndentWidth: 4 +--- +Language: Cpp +# Force pointers to the type for C++. +DerivePointerAlignment: false +PointerAlignment: Left + +# Short functions should not be on a single line, unless empty +AllowShortFunctionsOnASingleLine: Empty + +# Make them level +AccessModifierOffset: -4 + +# It makes more sense this way +BreakBeforeBinaryOperators: All +BreakBeforeTernaryOperators: true + +# Aesthetic +AlignOperands: AlignAfterOperator +--- diff --git a/templates/c++-meson/.gitignore b/templates/c++-meson/.gitignore new file mode 100644 index 0000000..09ba440 --- /dev/null +++ b/templates/c++-meson/.gitignore @@ -0,0 +1,7 @@ +# CMake build directories +/build +/build-* + +# Nix generated files +/.pre-commit-config.yaml +/result diff --git a/templates/c++-meson/.woodpecker/check.yml b/templates/c++-meson/.woodpecker/check.yml new file mode 100644 index 0000000..c3b00ef --- /dev/null +++ b/templates/c++-meson/.woodpecker/check.yml @@ -0,0 +1,26 @@ +labels: + type: exec + +pipeline: +- name: nix flake check + image: bash + commands: + - nix flake check + +- name: notifiy + image: bash + secrets: + - source: matrix_homeserver + target: address + - source: matrix_roomid + target: room + - source: matrix_username + target: user + - source: matrix_password + target: pass + commands: + - nix run '.#matrix-notifier' + when: + status: + - failure + - success diff --git a/templates/c++-meson/flake.nix b/templates/c++-meson/flake.nix new file mode 100644 index 0000000..d62eda2 --- /dev/null +++ b/templates/c++-meson/flake.nix @@ -0,0 +1,112 @@ +{ + description = "A C++ project"; + + inputs = { + futils = { + type = "github"; + owner = "numtide"; + repo = "flake-utils"; + ref = "main"; + }; + + nixpkgs = { + type = "github"; + owner = "NixOS"; + repo = "nixpkgs"; + ref = "nixos-unstable"; + }; + + pre-commit-hooks = { + type = "github"; + owner = "cachix"; + repo = "pre-commit-hooks.nix"; + ref = "master"; + inputs = { + flake-utils.follows = "futils"; + nixpkgs.follows = "nixpkgs"; + }; + }; + }; + + outputs = { self, futils, nixpkgs, pre-commit-hooks }: + { + overlays = { + default = final: prev: { + project = with final; stdenv.mkDerivation { + pname = "project"; + version = "0.0.0"; + + src = self; + + nativeBuildInputs = with pkgs; [ + meson + ninja + pkg-config + ]; + + checkInputs = with pkgs; [ + gtest + ]; + + doCheck = true; + + meta = with lib; { + description = "A C++ project"; + homepage = "https://gitea.belanyi.fr/ambroisie/project"; + license = licenses.mit; + maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; + }; + }; + }; + }; + } // futils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ + self.overlays.default + ]; + }; + + pre-commit = pre-commit-hooks.lib.${system}.run { + src = self; + + hooks = { + nixpkgs-fmt = { + enable = true; + }; + + clang-format = { + enable = true; + }; + }; + }; + in + { + checks = { + inherit (self.packages.${system}) project; + + inherit pre-commit; + }; + + devShells = { + default = pkgs.mkShell { + inputsFrom = with self.packages.${system}; [ + project + ]; + + packages = with pkgs; [ + clang-tools + ]; + + inherit (pre-commit) shellHook; + }; + }; + + packages = futils.lib.flattenTree { + default = pkgs.project; + inherit (pkgs) project; + }; + }); +} diff --git a/templates/c++-meson/meson.build b/templates/c++-meson/meson.build new file mode 100644 index 0000000..bc228c6 --- /dev/null +++ b/templates/c++-meson/meson.build @@ -0,0 +1,13 @@ +project( + 'project', + 'cpp', + version : '0.0.0', + license: 'MIT', + default_options : [ + 'cpp_std=c++20', + 'warning_level=3', + ], +) + +subdir('src') +subdir('tests') diff --git a/templates/c++-meson/src/main.cc b/templates/c++-meson/src/main.cc new file mode 100644 index 0000000..5eb9e4a --- /dev/null +++ b/templates/c++-meson/src/main.cc @@ -0,0 +1,5 @@ +#include + +int main() { + std::cout << "Hello World!\n"; +} diff --git a/templates/c++-meson/src/meson.build b/templates/c++-meson/src/meson.build new file mode 100644 index 0000000..4b2ff23 --- /dev/null +++ b/templates/c++-meson/src/meson.build @@ -0,0 +1,8 @@ +sources = files( + 'main.cc', +) + +executable( + 'project', + sources : sources, +) diff --git a/templates/c++-meson/tests/meson.build b/templates/c++-meson/tests/meson.build new file mode 100644 index 0000000..082b746 --- /dev/null +++ b/templates/c++-meson/tests/meson.build @@ -0,0 +1 @@ +subdir('unit') diff --git a/templates/c++-meson/tests/unit/dummy_test.cc b/templates/c++-meson/tests/unit/dummy_test.cc new file mode 100644 index 0000000..4573678 --- /dev/null +++ b/templates/c++-meson/tests/unit/dummy_test.cc @@ -0,0 +1,5 @@ +#include + +TEST(misc, passing) { + ASSERT_EQ(1, 1); +} diff --git a/templates/c++-meson/tests/unit/meson.build b/templates/c++-meson/tests/unit/meson.build new file mode 100644 index 0000000..44c8a92 --- /dev/null +++ b/templates/c++-meson/tests/unit/meson.build @@ -0,0 +1,13 @@ +gtest_dep = dependency( + 'gtest', + main : true, + required : false, +) + +dummy_test = executable( + 'dummy_test', + 'dummy_test.cc', + dependencies : gtest_dep, +) + +test('dummy test', dummy_test) diff --git a/templates/default.nix b/templates/default.nix index 60671f9..f58fd72 100644 --- a/templates/default.nix +++ b/templates/default.nix @@ -3,4 +3,8 @@ path = ./c++-cmake; description = "A C++ project using CMake"; }; + "c++-meson" = { + path = ./c++-meson; + description = "A C++ project using CMake"; + }; } From 7b117d76dec561887bd93c1008da0e44dfcee89b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 Apr 2023 16:55:32 +0000 Subject: [PATCH 0865/1588] overlays: remove 'i3status-rust-main-program' It is now included upstream. --- overlays/default.nix | 2 +- overlays/i3status-rust-main-program/default.nix | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) delete mode 100644 overlays/i3status-rust-main-program/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index cf20bee..7984ac0 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - i3status-rust-main-program = import ./i3status-rust-main-program; + # NOTE: no overlays at the moment } diff --git a/overlays/i3status-rust-main-program/default.nix b/overlays/i3status-rust-main-program/default.nix deleted file mode 100644 index b6bbb02..0000000 --- a/overlays/i3status-rust-main-program/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -final: prev: -{ - i3status-rust = prev.i3status-rust.overrideAttrs (oa: { - meta = oa.meta or { } // { - mainProgram = "i3status-rs"; - }; - }); -} From e8a31ddf8c2cc8502a5aaca5e57a43cd9f413b72 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 11 Apr 2023 14:31:42 +0000 Subject: [PATCH 0866/1588] flake: bump inputs --- flake.lock | 60 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index f99e109..bf6f327 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1677969766, - "narHash": "sha256-AIp/ZYZMNLDZR/H7iiAlaGpu4lcXsVt9JQpBlf43HRY=", + "lastModified": 1680281360, + "narHash": "sha256-XdLTgAzjJNDhAG2V+++0bHpSzfvArvr2pW6omiFfEJk=", "owner": "ryantm", "repo": "agenix", - "rev": "03b51fe8e459a946c4b88dcfb6446e45efb2c24e", + "rev": "e64961977f60388dd0b49572bb0fc453b871f896", "type": "github" }, "original": { @@ -67,11 +67,11 @@ ] }, "locked": { - "lastModified": 1679737941, - "narHash": "sha256-srSD9CwsVPnUMsIZ7Kt/UegkKUEBcTyU1Rev7mO45S0=", + "lastModified": 1680392223, + "narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "3502ee99d6dade045bdeaf7b0cd8ec703484c25c", + "rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5", "type": "github" }, "original": { @@ -82,12 +82,15 @@ } }, "futils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1678901627, - "narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=", + "lastModified": 1681202837, + "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", "owner": "numtide", "repo": "flake-utils", - "rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6", + "rev": "cfacdce06f30d2b68473a46042957675eebb3401", "type": "github" }, "original": { @@ -128,11 +131,11 @@ ] }, "locked": { - "lastModified": 1680114304, - "narHash": "sha256-XymtLu8G2nzenjDUWI7XV2MMHztvPkEZUFpwmZFcxVM=", + "lastModified": 1681162249, + "narHash": "sha256-jh5fLaTxR5XowXA0CN/1Gs2qbvVdmdPCSeO424XWZLI=", "owner": "nix-community", "repo": "home-manager", - "rev": "0e065e1b6f0776ebbacea9dcbc977af7bc9eddc0", + "rev": "4e79c6a414ce59fd1a53ab77899c77ab87774e6b", "type": "github" }, "original": { @@ -144,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1680125544, - "narHash": "sha256-mlqo1r+TZUOuypWdrZHluxWL+E5WzXlUXNZ9Y0WLDFU=", + "lastModified": 1681126633, + "narHash": "sha256-evQ3Ct/yJDSHej16Hiq+JfxRjgm9FXu/2LBxsyorGdE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9a6aabc4740790ef3bbb246b86d029ccf6759658", + "rev": "db24d86dd8a4769c50d6b7295e81aa280cd93f35", "type": "github" }, "original": { @@ -160,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1680183987, - "narHash": "sha256-ww5/H0ZmV8ztnrDaL7GX2zLW82yURgrTebGEd4nTx6Y=", + "lastModified": 1681202919, + "narHash": "sha256-LKAF4NQV3mnQ0oTcfk9yrNqj3DgjN0UW+uxu464p1Rc=", "owner": "nix-community", "repo": "NUR", - "rev": "fa953d3867d6f133eb4d72234d8dd0fa68d007e0", + "rev": "a013ab00e087108ca06c9f380c01617c8aec2a71", "type": "github" }, "original": { @@ -189,11 +192,11 @@ ] }, "locked": { - "lastModified": 1680170909, - "narHash": "sha256-FtKU/edv1jFRr/KwUxWTYWXEyj9g8GBrHntC2o8oFI8=", + "lastModified": 1681206676, + "narHash": "sha256-6hQR0fSJ22BSV1XpjyxYur/MPab6gn3aI/l8qEpwNHk=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "29dbe1efaa91c3a415d8b45d62d48325a4748816", + "rev": "a0e9703a95342d1dba4ba0d989b2e0b429d42516", "type": "github" }, "original": { @@ -213,6 +216,21 @@ "nur": "nur", "pre-commit-hooks": "pre-commit-hooks" } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } } }, "root": "root", From 0e5d40ef7fd7fe7d2a5a1f80401e769e6a0b0b79 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 11 Apr 2023 15:13:02 +0000 Subject: [PATCH 0867/1588] pkgs: woodpecker: add 'pnpm-lock-export' to update Now that it has been upstreamed. --- pkgs/woodpecker/update.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkgs/woodpecker/update.sh b/pkgs/woodpecker/update.sh index 1712845..460ea0b 100755 --- a/pkgs/woodpecker/update.sh +++ b/pkgs/woodpecker/update.sh @@ -1,6 +1,5 @@ #!/usr/bin/env nix-shell -#!nix-shell -i bash -p nix wget prefetch-yarn-deps nix-prefetch-github jq nix-prefetch -# FIXME: add pnpm-lock-export to shell +#!nix-shell -i bash -p nix wget prefetch-yarn-deps nix-prefetch-github jq nix-prefetch pnpm-lock-export # shellcheck shell=bash From 520d7991248833caf0d82a0db0880b4a793793c1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 11 Apr 2023 15:14:38 +0000 Subject: [PATCH 0868/1588] pkgs: remove 'pnpm-lock-export' I don't need it now that it has been upstreamed. --- pkgs/default.nix | 2 - pkgs/pnpm-lock-export/default.nix | 28 - pkgs/pnpm-lock-export/package-lock.json | 9847 ----------------------- pkgs/pnpm-lock-export/update.sh | 47 - 4 files changed, 9924 deletions(-) delete mode 100644 pkgs/pnpm-lock-export/default.nix delete mode 100644 pkgs/pnpm-lock-export/package-lock.json delete mode 100755 pkgs/pnpm-lock-export/update.sh diff --git a/pkgs/default.nix b/pkgs/default.nix index e408dfb..f1e8f63 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -26,8 +26,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { osc52 = pkgs.callPackage ./osc52 { }; - pnpm-lock-export = pkgs.callPackage ./pnpm-lock-export { }; - unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { }; diff --git a/pkgs/pnpm-lock-export/default.nix b/pkgs/pnpm-lock-export/default.nix deleted file mode 100644 index addfff8..0000000 --- a/pkgs/pnpm-lock-export/default.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ lib, buildNpmPackage, fetchFromGitHub }: -buildNpmPackage rec { - pname = "pnpm-lock-export"; - version = "0.4.0"; - - src = fetchFromGitHub { - owner = "cvent"; - repo = "pnpm-lock-export"; - rev = "v${version}"; - hash = "sha256-vS6AW3R4go1Fdr3PBOCnuN4JDrDkl1lWVF7q+q+xDGg="; - }; - - npmDepsHash = "sha256-3uW/lzB+UDhFQtRb3X8szNlgAWTcSdwVdtyZvLu+cjI="; - - postPatch = '' - cp ${./package-lock.json} package-lock.json - # Make the executable get installed to `bin/` instead of `bin/@cvent` - substituteInPlace package.json --replace "@cvent/pnpm-lock-export" "pnpm-lock-export" - ''; - - meta = with lib; { - description = "A utility for converting pnpm-lock.yaml to other lockfile formats"; - homepage = "https://github.com/cvent/pnpm-lock-export"; - license = licenses.mit; - platforms = platforms.all; - maintainers = with maintainers; [ ambroisie ]; - }; -} diff --git a/pkgs/pnpm-lock-export/package-lock.json b/pkgs/pnpm-lock-export/package-lock.json deleted file mode 100644 index 9ef62b1..0000000 --- a/pkgs/pnpm-lock-export/package-lock.json +++ /dev/null @@ -1,9847 +0,0 @@ -{ - "name": "@cvent/pnpm-lock-export", - "version": "0.4.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@cvent/pnpm-lock-export", - "version": "0.4.0", - "license": "MIT", - "dependencies": { - "@manypkg/get-packages": "^1.1.3", - "@pnpm/lockfile-file": "^5.1.4", - "@pnpm/lockfile-utils": "^4.1.0", - "@pnpm/logger": "^4.0.0", - "@pnpm/prune-lockfile": "^4.0.12", - "@pnpm/read-project-manifest": "^3.0.6", - "@pnpm/types": "^8.4.0", - "argparse": "^2.0.1", - "dependency-path": "^9.2.3", - "semver": "^7.3.7" - }, - "bin": { - "pnpm-lock-export": "dist/src/bin/pnpm-lock-export.js" - }, - "devDependencies": { - "@pnpm/lockfile-types": "^4.2.0", - "@pnpm/registry-mock": "^2.20.0", - "@swc/core": "^1.2.218", - "@swc/jest": "^0.2.22", - "@tsconfig/node16-strictest": "^1.0.0", - "@types/argparse": "^2.0.10", - "@types/jest": "^28.1.6", - "@types/node": "^16", - "@types/semver": "^7.3.10", - "@typescript-eslint/eslint-plugin": "^5.31.0", - "@typescript-eslint/parser": "^5.31.0", - "eslint": "^8.20.0", - "jest": "^28.1.3", - "prettier": "^2.7.1", - "tmp-promise": "^3.0.3", - "typescript": "^4.7.4" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", - "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", - "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.3", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.3", - "@babel/types": "^7.21.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", - "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.21.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", - "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", - "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", - "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", - "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.3", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.3", - "@babel/types": "^7.21.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", - "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@changesets/types": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", - "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==" - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.1.tgz", - "integrity": "sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", - "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@eslint/js": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", - "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/core": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", - "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", - "dev": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/reporters": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^28.1.3", - "jest-config": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-resolve-dependencies": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "jest-watcher": "^28.1.3", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/create-cache-key-function": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", - "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz", - "integrity": "sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", - "dev": true, - "dependencies": { - "expect": "^28.1.3", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", - "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", - "dev": true, - "dependencies": { - "jest-get-type": "^28.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz", - "integrity": "sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@sinonjs/fake-timers": "^9.1.2", - "@types/node": "*", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/globals": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", - "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/types": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/reporters": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", - "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.24.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "28.1.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", - "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.13", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", - "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", - "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^28.1.3", - "@jridgewell/trace-mapping": "^0.3.13", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@manypkg/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@types/node": "^12.7.1", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0" - } - }, - "node_modules/@manypkg/find-root/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" - }, - "node_modules/@manypkg/get-packages": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", - "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@changesets/types": "^4.0.1", - "@manypkg/find-root": "^1.1.0", - "fs-extra": "^8.1.0", - "globby": "^11.0.0", - "read-yaml-file": "^1.1.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pnpm/constants": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/constants/-/constants-6.1.0.tgz", - "integrity": "sha512-L6AiU3OXv9kjKGTJN9j8n1TeJGDcLX9atQlZvAkthlvbXjvKc5SKNWESc/eXhr5nEfuMWhQhiKHDJCpYejmeCQ==", - "engines": { - "node": ">=14.19" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/crypto.base32-hash": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@pnpm/crypto.base32-hash/-/crypto.base32-hash-1.0.1.tgz", - "integrity": "sha512-pzAXNn6KxTA3kbcI3iEnYs4vtH51XEVqmK/1EiD18MaPKylhqy8UvMJK3zKG+jeP82cqQbozcTGm4yOQ8i3vNw==", - "dependencies": { - "rfc4648": "^1.5.1" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/dependency-path": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@pnpm/dependency-path/-/dependency-path-1.1.3.tgz", - "integrity": "sha512-HXmS9XzZ1CLCGFtfydAkWayn/o3jaftVFESXrJH0W6NENS92rYCUVvutqL/4Kfx72k0HHUbIZLQAsoISxKId8Q==", - "dependencies": { - "@pnpm/crypto.base32-hash": "1.0.1", - "@pnpm/types": "8.10.0", - "encode-registry": "^3.0.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/error/-/error-3.1.0.tgz", - "integrity": "sha512-bmXBD/kzlgHqlIZPP8QJUDAxGqug2qhPdnqNnuXyWQSyIEgeaXyPiUh91MLj9GwLoHA9Zdrx5+dfEougzxf4mA==", - "dependencies": { - "@pnpm/constants": "6.1.0" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/git-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/git-utils/-/git-utils-0.1.0.tgz", - "integrity": "sha512-W3zsG9585cKL+FqgcT+IfTgZX5C+CbNkFjOnJN+qbysT1N30+BbvEByCcDMsTy7QDrAk6oS7WU1Rym3U2xlh2Q==", - "dependencies": { - "execa": "npm:safe-execa@^0.1.1" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/graceful-fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@pnpm/graceful-fs/-/graceful-fs-2.0.0.tgz", - "integrity": "sha512-ogUZCGf0/UILZt6d8PsO4gA4pXh7f0BumXeFkcCe4AQ65PXPKfAkHC0C30Lheh2EgFOpLZm3twDP1Eiww18gew==", - "dependencies": { - "graceful-fs": "^4.2.6" - }, - "engines": { - "node": ">=14.19" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/lockfile-file": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/@pnpm/lockfile-file/-/lockfile-file-5.3.8.tgz", - "integrity": "sha512-fgXUwTeyW6yhJp1pUdMZJoFTg7qgi1yr7n3rlqm5sgM7leX1Zzx+6+oNSldeRfz0M2jMANU0PXvqyx2meknO/Q==", - "dependencies": { - "@pnpm/constants": "6.1.0", - "@pnpm/error": "3.1.0", - "@pnpm/git-utils": "0.1.0", - "@pnpm/lockfile-types": "4.3.3", - "@pnpm/merge-lockfile-changes": "3.0.11", - "@pnpm/types": "8.7.0", - "@zkochan/rimraf": "^2.1.2", - "comver-to-semver": "^1.0.0", - "dependency-path": "9.2.6", - "js-yaml": "npm:@zkochan/js-yaml@^0.0.6", - "normalize-path": "^3.0.0", - "ramda": "npm:@pnpm/ramda@0.28.1", - "semver": "^7.3.8", - "sort-keys": "^4.2.0", - "strip-bom": "^4.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - }, - "peerDependencies": { - "@pnpm/logger": "^4.0.0" - } - }, - "node_modules/@pnpm/lockfile-file/node_modules/@pnpm/lockfile-types": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@pnpm/lockfile-types/-/lockfile-types-4.3.3.tgz", - "integrity": "sha512-FY+u1JOclJNy/O3EuOPWhQyN23aQTisxmm29Tj52EGFy8zPz7SZev2+K06jUzqKuo7EChQlrR8Tqv/gTOMQN2w==", - "dependencies": { - "@pnpm/types": "8.7.0" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/lockfile-file/node_modules/@pnpm/types": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.7.0.tgz", - "integrity": "sha512-2j4ldzfOQNa3EZfJEmJrBQefE+OWBMgAoWWnVeXi5B7itVHRcg27Np+q0FxzuZE//O0N44WKH4WJG53sBsUqCQ==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/lockfile-file/node_modules/dependency-path": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/dependency-path/-/dependency-path-9.2.6.tgz", - "integrity": "sha512-B6t52bLlGj/vpyVcqGuido0QNYIMpFKzfZzmgmYVjwuzLrlIuY9Dky4Dru8J5vWPcj/GHu3DtXUUemzCVwJ3Iw==", - "dependencies": { - "@pnpm/crypto.base32-hash": "1.0.1", - "@pnpm/types": "8.7.0", - "encode-registry": "^3.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/lockfile-types": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@pnpm/lockfile-types/-/lockfile-types-4.3.6.tgz", - "integrity": "sha512-5vvdV3tEVOCzzeGv2FXK4590qPUVpZ+5gdqCawFuiNTJavx+4rmmY4aDUjdVXUcKGwqkIBPVKe/SNUBA3A2rtg==", - "dependencies": { - "@pnpm/types": "8.10.0" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/lockfile-utils": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/@pnpm/lockfile-utils/-/lockfile-utils-4.2.8.tgz", - "integrity": "sha512-4vonZnjhNPd7GFzDmcQeBoIucNWpbbrTQNT61QxB5cNbdYej3WBVtuApwEzkZ65/rpnv3+ek1DoXomMi1ttozQ==", - "dependencies": { - "@pnpm/lockfile-types": "4.3.5", - "@pnpm/resolver-base": "9.1.4", - "@pnpm/types": "8.9.0", - "dependency-path": "9.2.8", - "get-npm-tarball-url": "^2.0.3", - "ramda": "npm:@pnpm/ramda@0.28.1" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/lockfile-utils/node_modules/@pnpm/lockfile-types": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@pnpm/lockfile-types/-/lockfile-types-4.3.5.tgz", - "integrity": "sha512-5GdnnhGdz+4JphrKYYZ7rcv9t37BllNwdCbFLYli6ajyIeoSCklNNCHWNewskWs3PZZUHW8LxD/nKHPaarbm9g==", - "dependencies": { - "@pnpm/types": "8.9.0" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/lockfile-utils/node_modules/@pnpm/types": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.9.0.tgz", - "integrity": "sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/logger": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@pnpm/logger/-/logger-4.0.0.tgz", - "integrity": "sha512-SIShw+k556e7S7tLZFVSIHjCdiVog1qWzcKW2RbLEHPItdisAFVNIe34kYd9fMSswTlSRLS/qRjw3ZblzWmJ9Q==", - "dependencies": { - "bole": "^4.0.0", - "ndjson": "^2.0.0" - }, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/@pnpm/merge-lockfile-changes": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@pnpm/merge-lockfile-changes/-/merge-lockfile-changes-3.0.11.tgz", - "integrity": "sha512-LICYA0yc46ELJe6uECMO4rYhRb5W8DQDHFlVAkg7/tm9UT65aweiNopxVCHUNaHn5+m9u1QamsIXzvKnBwV+Kw==", - "dependencies": { - "@pnpm/lockfile-types": "4.3.3", - "comver-to-semver": "^1.0.0", - "ramda": "npm:@pnpm/ramda@0.28.1", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/merge-lockfile-changes/node_modules/@pnpm/lockfile-types": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@pnpm/lockfile-types/-/lockfile-types-4.3.3.tgz", - "integrity": "sha512-FY+u1JOclJNy/O3EuOPWhQyN23aQTisxmm29Tj52EGFy8zPz7SZev2+K06jUzqKuo7EChQlrR8Tqv/gTOMQN2w==", - "dependencies": { - "@pnpm/types": "8.7.0" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/merge-lockfile-changes/node_modules/@pnpm/types": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.7.0.tgz", - "integrity": "sha512-2j4ldzfOQNa3EZfJEmJrBQefE+OWBMgAoWWnVeXi5B7itVHRcg27Np+q0FxzuZE//O0N44WKH4WJG53sBsUqCQ==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/prune-lockfile": { - "version": "4.0.24", - "resolved": "https://registry.npmjs.org/@pnpm/prune-lockfile/-/prune-lockfile-4.0.24.tgz", - "integrity": "sha512-v0NA9ZkxUkaT9LxwCwN6JNrQ8ok1L7skxn9wk+1icLYKPQXgSNKap0zSAJeBtyNd9NXGXxO0QG8Noeto/MCAKg==", - "dependencies": { - "@pnpm/constants": "6.2.0", - "@pnpm/dependency-path": "1.1.3", - "@pnpm/lockfile-types": "4.3.6", - "@pnpm/types": "8.10.0", - "ramda": "npm:@pnpm/ramda@0.28.1" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/prune-lockfile/node_modules/@pnpm/constants": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@pnpm/constants/-/constants-6.2.0.tgz", - "integrity": "sha512-GlDVUkeTR2WK0oZAM+wtDY6RBMLw6b0Z/5qKgBbDszx4e+R7CHyfG7JofyypogRCfeWXeAXp2C2FkFTh+sNgIg==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/read-project-manifest": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@pnpm/read-project-manifest/-/read-project-manifest-3.0.13.tgz", - "integrity": "sha512-DEpAO64fA6VhcAudrjTAM4RIWCvw0Pmr4L0gaZqV0yta5zIkOTfFXT07lo80Zch4bvqmcOxlbM6Bazd4W+6Cww==", - "dependencies": { - "@pnpm/error": "3.1.0", - "@pnpm/graceful-fs": "2.0.0", - "@pnpm/types": "8.7.0", - "@pnpm/write-project-manifest": "3.0.10", - "detect-indent": "^6.1.0", - "fast-deep-equal": "^3.1.3", - "is-windows": "^1.0.2", - "json5": "^2.2.1", - "parse-json": "^5.2.0", - "read-yaml-file": "^2.1.0", - "sort-keys": "^4.2.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/read-project-manifest/node_modules/@pnpm/types": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.7.0.tgz", - "integrity": "sha512-2j4ldzfOQNa3EZfJEmJrBQefE+OWBMgAoWWnVeXi5B7itVHRcg27Np+q0FxzuZE//O0N44WKH4WJG53sBsUqCQ==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/read-project-manifest/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@pnpm/read-project-manifest/node_modules/read-yaml-file": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", - "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", - "dependencies": { - "js-yaml": "^4.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=10.13" - } - }, - "node_modules/@pnpm/registry-mock": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/@pnpm/registry-mock/-/registry-mock-2.20.0.tgz", - "integrity": "sha512-ADVI/RsdN+l4GHD9gKJvXpNd/UBX5W0Nfv/PEuc4kf++aBzDvEHd2n0QAnk5LZTidCHXvYCagFgcCy/oFkkIJg==", - "dev": true, - "dependencies": { - "anonymous-npm-registry-client": "^0.2.0", - "cpr": "^3.0.1", - "execa": "^5.1.1", - "read-yaml-file": "^2.1.0", - "rimraf": "^3.0.2", - "tempy": "^1.0.1", - "verdaccio": "^5.10.1", - "write-yaml-file": "^4.2.0" - }, - "bin": { - "registry-mock": "dist/bin/pnpm-registry-mock.js" - }, - "engines": { - "node": ">=10.13" - } - }, - "node_modules/@pnpm/registry-mock/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@pnpm/registry-mock/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@pnpm/registry-mock/node_modules/read-yaml-file": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", - "integrity": "sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ==", - "dev": true, - "dependencies": { - "js-yaml": "^4.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=10.13" - } - }, - "node_modules/@pnpm/resolver-base": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@pnpm/resolver-base/-/resolver-base-9.1.4.tgz", - "integrity": "sha512-OoclNn2NxqyJ+BjrB6gaR2Vj1rA6eryIn+xEh5UDX5y3rNrFL1pKCYHkEJv4qqKSayX1JsGHv7NzK5iSh4g3iA==", - "dependencies": { - "@pnpm/types": "8.9.0" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/resolver-base/node_modules/@pnpm/types": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.9.0.tgz", - "integrity": "sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/types": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.10.0.tgz", - "integrity": "sha512-A4pcNNvFJdkMXArEjTCOIYNL2VxD4uBynWZ6cBIELXb5qJ0tUzwKsaSz4J953I0rQFqnsFpUYqaWIquI10W1sw==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/write-project-manifest": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@pnpm/write-project-manifest/-/write-project-manifest-3.0.10.tgz", - "integrity": "sha512-sw5AXR+KplipHL3GiPq8xNib8XUsi8ieh4XFVgjrAGkLIhfOrslonULY7d0QpVMotFMS7ha74s0s059T/5cnmQ==", - "dependencies": { - "@pnpm/types": "8.7.0", - "json5": "^2.2.1", - "write-file-atomic": "^4.0.2", - "write-yaml-file": "^4.2.0" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@pnpm/write-project-manifest/node_modules/@pnpm/types": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.7.0.tgz", - "integrity": "sha512-2j4ldzfOQNa3EZfJEmJrBQefE+OWBMgAoWWnVeXi5B7itVHRcg27Np+q0FxzuZE//O0N44WKH4WJG53sBsUqCQ==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", - "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@swc/core": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.42.tgz", - "integrity": "sha512-nVFUd5+7tGniM2cT3LXaqnu3735Cu4az8A9gAKK+8sdpASI52SWuqfDBmjFCK9xG90MiVDVp2PTZr0BWqCIzpw==", - "dev": true, - "hasInstallScript": true, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.42", - "@swc/core-darwin-x64": "1.3.42", - "@swc/core-linux-arm-gnueabihf": "1.3.42", - "@swc/core-linux-arm64-gnu": "1.3.42", - "@swc/core-linux-arm64-musl": "1.3.42", - "@swc/core-linux-x64-gnu": "1.3.42", - "@swc/core-linux-x64-musl": "1.3.42", - "@swc/core-win32-arm64-msvc": "1.3.42", - "@swc/core-win32-ia32-msvc": "1.3.42", - "@swc/core-win32-x64-msvc": "1.3.42" - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.42.tgz", - "integrity": "sha512-hM6RrZFyoCM9mX3cj/zM5oXwhAqjUdOCLXJx7KTQps7NIkv/Qjvobgvyf2gAb89j3ARNo9NdIoLjTjJ6oALtiA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.42.tgz", - "integrity": "sha512-bjsWtHMb6wJK1+RGlBs2USvgZ0txlMk11y0qBLKo32gLKTqzUwRw0Fmfzuf6Ue2a/w//7eqMlPFEre4LvJajGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.42.tgz", - "integrity": "sha512-Oe0ggMz3MyqXNfeVmY+bBTL0hFSNY3bx8dhcqsh4vXk/ZVGse94QoC4dd92LuPHmKT0x6nsUzB86x2jU9QHW5g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.42.tgz", - "integrity": "sha512-ZJsa8NIW1RLmmHGTJCbM7OPSbBZ9rOMrLqDtUOGrT0uoJXZnnQqolflamB5wviW0X6h3Z3/PSTNGNDCJ3u3Lqg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.42.tgz", - "integrity": "sha512-YpZwlFAfOp5vkm/uVUJX1O7N3yJDO1fDQRWqsOPPNyIJkI2ydlRQtgN6ZylC159Qv+TimfXnGTlNr7o3iBAqjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.42.tgz", - "integrity": "sha512-0ccpKnsZbyHBzaQFdP8U9i29nvOfKitm6oJfdJzlqsY/jCqwvD8kv2CAKSK8WhJz//ExI2LqNrDI0yazx5j7+A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.42.tgz", - "integrity": "sha512-7eckRRuTZ6+3K21uyfXXgc2ZCg0mSWRRNwNT3wap2bYkKPeqTgb8pm8xYSZNEiMuDonHEat6XCCV36lFY6kOdQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.42.tgz", - "integrity": "sha512-t27dJkdw0GWANdN4TV0lY/V5vTYSx5SRjyzzZolep358ueCGuN1XFf1R0JcCbd1ojosnkQg2L7A7991UjXingg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.42.tgz", - "integrity": "sha512-xfpc/Zt/aMILX4IX0e3loZaFyrae37u3MJCv1gJxgqrpeLi7efIQr3AmERkTK3mxTO6R5urSliWw2W3FyZ7D3Q==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.42", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.42.tgz", - "integrity": "sha512-ra2K4Tu++EJLPhzZ6L8hWUsk94TdK/2UKhL9dzCBhtzKUixsGCEqhtqH1zISXNvW8qaVLFIMUP37ULe80/IJaA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/jest": { - "version": "0.2.24", - "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.24.tgz", - "integrity": "sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==", - "dev": true, - "dependencies": { - "@jest/create-cache-key-function": "^27.4.2", - "jsonc-parser": "^3.2.0" - }, - "engines": { - "npm": ">= 7.0.0" - }, - "peerDependencies": { - "@swc/core": "*" - } - }, - "node_modules/@tsconfig/node16-strictest": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16-strictest/-/node16-strictest-1.0.4.tgz", - "integrity": "sha512-kp6/DuAoKzHVv5U+p0uOesYbjrEvrYVNdQMl163a+yXXUv9twabvkCGEn3pmVxKXB45JU5MPGolDDWnONZL5ZQ==", - "dev": true - }, - "node_modules/@types/argparse": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-2.0.10.tgz", - "integrity": "sha512-C4wahC3gz3vQtvPazrJ5ONwmK1zSDllQboiWvpMM/iOswCYfBREFnjFbq/iWKIVOCl8+m5Pk6eva6/ZSsDuIGA==", - "dev": true - }, - "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", - "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "28.1.8", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz", - "integrity": "sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==", - "dev": true, - "dependencies": { - "expect": "^28.0.0", - "pretty-format": "^28.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/lodash": { - "version": "4.14.191", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz", - "integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "16.18.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.20.tgz", - "integrity": "sha512-9fH66vSJnF563exTu3y1g2IbDz1vCj01Lbqms97r8j0qzfFisT2biypSfybVv/eYrtTB74x9xQTdRU8RyMiRrg==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.56.0.tgz", - "integrity": "sha512-ZNW37Ccl3oMZkzxrYDUX4o7cnuPgU+YrcaYXzsRtLB16I1FR5SHMqga3zGsaSliZADCWo2v8qHWqAYIj8nWCCg==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/type-utils": "5.56.0", - "@typescript-eslint/utils": "5.56.0", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.56.0.tgz", - "integrity": "sha512-sn1OZmBxUsgxMmR8a8U5QM/Wl+tyqlH//jTqCg8daTAmhAk26L2PFhcqPLlYBhYUJMZJK276qLXlHN3a83o2cg==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/typescript-estree": "5.56.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.56.0.tgz", - "integrity": "sha512-jGYKyt+iBakD0SA5Ww8vFqGpoV2asSjwt60Gl6YcO8ksQ8s2HlUEyHBMSa38bdLopYqGf7EYQMUIGdT/Luw+sw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/visitor-keys": "5.56.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.56.0.tgz", - "integrity": "sha512-8WxgOgJjWRy6m4xg9KoSHPzBNZeQbGlQOH7l2QEhQID/+YseaFxg5J/DLwWSsi9Axj4e/cCiKx7PVzOq38tY4A==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.56.0", - "@typescript-eslint/utils": "5.56.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.56.0.tgz", - "integrity": "sha512-JyAzbTJcIyhuUhogmiu+t79AkdnqgPUEsxMTMc/dCZczGMJQh1MK2wgrju++yMN6AWroVAy2jxyPcPr3SWCq5w==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.56.0.tgz", - "integrity": "sha512-41CH/GncsLXOJi0jb74SnC7jVPWeVJ0pxQj8bOjH1h2O26jXN3YHKDT1ejkVz5YeTEQPeLCCRY0U2r68tfNOcg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/visitor-keys": "5.56.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.56.0.tgz", - "integrity": "sha512-XhZDVdLnUJNtbzaJeDSCIYaM+Tgr59gZGbFuELgF7m0IY03PlciidS7UQNKLE0+WpUTn1GlycEr6Ivb/afjbhA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.56.0", - "@typescript-eslint/types": "5.56.0", - "@typescript-eslint/typescript-estree": "5.56.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.56.0.tgz", - "integrity": "sha512-1mFdED7u5bZpX6Xxf5N9U2c18sb+8EvU3tyOIj6LQZ5OOvnmj8BVeNNP603OFPm5KkS1a7IvCIcwrdHXaEMG/Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.56.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@verdaccio/commons-api": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@verdaccio/commons-api/-/commons-api-10.2.0.tgz", - "integrity": "sha512-F/YZANu4DmpcEV0jronzI7v2fGVWkQ5Mwi+bVmV+ACJ+EzR0c9Jbhtbe5QyLUuzR97t8R5E/Xe53O0cc2LukdQ==", - "dev": true, - "dependencies": { - "http-errors": "2.0.0", - "http-status-codes": "2.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/commons-api/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/@verdaccio/config": { - "version": "6.0.0-6-next.66", - "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-6.0.0-6-next.66.tgz", - "integrity": "sha512-xV35sMMXweg8xv0LY+uu1pBwz7FHAVsEqXKCqG9j7pRM7XIgEQMJ0NVsZBUALplRoZrH3vr3iFvnL9zS0LRKSA==", - "dev": true, - "dependencies": { - "@verdaccio/core": "6.0.0-6-next.66", - "@verdaccio/utils": "6.0.0-6-next.34", - "debug": "4.3.4", - "js-yaml": "4.1.0", - "lodash": "4.17.21", - "minimatch": "3.1.2", - "yup": "0.32.11" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/config/node_modules/@verdaccio/core": { - "version": "6.0.0-6-next.66", - "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-6.0.0-6-next.66.tgz", - "integrity": "sha512-U31XNEbqFPgQovoEF2J56BO1CsP9kH9exmPQ87N9Le9MIQKebrSSwx3zGpHsTOw0hcckN/wi+Rj1V3roN845GA==", - "dev": true, - "dependencies": { - "ajv": "8.11.2", - "core-js": "3.28.0", - "http-errors": "1.8.1", - "http-status-codes": "2.2.0", - "process-warning": "1.0.0", - "semver": "7.3.8" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/config/node_modules/@verdaccio/utils": { - "version": "6.0.0-6-next.34", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-6.0.0-6-next.34.tgz", - "integrity": "sha512-aeGwqmcPYD880BwVb7SnqcyPLhBPKmtXWtKy159p8/RMRuU+bz+NTKHxdDotpZO/OU7P80D9GA5+7UwIpP0f+g==", - "dev": true, - "dependencies": { - "@verdaccio/core": "6.0.0-6-next.66", - "lodash": "4.17.21", - "minimatch": "3.1.2", - "semver": "7.3.8" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/config/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@verdaccio/config/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@verdaccio/config/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/@verdaccio/core": { - "version": "6.0.0-6-next.67", - "resolved": "https://registry.npmjs.org/@verdaccio/core/-/core-6.0.0-6-next.67.tgz", - "integrity": "sha512-JGPe+NUXrcAK2jBdYdvX1zrRnUfRvk3aNzwM1v+YeoHSnGuuhoEuO/7mhXtK94+BBkJH79ntRUtRKbolDb4ROg==", - "dev": true, - "dependencies": { - "ajv": "8.11.2", - "core-js": "3.28.0", - "http-errors": "1.8.1", - "http-status-codes": "2.2.0", - "process-warning": "1.0.0", - "semver": "7.3.8" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/core/node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@verdaccio/core/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/@verdaccio/file-locking": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@verdaccio/file-locking/-/file-locking-10.3.0.tgz", - "integrity": "sha512-FE5D5H4wy/nhgR/d2J5e1Na9kScj2wMjlLPBHz7XF4XZAVSRdm45+kL3ZmrfA6b2HTADP/uH7H05/cnAYW8bhw==", - "dev": true, - "dependencies": { - "lockfile": "1.0.4" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/local-storage": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@verdaccio/local-storage/-/local-storage-10.3.1.tgz", - "integrity": "sha512-f3oArjXPOAwUAA2dsBhfL/rSouqJ2sfml8k97RtnBPKOzisb28bgyAQW0mqwQvN4MTK5S/2xudmobFpvJAIatg==", - "dev": true, - "dependencies": { - "@verdaccio/commons-api": "10.2.0", - "@verdaccio/file-locking": "10.3.0", - "@verdaccio/streams": "10.2.0", - "async": "3.2.4", - "debug": "4.3.4", - "lodash": "4.17.21", - "lowdb": "1.0.0", - "mkdirp": "1.0.4" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/local-storage/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@verdaccio/logger-7": { - "version": "6.0.0-6-next.12", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-7/-/logger-7-6.0.0-6-next.12.tgz", - "integrity": "sha512-L+HrcTZIJlve/FKyTrtAFwwHpt9f3Umwm6XbUAgbJxNbmQxdo5g1THLMMhbgJhGODOAJCtmf1UToKzhFopGxMg==", - "dev": true, - "dependencies": { - "@verdaccio/logger-commons": "6.0.0-6-next.35", - "pino": "7.11.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/logger-commons": { - "version": "6.0.0-6-next.35", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-commons/-/logger-commons-6.0.0-6-next.35.tgz", - "integrity": "sha512-CVsDy2SpJq9ryY4z5I0T1Xd0/EPPyNI78Uk6U67odjUN8cbyDTwCe/bbOPKOL6HBiiOtm39oSVeoztLFDobYmg==", - "dev": true, - "dependencies": { - "@verdaccio/core": "6.0.0-6-next.67", - "@verdaccio/logger-prettify": "6.0.0-6-next.9", - "colorette": "2.0.19", - "debug": "4.3.4" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/logger-prettify": { - "version": "6.0.0-6-next.9", - "resolved": "https://registry.npmjs.org/@verdaccio/logger-prettify/-/logger-prettify-6.0.0-6-next.9.tgz", - "integrity": "sha512-+VZa/O4HgEGl5kuTUL86Nf3T5xrPBnrIPRMEiubW4Lytj2Jo9FTxxhAFyJ0QD4FSIZqyzi8Ul9jM0SKDxsTbdw==", - "dev": true, - "dependencies": { - "colorette": "2.0.19", - "dayjs": "1.11.7", - "lodash": "4.17.21", - "pino-abstract-transport": "1.0.0", - "sonic-boom": "3.2.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/middleware": { - "version": "6.0.0-6-next.46", - "resolved": "https://registry.npmjs.org/@verdaccio/middleware/-/middleware-6.0.0-6-next.46.tgz", - "integrity": "sha512-hOWmKkGVZBAqLKN1mWwLe4lBR769L2r5Sw3tjfgF64bCBvmrEge5Q4b5cU9uIzvmjLLgG+r/7ZN5J3fo+lvHpA==", - "dev": true, - "dependencies": { - "@verdaccio/config": "6.0.0-6-next.67", - "@verdaccio/core": "6.0.0-6-next.67", - "@verdaccio/url": "11.0.0-6-next.33", - "@verdaccio/utils": "6.0.0-6-next.35", - "debug": "4.3.4", - "express": "4.18.2", - "express-rate-limit": "5.5.1", - "lodash": "4.17.21", - "lru-cache": "7.16.1", - "mime": "2.6.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/middleware/node_modules/@verdaccio/config": { - "version": "6.0.0-6-next.67", - "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-6.0.0-6-next.67.tgz", - "integrity": "sha512-cUu4IKhC80/11ArZNq7oYCWT9zrFrDC2L7vfW0O0HI0slaeSSQ2TN/2P91EX9WW4VCatfckBOloXDJl5OinDDg==", - "dev": true, - "dependencies": { - "@verdaccio/core": "6.0.0-6-next.67", - "@verdaccio/utils": "6.0.0-6-next.35", - "debug": "4.3.4", - "js-yaml": "4.1.0", - "lodash": "4.17.21", - "minimatch": "3.1.2", - "yup": "0.32.11" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/middleware/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@verdaccio/middleware/node_modules/lru-cache": { - "version": "7.16.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.16.1.tgz", - "integrity": "sha512-9kkuMZHnLH/8qXARvYSjNvq8S1GYFFzynQTAfKeaJ0sIrR3PUPuu37Z+EiIANiZBvpfTf2B5y8ecDLSMWlLv+w==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@verdaccio/middleware/node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@verdaccio/signature": { - "version": "6.0.0-6-next.2", - "resolved": "https://registry.npmjs.org/@verdaccio/signature/-/signature-6.0.0-6-next.2.tgz", - "integrity": "sha512-aFvMbxxHzJCpPmqSgVuQYvYN2RP11CoSEcTXikkyb1zF4Uf3cOy53zUZ1Y7iOKCRYTgWrmet9KP7+24e44GHxg==", - "dev": true, - "dependencies": { - "debug": "4.3.4", - "jsonwebtoken": "9.0.0", - "lodash": "4.17.21" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/streams": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@verdaccio/streams/-/streams-10.2.0.tgz", - "integrity": "sha512-FaIzCnDg0x0Js5kSQn1Le3YzDHl7XxrJ0QdIw5LrDUmLsH3VXNi4/NMlSHnw5RiTTMs4UbEf98V3RJRB8exqJA==", - "dev": true, - "engines": { - "node": ">=8", - "npm": ">=5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/tarball": { - "version": "11.0.0-6-next.36", - "resolved": "https://registry.npmjs.org/@verdaccio/tarball/-/tarball-11.0.0-6-next.36.tgz", - "integrity": "sha512-p5Apb9ppY6NkPUNJG3ymGqDEIw7lxey6zHWyFQr+Wj15BeyR8Ch7xVFfOz6w+GRVipnDYMmOpERVgenZgYAr3w==", - "dev": true, - "dependencies": { - "@verdaccio/core": "6.0.0-6-next.67", - "@verdaccio/url": "11.0.0-6-next.33", - "@verdaccio/utils": "6.0.0-6-next.35", - "debug": "4.3.4", - "lodash": "4.17.21" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/ui-theme": { - "version": "6.0.0-6-next.67", - "resolved": "https://registry.npmjs.org/@verdaccio/ui-theme/-/ui-theme-6.0.0-6-next.67.tgz", - "integrity": "sha512-Ru17MwafWI7qeUZmtDaJyLSxkyhw+ZJyj4dppWwfx6SxwCzf86vUOpjSVh1TmWNBvGby5lcWouj55RkvlP3DtQ==", - "dev": true - }, - "node_modules/@verdaccio/url": { - "version": "11.0.0-6-next.33", - "resolved": "https://registry.npmjs.org/@verdaccio/url/-/url-11.0.0-6-next.33.tgz", - "integrity": "sha512-BjxSMM/UCoESEWxXBej2uEEuCP0WSOWeQmonwecJ5EPuKfMogbxf7ypzXVeq9XEYS9PVcdDyK6XWOX1cmEFRSQ==", - "dev": true, - "dependencies": { - "@verdaccio/core": "6.0.0-6-next.67", - "debug": "4.3.4", - "lodash": "4.17.21", - "validator": "13.9.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@verdaccio/utils": { - "version": "6.0.0-6-next.35", - "resolved": "https://registry.npmjs.org/@verdaccio/utils/-/utils-6.0.0-6-next.35.tgz", - "integrity": "sha512-qyecJ5hBC/qsghnoKq60nf7Vf3kzJZEEc0YAYd8ApT8aN7op4CXhe7Ye3f+pasLo82rRhjpZeFQhkhZU37PXGg==", - "dev": true, - "dependencies": { - "@verdaccio/core": "6.0.0-6-next.67", - "lodash": "4.17.21", - "minimatch": "3.1.2", - "semver": "7.3.8" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/@zkochan/rimraf": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@zkochan/rimraf/-/rimraf-2.1.2.tgz", - "integrity": "sha512-Lc2oK51J6aQWcLWTloobJun5ZF41BbTDdLvE+aMcexoVWFoFqvZmnZoyXR2IZk6NJEVoZW8tjgtvQLfTsmRs2Q==", - "dependencies": { - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.10" - } - }, - "node_modules/@zkochan/which": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@zkochan/which/-/which-2.0.3.tgz", - "integrity": "sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/anonymous-npm-registry-client": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/anonymous-npm-registry-client/-/anonymous-npm-registry-client-0.2.0.tgz", - "integrity": "sha512-ym3GCDQU8B6PZrswCvanRiWoSg2QrrlPwoRlMr4oCpGvyK2KlwTujdCZfxrGapqxrqEY3TpxEqLf+7PhFnyaLA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.13.1", - "safe-buffer": "^5.1.1", - "semver": "^7.3.5", - "slide": "^1.1.3", - "ssri": "^8.0.1" - }, - "optionalDependencies": { - "npmlog": "2 || ^3.1.0 || ^4.0.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/apache-md5": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.8.tgz", - "integrity": "sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "node_modules/babel-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", - "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", - "dev": true, - "dependencies": { - "@jest/transform": "^28.1.3", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^28.1.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", - "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", - "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^28.1.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bcryptjs": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", - "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bole": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bole/-/bole-4.0.1.tgz", - "integrity": "sha512-42r0aSOJFJti2l6LasBHq2BuWJzohGs349olQnH/ETlJo87XnoWw7UT8pGE6UstjxzOKkwz7tjoFcmSr6L16vg==", - "dependencies": { - "fast-safe-stringify": "^2.0.7", - "individual": "^3.0.0" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001469", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001469.tgz", - "integrity": "sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/clipanion": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/clipanion/-/clipanion-3.2.0.tgz", - "integrity": "sha512-XaPQiJQZKbyaaDbv5yR/cAt/ORfZfENkr4wGQj+Go/Uf/65ofTQBCPirgWFeJctZW24V3mxrFiEnEmqBflrJYA==", - "dev": true, - "dependencies": { - "typanion": "^3.8.0" - }, - "peerDependencies": { - "typanion": "*" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/comver-to-semver": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/comver-to-semver/-/comver-to-semver-1.0.0.tgz", - "integrity": "sha512-gcGtbRxjwROQOdXLUWH1fQAXqThUVRZ219aAwgtX3KfYw429/Zv6EIJRf5TBSzWdAGwePmqH7w70WTaX4MDqag==", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true, - "optional": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", - "dev": true, - "dependencies": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/core-js": { - "version": "3.28.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.28.0.tgz", - "integrity": "sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cpr": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cpr/-/cpr-3.0.1.tgz", - "integrity": "sha512-Xch4PXQ/KC8lJ+KfJ9JI6eG/nmppLrPPWg5Q+vh65Qr9EjuJEubxh/H/Le1TmCZ7+Xv7iJuNRqapyOFZB+wsxA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.5", - "minimist": "^1.2.0", - "mkdirp": "~0.5.1", - "rimraf": "^2.5.4" - }, - "bin": { - "cpr": "bin/cpr" - } - }, - "node_modules/cpr/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dayjs": { - "version": "1.11.7", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", - "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "dev": true, - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "optional": true - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-path": { - "version": "9.2.8", - "resolved": "https://registry.npmjs.org/dependency-path/-/dependency-path-9.2.8.tgz", - "integrity": "sha512-S0OhIK7sIyAsph8hVH/LMCTDL3jozKtlrPx3dMQrlE2nAlXTquTT+AcOufphDMTQqLkfn4acvfiem9I1IWZ4jQ==", - "dependencies": { - "@pnpm/crypto.base32-hash": "1.0.1", - "@pnpm/types": "8.9.0", - "encode-registry": "^3.0.0", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/dependency-path/node_modules/@pnpm/types": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/@pnpm/types/-/types-8.9.0.tgz", - "integrity": "sha512-3MYHYm8epnciApn6w5Fzx6sepawmsNU7l6lvIq+ER22/DPSrr83YMhU/EQWnf4lORn2YyiXFj0FJSyJzEtIGmw==", - "engines": { - "node": ">=14.6" - }, - "funding": { - "url": "https://opencollective.com/pnpm" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", - "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.340", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz", - "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/encode-registry": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/encode-registry/-/encode-registry-3.0.0.tgz", - "integrity": "sha512-2fRYji8K6FwYuQ6EPBKR/J9mcqb7kIoNqt1vGvJr3NrvKfncRiNm00Oxo6gi/YJF8R5Sp2bNFSFdGKTG0rje1Q==", - "dependencies": { - "mem": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", - "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.1", - "@eslint/js": "8.36.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.5.0", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", - "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "name": "safe-execa", - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/safe-execa/-/safe-execa-0.1.3.tgz", - "integrity": "sha512-KuOb5C35fJRrhTfErHX+Bw03PayibKwpmOPHnyWMkwSqeiyjq2/D6E524rtJFrvqoUKH6iTe/NC4nOtgWflU7g==", - "dependencies": { - "@zkochan/which": "^2.0.3", - "execa": "^5.1.1", - "path-name": "^1.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/execa/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", - "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-rate-limit": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.1.tgz", - "integrity": "sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==", - "dev": true - }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-npm-tarball-url": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.0.3.tgz", - "integrity": "sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true, - "optional": true - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/http-status-codes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz", - "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng==", - "dev": true - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/individual": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/individual/-/individual-3.0.0.tgz", - "integrity": "sha512-rUY5vtT748NMRbEMrTNiFfy29BgGZwGXUi2NFUVMWQrogSLzlJvQV9eeMWi+g1aVaQ53tpyLAQtd5x/JH0Nh1g==" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "optional": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", - "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", - "dev": true, - "dependencies": { - "@jest/core": "^28.1.3", - "@jest/types": "^28.1.3", - "import-local": "^3.0.2", - "jest-cli": "^28.1.3" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", - "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-circus": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", - "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/expect": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "p-limit": "^3.1.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-cli": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", - "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", - "dev": true, - "dependencies": { - "@jest/core": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-config": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", - "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^28.1.3", - "@jest/types": "^28.1.3", - "babel-jest": "^28.1.3", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^28.1.3", - "jest-environment-node": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-runner": "^28.1.3", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-diff": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", - "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^28.1.1", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "28.1.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", - "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", - "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "jest-util": "^28.1.3", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-environment-node": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", - "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "jest-mock": "^28.1.3", - "jest-util": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-get-type": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", - "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", - "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^28.0.2", - "jest-util": "^28.1.3", - "jest-worker": "^28.1.3", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-leak-detector": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", - "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", - "dev": true, - "dependencies": { - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", - "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-mock": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz", - "integrity": "sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", - "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^28.1.3", - "jest-validate": "^28.1.3", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", - "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^28.0.2", - "jest-snapshot": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", - "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", - "dev": true, - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/environment": "^28.1.3", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "graceful-fs": "^4.2.9", - "jest-docblock": "^28.1.1", - "jest-environment-node": "^28.1.3", - "jest-haste-map": "^28.1.3", - "jest-leak-detector": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-resolve": "^28.1.3", - "jest-runtime": "^28.1.3", - "jest-util": "^28.1.3", - "jest-watcher": "^28.1.3", - "jest-worker": "^28.1.3", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runtime": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", - "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", - "dev": true, - "dependencies": { - "@jest/environment": "^28.1.3", - "@jest/fake-timers": "^28.1.3", - "@jest/globals": "^28.1.3", - "@jest/source-map": "^28.1.2", - "@jest/test-result": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-mock": "^28.1.3", - "jest-regex-util": "^28.0.2", - "jest-resolve": "^28.1.3", - "jest-snapshot": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runtime/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-snapshot": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", - "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^28.1.3", - "@jest/transform": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^28.1.3", - "graceful-fs": "^4.2.9", - "jest-diff": "^28.1.3", - "jest-get-type": "^28.0.2", - "jest-haste-map": "^28.1.3", - "jest-matcher-utils": "^28.1.3", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "natural-compare": "^1.4.0", - "pretty-format": "^28.1.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", - "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", - "dev": true, - "dependencies": { - "@jest/types": "^28.1.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^28.0.2", - "leven": "^3.1.0", - "pretty-format": "^28.1.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jest/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest/node_modules/@types/yargs": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.23.tgz", - "integrity": "sha512-yuogunc04OnzGQCrfHx+Kk883Q4X0aSwmYZhKjI21m+SVYzjIbrWl8dOOwSv5hf2Um2pdCOXWo9isteZTNXUZQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "name": "@zkochan/js-yaml", - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", - "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", - "dev": true, - "dependencies": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dev": true, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dev": true, - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dev": true, - "dependencies": { - "tsscmp": "1.0.6" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lockfile": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.4.tgz", - "integrity": "sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==", - "dev": true, - "dependencies": { - "signal-exit": "^3.0.2" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lowdb": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", - "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.3", - "is-promise": "^2.1.0", - "lodash": "4", - "pify": "^3.0.0", - "steno": "^0.4.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lowdb/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "node_modules/lunr-mutable-indexes": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/lunr-mutable-indexes/-/lunr-mutable-indexes-2.3.2.tgz", - "integrity": "sha512-Han6cdWAPPFM7C2AigS2Ofl3XjAT0yVMrUixodJEpyg71zCtZ2yzXc3s+suc/OaNt4ca6WJBEzVnEIjxCTwFMw==", - "dev": true, - "dependencies": { - "lunr": ">= 2.3.0 < 2.4.0" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mem": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.1.tgz", - "integrity": "sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==", - "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", - "dev": true, - "dependencies": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/mv/node_modules/glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", - "dev": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mv/node_modules/rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", - "dev": true, - "dependencies": { - "glob": "^6.0.1" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/nanoclone": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", - "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/ndjson": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", - "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", - "dependencies": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.5", - "readable-stream": "^3.6.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "ndjson": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ndjson/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "node_modules/npm-package-arg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-exit-leak-free": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", - "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-name": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-name/-/path-name-1.0.0.tgz", - "integrity": "sha512-/dcAb5vMXH0f51yvMuSUqFpxUcA8JelbRmE5mW/p4CUJxrNgK24IkstnV7ENtg2IDGBOu6izKTG6eilbnbNKWQ==" - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pino": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", - "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.0.0", - "on-exit-leak-free": "^0.2.0", - "pino-abstract-transport": "v0.5.0", - "pino-std-serializers": "^4.0.0", - "process-warning": "^1.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.1.0", - "safe-stable-stringify": "^2.1.0", - "sonic-boom": "^2.2.1", - "thread-stream": "^0.15.1" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", - "dev": true, - "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, - "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", - "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/pino-abstract-transport/node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", - "dev": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/pino-std-serializers": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", - "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==", - "dev": true - }, - "node_modules/pino/node_modules/pino-abstract-transport": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", - "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", - "dev": true, - "dependencies": { - "duplexify": "^4.1.2", - "split2": "^4.0.0" - } - }, - "node_modules/pino/node_modules/sonic-boom": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", - "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0" - } - }, - "node_modules/pino/node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", - "dev": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/process-warning": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", - "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", - "dev": true - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/property-expr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.5.tgz", - "integrity": "sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dev": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "dev": true - }, - "node_modules/ramda": { - "name": "@pnpm/ramda", - "version": "0.28.1", - "resolved": "https://registry.npmjs.org/@pnpm/ramda/-/ramda-0.28.1.tgz", - "integrity": "sha512-zcAG+lvU0fMziNeGXpPyCyCJYp5ZVrPElEE4t14jAmViaihohocZ+dDkcRIyAomox8pQsuZnv1EyHR+pOhmUWw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/raw-body/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/read-yaml-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", - "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", - "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.6.1", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-yaml-file/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/read-yaml-file/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/read-yaml-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/real-require": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", - "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfc4648": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/rfc4648/-/rfc4648-1.5.2.tgz", - "integrity": "sha512-tLOizhR6YGovrEBLatX1sdcuhoSCXddw3mqNVAcKxGJ+J0hFeJ+SjeWCv5UPA/WU3YzWPPuCVYgXBKZUPGpKtg==" - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dev": true, - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true, - "optional": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/sonic-boom": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", - "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0" - } - }, - "node_modules/sort-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.2.0.tgz", - "integrity": "sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==", - "dependencies": { - "is-plain-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", - "dev": true - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/steno": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", - "integrity": "sha512-EEHMVYHNXFHfGtgjNITnka0aHhiAlo93F7z2/Pwd+g0teG9CnM3JIINM7hVVB5/rhw9voufD7Wukwgtw2uqh6w==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.3" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "optional": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "dev": true, - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thread-stream": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", - "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", - "dev": true, - "dependencies": { - "real-require": "^0.1.0" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/tmp-promise": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", - "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", - "dev": true, - "dependencies": { - "tmp": "^0.2.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/toposort": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", - "dev": true - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "dev": true, - "engines": { - "node": ">=0.6.x" - } - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/typanion": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/typanion/-/typanion-3.12.1.tgz", - "integrity": "sha512-3SJF/czpzqq6G3lprGFLa6ps12yb1uQ1EmitNnep2fDMNh1aO/Zbq9sWY+3lem0zYb2oHJnQWyabTGUZ+L1ScQ==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unix-crypt-td-js": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", - "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==", - "dev": true - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "dev": true, - "dependencies": { - "builtins": "^1.0.3" - } - }, - "node_modules/validator": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz", - "integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verdaccio": { - "version": "5.23.1", - "resolved": "https://registry.npmjs.org/verdaccio/-/verdaccio-5.23.1.tgz", - "integrity": "sha512-tPEm0hQub2jV5b5ID9B/dexAKI00iI+wCvLyhhg/OSu+E6OHMyJuj5KkT58AxM4Lsz0zOG58qhNwmy9JEgq6vA==", - "dev": true, - "dependencies": { - "@verdaccio/config": "6.0.0-6-next.66", - "@verdaccio/core": "6.0.0-6-next.67", - "@verdaccio/local-storage": "10.3.1", - "@verdaccio/logger-7": "6.0.0-6-next.12", - "@verdaccio/middleware": "6.0.0-6-next.46", - "@verdaccio/signature": "6.0.0-6-next.2", - "@verdaccio/streams": "10.2.0", - "@verdaccio/tarball": "11.0.0-6-next.36", - "@verdaccio/ui-theme": "6.0.0-6-next.67", - "@verdaccio/url": "11.0.0-6-next.33", - "@verdaccio/utils": "6.0.0-6-next.35", - "async": "3.2.4", - "body-parser": "1.20.2", - "clipanion": "3.2.0", - "compression": "1.7.4", - "cookies": "0.8.0", - "cors": "2.8.5", - "debug": "^4.3.4", - "envinfo": "7.8.1", - "express": "4.18.2", - "express-rate-limit": "5.5.1", - "fast-safe-stringify": "2.1.1", - "handlebars": "4.7.7", - "js-yaml": "4.1.0", - "JSONStream": "1.3.5", - "jsonwebtoken": "9.0.0", - "kleur": "4.1.5", - "lodash": "4.17.21", - "lru-cache": "7.18.3", - "lunr-mutable-indexes": "2.3.2", - "mime": "3.0.0", - "mkdirp": "1.0.4", - "mv": "2.1.1", - "pkginfo": "0.4.1", - "request": "2.88.2", - "semver": "7.3.8", - "validator": "13.9.0", - "verdaccio-audit": "11.0.0-6-next.30", - "verdaccio-htpasswd": "10.5.3" - }, - "bin": { - "verdaccio": "bin/verdaccio" - }, - "engines": { - "node": ">=12.18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/verdaccio-audit": { - "version": "11.0.0-6-next.30", - "resolved": "https://registry.npmjs.org/verdaccio-audit/-/verdaccio-audit-11.0.0-6-next.30.tgz", - "integrity": "sha512-lCSUIdFv1ucFP7oUOx/lM7kH+s72aQk1kG15rtd5wwZoKffrjJRnQNu5P8UX2IWDDvwDYqW/ng0PthdokZwl2Q==", - "dev": true, - "dependencies": { - "@verdaccio/config": "6.0.0-6-next.67", - "@verdaccio/core": "6.0.0-6-next.67", - "express": "4.18.2", - "https-proxy-agent": "5.0.1", - "node-fetch": "cjs" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/verdaccio-audit/node_modules/@verdaccio/config": { - "version": "6.0.0-6-next.67", - "resolved": "https://registry.npmjs.org/@verdaccio/config/-/config-6.0.0-6-next.67.tgz", - "integrity": "sha512-cUu4IKhC80/11ArZNq7oYCWT9zrFrDC2L7vfW0O0HI0slaeSSQ2TN/2P91EX9WW4VCatfckBOloXDJl5OinDDg==", - "dev": true, - "dependencies": { - "@verdaccio/core": "6.0.0-6-next.67", - "@verdaccio/utils": "6.0.0-6-next.35", - "debug": "4.3.4", - "js-yaml": "4.1.0", - "lodash": "4.17.21", - "minimatch": "3.1.2", - "yup": "0.32.11" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/verdaccio-audit/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/verdaccio-htpasswd": { - "version": "10.5.3", - "resolved": "https://registry.npmjs.org/verdaccio-htpasswd/-/verdaccio-htpasswd-10.5.3.tgz", - "integrity": "sha512-3QedFZaoOpRbyDT6pdktKxGHXakACxZgGflrxWYKh/B4Ds09QNonU6KyXPJTwFJZoAFb0Eey0KP6BY8pibi2Jw==", - "dev": true, - "dependencies": { - "@verdaccio/file-locking": "10.3.0", - "apache-md5": "1.1.8", - "bcryptjs": "2.4.3", - "http-errors": "2.0.0", - "unix-crypt-td-js": "1.1.4" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/verdaccio" - } - }, - "node_modules/verdaccio-htpasswd/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verdaccio/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/verdaccio/node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/verdaccio/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/verdaccio/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "optional": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/write-yaml-file": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/write-yaml-file/-/write-yaml-file-4.2.0.tgz", - "integrity": "sha512-LwyucHy0uhWqbrOkh9cBluZBeNVxzHjDaE9mwepZG3n3ZlbM4v3ndrFw51zW/NXYFFqP+QWZ72ihtLWTh05e4Q==", - "dependencies": { - "js-yaml": "^4.0.0", - "write-file-atomic": "^3.0.3" - }, - "engines": { - "node": ">=10.13" - } - }, - "node_modules/write-yaml-file/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/write-yaml-file/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", - "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yup": { - "version": "0.32.11", - "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", - "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.15.4", - "@types/lodash": "^4.14.175", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "nanoclone": "^0.2.1", - "property-expr": "^2.0.4", - "toposort": "^2.0.2" - }, - "engines": { - "node": ">=10" - } - } - } -} diff --git a/pkgs/pnpm-lock-export/update.sh b/pkgs/pnpm-lock-export/update.sh deleted file mode 100755 index 12c11c6..0000000 --- a/pkgs/pnpm-lock-export/update.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i bash -p nix wget nix-prefetch-github jq prefetch-npm-deps nodejs - -# shellcheck shell=bash - -if [ -n "$GITHUB_TOKEN" ]; then - TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN") -fi - -if [[ $# -gt 1 || $1 == -* ]]; then - echo "Regenerates packaging data for the pnpm-lock-export packages." - echo "Usage: $0 [git release tag]" - exit 1 -fi - -set -x - -cd "$(dirname "$0")" -version="$1" - -set -euo pipefail - -if [ -z "$version" ]; then - version="$(wget -O- "${TOKEN_ARGS[@]}" "https://api.github.com/repos/cvent/pnpm-lock-export/releases?per_page=1" | jq -r '.[0].tag_name')" -fi - -# strip leading "v" -version="${version#v}" - -# pnpm-lock-export repository -src_hash=$(nix-prefetch-github cvent pnpm-lock-export --rev "v${version}" | jq -r .sha256) - -# Front-end dependencies -upstream_src="https://raw.githubusercontent.com/cvent/pnpm-lock-export/v$version" - -trap 'rm -rf package.json' EXIT -wget "${TOKEN_ARGS[@]}" "$upstream_src/package.json" -npm install --package-lock-only -deps_hash=$(prefetch-npm-deps package-lock.json) - -# Use friendlier hashes -src_hash=$(nix hash to-sri --type sha256 "$src_hash") -deps_hash=$(nix hash to-sri --type sha256 "$deps_hash") - -sed -i -E -e "s#version = \".*\"#version = \"$version\"#" default.nix -sed -i -E -e "s#hash = \".*\"#hash = \"$src_hash\"#" default.nix -sed -i -E -e "s#npmDepsHash = \".*\"#npmDepsHash = \"$deps_hash\"#" default.nix From 81f930168a4ffca028c01efde6c4cff15e66e59a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 12 Apr 2023 16:50:51 +0000 Subject: [PATCH 0869/1588] flake: use 'defaultSystems' Instead of writing a list which amounts to the same thing. --- flake/default.nix | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index d1b360c..8dd752e 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -6,14 +6,7 @@ let inherit (self) lib; - inherit (futils.lib) system; - - mySystems = [ - system.aarch64-darwin - system.aarch64-linux - system.x86_64-darwin - system.x86_64-linux - ]; + mySystems = futils.lib.defaultSystems; in flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; From 94141d53b888951ebcfe3ecdb8b32024b54c0073 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Apr 2023 15:17:16 +0000 Subject: [PATCH 0870/1588] modules: services: woodpecker: remove 'TODO' --- modules/services/woodpecker/agent-docker/default.nix | 1 - modules/services/woodpecker/agent-exec/default.nix | 1 - 2 files changed, 2 deletions(-) diff --git a/modules/services/woodpecker/agent-docker/default.nix b/modules/services/woodpecker/agent-docker/default.nix index 23e61b1..8b5307c 100644 --- a/modules/services/woodpecker/agent-docker/default.nix +++ b/modules/services/woodpecker/agent-docker/default.nix @@ -5,7 +5,6 @@ let hasRunner = (name: builtins.elem name cfg.runners); in { - # TODO config = lib.mkIf (cfg.enable && hasRunner "docker") { services.woodpecker-agents = { agents.docker = { diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/services/woodpecker/agent-exec/default.nix index 0fa8f0a..d7adc4e 100644 --- a/modules/services/woodpecker/agent-exec/default.nix +++ b/modules/services/woodpecker/agent-exec/default.nix @@ -5,7 +5,6 @@ let hasRunner = (name: builtins.elem name cfg.runners); in { - # TODO config = lib.mkIf (cfg.enable && hasRunner "exec") { services.woodpecker-agents = { agents.exec = { From 04f23976eebb23588858922a46d3d553ea8b5ebc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Apr 2023 15:24:34 +0000 Subject: [PATCH 0871/1588] modules: services: woodpecker: remove unused env --- modules/services/woodpecker/server/default.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/services/woodpecker/server/default.nix b/modules/services/woodpecker/server/default.nix index 8d8a5a6..6f5d93d 100644 --- a/modules/services/woodpecker/server/default.nix +++ b/modules/services/woodpecker/server/default.nix @@ -22,10 +22,6 @@ in WOODPECKER_GITEA_URL = config.services.gitea.rootUrl; WOODPECKER_LOG_LEVEL = "debug"; - - # FIXME: remove those? - WOODPECKER_JSONNET_ENABLED = "true"; - WOODPECKER_STARLARK_ENABLED = "true"; }; }; From 54e9303319445e2d5ee700a95f4e09d696968671 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Apr 2023 15:55:27 +0000 Subject: [PATCH 0872/1588] modules: secrets: use diff-friendly formatting --- modules/secrets/secrets.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index c8a67ad..c4f1f61 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -1,10 +1,14 @@ let # FIXME: read them from directories ambroisie = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMIVd6Oh08iUNb1vTULbxGpevnh++wxsWW9wqhaDryIq ambroisie@agenix"; - users = [ ambroisie ]; + users = [ + ambroisie + ]; porthos = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGzznQ3LSmBYHx6fXthgMDiTcU5i/Nvj020SbmhzAFb root@porthos"; - machines = [ porthos ]; + machines = [ + porthos + ]; all = users ++ machines; in From 68bf36c45c78d0174aaaeb23065f8cca4b3781b8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Apr 2023 17:05:02 +0000 Subject: [PATCH 0873/1588] modules: secrets: wireguard: remove unused file The peer definitions have been inlined into the Wireguard module a long time ago. --- modules/secrets/wireguard/default.nix | 30 --------------------------- 1 file changed, 30 deletions(-) delete mode 100644 modules/secrets/wireguard/default.nix diff --git a/modules/secrets/wireguard/default.nix b/modules/secrets/wireguard/default.nix deleted file mode 100644 index 1dbde9f..0000000 --- a/modules/secrets/wireguard/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ lib, ... }: -let - peerSpec = { - # "Server" - porthos = { - clientNum = 1; - externalIp = "91.121.177.163"; - }; - - # "Clients" - aramis = { - clientNum = 2; - }; - - richelieu = { - clientNum = 3; - }; - }; - - makePeer = name: attrs: with lib; { - inherit (attrs) clientNum; - publicKey = fileContents (./. + "/${name}/public.key"); - privateKey = fileContents (./. + "/${name}/secret.key"); - } // optionalAttrs (attrs ? externalIp) { - inherit (attrs) externalIp; - }; -in -{ - peers = builtins.mapAttrs makePeer peerSpec; -} From 34a3f9a0d6ab7f809c897b076206ac2e5b76f360 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Apr 2023 16:37:42 +0000 Subject: [PATCH 0874/1588] modules: secrets: centralize agenix keys If I intend on splitting the keys depending on which host needs to have access to it, I should have a singular spot to manage the keys. --- keys/default.nix | 39 +++++++++++++++++++++++++++++++++++++ keys/hosts/porthos | 1 + keys/users/ambroisie | 1 + modules/secrets/secrets.nix | 13 ++----------- 4 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 keys/default.nix create mode 100644 keys/hosts/porthos create mode 100644 keys/users/ambroisie diff --git a/keys/default.nix b/keys/default.nix new file mode 100644 index 0000000..a538328 --- /dev/null +++ b/keys/default.nix @@ -0,0 +1,39 @@ +# Populate agenix keys from a central location +let + inherit (builtins) + mapAttrs + readDir + readFile + stringLength + substring + ; + + removeSuffix = suffix: str: + let + sufLen = stringLength suffix; + sLen = stringLength str; + in + if sufLen <= sLen && suffix == substring (sLen - sufLen) sufLen str then + substring 0 (sLen - sufLen) str + else + str; + + + readKeys = dir: + let + files = readDir dir; + readNoNewlines = f: removeSuffix "\n" (readFile f); + readKey = name: readNoNewlines (dir + "/${name}"); + in + mapAttrs (n: _: readKey n) files; + + hosts = readKeys ./hosts; + users = readKeys ./users; +in +{ + inherit + hosts + users; + + all = (builtins.attrValues hosts) ++ (builtins.attrValues users); +} diff --git a/keys/hosts/porthos b/keys/hosts/porthos new file mode 100644 index 0000000..7156513 --- /dev/null +++ b/keys/hosts/porthos @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGzznQ3LSmBYHx6fXthgMDiTcU5i/Nvj020SbmhzAFb root@porthos diff --git a/keys/users/ambroisie b/keys/users/ambroisie new file mode 100644 index 0000000..cf08a3c --- /dev/null +++ b/keys/users/ambroisie @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMIVd6Oh08iUNb1vTULbxGpevnh++wxsWW9wqhaDryIq ambroisie@agenix diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index c4f1f61..4ccb886 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -1,16 +1,7 @@ let - # FIXME: read them from directories - ambroisie = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMIVd6Oh08iUNb1vTULbxGpevnh++wxsWW9wqhaDryIq ambroisie@agenix"; - users = [ - ambroisie - ]; + keys = import ../../keys; - porthos = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICGzznQ3LSmBYHx6fXthgMDiTcU5i/Nvj020SbmhzAFb root@porthos"; - machines = [ - porthos - ]; - - all = users ++ machines; + inherit (keys) all; in { "acme/dns-key.age".publicKeys = all; From 57008bcb7cd4c2d746f297893e9a3a9c4432f4ef Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Apr 2023 16:48:37 +0000 Subject: [PATCH 0875/1588] hosts: nixos: add host-specific secrets module This is the same logic as the common module, but for secrets that don't need to be shared to different hosts. --- hosts/nixos/aramis/default.nix | 1 + hosts/nixos/aramis/secrets/default.nix | 20 ++++++++++++++++++++ hosts/nixos/aramis/secrets/secrets.nix | 13 +++++++++++++ hosts/nixos/porthos/default.nix | 1 + hosts/nixos/porthos/secrets/default.nix | 20 ++++++++++++++++++++ hosts/nixos/porthos/secrets/secrets.nix | 14 ++++++++++++++ modules/secrets/secrets.nix | 1 + 7 files changed, 70 insertions(+) create mode 100644 hosts/nixos/aramis/secrets/default.nix create mode 100644 hosts/nixos/aramis/secrets/secrets.nix create mode 100644 hosts/nixos/porthos/secrets/default.nix create mode 100644 hosts/nixos/porthos/secrets/secrets.nix diff --git a/hosts/nixos/aramis/default.nix b/hosts/nixos/aramis/default.nix index c49c2b5..c72fb11 100644 --- a/hosts/nixos/aramis/default.nix +++ b/hosts/nixos/aramis/default.nix @@ -12,6 +12,7 @@ ./networking.nix ./profiles.nix ./programs.nix + ./secrets ./services.nix ./sound.nix ]; diff --git a/hosts/nixos/aramis/secrets/default.nix b/hosts/nixos/aramis/secrets/default.nix new file mode 100644 index 0000000..83af695 --- /dev/null +++ b/hosts/nixos/aramis/secrets/default.nix @@ -0,0 +1,20 @@ +{ config, lib, ... }: + +{ + config.age = { + secrets = + let + toName = lib.removeSuffix ".age"; + userExists = u: builtins.hasAttr u config.users.users; + # Only set the user if it exists, to avoid warnings + userIfExists = u: if userExists u then u else "root"; + toSecret = name: { owner ? "root", ... }: { + file = ./. + "/${name}"; + owner = lib.mkDefault (userIfExists owner); + }; + convertSecrets = n: v: lib.nameValuePair (toName n) (toSecret n v); + secrets = import ./secrets.nix; + in + lib.mapAttrs' convertSecrets secrets; + }; +} diff --git a/hosts/nixos/aramis/secrets/secrets.nix b/hosts/nixos/aramis/secrets/secrets.nix new file mode 100644 index 0000000..55e64a9 --- /dev/null +++ b/hosts/nixos/aramis/secrets/secrets.nix @@ -0,0 +1,13 @@ +# Host-specific secrets +let + keys = import ../../../../keys; + + all = [ + # This host is a laptop, it does not have a host key + # Allow me to modify the secrets anywhere + keys.users.ambroisie + ]; +in +{ + # Add secrets here +} diff --git a/hosts/nixos/porthos/default.nix b/hosts/nixos/porthos/default.nix index 6d7df29..326d1cd 100644 --- a/hosts/nixos/porthos/default.nix +++ b/hosts/nixos/porthos/default.nix @@ -7,6 +7,7 @@ ./hardware.nix ./home.nix ./networking.nix + ./secrets ./services.nix ./users.nix ]; diff --git a/hosts/nixos/porthos/secrets/default.nix b/hosts/nixos/porthos/secrets/default.nix new file mode 100644 index 0000000..83af695 --- /dev/null +++ b/hosts/nixos/porthos/secrets/default.nix @@ -0,0 +1,20 @@ +{ config, lib, ... }: + +{ + config.age = { + secrets = + let + toName = lib.removeSuffix ".age"; + userExists = u: builtins.hasAttr u config.users.users; + # Only set the user if it exists, to avoid warnings + userIfExists = u: if userExists u then u else "root"; + toSecret = name: { owner ? "root", ... }: { + file = ./. + "/${name}"; + owner = lib.mkDefault (userIfExists owner); + }; + convertSecrets = n: v: lib.nameValuePair (toName n) (toSecret n v); + secrets = import ./secrets.nix; + in + lib.mapAttrs' convertSecrets secrets; + }; +} diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix new file mode 100644 index 0000000..31af365 --- /dev/null +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -0,0 +1,14 @@ +# Host-specific secrets +let + keys = import ../../../../keys; + + all = [ + # Host key + keys.hosts.porthos + # Allow me to modify the secrets anywhere + keys.users.ambroisie + ]; +in +{ + # Add secrets here +} diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index 4ccb886..cd1210b 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -1,3 +1,4 @@ +# Common secrets let keys = import ../../keys; From 6079485b50311707da8fb265b3f332934783af31 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Apr 2023 16:48:37 +0000 Subject: [PATCH 0876/1588] modules: secrets: move host-specific secrets --- .../nixos/porthos}/secrets/acme/dns-key.age | 0 .../porthos}/secrets/backup/credentials.age | 0 .../porthos}/secrets/backup/password.age | 0 .../nixos/porthos}/secrets/drone/gitea.age | 0 .../nixos/porthos}/secrets/drone/secret.age | 0 .../secrets/drone/ssh/private-key.age | Bin .../porthos}/secrets/gitea/mail-password.age | 0 .../nixos/porthos}/secrets/lohr/secret.age | 0 .../nixos/porthos}/secrets/lohr/ssh-key.age | Bin .../nixos/porthos}/secrets/matrix/mail.age | 0 .../nixos/porthos}/secrets/matrix/secret.age | Bin .../porthos}/secrets/miniflux/credentials.age | Bin .../porthos}/secrets/monitoring/password.age | 0 .../porthos}/secrets/nextcloud/password.age | Bin .../porthos}/secrets/paperless/password.age | 0 .../porthos}/secrets/paperless/secret-key.age | 0 .../porthos}/secrets/podgrab/password.age | 0 hosts/nixos/porthos/secrets/secrets.nix | 53 ++++++++++++++++- .../secrets/sso/ambroisie/password-hash.age | Bin .../secrets/sso/ambroisie/totp-secret.age | Bin .../nixos/porthos}/secrets/sso/auth-key.age | Bin .../nixos/porthos}/secrets/sso/default.nix | 0 .../secrets/transmission/credentials.age | 0 .../porthos}/secrets/woodpecker/gitea.age | Bin .../porthos}/secrets/woodpecker/secret.age | 0 .../secrets/woodpecker/ssh/private-key.age | Bin modules/secrets/secrets.nix | 54 ------------------ 27 files changed, 52 insertions(+), 55 deletions(-) rename {modules => hosts/nixos/porthos}/secrets/acme/dns-key.age (100%) rename {modules => hosts/nixos/porthos}/secrets/backup/credentials.age (100%) rename {modules => hosts/nixos/porthos}/secrets/backup/password.age (100%) rename {modules => hosts/nixos/porthos}/secrets/drone/gitea.age (100%) rename {modules => hosts/nixos/porthos}/secrets/drone/secret.age (100%) rename {modules => hosts/nixos/porthos}/secrets/drone/ssh/private-key.age (100%) rename {modules => hosts/nixos/porthos}/secrets/gitea/mail-password.age (100%) rename {modules => hosts/nixos/porthos}/secrets/lohr/secret.age (100%) rename {modules => hosts/nixos/porthos}/secrets/lohr/ssh-key.age (100%) rename {modules => hosts/nixos/porthos}/secrets/matrix/mail.age (100%) rename {modules => hosts/nixos/porthos}/secrets/matrix/secret.age (100%) rename {modules => hosts/nixos/porthos}/secrets/miniflux/credentials.age (100%) rename {modules => hosts/nixos/porthos}/secrets/monitoring/password.age (100%) rename {modules => hosts/nixos/porthos}/secrets/nextcloud/password.age (100%) rename {modules => hosts/nixos/porthos}/secrets/paperless/password.age (100%) rename {modules => hosts/nixos/porthos}/secrets/paperless/secret-key.age (100%) rename {modules => hosts/nixos/porthos}/secrets/podgrab/password.age (100%) rename {modules => hosts/nixos/porthos}/secrets/sso/ambroisie/password-hash.age (100%) rename {modules => hosts/nixos/porthos}/secrets/sso/ambroisie/totp-secret.age (100%) rename {modules => hosts/nixos/porthos}/secrets/sso/auth-key.age (100%) rename {modules => hosts/nixos/porthos}/secrets/sso/default.nix (100%) rename {modules => hosts/nixos/porthos}/secrets/transmission/credentials.age (100%) rename {modules => hosts/nixos/porthos}/secrets/woodpecker/gitea.age (100%) rename {modules => hosts/nixos/porthos}/secrets/woodpecker/secret.age (100%) rename {modules => hosts/nixos/porthos}/secrets/woodpecker/ssh/private-key.age (100%) diff --git a/modules/secrets/acme/dns-key.age b/hosts/nixos/porthos/secrets/acme/dns-key.age similarity index 100% rename from modules/secrets/acme/dns-key.age rename to hosts/nixos/porthos/secrets/acme/dns-key.age diff --git a/modules/secrets/backup/credentials.age b/hosts/nixos/porthos/secrets/backup/credentials.age similarity index 100% rename from modules/secrets/backup/credentials.age rename to hosts/nixos/porthos/secrets/backup/credentials.age diff --git a/modules/secrets/backup/password.age b/hosts/nixos/porthos/secrets/backup/password.age similarity index 100% rename from modules/secrets/backup/password.age rename to hosts/nixos/porthos/secrets/backup/password.age diff --git a/modules/secrets/drone/gitea.age b/hosts/nixos/porthos/secrets/drone/gitea.age similarity index 100% rename from modules/secrets/drone/gitea.age rename to hosts/nixos/porthos/secrets/drone/gitea.age diff --git a/modules/secrets/drone/secret.age b/hosts/nixos/porthos/secrets/drone/secret.age similarity index 100% rename from modules/secrets/drone/secret.age rename to hosts/nixos/porthos/secrets/drone/secret.age diff --git a/modules/secrets/drone/ssh/private-key.age b/hosts/nixos/porthos/secrets/drone/ssh/private-key.age similarity index 100% rename from modules/secrets/drone/ssh/private-key.age rename to hosts/nixos/porthos/secrets/drone/ssh/private-key.age diff --git a/modules/secrets/gitea/mail-password.age b/hosts/nixos/porthos/secrets/gitea/mail-password.age similarity index 100% rename from modules/secrets/gitea/mail-password.age rename to hosts/nixos/porthos/secrets/gitea/mail-password.age diff --git a/modules/secrets/lohr/secret.age b/hosts/nixos/porthos/secrets/lohr/secret.age similarity index 100% rename from modules/secrets/lohr/secret.age rename to hosts/nixos/porthos/secrets/lohr/secret.age diff --git a/modules/secrets/lohr/ssh-key.age b/hosts/nixos/porthos/secrets/lohr/ssh-key.age similarity index 100% rename from modules/secrets/lohr/ssh-key.age rename to hosts/nixos/porthos/secrets/lohr/ssh-key.age diff --git a/modules/secrets/matrix/mail.age b/hosts/nixos/porthos/secrets/matrix/mail.age similarity index 100% rename from modules/secrets/matrix/mail.age rename to hosts/nixos/porthos/secrets/matrix/mail.age diff --git a/modules/secrets/matrix/secret.age b/hosts/nixos/porthos/secrets/matrix/secret.age similarity index 100% rename from modules/secrets/matrix/secret.age rename to hosts/nixos/porthos/secrets/matrix/secret.age diff --git a/modules/secrets/miniflux/credentials.age b/hosts/nixos/porthos/secrets/miniflux/credentials.age similarity index 100% rename from modules/secrets/miniflux/credentials.age rename to hosts/nixos/porthos/secrets/miniflux/credentials.age diff --git a/modules/secrets/monitoring/password.age b/hosts/nixos/porthos/secrets/monitoring/password.age similarity index 100% rename from modules/secrets/monitoring/password.age rename to hosts/nixos/porthos/secrets/monitoring/password.age diff --git a/modules/secrets/nextcloud/password.age b/hosts/nixos/porthos/secrets/nextcloud/password.age similarity index 100% rename from modules/secrets/nextcloud/password.age rename to hosts/nixos/porthos/secrets/nextcloud/password.age diff --git a/modules/secrets/paperless/password.age b/hosts/nixos/porthos/secrets/paperless/password.age similarity index 100% rename from modules/secrets/paperless/password.age rename to hosts/nixos/porthos/secrets/paperless/password.age diff --git a/modules/secrets/paperless/secret-key.age b/hosts/nixos/porthos/secrets/paperless/secret-key.age similarity index 100% rename from modules/secrets/paperless/secret-key.age rename to hosts/nixos/porthos/secrets/paperless/secret-key.age diff --git a/modules/secrets/podgrab/password.age b/hosts/nixos/porthos/secrets/podgrab/password.age similarity index 100% rename from modules/secrets/podgrab/password.age rename to hosts/nixos/porthos/secrets/podgrab/password.age diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 31af365..6b77dc6 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -10,5 +10,56 @@ let ]; in { - # Add secrets here + "acme/dns-key.age".publicKeys = all; + + "backup/password.age".publicKeys = all; + "backup/credentials.age".publicKeys = all; + + "drone/gitea.age".publicKeys = all; + "drone/secret.age".publicKeys = all; + "drone/ssh/private-key.age".publicKeys = all; + + "gitea/mail-password.age" = { + owner = "git"; + publicKeys = all; + }; + + "lohr/secret.age".publicKeys = all; + "lohr/ssh-key.age".publicKeys = all; + + "matrix/mail.age" = { + owner = "matrix-synapse"; + publicKeys = all; + }; + "matrix/secret.age" = { + owner = "matrix-synapse"; + publicKeys = all; + }; + + "miniflux/credentials.age".publicKeys = all; + + "monitoring/password.age" = { + owner = "grafana"; + publicKeys = all; + }; + + "nextcloud/password.age" = { + owner = "nextcloud"; + publicKeys = all; + }; + + "paperless/password.age".publicKeys = all; + "paperless/secret-key.age".publicKeys = all; + + "podgrab/password.age".publicKeys = all; + + "sso/auth-key.age".publicKeys = all; + "sso/ambroisie/password-hash.age".publicKeys = all; + "sso/ambroisie/totp-secret.age".publicKeys = all; + + "transmission/credentials.age".publicKeys = all; + + "woodpecker/gitea.age".publicKeys = all; + "woodpecker/secret.age".publicKeys = all; + "woodpecker/ssh/private-key.age".publicKeys = all; } diff --git a/modules/secrets/sso/ambroisie/password-hash.age b/hosts/nixos/porthos/secrets/sso/ambroisie/password-hash.age similarity index 100% rename from modules/secrets/sso/ambroisie/password-hash.age rename to hosts/nixos/porthos/secrets/sso/ambroisie/password-hash.age diff --git a/modules/secrets/sso/ambroisie/totp-secret.age b/hosts/nixos/porthos/secrets/sso/ambroisie/totp-secret.age similarity index 100% rename from modules/secrets/sso/ambroisie/totp-secret.age rename to hosts/nixos/porthos/secrets/sso/ambroisie/totp-secret.age diff --git a/modules/secrets/sso/auth-key.age b/hosts/nixos/porthos/secrets/sso/auth-key.age similarity index 100% rename from modules/secrets/sso/auth-key.age rename to hosts/nixos/porthos/secrets/sso/auth-key.age diff --git a/modules/secrets/sso/default.nix b/hosts/nixos/porthos/secrets/sso/default.nix similarity index 100% rename from modules/secrets/sso/default.nix rename to hosts/nixos/porthos/secrets/sso/default.nix diff --git a/modules/secrets/transmission/credentials.age b/hosts/nixos/porthos/secrets/transmission/credentials.age similarity index 100% rename from modules/secrets/transmission/credentials.age rename to hosts/nixos/porthos/secrets/transmission/credentials.age diff --git a/modules/secrets/woodpecker/gitea.age b/hosts/nixos/porthos/secrets/woodpecker/gitea.age similarity index 100% rename from modules/secrets/woodpecker/gitea.age rename to hosts/nixos/porthos/secrets/woodpecker/gitea.age diff --git a/modules/secrets/woodpecker/secret.age b/hosts/nixos/porthos/secrets/woodpecker/secret.age similarity index 100% rename from modules/secrets/woodpecker/secret.age rename to hosts/nixos/porthos/secrets/woodpecker/secret.age diff --git a/modules/secrets/woodpecker/ssh/private-key.age b/hosts/nixos/porthos/secrets/woodpecker/ssh/private-key.age similarity index 100% rename from modules/secrets/woodpecker/ssh/private-key.age rename to hosts/nixos/porthos/secrets/woodpecker/ssh/private-key.age diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index cd1210b..221d1e1 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -5,56 +5,6 @@ let inherit (keys) all; in { - "acme/dns-key.age".publicKeys = all; - - "backup/password.age".publicKeys = all; - "backup/credentials.age".publicKeys = all; - - "drone/gitea.age".publicKeys = all; - "drone/secret.age".publicKeys = all; - "drone/ssh/private-key.age".publicKeys = all; - - "gitea/mail-password.age" = { - owner = "git"; - publicKeys = all; - }; - - "lohr/secret.age".publicKeys = all; - "lohr/ssh-key.age".publicKeys = all; - - "matrix/mail.age" = { - owner = "matrix-synapse"; - publicKeys = all; - }; - "matrix/secret.age" = { - owner = "matrix-synapse"; - publicKeys = all; - }; - - "miniflux/credentials.age".publicKeys = all; - - "monitoring/password.age" = { - owner = "grafana"; - publicKeys = all; - }; - - "nextcloud/password.age" = { - # Must be readable by the service - owner = "nextcloud"; - publicKeys = all; - }; - - "paperless/password.age".publicKeys = all; - "paperless/secret-key.age".publicKeys = all; - - "podgrab/password.age".publicKeys = all; - - "sso/auth-key.age".publicKeys = all; - "sso/ambroisie/password-hash.age".publicKeys = all; - "sso/ambroisie/totp-secret.age".publicKeys = all; - - "transmission/credentials.age".publicKeys = all; - "users/ambroisie/hashed-password.age".publicKeys = all; "users/root/hashed-password.age".publicKeys = all; @@ -62,8 +12,4 @@ in "wireguard/milady/private-key.age".publicKeys = all; "wireguard/porthos/private-key.age".publicKeys = all; "wireguard/richelieu/private-key.age".publicKeys = all; - - "woodpecker/gitea.age".publicKeys = all; - "woodpecker/secret.age".publicKeys = all; - "woodpecker/ssh/private-key.age".publicKeys = all; } From ed745602a1443888ceb9dc246c001d4f922503d3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 13 Apr 2023 17:23:22 +0000 Subject: [PATCH 0877/1588] modules: secrets: move non-existent key workaround Since this configuration was only there to accommodate `aramis`, make it be host-specific instead, and rely on the default value otherwise. --- hosts/nixos/aramis/secrets/default.nix | 5 +++++ modules/secrets/default.nix | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hosts/nixos/aramis/secrets/default.nix b/hosts/nixos/aramis/secrets/default.nix index 83af695..66d2c07 100644 --- a/hosts/nixos/aramis/secrets/default.nix +++ b/hosts/nixos/aramis/secrets/default.nix @@ -16,5 +16,10 @@ secrets = import ./secrets.nix; in lib.mapAttrs' convertSecrets secrets; + + identityPaths = [ + # Due to being a laptop, this host does not itself have any SSH keys + "/home/ambroisie/.ssh/id_ed25519" + ]; }; } diff --git a/modules/secrets/default.nix b/modules/secrets/default.nix index e8cb866..3fa78dc 100644 --- a/modules/secrets/default.nix +++ b/modules/secrets/default.nix @@ -20,10 +20,5 @@ secrets = import ./secrets.nix; in lib.mapAttrs' convertSecrets secrets; - - identityPaths = options.age.identityPaths.default ++ [ - # FIXME: hard-coded path, could be inexistent - "/home/ambroisie/.ssh/id_ed25519" - ]; }; } From 7cebaa3751fcfd295ec3e2d7960cd7411a05be2d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 16 Apr 2023 19:43:39 +0100 Subject: [PATCH 0878/1588] modules: secrets: move wireguard keys This is a bit special, as some of the keys do not belong to NixOS hosts, so store those in the module itself, and into host-specific directories for the keys that are NixOS hosts. --- hosts/nixos/aramis/secrets/secrets.nix | 2 +- .../aramis/secrets/wireguard}/private-key.age | Bin hosts/nixos/porthos/secrets/secrets.nix | 2 ++ .../porthos/secrets/wireguard}/private-key.age | 0 modules/secrets/secrets.nix | 5 ----- modules/services/wireguard/default.nix | 2 +- .../wireguard/keys}/milady/private-key.age | 0 .../wireguard/keys}/richelieu/private-key.age | 0 modules/services/wireguard/keys/secrets.nix | 15 +++++++++++++++ 9 files changed, 19 insertions(+), 7 deletions(-) rename {modules/secrets/wireguard/aramis => hosts/nixos/aramis/secrets/wireguard}/private-key.age (100%) rename {modules/secrets/wireguard/porthos => hosts/nixos/porthos/secrets/wireguard}/private-key.age (100%) rename modules/{secrets/wireguard => services/wireguard/keys}/milady/private-key.age (100%) rename modules/{secrets/wireguard => services/wireguard/keys}/richelieu/private-key.age (100%) create mode 100644 modules/services/wireguard/keys/secrets.nix diff --git a/hosts/nixos/aramis/secrets/secrets.nix b/hosts/nixos/aramis/secrets/secrets.nix index 55e64a9..ce159a5 100644 --- a/hosts/nixos/aramis/secrets/secrets.nix +++ b/hosts/nixos/aramis/secrets/secrets.nix @@ -9,5 +9,5 @@ let ]; in { - # Add secrets here + "wireguard/private-key.age".publicKeys = all; } diff --git a/modules/secrets/wireguard/aramis/private-key.age b/hosts/nixos/aramis/secrets/wireguard/private-key.age similarity index 100% rename from modules/secrets/wireguard/aramis/private-key.age rename to hosts/nixos/aramis/secrets/wireguard/private-key.age diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 6b77dc6..7d05b7f 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -59,6 +59,8 @@ in "transmission/credentials.age".publicKeys = all; + "wireguard/private-key.age".publicKeys = all; + "woodpecker/gitea.age".publicKeys = all; "woodpecker/secret.age".publicKeys = all; "woodpecker/ssh/private-key.age".publicKeys = all; diff --git a/modules/secrets/wireguard/porthos/private-key.age b/hosts/nixos/porthos/secrets/wireguard/private-key.age similarity index 100% rename from modules/secrets/wireguard/porthos/private-key.age rename to hosts/nixos/porthos/secrets/wireguard/private-key.age diff --git a/modules/secrets/secrets.nix b/modules/secrets/secrets.nix index 221d1e1..0e685d9 100644 --- a/modules/secrets/secrets.nix +++ b/modules/secrets/secrets.nix @@ -7,9 +7,4 @@ in { "users/ambroisie/hashed-password.age".publicKeys = all; "users/root/hashed-password.age".publicKeys = all; - - "wireguard/aramis/private-key.age".publicKeys = all; - "wireguard/milady/private-key.age".publicKeys = all; - "wireguard/porthos/private-key.age".publicKeys = all; - "wireguard/richelieu/private-key.age".publicKeys = all; } diff --git a/modules/services/wireguard/default.nix b/modules/services/wireguard/default.nix index 656fdb2..8d40fd4 100644 --- a/modules/services/wireguard/default.nix +++ b/modules/services/wireguard/default.nix @@ -12,7 +12,7 @@ let let mkPeer = name: attrs: { inherit (attrs) clientNum publicKey; - privateKeyFile = secrets."wireguard/${name}/private-key".path; + privateKeyFile = secrets."wireguard/private-key".path; } // lib.optionalAttrs (attrs ? externalIp) { inherit (attrs) externalIp; }; diff --git a/modules/secrets/wireguard/milady/private-key.age b/modules/services/wireguard/keys/milady/private-key.age similarity index 100% rename from modules/secrets/wireguard/milady/private-key.age rename to modules/services/wireguard/keys/milady/private-key.age diff --git a/modules/secrets/wireguard/richelieu/private-key.age b/modules/services/wireguard/keys/richelieu/private-key.age similarity index 100% rename from modules/secrets/wireguard/richelieu/private-key.age rename to modules/services/wireguard/keys/richelieu/private-key.age diff --git a/modules/services/wireguard/keys/secrets.nix b/modules/services/wireguard/keys/secrets.nix new file mode 100644 index 0000000..3985477 --- /dev/null +++ b/modules/services/wireguard/keys/secrets.nix @@ -0,0 +1,15 @@ +# Extra wireguard keys that are not hosts NixOS hosts +let + keys = import ../../../../keys; + + all = [ + keys.users.ambroisie + ]; +in +{ + # Sarah's iPhone + "milady/private-key.age".publicKeys = all; + + # My Android phone + "richelieu/private-key.age".publicKeys = all; +} From 04d92a29e3620e829484f71fe19b4f60489fdda4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 16 Apr 2023 19:51:00 +0100 Subject: [PATCH 0879/1588] hosts: nixos: aramis: secrets: rename SSH key --- hosts/nixos/aramis/secrets/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/nixos/aramis/secrets/default.nix b/hosts/nixos/aramis/secrets/default.nix index 66d2c07..c6f02dc 100644 --- a/hosts/nixos/aramis/secrets/default.nix +++ b/hosts/nixos/aramis/secrets/default.nix @@ -19,7 +19,7 @@ identityPaths = [ # Due to being a laptop, this host does not itself have any SSH keys - "/home/ambroisie/.ssh/id_ed25519" + "/home/ambroisie/.ssh/agenix" ]; }; } From 98c77cb258c0df3fbee55a13df8526906fbd9a8e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 16 Apr 2023 19:52:15 +0100 Subject: [PATCH 0880/1588] bootstrap: rename agenix SSH key --- bootstrap.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 60290a4..da3542d 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -58,8 +58,8 @@ get_ssh() { get_doc "SysAdmin/SSH" "shared-key-public" "$HOME/.ssh/shared_rsa.pub" 644 get_doc "SysAdmin/SSH" "shared-key-private" "$HOME/.ssh/shared_rsa" 600 - get_doc "SysAdmin/SSH" "agenix-public" "$HOME/.ssh/id_ed25519.pub" 644 - get_doc "SysAdmin/SSH" "agenix-private" "$HOME/.ssh/id_ed25519" 600 + get_doc "SysAdmin/SSH" "agenix-public" "$HOME/.ssh/agenix.pub" 644 + get_doc "SysAdmin/SSH" "agenix-private" "$HOME/.ssh/agenix" 600 } get_pgp() { From af470f507b841912a3baa66f3b29d7ba78d014f4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 17 Apr 2023 09:28:18 +0000 Subject: [PATCH 0881/1588] bootstrap: remove GPG setup step I don't use `git-crypt` anymore, this is no longer useful. --- bootstrap.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index da3542d..b1c418e 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -87,15 +87,6 @@ get_creds() { get_pgp } -setup_gpg() { - info 'Setting up loopback pinentry for GnuPG' - echo "allow-loopback-pinentry" > ~/.gnupg/gpg-agent.conf - - info 'Signing dummy message to ensure GnuPG key is usable by `git-crypt`' - echo whatever | gpg --clearsign --armor --pinentry loopback --output /dev/null -} - [ -z "$NOCREDS" ] && get_creds -[ -z "$NOGPG" ] && setup_gpg nix --experimental-features 'nix-command flakes' develop From f935126312cadaf8f2c8f94ed1b5e656de828ab3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 17 Apr 2023 21:22:10 +0200 Subject: [PATCH 0882/1588] flake: bump inputs --- flake.lock | 27 ++++++++++++--------------- flake.nix | 1 - 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/flake.lock b/flake.lock index bf6f327..58fc9cb 100644 --- a/flake.lock +++ b/flake.lock @@ -125,17 +125,14 @@ "inputs": { "nixpkgs": [ "nixpkgs" - ], - "utils": [ - "futils" ] }, "locked": { - "lastModified": 1681162249, - "narHash": "sha256-jh5fLaTxR5XowXA0CN/1Gs2qbvVdmdPCSeO424XWZLI=", + "lastModified": 1681746824, + "narHash": "sha256-TRe6SAYqTEyWmHwg5gpAj3arebje/OVi7z9yLqZRYqg=", "owner": "nix-community", "repo": "home-manager", - "rev": "4e79c6a414ce59fd1a53ab77899c77ab87774e6b", + "rev": "ae79840bc756e97f9750fc70448ae0efc1b8dcc3", "type": "github" }, "original": { @@ -147,11 +144,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1681126633, - "narHash": "sha256-evQ3Ct/yJDSHej16Hiq+JfxRjgm9FXu/2LBxsyorGdE=", + "lastModified": 1681648924, + "narHash": "sha256-pzi3HISK8+7mpEtv08Yr80wswyHKsz+RP1CROG1Qf6s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "db24d86dd8a4769c50d6b7295e81aa280cd93f35", + "rev": "f294325aed382b66c7a188482101b0f336d1d7db", "type": "github" }, "original": { @@ -163,11 +160,11 @@ }, "nur": { "locked": { - "lastModified": 1681202919, - "narHash": "sha256-LKAF4NQV3mnQ0oTcfk9yrNqj3DgjN0UW+uxu464p1Rc=", + "lastModified": 1681755009, + "narHash": "sha256-gvVu2vJJm67DatLdVf0U7uiI/wBVxREzs2QKDXyUrlA=", "owner": "nix-community", "repo": "NUR", - "rev": "a013ab00e087108ca06c9f380c01617c8aec2a71", + "rev": "76e175485cc44e8bd9224fb98899bc6281a28c0d", "type": "github" }, "original": { @@ -192,11 +189,11 @@ ] }, "locked": { - "lastModified": 1681206676, - "narHash": "sha256-6hQR0fSJ22BSV1XpjyxYur/MPab6gn3aI/l8qEpwNHk=", + "lastModified": 1681413034, + "narHash": "sha256-/t7OjNQcNkeWeSq/CFLYVBfm+IEnkjoSm9iKvArnUUI=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "a0e9703a95342d1dba4ba0d989b2e0b429d42516", + "rev": "d3de8f69ca88fb6f8b09e5b598be5ac98d28ede5", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 058ac27..b2d1500 100644 --- a/flake.nix +++ b/flake.nix @@ -35,7 +35,6 @@ ref = "master"; inputs = { nixpkgs.follows = "nixpkgs"; - utils.follows = "futils"; }; }; From 638f4a777493e2ae0de926997852e8e5bf4762e7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 17 Apr 2023 21:25:15 +0200 Subject: [PATCH 0883/1588] modules: system: boot: rename 'tmp' options --- modules/system/boot/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/system/boot/default.nix b/modules/system/boot/default.nix index 0fed267..3d8495e 100644 --- a/modules/system/boot/default.nix +++ b/modules/system/boot/default.nix @@ -13,9 +13,11 @@ in config = { boot = { - cleanTmpDir = cfg.tmp.clean; + tmp = { + cleanOnBoot = cfg.tmp.clean; - tmpOnTmpfs = cfg.tmp.tmpfs; + useTmpfs = cfg.tmp.tmpfs; + }; }; }; } From d424aaa4a1f8da55ee98b65b61b0709a1896ec83 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 18 Apr 2023 22:06:44 +0100 Subject: [PATCH 0884/1588] templates: c++-meson: add '.envrc' This was ignored when I added the initial commit. --- templates/c++-meson/.envrc | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 templates/c++-meson/.envrc diff --git a/templates/c++-meson/.envrc b/templates/c++-meson/.envrc new file mode 100644 index 0000000..95ed6fb --- /dev/null +++ b/templates/c++-meson/.envrc @@ -0,0 +1,10 @@ +if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +fi + +use flake + +watch_file ./flake/checks.nix +watch_file ./flake/dev-shells.nix + +eval "$shellHooks" From 2375f88e5657a195b032ea1684f9cc8b9afa5b9d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 19 Apr 2023 08:34:39 +0000 Subject: [PATCH 0885/1588] home: vim: use patience diff This brings it in line with my `git` configuration. --- home/vim/init.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/vim/init.vim b/home/vim/init.vim index 259c782..2ebc6d6 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -66,6 +66,9 @@ set list " Show a tab as an arrow, trailing spaces as ¤, non-breaking spaces as dots set listchars=tab:>─,trail:·,nbsp:¤ +" Use patience diff +set diffopt+=algorithm:patience + " Don't redraw when executing macros set lazyredraw From e9f07e67dca8806ad99554cf3936d2d7e4139c6e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 19 Apr 2023 08:36:40 +0000 Subject: [PATCH 0886/1588] home: vim: add diff line matching This should bring more readable diffs. See [1]. [1]: https://github.com/neovim/neovim/pull/14537 --- home/vim/init.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/vim/init.vim b/home/vim/init.vim index 2ebc6d6..4d8b85d 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -68,6 +68,8 @@ set listchars=tab:>─,trail:·,nbsp:¤ " Use patience diff set diffopt+=algorithm:patience +" Align similar lines in each hunk +set diffopt+=linematch:50 " Don't redraw when executing macros set lazyredraw From ce4e163193e34cb6ea3f1535f215234a2488f3f3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 22 Apr 2023 12:33:25 +0100 Subject: [PATCH 0887/1588] pkgs: add wifi-qr --- pkgs/default.nix | 2 + pkgs/wifi-qr/default.nix | 80 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 pkgs/wifi-qr/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index f1e8f63..4a84b9c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -34,6 +34,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { volantes-cursors = pkgs.callPackage ./volantes-cursors { }; + wifi-qr = pkgs.callPackage ./wifi-qr { }; + woodpecker-agent = pkgs.callPackage ./woodpecker/agent.nix { }; woodpecker-cli = pkgs.callPackage ./woodpecker/cli.nix { }; diff --git a/pkgs/wifi-qr/default.nix b/pkgs/wifi-qr/default.nix new file mode 100644 index 0000000..540ae20 --- /dev/null +++ b/pkgs/wifi-qr/default.nix @@ -0,0 +1,80 @@ +{ lib +, fetchFromGitHub +, gnome +, installShellFiles +, makeWrapper +, networkmanager +, qrencode +, stdenvNoCC +, xdg-utils +, zbar +}: +stdenvNoCC.mkDerivation rec { + pname = "wifi-qr"; + version = "unstable-2023-04-19"; + + outputs = [ "out" "man" ]; + + src = fetchFromGitHub { + owner = "kokoye2007"; + repo = "wifi-qr"; + rev = "b81d4a44257252f07e745464879aa5618ae3d434"; + hash = "sha256-oGTAr+raJGpK4PV4GdBxX8fIUE8gcbXw7W0SvQJAee0="; + }; + + nativeBuildInputs = [ + installShellFiles + makeWrapper + ]; + + dontBuild = true; + + dontConfigure = true; + + postPatch = '' + substituteInPlace wifi-qr.desktop \ + --replace "Exec=sh -c 'wifi-qr g'" "Exec=$out/bin/wifi-qr g" \ + --replace "Exec=sh -c 'wifi-qr q'" "Exec=$out/bin/wifi-qr q" \ + --replace "Exec=sh -c 'wifi-qr p'" "Exec=$out/bin/wifi-qr p" \ + --replace "Exec=sh -c 'wifi-qr c'" "Exec=$out/bin/wifi-qr c" \ + --replace "Icon=wifi-qr.svg" "Icon=$out/share/applications/wifi-qr.svg" + ''; + + installPhase = '' + runHook preInstall + + install -Dm755 wifi-qr $out/bin/wifi-qr + + install -Dm644 wifi-qr.desktop $out/share/applications/wifi-qr.desktop + install -Dm644 wifi-qr.svg $out/share/applications/wifi-qr.svg + + installManPage wifi-qr.1 + + runHook postInstall + ''; + + wrapperPath = lib.makeBinPath [ + gnome.zenity + networkmanager + qrencode + xdg-utils + zbar + ]; + + fixupPhase = '' + runHook preFixup + + patchShebangs $out/bin/wifi-qr + wrapProgram $out/bin/wifi-qr --suffix PATH : "${wrapperPath}" + + runHook postFixup + ''; + + meta = with lib; { + description = "WiFi password sharing via QR codes"; + homepage = "https://github.com/kokoye2007/wifi-qr"; + license = with licenses; [ gpl3Plus ]; + platforms = platforms.linux; + maintainers = with maintainers; [ ambroisie ]; + }; +} From 0f385abf3cbbc0f6cc243f16736f1fee58380bbd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 22 Apr 2023 12:36:28 +0100 Subject: [PATCH 0888/1588] pkgs: fix 'nativeBuildInputs' usage --- pkgs/bw-pass/default.nix | 2 +- pkgs/change-audio/default.nix | 2 +- pkgs/change-backlight/default.nix | 2 +- pkgs/comma/default.nix | 2 +- pkgs/diff-flake/default.nix | 2 +- pkgs/drone-rsync/default.nix | 2 +- pkgs/i3-get-window-criteria/default.nix | 2 +- pkgs/osc52/default.nix | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix index 12cf4f1..ef66f22 100644 --- a/pkgs/bw-pass/default.nix +++ b/pkgs/bw-pass/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = ./bw-pass; - buildInputs = [ + nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index 2e3535c..f201a55 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = ./change-audio; - buildInputs = [ + nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/change-backlight/default.nix b/pkgs/change-backlight/default.nix index 2e2efa1..f9a1afd 100644 --- a/pkgs/change-backlight/default.nix +++ b/pkgs/change-backlight/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = ./change-backlight; - buildInputs = [ + nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix index 1b6f9e5..0ce542d 100644 --- a/pkgs/comma/default.nix +++ b/pkgs/comma/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = ./comma; - buildInputs = [ + nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 124b081..55d9403 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = ./diff-flake; - buildInputs = [ + nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/drone-rsync/default.nix b/pkgs/drone-rsync/default.nix index 7b2a664..0783ad1 100644 --- a/pkgs/drone-rsync/default.nix +++ b/pkgs/drone-rsync/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = ./drone-rsync; - buildInputs = [ + nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix index 6542e8a..a464091 100644 --- a/pkgs/i3-get-window-criteria/default.nix +++ b/pkgs/i3-get-window-criteria/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = ./i3-get-window-criteria; - buildInputs = [ + nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/osc52/default.nix b/pkgs/osc52/default.nix index d4bf771..9e20eab 100644 --- a/pkgs/osc52/default.nix +++ b/pkgs/osc52/default.nix @@ -5,7 +5,7 @@ stdenvNoCC.mkDerivation rec { src = ./osc52; - buildInputs = [ + nativeBuildInputs = [ makeWrapper ]; From 5c372cfa95097923cf73c391b0fd0b97c2c0e943 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Apr 2023 15:57:46 +0100 Subject: [PATCH 0889/1588] home: vim: use 'exrc' Remove the home-grown "solution" that I had stolen from school (and never used...) for project-local configuration. Since [1], it is okay to use the built-in vim option for this, since it only asks for user-input before trusting a file. Since [2] they even support lua files! [1]: https://github.com/neovim/neovim/pull/20956 [2]: https://github.com/neovim/neovim/pull/21436 --- home/vim/init.vim | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/home/vim/init.vim b/home/vim/init.vim index 4d8b85d..bd63d25 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -102,12 +102,10 @@ set ignorecase set smartcase " }}} -" Import settings when inside a git repository {{{ +" Project-local settings {{{ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -let git_settings=system("git config --get vim.settings") -if strlen(git_settings) - exe "set" git_settings -endif +" Securely read `.nvim.lua` or `.nvimrc`. +set exrc " }}} " vim: foldmethod=marker From c82361f9e43854074d0e2f1fed8c8b2fb3d272a5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Apr 2023 16:02:17 +0100 Subject: [PATCH 0890/1588] home: git: ignore neovim 'exrc' configuration --- home/git/default.ignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/git/default.ignore b/home/git/default.ignore index 77aedcc..d80996e 100644 --- a/home/git/default.ignore +++ b/home/git/default.ignore @@ -28,3 +28,7 @@ compile_commands.json # Direnv files .envrc .direnv/ + +# Project-local neovim configuration files +.nvim.lua +.nvimrc From f47ac783708a834262f006b43edd25f5a92ebe87 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Apr 2023 16:23:22 +0100 Subject: [PATCH 0891/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 58fc9cb..8f7d1b4 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1680281360, - "narHash": "sha256-XdLTgAzjJNDhAG2V+++0bHpSzfvArvr2pW6omiFfEJk=", + "lastModified": 1682101079, + "narHash": "sha256-MdAhtjrLKnk2uiqun1FWABbKpLH090oeqCSiWemtuck=", "owner": "ryantm", "repo": "agenix", - "rev": "e64961977f60388dd0b49572bb0fc453b871f896", + "rev": "2994d002dcff5353ca1ac48ec584c7f6589fe447", "type": "github" }, "original": { @@ -128,11 +128,11 @@ ] }, "locked": { - "lastModified": 1681746824, - "narHash": "sha256-TRe6SAYqTEyWmHwg5gpAj3arebje/OVi7z9yLqZRYqg=", + "lastModified": 1682203081, + "narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=", "owner": "nix-community", "repo": "home-manager", - "rev": "ae79840bc756e97f9750fc70448ae0efc1b8dcc3", + "rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1", "type": "github" }, "original": { @@ -144,11 +144,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1681648924, - "narHash": "sha256-pzi3HISK8+7mpEtv08Yr80wswyHKsz+RP1CROG1Qf6s=", + "lastModified": 1682181988, + "narHash": "sha256-CYWhlNi16cjGzMby9h57gpYE59quBcsHPXiFgX4Sw5k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f294325aed382b66c7a188482101b0f336d1d7db", + "rev": "6c43a3495a11e261e5f41e5d7eda2d71dae1b2fe", "type": "github" }, "original": { @@ -160,11 +160,11 @@ }, "nur": { "locked": { - "lastModified": 1681755009, - "narHash": "sha256-gvVu2vJJm67DatLdVf0U7uiI/wBVxREzs2QKDXyUrlA=", + "lastModified": 1682222997, + "narHash": "sha256-7PEtbnVsdj+wFiEA14NdwAcxHNlx6z4mJ6MCCWhLPJw=", "owner": "nix-community", "repo": "NUR", - "rev": "76e175485cc44e8bd9224fb98899bc6281a28c0d", + "rev": "12ce41b211b7a85975703b6c66868fdd8dc1e42a", "type": "github" }, "original": { @@ -189,11 +189,11 @@ ] }, "locked": { - "lastModified": 1681413034, - "narHash": "sha256-/t7OjNQcNkeWeSq/CFLYVBfm+IEnkjoSm9iKvArnUUI=", + "lastModified": 1681831107, + "narHash": "sha256-pXl3DPhhul9NztSetUJw2fcN+RI3sGOYgKu29xpgnqw=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "d3de8f69ca88fb6f8b09e5b598be5ac98d28ede5", + "rev": "b7ca8f6fff42f6af75c17f9438fed1686b7d855d", "type": "github" }, "original": { From d8c841333b02ce825b88772d7240b82a1a09b265 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Apr 2023 16:23:36 +0100 Subject: [PATCH 0892/1588] modules: services: gitea: migrate settings Most of the settings are now RFC-42 compliant. --- modules/services/gitea/default.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/services/gitea/default.nix b/modules/services/gitea/default.nix index 9349cd1..28a448d 100644 --- a/modules/services/gitea/default.nix +++ b/modules/services/gitea/default.nix @@ -56,9 +56,6 @@ in enable = true; appName = "Ambroisie's forge"; - httpPort = cfg.port; - domain = giteaDomain; - rootUrl = "https://${giteaDomain}"; user = "git"; lfs.enable = true; @@ -78,6 +75,12 @@ in mailerPasswordFile = lib.mkIf cfg.mail.enable cfg.mail.passwordFile; settings = { + server = { + HTTP_PORT = cfg.port; + DOMAIN = giteaDomain; + ROOT_URL = "https://${giteaDomain}"; + }; + mailer = lib.mkIf cfg.mail.enable { ENABLED = true; HOST = cfg.mail.host; @@ -121,7 +124,7 @@ in # Redirect `gitea.` to actual forge subdomain { subdomain = "gitea"; - redirect = config.services.gitea.rootUrl; + redirect = config.services.gitea.settings.server.ROOT_URL; } ]; From 1d7b9b99db75e9e7cc61ced9148ccdcba74971bb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 26 Apr 2023 20:48:00 +0100 Subject: [PATCH 0893/1588] home: extract fzf configuration --- home/default.nix | 1 + home/fzf/default.nix | 15 +++++++++++++++ home/zsh/default.nix | 6 ------ 3 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 home/fzf/default.nix diff --git a/home/default.nix b/home/default.nix index 3e34ddb..12c7ec2 100644 --- a/home/default.nix +++ b/home/default.nix @@ -10,6 +10,7 @@ ./feh ./firefox ./flameshot + ./fzf ./gammastep ./gdb ./git diff --git a/home/fzf/default.nix b/home/fzf/default.nix new file mode 100644 index 0000000..b7e308f --- /dev/null +++ b/home/fzf/default.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let + cfg = config.my.home.fzf; +in +{ + options.my.home.fzf = with lib; { + enable = my.mkDisableOption "fzf configuration"; + }; + + config = lib.mkIf cfg.enable { + programs.fzf = { + enable = true; + }; + }; +} diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 5bf9c34..3979159 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -105,12 +105,6 @@ in enableVteIntegration = true; }; - # Fuzzy-wuzzy - programs.fzf = { - enable = true; - enableZshIntegration = true; - }; - programs.dircolors = { enable = true; }; From 0ab56888bd9697074868dfe6d11f830df6360f21 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 26 Apr 2023 20:49:21 +0100 Subject: [PATCH 0894/1588] home: extract dircolors configuration --- home/default.nix | 1 + home/dircolors/default.nix | 15 +++++++++++++++ home/zsh/default.nix | 4 ---- 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 home/dircolors/default.nix diff --git a/home/default.nix b/home/default.nix index 12c7ec2..2e48b45 100644 --- a/home/default.nix +++ b/home/default.nix @@ -4,6 +4,7 @@ ./bat ./bluetooth ./comma + ./dircolors ./direnv ./discord ./documentation diff --git a/home/dircolors/default.nix b/home/dircolors/default.nix new file mode 100644 index 0000000..876b413 --- /dev/null +++ b/home/dircolors/default.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: +let + cfg = config.my.home.dircolors; +in +{ + options.my.home.dircolors = with lib; { + enable = my.mkDisableOption "dircolors configuration"; + }; + + config = lib.mkIf cfg.enable { + programs.dircolors = { + enable = true; + }; + }; +} diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 3979159..994a652 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -104,9 +104,5 @@ in # Enable VTE integration enableVteIntegration = true; }; - - programs.dircolors = { - enable = true; - }; }; } From 5a9e62d556d59aa56b4bd4666c6c02530ff4cf14 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 26 Apr 2023 21:21:05 +0100 Subject: [PATCH 0895/1588] home: add atuin I really like the `fzf` history widget, and this is not as good UI-wise. However I like the fact that this uses a DB: * It is more reliable when the history file gets messed up [1] * It allows syncing between different hosts (not sure if I will use it) * It adds more context to the search * The current directory * The shell _session_, I can *either* search all sessions or restrict to just the current one I will be looking into whether or not I can hack something together to get a better UI (by using `fzf` of course). --- home/atuin/default.nix | 27 +++++++++++++++++++++++++++ home/default.nix | 1 + 2 files changed, 28 insertions(+) create mode 100644 home/atuin/default.nix diff --git a/home/atuin/default.nix b/home/atuin/default.nix new file mode 100644 index 0000000..e0d1eb2 --- /dev/null +++ b/home/atuin/default.nix @@ -0,0 +1,27 @@ +{ config, lib, ... }: +let + cfg = config.my.home.atuin; +in +{ + options.my.home.atuin = with lib; { + enable = my.mkDisableOption "atuin configuration"; + }; + + config = lib.mkIf cfg.enable { + programs.atuin = { + enable = true; + + flags = [ + # I *despise* this hijacking of the up key, even though I use Ctrl-p + "--disable-up-arrow" + ]; + + settings = { + # The package is managed by Nix + update_check = false; + # I don't care for the fancy display + style = "compact"; + }; + }; + }; +} diff --git a/home/default.nix b/home/default.nix index 2e48b45..c851f76 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,6 +1,7 @@ { ... }: { imports = [ + ./atuin ./bat ./bluetooth ./comma From f41fd5d42ed33993d7a148988329804f1383fd57 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 27 Apr 2023 09:21:21 +0000 Subject: [PATCH 0896/1588] home: atuin: use 'skim' engine --- home/atuin/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/atuin/default.nix b/home/atuin/default.nix index e0d1eb2..06c2abc 100644 --- a/home/atuin/default.nix +++ b/home/atuin/default.nix @@ -21,6 +21,8 @@ in update_check = false; # I don't care for the fancy display style = "compact"; + # Get closer to fzf's fuzzy search + search_mode = "skim"; }; }; }; From e4e44dd8fafb2c026110830a1a00e05564cf7a0e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 27 Apr 2023 09:22:57 +0000 Subject: [PATCH 0897/1588] home: atuin: enable command line preview --- home/atuin/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/atuin/default.nix b/home/atuin/default.nix index 06c2abc..19a6fb9 100644 --- a/home/atuin/default.nix +++ b/home/atuin/default.nix @@ -23,6 +23,8 @@ in style = "compact"; # Get closer to fzf's fuzzy search search_mode = "skim"; + # Show long command lines at the bottom + show_preview = true; }; }; }; From d9e115a876713ff279c1cd4cd959920422c7c006 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 1 May 2023 18:07:52 +0200 Subject: [PATCH 0898/1588] modules: services: woodpecker: adapt gitea URL --- modules/services/woodpecker/server/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/woodpecker/server/default.nix b/modules/services/woodpecker/server/default.nix index 6f5d93d..590f07c 100644 --- a/modules/services/woodpecker/server/default.nix +++ b/modules/services/woodpecker/server/default.nix @@ -19,7 +19,7 @@ in WOODPECKER_GRPC_ADDR = ":${toString cfg.rpcPort}"; WOODPECKER_GITEA = "true"; - WOODPECKER_GITEA_URL = config.services.gitea.rootUrl; + WOODPECKER_GITEA_URL = config.services.gitea.settings.server.ROOT_URL; WOODPECKER_LOG_LEVEL = "debug"; }; From fe8481292d6e5896917b36e3682cfcdf298fc393 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 1 May 2023 18:47:53 +0200 Subject: [PATCH 0899/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 8f7d1b4..c20ac7d 100644 --- a/flake.lock +++ b/flake.lock @@ -128,11 +128,11 @@ ] }, "locked": { - "lastModified": 1682203081, - "narHash": "sha256-kRL4ejWDhi0zph/FpebFYhzqlOBrk0Pl3dzGEKSAlEw=", + "lastModified": 1682779989, + "narHash": "sha256-H8AjcIBYFYrlRobYJ+n1B+ZJ6TsaaeZpuLn4iRqVvr4=", "owner": "nix-community", "repo": "home-manager", - "rev": "32d3e39c491e2f91152c84f8ad8b003420eab0a1", + "rev": "3144311f31194b537808ae6848f86f3dbf977d59", "type": "github" }, "original": { @@ -144,11 +144,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1682181988, - "narHash": "sha256-CYWhlNi16cjGzMby9h57gpYE59quBcsHPXiFgX4Sw5k=", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6c43a3495a11e261e5f41e5d7eda2d71dae1b2fe", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", "type": "github" }, "original": { @@ -160,11 +160,11 @@ }, "nur": { "locked": { - "lastModified": 1682222997, - "narHash": "sha256-7PEtbnVsdj+wFiEA14NdwAcxHNlx6z4mJ6MCCWhLPJw=", + "lastModified": 1682945906, + "narHash": "sha256-45tSf14pbq3AZSUpdos7dod4zGGxONE2MMPr8K7Ni/4=", "owner": "nix-community", "repo": "NUR", - "rev": "12ce41b211b7a85975703b6c66868fdd8dc1e42a", + "rev": "6e170eea820a3b7c28df56c99bb0d4be95b46dab", "type": "github" }, "original": { @@ -189,11 +189,11 @@ ] }, "locked": { - "lastModified": 1681831107, - "narHash": "sha256-pXl3DPhhul9NztSetUJw2fcN+RI3sGOYgKu29xpgnqw=", + "lastModified": 1682596858, + "narHash": "sha256-Hf9XVpqaGqe/4oDGr30W8HlsWvJXtMsEPHDqHZA6dDg=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "b7ca8f6fff42f6af75c17f9438fed1686b7d855d", + "rev": "fb58866e20af98779017134319b5663b8215d912", "type": "github" }, "original": { From 872f045740f21e29bba6a67df1d2252292ce21c2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 1 May 2023 20:07:28 +0200 Subject: [PATCH 0900/1588] overlays: add 'nix-serve-ng-initLibStore' --- overlays/default.nix | 2 +- overlays/nix-serve-ng-initLibStore/default.nix | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 overlays/nix-serve-ng-initLibStore/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index 7984ac0..d24e60f 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - # NOTE: no overlays at the moment + nix-serve-ng-initLibStore = import ./nix-serve-ng-initLibStore; } diff --git a/overlays/nix-serve-ng-initLibStore/default.nix b/overlays/nix-serve-ng-initLibStore/default.nix new file mode 100644 index 0000000..b528dc7 --- /dev/null +++ b/overlays/nix-serve-ng-initLibStore/default.nix @@ -0,0 +1,11 @@ +final: prev: +{ + nix-serve-ng = prev.nix-serve-ng.overrideAttrs (_: { + src = final.fetchFromGitHub { + owner = "aristanetworks"; + repo = "nix-serve-ng"; + rev = "dabf46d65d8e3be80fa2eacd229eb3e621add4bd"; + hash = "sha256-SoJJ3rMtDMfUzBSzuGMY538HDIj/s8bPf8CjIkpqY2w="; + }; + }); +} From 455a4e543145f471616c8f8674232034545ed003 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 19 Apr 2023 21:23:01 +0100 Subject: [PATCH 0901/1588] modules: services: add nix-serve --- modules/services/default.nix | 1 + modules/services/nix-serve/default.nix | 57 ++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 modules/services/nix-serve/default.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index bea2139..268a3a5 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -20,6 +20,7 @@ ./navidrome ./nextcloud ./nginx + ./nix-serve ./paperless ./pirate ./podgrab diff --git a/modules/services/nix-serve/default.nix b/modules/services/nix-serve/default.nix new file mode 100644 index 0000000..0cf1573 --- /dev/null +++ b/modules/services/nix-serve/default.nix @@ -0,0 +1,57 @@ +# Binary cache through nix-serve +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.nix-serve; +in +{ + options.my.services.nix-serve = with lib; { + enable = mkEnableOption "nix-serve binary cache"; + + port = mkOption { + type = types.port; + default = 5000; + example = 8080; + description = "Internal port for serving cache"; + }; + + secretKeyFile = mkOption { + type = types.str; + example = "/run/secrets/nix-serve"; + description = "Secret signing key for the cache"; + }; + + priority = mkOption { + type = types.int; + default = 50; + example = 30; + description = '' + Which priority to assign to this cache. Lower number is higher priority. + The official nixpkgs hydra cache is priority 40. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.nix-serve = { + enable = true; + + bindAddress = "127.0.0.1"; + + inherit (cfg) + port + secretKeyFile + ; + + package = pkgs.nix-serve-ng; + + extraParams = "--priority=${toString cfg.priority}"; + }; + + my.services.nginx.virtualHosts = [ + { + subdomain = "cache"; + inherit (cfg) port; + } + ]; + }; +} From f7df17686fef1151aa98dfd291e13d53b14f4b53 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 19 Apr 2023 22:41:39 +0200 Subject: [PATCH 0902/1588] nixos: porthos: secrets: add 'nix-serve/cache-key' --- .../nixos/porthos/secrets/nix-serve/cache-key.age | Bin 0 -> 501 bytes hosts/nixos/porthos/secrets/secrets.nix | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/nix-serve/cache-key.age diff --git a/hosts/nixos/porthos/secrets/nix-serve/cache-key.age b/hosts/nixos/porthos/secrets/nix-serve/cache-key.age new file mode 100644 index 0000000000000000000000000000000000000000..e0fb5be786d9814da7c81edeea1e47b67a45c4c5 GIT binary patch literal 501 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;-qxh%mDB zuSiTXNcAo)aSb$yh)fI6cK1j!wG6c|PYNr^G4KuY@U4i-i{y$Z%`GyqNK5k$aLaZv zFAXzG%B}FsGb+t5HZ%>+Ew1#B42}qlDvZ$2O-8pZD|Ikze)z&Xq?B*elb(9FXuEX5>0E1Ro4$IQjjx5U6S$0WzZG(E+~)gmC@ zqR=DXC%N3v&o9!lBiE(>_cfZ_3ye8K92Uzj zF={xo@ZCT0sM}xdf9!~tubMtDTkfRV_p=FmR+P)mUw1V0P4E2;djbT`3;nvxa4@p3 zpW}u3pNu literal 0 HcmV?d00001 diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 7d05b7f..85a3d48 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -48,6 +48,8 @@ in publicKeys = all; }; + "nix-serve/cache-key.age".publicKeys = all; + "paperless/password.age".publicKeys = all; "paperless/secret-key.age".publicKeys = all; From 93bc5cbd01715110aea17ee986fffd0cf4173ead Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 19 Apr 2023 23:05:08 +0200 Subject: [PATCH 0903/1588] nixos: porthos: services: enable nix-serve Unfortunately, the priority cannot be changed and defaults to being higher (by using a lower integer) than the NixOS cache... --- hosts/nixos/porthos/services.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 75ebe6b..d9abc7f 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -96,6 +96,10 @@ in enable = true; passwordFile = secrets."nextcloud/password".path; }; + nix-serve = { + enable = true; + secretKeyFile = secrets."nix-serve/cache-key".path; + }; nginx = { enable = true; acme = { From 20d19ed12880fa197aec8d8f610cc9a9acec0e85 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 1 May 2023 19:43:29 +0200 Subject: [PATCH 0904/1588] modules: system: nix: rename 'inputs' options --- modules/system/nix/default.nix | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index c8ce001..5c9dbc8 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -12,7 +12,7 @@ let # Use pinned nixpkgs when using `nix run pkgs#` pkgs = inputs.nixpkgs; } - (lib.optionalAttrs cfg.overrideNixpkgs { + (lib.optionalAttrs cfg.inputs.overrideNixpkgs { # ... And with `nix run nixpkgs#` nixpkgs = inputs.nixpkgs; }) @@ -22,23 +22,25 @@ in options.my.system.nix = with lib; { enable = my.mkDisableOption "nix configuration"; - linkInputs = my.mkDisableOption "link inputs to `/etc/nix/inputs/`"; + inputs = { + link = my.mkDisableOption "link inputs to `/etc/nix/inputs/`"; - addToRegistry = my.mkDisableOption "add inputs and self to registry"; + addToRegistry = my.mkDisableOption "add inputs and self to registry"; - addToNixPath = my.mkDisableOption "add inputs and self to nix path"; + addToNixPath = my.mkDisableOption "add inputs and self to nix path"; - overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version"; + overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version"; + }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ { assertions = [ { - assertion = cfg.addToNixPath -> cfg.linkInputs; + assertion = cfg.inputs.addToNixPath -> cfg.inputs.link; message = '' - enabling `my.system.nix.addToNixPath` needs to have - `my.system.nix.linkInputs = true` + enabling `my.system.nix.inputs.addToNixPath` needs to have + `my.system.nix.inputs.link = true` ''; } ]; @@ -54,7 +56,7 @@ in }; } - (lib.mkIf cfg.addToRegistry { + (lib.mkIf cfg.inputs.addToRegistry { nix.registry = let makeEntry = v: { flake = v; }; @@ -63,7 +65,7 @@ in makeEntries channels; }) - (lib.mkIf cfg.linkInputs { + (lib.mkIf cfg.inputs.link { environment.etc = let makeLink = n: v: { @@ -75,7 +77,7 @@ in makeLinks channels; }) - (lib.mkIf cfg.addToNixPath { + (lib.mkIf cfg.inputs.addToNixPath { nix.nixPath = [ "/etc/nix/inputs" ] From fadb8e96fcbd658ca3962ac6d9e7857b01fcb6d2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 1 May 2023 20:08:31 +0200 Subject: [PATCH 0905/1588] modules: system: nix: add 'cache.selfHosted' --- modules/system/nix/default.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index 5c9dbc8..47d6499 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -22,6 +22,10 @@ in options.my.system.nix = with lib; { enable = my.mkDisableOption "nix configuration"; + cache = { + selfHosted = my.mkDisableOption "self-hosted cache"; + }; + inputs = { link = my.mkDisableOption "link inputs to `/etc/nix/inputs/`"; @@ -56,6 +60,22 @@ in }; } + (lib.mkIf cfg.cache.selfHosted { + nix = { + settings = { + # The NixOS module adds the official Hydra cache by default + # No need to use `extra-*` options. + substituters = [ + "https://cache.belanyi.fr/" + ]; + + trusted-public-keys = [ + "cache.belanyi.fr:LPhrTqufwfxTceg1nRWueDWf7/2zSVY9K00pq2UI7tw=" + ]; + }; + }; + }) + (lib.mkIf cfg.inputs.addToRegistry { nix.registry = let From 29daa555a35f55f96538ed2a670028fc56f3847b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 2 May 2023 21:53:16 +0200 Subject: [PATCH 0906/1588] hosts: nixos: porthos: services: disable quassel I don't use it anymore. --- hosts/nixos/porthos/services.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index d9abc7f..448132c 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -134,8 +134,6 @@ in }; # Regular backups postgresql-backup.enable = true; - # An IRC client daemon - quassel.enable = true; # RSS provider for websites that do not provide any feeds rss-bridge.enable = true; # Usenet client From 6cdbd6bb29c8750a63b0256acaa9bd7d8974f504 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 2 May 2023 21:05:04 +0100 Subject: [PATCH 0907/1588] home: vim: lua: lsp: remove diagnostic on hover --- home/vim/lua/ambroisie/lsp.lua | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index 260ef8d..8d347d3 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -21,17 +21,6 @@ M.on_attach = function(client, bufnr) severity_sort = true, }) - -- Show diagnostics on "hover" - local augroup = vim.api.nvim_create_augroup("DiagnosticsHover", {}) - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd({"CursorHold", "CursorHoldI"}, { - group = augroup, - buffer = bufnr, - callback = function() - vim.diagnostic.open_float(nil, {focus=false, scope="cursor"}) - end, - }) - -- Format on save lsp_format.on_attach(client, bufnr) From b0f054b1e6c97febe49225bfd1efa4fbb68e5634 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 2 May 2023 21:29:49 +0100 Subject: [PATCH 0908/1588] home: vim: configure 'lsp_lines' --- home/vim/lua/ambroisie/lsp.lua | 2 ++ home/vim/plugin/settings/lsp-lines.lua | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 home/vim/plugin/settings/lsp-lines.lua diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index 8d347d3..f935c2f 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -11,6 +11,8 @@ M.on_attach = function(client, bufnr) vim.diagnostic.config({ -- Disable virtual test next to affected regions virtual_text = false, + -- Also disable virtual diagnostics under the affected regions + virtual_lines = false, -- Show diagnostics signs signs = true, -- Underline offending regions diff --git a/home/vim/plugin/settings/lsp-lines.lua b/home/vim/plugin/settings/lsp-lines.lua new file mode 100644 index 0000000..9c79818 --- /dev/null +++ b/home/vim/plugin/settings/lsp-lines.lua @@ -0,0 +1,3 @@ +local lsp_lines = require("lsp_lines") + +lsp_lines.setup() From 7bd2e1504d0bf3fc9c97faa125949c3fd97a61d0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 2 May 2023 21:31:06 +0100 Subject: [PATCH 0909/1588] home: vim: lua: lsp: customize diagnostics display --- home/vim/lua/ambroisie/lsp.lua | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index f935c2f..254d243 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -34,8 +34,32 @@ M.on_attach = function(client, bufnr) utils.dump(vim.lsp.buf.list_workspace_folders()) end - local function show_line_diagnostics() - vim.diagnostic.open_float(nil, { scope="line" }) + local function cycle_diagnostics_display() + -- Cycle from: + -- * nothing displayed + -- * single diagnostic at the end of the line (`virtual_text`) + -- * full diagnostics using virtual text (`virtual_lines`) + local text = vim.diagnostic.config().virtual_text + local lines = vim.diagnostic.config().virtual_lines + + -- Text -> Lines transition + if text then + text = false + lines = true + -- Lines -> Nothing transition + elseif lines then + text = false + lines = false + -- Nothing -> Text transition + else + text = true + lines = false + end + + vim.diagnostic.config({ + virtual_text = text, + virtual_lines = lines, + }) end local function show_buffer_diagnostics() @@ -53,7 +77,7 @@ M.on_attach = function(client, bufnr) ["c"] = { name = "Code", a = { vim.lsp.buf.code_action, "Code actions" }, - d = { show_line_diagnostics, "Show line diagnostics" }, + d = { cycle_diagnostics_display, "Cycle diagnostics display" }, D = { show_buffer_diagnostics, "Show buffer diagnostics" }, r = { vim.lsp.buf.rename, "Rename symbol" }, s = { vim.lsp.buf.signature_help, "Show signature" }, From 0e7c0531f5af35cc964ae375258383cf67ff46e1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 14:37:59 +0000 Subject: [PATCH 0910/1588] lib: string: remove unused 'let' block --- lib/strings.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/strings.nix b/lib/strings.nix index 2a3ec77..a1f74e4 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -1,6 +1,4 @@ { ... }: -let -in { # Make an email address from the name and domain stems # From 6f3594b694c44962627764bd860641e59c57b76d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 14:39:18 +0000 Subject: [PATCH 0911/1588] pkgs: woodpecker: remove unused inputs --- pkgs/woodpecker/agent.nix | 2 +- pkgs/woodpecker/cli.nix | 2 +- pkgs/woodpecker/server.nix | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/woodpecker/agent.nix b/pkgs/woodpecker/agent.nix index 53f49eb..49ff887 100644 --- a/pkgs/woodpecker/agent.nix +++ b/pkgs/woodpecker/agent.nix @@ -1,4 +1,4 @@ -{ lib, buildGoModule, callPackage, fetchFromGitHub, fetchpatch }: +{ buildGoModule, callPackage, fetchpatch }: let common = callPackage ./common.nix { }; in diff --git a/pkgs/woodpecker/cli.nix b/pkgs/woodpecker/cli.nix index 579df10..efe6d5f 100644 --- a/pkgs/woodpecker/cli.nix +++ b/pkgs/woodpecker/cli.nix @@ -1,4 +1,4 @@ -{ lib, buildGoModule, callPackage, fetchFromGitHub }: +{ buildGoModule, callPackage }: let common = callPackage ./common.nix { }; in diff --git a/pkgs/woodpecker/server.nix b/pkgs/woodpecker/server.nix index 0d59a82..fd8415c 100644 --- a/pkgs/woodpecker/server.nix +++ b/pkgs/woodpecker/server.nix @@ -1,4 +1,4 @@ -{ lib, buildGoModule, callPackage, fetchFromGitHub, woodpecker-frontend }: +{ buildGoModule, callPackage, woodpecker-frontend }: let common = callPackage ./common.nix { }; in From debdadbd1a6117ff541993779bf05d95ab34cabf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 14:45:57 +0000 Subject: [PATCH 0912/1588] pkgs: woodpecker: do not name unused argument --- pkgs/woodpecker/frontend.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/woodpecker/frontend.nix b/pkgs/woodpecker/frontend.nix index 478892d..e584549 100644 --- a/pkgs/woodpecker/frontend.nix +++ b/pkgs/woodpecker/frontend.nix @@ -2,7 +2,7 @@ let common = callPackage ./common.nix { }; - esbuild_0_17_12 = buildPackages.esbuild.overrideAttrs (oa: rec { + esbuild_0_17_12 = buildPackages.esbuild.overrideAttrs (_: rec { version = "0.17.12"; src = fetchFromGitHub { From bd6b7ca9e22ba3aaca25c5c8047918c363da7523 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 14:39:58 +0000 Subject: [PATCH 0913/1588] flake: do not use explicit inputs This ends up being more annoying than useful most of the time anyway... Make a note that we can't just eta-reduce the outputs, due to a nix limitation on flake outputs (see [1]). [1]: https://github.com/NixOS/nix/issues/4384 --- flake.nix | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/flake.nix b/flake.nix index b2d1500..30c19b8 100644 --- a/flake.nix +++ b/flake.nix @@ -65,16 +65,6 @@ }; }; - outputs = - inputs @ - { self - , agenix - , flake-parts - , futils - , home-manager - , nixpkgs - , nur - , pre-commit-hooks - }: - import ./flake inputs; + # Can't eta-reduce a flake outputs... + outputs = inputs: import ./flake inputs; } From 49b2cb97819905c517ada172fb5ecacab95edc58 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 14:40:21 +0000 Subject: [PATCH 0914/1588] modules: secrets: remove unused 'options' --- modules/secrets/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/secrets/default.nix b/modules/secrets/default.nix index 3fa78dc..c7d6f65 100644 --- a/modules/secrets/default.nix +++ b/modules/secrets/default.nix @@ -1,4 +1,4 @@ -{ config, inputs, lib, options, ... }: +{ config, inputs, lib, ... }: { imports = [ From 2f3989bba1eafdff41b4417084d80310a0c2f3fc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 14:44:10 +0000 Subject: [PATCH 0915/1588] modules: services: wireguard: simplify --- modules/services/wireguard/default.nix | 59 +++++++++++--------------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/modules/services/wireguard/default.nix b/modules/services/wireguard/default.nix index 8d40fd4..fc5518d 100644 --- a/modules/services/wireguard/default.nix +++ b/modules/services/wireguard/default.nix @@ -8,40 +8,31 @@ let secrets = config.age.secrets; hostName = config.networking.hostName; - peers = - let - mkPeer = name: attrs: { - inherit (attrs) clientNum publicKey; - privateKeyFile = secrets."wireguard/private-key".path; - } // lib.optionalAttrs (attrs ? externalIp) { - inherit (attrs) externalIp; - }; - in - lib.mapAttrs mkPeer { - # "Server" - porthos = { - clientNum = 1; - publicKey = "PLdgsizztddri0LYtjuNHr5r2E8D+yI+gM8cm5WDfHQ="; - externalIp = "91.121.177.163"; - }; - - # "Clients" - aramis = { - clientNum = 2; - publicKey = "QJSWIBS1mXTpxYybLlKu/Y5wy0GFbUfn4yPzpF1DZDc="; - }; - - richelieu = { - clientNum = 3; - publicKey = "w4IADAj2Tt7Qe95a0RxDv9ovg/Dr/f3q1LrVOPF48Rk="; - }; - - # Sarah's iPhone - milady = { - clientNum = 4; - publicKey = "3MKEu4F6o8kww54xeAao5Uet86fv8z/QsZ2L2mOzqDQ="; - }; + peers = { + # "Server" + porthos = { + clientNum = 1; + publicKey = "PLdgsizztddri0LYtjuNHr5r2E8D+yI+gM8cm5WDfHQ="; + externalIp = "91.121.177.163"; }; + + # "Clients" + aramis = { + clientNum = 2; + publicKey = "QJSWIBS1mXTpxYybLlKu/Y5wy0GFbUfn4yPzpF1DZDc="; + }; + + richelieu = { + clientNum = 3; + publicKey = "w4IADAj2Tt7Qe95a0RxDv9ovg/Dr/f3q1LrVOPF48Rk="; + }; + + # Sarah's iPhone + milady = { + clientNum = 4; + publicKey = "3MKEu4F6o8kww54xeAao5Uet86fv8z/QsZ2L2mOzqDQ="; + }; + }; thisPeer = peers."${hostName}"; thisPeerIsServer = thisPeer ? externalIp; # Only connect to clients from server, and only connect to server from clients @@ -60,7 +51,7 @@ let "${v4.subnet}.${toString thisPeer.clientNum}/${toString v4.mask}" "${v6.subnet}::${toString thisPeer.clientNum}/${toHexString v6.mask}" ]; - inherit (thisPeer) privateKeyFile; + privateKeyFile = secrets."wireguard/private-key".path; peers = let From a868088cc95f44426d481b1e2518b3173b998fc2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 14:48:36 +0000 Subject: [PATCH 0916/1588] treewide: rename unused overlay arguments Now that `nix flake check` doesn't complain about it anymore, try to be consistent about using that feature. --- flake/overlays.nix | 4 ++-- lib/default.nix | 2 +- templates/c++-cmake/flake.nix | 2 +- templates/c++-meson/flake.nix | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/flake/overlays.nix b/flake/overlays.nix index 1a5e8ba..0c47989 100644 --- a/flake/overlays.nix +++ b/flake/overlays.nix @@ -4,10 +4,10 @@ let additional-overlays = { # Expose my expanded library - lib = final: prev: { inherit (self) lib; }; + lib = _final: _prev: { inherit (self) lib; }; # Expose my custom packages - pkgs = final: prev: { + pkgs = _final: prev: { ambroisie = prev.recurseIntoAttrs (import "${self}/pkgs" { pkgs = prev; }); }; }; diff --git a/lib/default.nix b/lib/default.nix index 8358d58..894e351 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -15,4 +15,4 @@ let mapModules ./. (file: import file { inherit self lib pkgs inputs; }) ); in -mylib.extend (self: super: foldr (a: b: a // b) { } (attrValues super)) +mylib.extend (_self: super: foldr (a: b: a // b) { } (attrValues super)) diff --git a/templates/c++-cmake/flake.nix b/templates/c++-cmake/flake.nix index c7e2794..cb468e7 100644 --- a/templates/c++-cmake/flake.nix +++ b/templates/c++-cmake/flake.nix @@ -31,7 +31,7 @@ outputs = { self, futils, nixpkgs, pre-commit-hooks }: { overlays = { - default = final: prev: { + default = final: _prev: { project = with final; stdenv.mkDerivation { pname = "project"; version = "0.0.0"; diff --git a/templates/c++-meson/flake.nix b/templates/c++-meson/flake.nix index d62eda2..9cfed0d 100644 --- a/templates/c++-meson/flake.nix +++ b/templates/c++-meson/flake.nix @@ -31,7 +31,7 @@ outputs = { self, futils, nixpkgs, pre-commit-hooks }: { overlays = { - default = final: prev: { + default = final: _prev: { project = with final; stdenv.mkDerivation { pname = "project"; version = "0.0.0"; From dac80373a1b0a3f9c8bd876054454572abc1d48f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 14:52:11 +0000 Subject: [PATCH 0917/1588] flake: nixos: use consistent module formatting --- flake/nixos.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flake/nixos.nix b/flake/nixos.nix index 2d9d18b..9eb6388 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -3,10 +3,10 @@ let inherit (self) lib; defaultModules = [ - ({ ... }: { + { # Let 'nixos-version --json' know about the Git revision system.configurationRevision = self.rev or "dirty"; - }) + } { nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ inputs.nur.overlay From 284b83b896112997564db5718eb93e0984c32a0a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 15:22:41 +0000 Subject: [PATCH 0918/1588] lib: ip: check range in 'nthInRange4' --- lib/ip.nix | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/ip.nix b/lib/ip.nix index 2af3fef..fcafd72 100644 --- a/lib/ip.nix +++ b/lib/ip.nix @@ -100,7 +100,7 @@ rec { # Pretty print a parsed subnet into a human readable form prettySubnet4 = { baseIp, cidr, ... }: "${prettyIp4 baseIp}/${toString cidr}"; - # Get the nth address from an IPv4 range, without checking if it is in range + # Get the nth address from an IPv4 range nthInRange4 = { from, to }: n: let carry = lhs: { carry, acc }: @@ -112,8 +112,15 @@ rec { acc = [ (mod totVal 256) ] ++ acc; }; carried = foldr carry { carry = n; acc = [ ]; } from; + checkInRange = + if (to - from) < n + then + warn '' + nthInRange4: '${n}'-th address outside of range (${prettyIp4 from}, ${prettyIp4 to}) + '' + else id; in - carried.acc; + checkInRange carried.acc; # Convert an IPv4 range into a list of all its constituent addresses rangeIp4 = From c117d1caed4a29e9c181fb5729796987e3059018 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 15:14:24 +0000 Subject: [PATCH 0919/1588] flake: checks: enable 'deadnix' --- flake/checks.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flake/checks.nix b/flake/checks.nix index a9c5af8..970e91d 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -11,6 +11,10 @@ settings = { hooks = { + deadnix = { + enable = true; + }; + nixpkgs-fmt = { enable = true; }; From 4feee73b8e8d0e62f4a06eb9adc65328c032467c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 20:02:34 +0100 Subject: [PATCH 0920/1588] home: vim: set 'splitkeep' --- home/vim/init.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/vim/init.vim b/home/vim/init.vim index bd63d25..ad332d2 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -48,6 +48,8 @@ set noswapfile """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Set the minimal amount of lignes under and above the cursor for context set scrolloff=5 +" More stable splits +set splitkeep=screen " Always show status line set laststatus=2 " Enable Doxygen highlighting From 9f3a8ac2bd7a820fab4ffd2b8a468a68298abb03 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 20:19:17 +0100 Subject: [PATCH 0921/1588] home: zsh: extract aliases It doesn't (yet?) support nushell, if I ever end up switching to it. --- home/aliases/default.nix | 26 ++++++++++++++++++++++++++ home/default.nix | 1 + home/zsh/default.nix | 13 ------------- 3 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 home/aliases/default.nix diff --git a/home/aliases/default.nix b/home/aliases/default.nix new file mode 100644 index 0000000..259f148 --- /dev/null +++ b/home/aliases/default.nix @@ -0,0 +1,26 @@ +{ config, lib, ... }: +let + cfg = config.my.home.aliases; +in +{ + options.my.home.aliases = with lib; { + enable = my.mkDisableOption "shell aliases configuration"; + }; + + config = lib.mkIf cfg.enable { + home = { + shellAliases = { + # I like pretty colors + diff = "diff --color=auto"; + grep = "grep --color=auto"; + egrep = "egrep --color=auto"; + fgrep = "fgrep --color=auto"; + ls = "ls --color=auto"; + + # Well-known ls aliases + l = "ls -alh"; + ll = "ls -l"; + }; + }; + }; +} diff --git a/home/default.nix b/home/default.nix index c851f76..42d365b 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,6 +1,7 @@ { ... }: { imports = [ + ./aliases ./atuin ./bat ./bluetooth diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 994a652..2e645c2 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -88,19 +88,6 @@ in AGKOZAK_LEFT_PROMPT_ONLY = 1; }; - shellAliases = { - # I like pretty colors - diff = "diff --color=auto"; - grep = "grep --color=auto"; - egrep = "egrep --color=auto"; - fgrep = "fgrep --color=auto"; - ls = "ls --color=auto"; - - # Well-known ls aliases - l = "ls -alh"; - ll = "ls -l"; - }; - # Enable VTE integration enableVteIntegration = true; }; From 185b1d5490858eca27eb21cd817a4ef4d903d598 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 16:52:08 +0000 Subject: [PATCH 0922/1588] flake: remove unused 'lib' --- flake/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index 8dd752e..65102e1 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -1,11 +1,8 @@ -{ self -, flake-parts +{ flake-parts , futils , ... } @ inputs: let - inherit (self) lib; - mySystems = futils.lib.defaultSystems; in flake-parts.lib.mkFlake { inherit inputs; } { From 85e31e5d6c0884faf8686b2850c7a2de342ebbd2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 16:52:31 +0000 Subject: [PATCH 0923/1588] home: zsh: remove unused 'with pkgs' --- home/zsh/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/zsh/default.nix b/home/zsh/default.nix index 2e645c2..4cadb57 100644 --- a/home/zsh/default.nix +++ b/home/zsh/default.nix @@ -38,7 +38,7 @@ in path = "${config.xdg.dataHome}/zsh/zsh_history"; }; - plugins = with pkgs; [ + plugins = [ { name = "fast-syntax-highlighting"; file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh"; From 62d9359eb7a15bc685dd4f780a3bfe27422b1d7c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 16:52:56 +0000 Subject: [PATCH 0924/1588] modules: services: matrix: clean-up formatting --- modules/services/matrix/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/services/matrix/default.nix b/modules/services/matrix/default.nix index c581df8..8eb10d7 100644 --- a/modules/services/matrix/default.nix +++ b/modules/services/matrix/default.nix @@ -149,7 +149,7 @@ in }; # same as above, but listening on the federation port - "matrix.${domain}_federation" = rec { + "matrix.${domain}_federation" = { onlySSL = true; serverName = "matrix.${domain}"; useACMEHost = domain; @@ -164,7 +164,6 @@ in { addr = "0.0.0.0"; port = federationPort.public; ssl = true; } { addr = "[::]"; port = federationPort.public; ssl = true; } ]; - }; "${domain}" = { From c19baeb19de6d0c7c0bbf5e35a9fbd57f52f95a4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 16:53:18 +0000 Subject: [PATCH 0925/1588] modules: system: podman: remove unused 'options' --- modules/system/podman/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/podman/default.nix b/modules/system/podman/default.nix index b04c52c..dd1b617 100644 --- a/modules/system/podman/default.nix +++ b/modules/system/podman/default.nix @@ -1,5 +1,5 @@ # Podman related settings -{ config, lib, options, ... }: +{ config, lib, ... }: let cfg = config.my.system.podman; in From beeafe5e33f735148bdf92a25ca87632fe0ea28b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 16:54:23 +0000 Subject: [PATCH 0926/1588] home: nix: remove unused 'options' --- home/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/nix/default.nix b/home/nix/default.nix index d8618e5..9ccbdc5 100644 --- a/home/nix/default.nix +++ b/home/nix/default.nix @@ -1,5 +1,5 @@ # Nix related settings -{ config, inputs, lib, options, pkgs, ... }: +{ config, inputs, lib, pkgs, ... }: let cfg = config.my.home.nix; From b9d611599429047846f4b2e089b5f20163e67f3a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 16:54:53 +0000 Subject: [PATCH 0927/1588] pkgs: unbound-zones-adblock: remove unused 'rec' --- pkgs/unbound-zones-adblock/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index ecec917..824a7d6 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -1,5 +1,5 @@ { lib, gawk, stdenvNoCC, unified-hosts-lists }: -stdenvNoCC.mkDerivation rec { +stdenvNoCC.mkDerivation { name = "unbound-zones-adblock"; version = unified-hosts-lists.version; From 46d9e5c8296431c39e6468a1d74dc74388d0fdef Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 3 May 2023 17:09:14 +0000 Subject: [PATCH 0928/1588] home: vim: lspconfig: add 'nil' --- home/vim/plugin/settings/lspconfig.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.vim index 4fbbb1d..04afafa 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.vim @@ -15,6 +15,13 @@ if utils.is_executable("clangd") then end -- Nix +if utils.is_executable("nil") then + lspconfig.nil_ls.setup({ + capabilities = capabilities, + on_attach = lsp.on_attach, + }) +end + if utils.is_executable("rnix-lsp") then lspconfig.rnix.setup({ capabilities = capabilities, From a1dd0bb792c880573a178ab93e881a1e741b4062 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 4 May 2023 12:19:31 +0000 Subject: [PATCH 0929/1588] modules: services: matrix: remove 'with lib' --- modules/services/matrix/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/services/matrix/default.nix b/modules/services/matrix/default.nix index 8eb10d7..c73afed 100644 --- a/modules/services/matrix/default.nix +++ b/modules/services/matrix/default.nix @@ -7,7 +7,6 @@ # [1]: https://github.com/alarsyo/nixos-config/blob/main/services/matrix.nix { config, lib, pkgs, ... }: -with lib; let cfg = config.my.services.matrix; From d8896a66c8e3e19dd03e6b6177648a62dfeb6158 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 5 May 2023 09:05:48 +0000 Subject: [PATCH 0930/1588] hosts: home: cloudtop: systemd session variable --- hosts/homes/ambroisie@ambroisie/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix index acc5a6f..5a561f7 100644 --- a/hosts/homes/ambroisie@ambroisie/default.nix +++ b/hosts/homes/ambroisie@ambroisie/default.nix @@ -4,8 +4,12 @@ # Google specific configuration home.homeDirectory = "/usr/local/google/home/ambroisie"; + # Some tooling (e.g: SSH) need to use this library home.sessionVariables = { - # Some tooling (e.g: SSH) need to use this library + LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; + }; + + systemd.user.sessionVariables = { LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; }; } From 68b9c3b9b1e12b3b9ab9e2eaf146dca77e886642 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 6 May 2023 19:06:01 +0100 Subject: [PATCH 0931/1588] home: vim: remove 'vim-pandoc' The tree-sitter code-block high-lighting is built-in and works better, and I don't use any of the other features. --- .../ftplugin/{pandoc.vim => markdown.vim} | 0 home/vim/default.nix | 2 -- home/vim/plugin/settings/pandoc.vim | 20 ------------------- 3 files changed, 22 deletions(-) rename home/vim/after/ftplugin/{pandoc.vim => markdown.vim} (100%) delete mode 100644 home/vim/plugin/settings/pandoc.vim diff --git a/home/vim/after/ftplugin/pandoc.vim b/home/vim/after/ftplugin/markdown.vim similarity index 100% rename from home/vim/after/ftplugin/pandoc.vim rename to home/vim/after/ftplugin/markdown.vim diff --git a/home/vim/default.nix b/home/vim/default.nix index 1ac9652..1aad3c1 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -54,8 +54,6 @@ in vim-beancount vim-jsonnet vim-nix - vim-pandoc - vim-pandoc-syntax vim-toml # General enhancements diff --git a/home/vim/plugin/settings/pandoc.vim b/home/vim/plugin/settings/pandoc.vim deleted file mode 100644 index 71b750c..0000000 --- a/home/vim/plugin/settings/pandoc.vim +++ /dev/null @@ -1,20 +0,0 @@ -" Which code-block languages should I expect to be high-lighted. -let g:pandoc#syntax#codeblocks#embeds#langs=[ - \ "bash=sh", - \ "c", - \ "cpp", - \ "go", - \ "haskell", - \ "python", - \ "rust", - \ "sh", - \ "vim", - \ "yaml", - \ "tex", - \ "toml", - \ "perl", - \ "json", - \ "latex=tex", - \ "make", - \ "makefile=make", - \ ] From 36b0c67832b9c1bb72238cb53be2f44ce5a2ceca Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 7 May 2023 13:07:04 +0100 Subject: [PATCH 0932/1588] home: vim: completion: use lua settings --- home/vim/plugin/settings/completion.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.vim index 43f6795..68a5512 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.vim @@ -1,7 +1,7 @@ -" Show completion menu in all cases, and don't select anything -set completeopt=menu,menuone,noselect - lua << EOF +-- Show completion menu in all cases, and don't select anything +vim.opt.completeopt = { "menu", "menuone", "noselect" } + local cmp = require("cmp") local cmp_under_comparator = require("cmp-under-comparator") local luasnip = require("luasnip") From dba88363815b98abbac1bc5fab0c16f1b2d2461a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 6 May 2023 18:17:16 +0100 Subject: [PATCH 0933/1588] home: vim: numbertoggle: use lua autocommands A nice next step would be to use actual lua callbacks instead of the VimL command. --- home/vim/plugin/numbertoggle.vim | 34 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/home/vim/plugin/numbertoggle.vim b/home/vim/plugin/numbertoggle.vim index d9a969d..1b6a585 100644 --- a/home/vim/plugin/numbertoggle.vim +++ b/home/vim/plugin/numbertoggle.vim @@ -1,13 +1,25 @@ -" Idea for toggling taken from jeffkreeftmeijer +lua << EOF +-- Show lines numbers +vim.opt.number = true -" Show line numbers -set number +local numbertoggle = vim.api.nvim_create_augroup("numbertoggle", { clear = true }) -augroup numbertoggle - autocmd! - " Toggle numbers between relative and absolute when changing buffers - autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif - autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif - " Disable line numbers and relative line numbers in terminal - autocmd TermOpen * setlocal nonu nornu -augroup END +-- Toggle numbers between relative and absolute when changing buffers +vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "WinEnter" }, { + pattern = "*", + group = numbertoggle, + command = "if &nu | setlocal rnu | endif", +}) +vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "WinLeave" }, { + pattern = "*", + group = numbertoggle, + command = "if &nu | setlocal nornu | endif", +}) + +-- Never show the sign column in a terminal buffer +vim.api.nvim_create_autocmd({ "TermOpen" }, { + pattern = "*", + group = numbertoggle, + command = "setlocal nonu nornu", +}) +EOF From 39c2e5db8c6f108d0c1c2c93b0afeef475e49343 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 6 May 2023 18:17:16 +0100 Subject: [PATCH 0934/1588] home: vim: signtoggle: use lua autocommands A nice next step would be to use actual lua callbacks instead of the VimL command. --- home/vim/plugin/signtoggle.vim | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/home/vim/plugin/signtoggle.vim b/home/vim/plugin/signtoggle.vim index c2f0183..5cc2e8e 100644 --- a/home/vim/plugin/signtoggle.vim +++ b/home/vim/plugin/signtoggle.vim @@ -1,8 +1,22 @@ -augroup signtoggle - autocmd! - " Only show the sign column for the current focused buffer - autocmd BufEnter,FocusGained,WinEnter * set signcolumn=yes - autocmd BufLeave,FocusLost,WinLeave * set signcolumn=no - " Disable the sign column in terminal - autocmd TermOpen * setlocal signcolumn=no -augroup END +lua << EOF +local signtoggle = vim.api.nvim_create_augroup("signtoggle", { clear = true }) + +-- Only show sign column for the currently focused buffer +vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "WinEnter" }, { + pattern = "*", + group = signtoggle, + command = "setlocal signcolumn=yes", +}) +vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "WinLeave" }, { + pattern = "*", + group = signtoggle, + command = "setlocal signcolumn=yes", +}) + +-- Never show the sign column in a terminal buffer +vim.api.nvim_create_autocmd({ "TermOpen" }, { + pattern = "*", + group = signtoggle, + command = "setlocal signcolumn=no", +}) +EOF From e599a97e453c6272b77c907fa8f7affcf7c18698 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 6 May 2023 18:17:16 +0100 Subject: [PATCH 0935/1588] home: vim: abbreviations: use lua This makes it less repetitive. --- home/vim/plugin/abbreviations.vim | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/home/vim/plugin/abbreviations.vim b/home/vim/plugin/abbreviations.vim index 5d36434..4dd3633 100644 --- a/home/vim/plugin/abbreviations.vim +++ b/home/vim/plugin/abbreviations.vim @@ -1,5 +1,11 @@ -" A few useful sets of abbreviations +lua << EOF +local abbreviations = { + -- A few things that are hard to write in ASCII + ["(R)"] = "©", + ["(TM)"] = "™", +} -" A few things that are hard to write in ASCII -abbreviate (R) © -abbreviate (TM) ™ +for text, result in pairs(abbreviations) do + vim.cmd.abbreviate(text, result) +end +EOF From 9530864b10d52fbe31ba535fad0f921b2e2ad4ca Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 6 May 2023 18:17:16 +0100 Subject: [PATCH 0936/1588] home: vim: fastfold: use lua configuration --- home/vim/plugin/settings/fastfold.vim | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/home/vim/plugin/settings/fastfold.vim b/home/vim/plugin/settings/fastfold.vim index a1f1787..3643e18 100644 --- a/home/vim/plugin/settings/fastfold.vim +++ b/home/vim/plugin/settings/fastfold.vim @@ -1,5 +1,6 @@ -" Intercept all fold commands -let g:fastfold_fold_command_suffixes=[ - \ 'x', 'X', 'a', 'A', 'o', 'O', 'c', 'C', - \ 'r', 'R', 'm', 'M', 'i', 'n', 'N' - \ ] +lua << EOF +-- Intercept all fold commands +vim.g.fastfold_fold_command_suffixes = { + "x", "X", "a", "A", "o", "O", "c", "C", "r", "R", "m", "M", "i", "n", "N", +} +EOF From c2d231d3f1686932bf949c5e9d0e0c01a12a33fa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 7 May 2023 13:10:36 +0100 Subject: [PATCH 0937/1588] home: vim: use actual lua files Since most of the settings are actually just lua in a VimL file. --- .../after/plugin/mappings/{commentary.vim => commentary.lua} | 2 -- home/vim/after/plugin/mappings/{misc.vim => misc.lua} | 2 -- .../vim/after/plugin/mappings/{telescope.vim => telescope.lua} | 3 --- ...tree-sitter-textobjects.vim => tree-sitter-textobjects.lua} | 2 -- .../after/plugin/mappings/{unimpaired.vim => unimpaired.lua} | 2 -- home/vim/plugin/{abbreviations.vim => abbreviations.lua} | 2 -- home/vim/plugin/{numbertoggle.vim => numbertoggle.lua} | 2 -- home/vim/plugin/settings/{completion.vim => completion.lua} | 2 -- home/vim/plugin/settings/{dressing.vim => dressing.lua} | 2 -- home/vim/plugin/settings/{fastfold.vim => fastfold.lua} | 2 -- home/vim/plugin/settings/{git.vim => git.lua} | 2 -- home/vim/plugin/settings/{lspconfig.vim => lspconfig.lua} | 2 -- home/vim/plugin/settings/{lualine.vim => lualine.lua} | 2 -- home/vim/plugin/settings/{luasnip.vim => luasnip.lua} | 2 -- home/vim/plugin/settings/{null-ls.vim => null-ls.lua} | 2 -- home/vim/plugin/settings/{surround.vim => surround.lua} | 2 -- home/vim/plugin/settings/{telescope.vim => telescope.lua} | 2 -- home/vim/plugin/settings/{tree-sitter.vim => tree-sitter.lua} | 2 -- home/vim/plugin/settings/{which-key.vim => which-key.lua} | 2 -- home/vim/plugin/{signtoggle.vim => signtoggle.lua} | 2 -- 20 files changed, 41 deletions(-) rename home/vim/after/plugin/mappings/{commentary.vim => commentary.lua} (94%) rename home/vim/after/plugin/mappings/{misc.vim => misc.lua} (91%) rename home/vim/after/plugin/mappings/{telescope.vim => telescope.lua} (96%) rename home/vim/after/plugin/mappings/{tree-sitter-textobjects.vim => tree-sitter-textobjects.lua} (98%) rename home/vim/after/plugin/mappings/{unimpaired.vim => unimpaired.lua} (99%) rename home/vim/plugin/{abbreviations.vim => abbreviations.lua} (93%) rename home/vim/plugin/{numbertoggle.vim => numbertoggle.lua} (98%) rename home/vim/plugin/settings/{completion.vim => completion.lua} (99%) rename home/vim/plugin/settings/{dressing.vim => dressing.lua} (88%) rename home/vim/plugin/settings/{fastfold.vim => fastfold.lua} (91%) rename home/vim/plugin/settings/{git.vim => git.lua} (99%) rename home/vim/plugin/settings/{lspconfig.vim => lspconfig.lua} (98%) rename home/vim/plugin/settings/{lualine.vim => lualine.lua} (98%) rename home/vim/plugin/settings/{luasnip.vim => luasnip.lua} (77%) rename home/vim/plugin/settings/{null-ls.vim => null-ls.lua} (99%) rename home/vim/plugin/settings/{surround.vim => surround.lua} (83%) rename home/vim/plugin/settings/{telescope.vim => telescope.lua} (97%) rename home/vim/plugin/settings/{tree-sitter.vim => tree-sitter.lua} (99%) rename home/vim/plugin/settings/{which-key.vim => which-key.lua} (74%) rename home/vim/plugin/{signtoggle.vim => signtoggle.lua} (97%) diff --git a/home/vim/after/plugin/mappings/commentary.vim b/home/vim/after/plugin/mappings/commentary.lua similarity index 94% rename from home/vim/after/plugin/mappings/commentary.vim rename to home/vim/after/plugin/mappings/commentary.lua index 219d661..6ed3b89 100644 --- a/home/vim/after/plugin/mappings/commentary.vim +++ b/home/vim/after/plugin/mappings/commentary.lua @@ -1,4 +1,3 @@ -lua << EOF local wk = require("which-key") local keys = { @@ -9,4 +8,3 @@ local keys = { } wk.register(keys, { prefix = "gc" }) -EOF diff --git a/home/vim/after/plugin/mappings/misc.vim b/home/vim/after/plugin/mappings/misc.lua similarity index 91% rename from home/vim/after/plugin/mappings/misc.vim rename to home/vim/after/plugin/mappings/misc.lua index c7fcc8a..6aa25a2 100644 --- a/home/vim/after/plugin/mappings/misc.vim +++ b/home/vim/after/plugin/mappings/misc.lua @@ -1,4 +1,3 @@ -lua << EOF local wk = require("which-key") local keys = { @@ -6,4 +5,3 @@ local keys = { } wk.register(keys, { prefix = "" }) -EOF diff --git a/home/vim/after/plugin/mappings/telescope.vim b/home/vim/after/plugin/mappings/telescope.lua similarity index 96% rename from home/vim/after/plugin/mappings/telescope.vim rename to home/vim/after/plugin/mappings/telescope.lua index eb6363d..0867b36 100644 --- a/home/vim/after/plugin/mappings/telescope.vim +++ b/home/vim/after/plugin/mappings/telescope.lua @@ -1,4 +1,3 @@ -lua << EOF local wk = require("which-key") local telescope_builtin = require("telescope.builtin") @@ -14,5 +13,3 @@ local keys = { } wk.register(keys, { prefix = "" }) -EOF - diff --git a/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim b/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua similarity index 98% rename from home/vim/after/plugin/mappings/tree-sitter-textobjects.vim rename to home/vim/after/plugin/mappings/tree-sitter-textobjects.lua index 9cabd91..631731c 100644 --- a/home/vim/after/plugin/mappings/tree-sitter-textobjects.vim +++ b/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua @@ -1,4 +1,3 @@ -lua << EOF local wk = require("which-key") local motions = { @@ -29,4 +28,3 @@ local objects = { wk.register(motions, { mode = "n" }) wk.register(objects, { mode = "o" }) -EOF diff --git a/home/vim/after/plugin/mappings/unimpaired.vim b/home/vim/after/plugin/mappings/unimpaired.lua similarity index 99% rename from home/vim/after/plugin/mappings/unimpaired.vim rename to home/vim/after/plugin/mappings/unimpaired.lua index 12029cc..c1b1d15 100644 --- a/home/vim/after/plugin/mappings/unimpaired.vim +++ b/home/vim/after/plugin/mappings/unimpaired.lua @@ -1,4 +1,3 @@ -lua << EOF local wk = require("which-key") local keys = { @@ -125,4 +124,3 @@ local keys = { } wk.register(keys) -EOF diff --git a/home/vim/plugin/abbreviations.vim b/home/vim/plugin/abbreviations.lua similarity index 93% rename from home/vim/plugin/abbreviations.vim rename to home/vim/plugin/abbreviations.lua index 4dd3633..f6d6ac3 100644 --- a/home/vim/plugin/abbreviations.vim +++ b/home/vim/plugin/abbreviations.lua @@ -1,4 +1,3 @@ -lua << EOF local abbreviations = { -- A few things that are hard to write in ASCII ["(R)"] = "©", @@ -8,4 +7,3 @@ local abbreviations = { for text, result in pairs(abbreviations) do vim.cmd.abbreviate(text, result) end -EOF diff --git a/home/vim/plugin/numbertoggle.vim b/home/vim/plugin/numbertoggle.lua similarity index 98% rename from home/vim/plugin/numbertoggle.vim rename to home/vim/plugin/numbertoggle.lua index 1b6a585..1f97fc8 100644 --- a/home/vim/plugin/numbertoggle.vim +++ b/home/vim/plugin/numbertoggle.lua @@ -1,4 +1,3 @@ -lua << EOF -- Show lines numbers vim.opt.number = true @@ -22,4 +21,3 @@ vim.api.nvim_create_autocmd({ "TermOpen" }, { group = numbertoggle, command = "setlocal nonu nornu", }) -EOF diff --git a/home/vim/plugin/settings/completion.vim b/home/vim/plugin/settings/completion.lua similarity index 99% rename from home/vim/plugin/settings/completion.vim rename to home/vim/plugin/settings/completion.lua index 68a5512..b5c80d3 100644 --- a/home/vim/plugin/settings/completion.vim +++ b/home/vim/plugin/settings/completion.lua @@ -1,4 +1,3 @@ -lua << EOF -- Show completion menu in all cases, and don't select anything vim.opt.completeopt = { "menu", "menuone", "noselect" } @@ -61,4 +60,3 @@ cmp.setup({ ghost_text = true, }, }) -EOF diff --git a/home/vim/plugin/settings/dressing.vim b/home/vim/plugin/settings/dressing.lua similarity index 88% rename from home/vim/plugin/settings/dressing.vim rename to home/vim/plugin/settings/dressing.lua index 9508126..3928a59 100644 --- a/home/vim/plugin/settings/dressing.vim +++ b/home/vim/plugin/settings/dressing.lua @@ -1,8 +1,6 @@ -lua << EOF local dressing = require("dressing") dressing.setup({ -- Use a relative prompt size prefer_width = 0.4, }) -EOF diff --git a/home/vim/plugin/settings/fastfold.vim b/home/vim/plugin/settings/fastfold.lua similarity index 91% rename from home/vim/plugin/settings/fastfold.vim rename to home/vim/plugin/settings/fastfold.lua index 3643e18..ac08519 100644 --- a/home/vim/plugin/settings/fastfold.vim +++ b/home/vim/plugin/settings/fastfold.lua @@ -1,6 +1,4 @@ -lua << EOF -- Intercept all fold commands vim.g.fastfold_fold_command_suffixes = { "x", "X", "a", "A", "o", "O", "c", "C", "r", "R", "m", "M", "i", "n", "N", } -EOF diff --git a/home/vim/plugin/settings/git.vim b/home/vim/plugin/settings/git.lua similarity index 99% rename from home/vim/plugin/settings/git.vim rename to home/vim/plugin/settings/git.lua index e67197f..bb9b516 100644 --- a/home/vim/plugin/settings/git.vim +++ b/home/vim/plugin/settings/git.lua @@ -1,4 +1,3 @@ -lua << EOF local gitsigns = require('gitsigns') local wk = require("which-key") @@ -57,4 +56,3 @@ local visual = { wk.register(keys, { buffer = bufnr }) wk.register(objects, { buffer = bufnr, mode = "o" }) wk.register(visual, { buffer = bufnr, mode = "x" }) -EOF diff --git a/home/vim/plugin/settings/lspconfig.vim b/home/vim/plugin/settings/lspconfig.lua similarity index 98% rename from home/vim/plugin/settings/lspconfig.vim rename to home/vim/plugin/settings/lspconfig.lua index 04afafa..45be269 100644 --- a/home/vim/plugin/settings/lspconfig.vim +++ b/home/vim/plugin/settings/lspconfig.lua @@ -1,4 +1,3 @@ -lua << EOF local lspconfig = require("lspconfig") local lsp = require("ambroisie.lsp") local utils = require("ambroisie.utils") @@ -44,4 +43,3 @@ if utils.is_executable("rust-analyzer") then on_attach = lsp.on_attach, }) end -EOF diff --git a/home/vim/plugin/settings/lualine.vim b/home/vim/plugin/settings/lualine.lua similarity index 98% rename from home/vim/plugin/settings/lualine.vim rename to home/vim/plugin/settings/lualine.lua index 93c38bb..fdaccda 100644 --- a/home/vim/plugin/settings/lualine.vim +++ b/home/vim/plugin/settings/lualine.lua @@ -1,4 +1,3 @@ -lua << EOF local lualine = require("lualine") local utils = require("ambroisie.utils") @@ -60,4 +59,3 @@ lualine.setup({ "quickfix", }, }) -EOF diff --git a/home/vim/plugin/settings/luasnip.vim b/home/vim/plugin/settings/luasnip.lua similarity index 77% rename from home/vim/plugin/settings/luasnip.vim rename to home/vim/plugin/settings/luasnip.lua index 7d81a11..80309d7 100644 --- a/home/vim/plugin/settings/luasnip.vim +++ b/home/vim/plugin/settings/luasnip.lua @@ -1,3 +1 @@ -lua << EOF require("luasnip.loaders.from_vscode").lazy_load() -EOF diff --git a/home/vim/plugin/settings/null-ls.vim b/home/vim/plugin/settings/null-ls.lua similarity index 99% rename from home/vim/plugin/settings/null-ls.vim rename to home/vim/plugin/settings/null-ls.lua index b2102bd..16e52ff 100644 --- a/home/vim/plugin/settings/null-ls.vim +++ b/home/vim/plugin/settings/null-ls.lua @@ -1,4 +1,3 @@ -lua << EOF local null_ls = require("null-ls") local lsp = require("ambroisie.lsp") local utils = require("ambroisie.utils") @@ -122,4 +121,3 @@ null_ls.register({ condition = utils.is_executable_condition("shfmt"), }), }) -EOF diff --git a/home/vim/plugin/settings/surround.vim b/home/vim/plugin/settings/surround.lua similarity index 83% rename from home/vim/plugin/settings/surround.vim rename to home/vim/plugin/settings/surround.lua index e5eb81b..3585a12 100644 --- a/home/vim/plugin/settings/surround.vim +++ b/home/vim/plugin/settings/surround.lua @@ -1,5 +1,3 @@ -lua << EOF require("nvim-surround").setup({ -- No configuration at the moment }) -EOF diff --git a/home/vim/plugin/settings/telescope.vim b/home/vim/plugin/settings/telescope.lua similarity index 97% rename from home/vim/plugin/settings/telescope.vim rename to home/vim/plugin/settings/telescope.lua index fc2c5fb..c87907e 100644 --- a/home/vim/plugin/settings/telescope.vim +++ b/home/vim/plugin/settings/telescope.lua @@ -1,4 +1,3 @@ -lua << EOF local telescope = require("telescope") telescope.setup({ @@ -23,4 +22,3 @@ telescope.setup({ telescope.load_extension("fzf") telescope.load_extension("lsp_handlers") -EOF diff --git a/home/vim/plugin/settings/tree-sitter.vim b/home/vim/plugin/settings/tree-sitter.lua similarity index 99% rename from home/vim/plugin/settings/tree-sitter.vim rename to home/vim/plugin/settings/tree-sitter.lua index 1204185..0d84abd 100644 --- a/home/vim/plugin/settings/tree-sitter.vim +++ b/home/vim/plugin/settings/tree-sitter.lua @@ -1,4 +1,3 @@ -lua << EOF local ts_config = require("nvim-treesitter.configs") ts_config.setup({ highlight = { @@ -55,4 +54,3 @@ ts_config.setup({ }, }, }) -EOF diff --git a/home/vim/plugin/settings/which-key.vim b/home/vim/plugin/settings/which-key.lua similarity index 74% rename from home/vim/plugin/settings/which-key.vim rename to home/vim/plugin/settings/which-key.lua index 505bdc4..2edfd70 100644 --- a/home/vim/plugin/settings/which-key.vim +++ b/home/vim/plugin/settings/which-key.lua @@ -1,4 +1,2 @@ -lua << EOF local wk = require("which-key") wk.setup() -EOF diff --git a/home/vim/plugin/signtoggle.vim b/home/vim/plugin/signtoggle.lua similarity index 97% rename from home/vim/plugin/signtoggle.vim rename to home/vim/plugin/signtoggle.lua index 5cc2e8e..d6a26e2 100644 --- a/home/vim/plugin/signtoggle.vim +++ b/home/vim/plugin/signtoggle.lua @@ -1,4 +1,3 @@ -lua << EOF local signtoggle = vim.api.nvim_create_augroup("signtoggle", { clear = true }) -- Only show sign column for the currently focused buffer @@ -19,4 +18,3 @@ vim.api.nvim_create_autocmd({ "TermOpen" }, { group = signtoggle, command = "setlocal signcolumn=no", }) -EOF From 1e9f6fe957a2f90908abd014911fedcaa99a7e07 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 6 May 2023 18:58:30 +0100 Subject: [PATCH 0938/1588] home: vim: fix lua formatting --- home/vim/after/plugin/mappings/unimpaired.lua | 4 ++-- home/vim/lua/ambroisie/lsp.lua | 5 ++--- home/vim/lua/ambroisie/utils.lua | 4 +++- home/vim/plugin/settings/completion.lua | 2 +- home/vim/plugin/settings/fastfold.lua | 1 + home/vim/plugin/settings/git.lua | 4 ++-- home/vim/plugin/settings/null-ls.lua | 3 +-- home/vim/plugin/settings/ssh.lua | 10 +++++----- home/vim/plugin/settings/telescope.lua | 4 ++-- 9 files changed, 19 insertions(+), 18 deletions(-) diff --git a/home/vim/after/plugin/mappings/unimpaired.lua b/home/vim/after/plugin/mappings/unimpaired.lua index c1b1d15..f39a8c0 100644 --- a/home/vim/after/plugin/mappings/unimpaired.lua +++ b/home/vim/after/plugin/mappings/unimpaired.lua @@ -30,7 +30,7 @@ local keys = { x = "XML encode", y = "C string encode", -- Custom - d = { vim.diagnostic.goto_prev, "Previous diagnostic" } + d = { vim.diagnostic.goto_prev, "Previous diagnostic" }, }, ["]"] = { name = "Next", @@ -60,7 +60,7 @@ local keys = { x = "XML decode", y = "C string decode", -- Custom - d = { vim.diagnostic.goto_next, "Next diagnostic" } + d = { vim.diagnostic.goto_next, "Next diagnostic" }, }, -- Option mappings diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index 254d243..b682d27 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -39,7 +39,7 @@ M.on_attach = function(client, bufnr) -- * nothing displayed -- * single diagnostic at the end of the line (`virtual_text`) -- * full diagnostics using virtual text (`virtual_lines`) - local text = vim.diagnostic.config().virtual_text + local text = vim.diagnostic.config().virtual_text local lines = vim.diagnostic.config().virtual_lines -- Text -> Lines transition @@ -63,7 +63,7 @@ M.on_attach = function(client, bufnr) end local function show_buffer_diagnostics() - vim.diagnostic.open_float(nil, { scope="buffer" }) + vim.diagnostic.open_float(nil, { scope = "buffer" }) end local keys = { @@ -94,5 +94,4 @@ M.on_attach = function(client, bufnr) wk.register(keys, { buffer = bufnr }) end - return M diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index ca6de28..984c730 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -17,7 +17,9 @@ end ---@param cmd string? command to check ---@return fun(cmd: string): boolean executable M.is_executable_condition = function(cmd) - return function() return M.is_executable(cmd) end + return function() + return M.is_executable(cmd) + end end -- whether or not we are currently in an SSH connection diff --git a/home/vim/plugin/settings/completion.lua b/home/vim/plugin/settings/completion.lua index b5c80d3..2d150e8 100644 --- a/home/vim/plugin/settings/completion.lua +++ b/home/vim/plugin/settings/completion.lua @@ -28,7 +28,7 @@ cmp.setup({ end, [""] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }), [""] = cmp.mapping(cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), { "i", "c" }), - [""] = cmp.mapping.scroll_docs(-5), + [""] = cmp.mapping.scroll_docs(-5), [""] = cmp.mapping.scroll_docs(5), [""] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = false }), [""] = cmp.mapping.abort(), diff --git a/home/vim/plugin/settings/fastfold.lua b/home/vim/plugin/settings/fastfold.lua index ac08519..78ee937 100644 --- a/home/vim/plugin/settings/fastfold.lua +++ b/home/vim/plugin/settings/fastfold.lua @@ -1,4 +1,5 @@ -- Intercept all fold commands +-- stylua: ignore vim.g.fastfold_fold_command_suffixes = { "x", "X", "a", "A", "o", "O", "c", "C", "r", "R", "m", "M", "i", "n", "N", } diff --git a/home/vim/plugin/settings/git.lua b/home/vim/plugin/settings/git.lua index bb9b516..4dbebca 100644 --- a/home/vim/plugin/settings/git.lua +++ b/home/vim/plugin/settings/git.lua @@ -1,4 +1,4 @@ -local gitsigns = require('gitsigns') +local gitsigns = require("gitsigns") local wk = require("which-key") gitsigns.setup({ @@ -13,13 +13,13 @@ local keys = { ["[c"] = { "&diff ? '[c' : 'Gitsigns prev_hunk'", "Previous hunk/diff", expr = true }, ["]c"] = { "&diff ? ']c' : 'Gitsigns next_hunk'", "Next hunk/diff", expr = true }, - -- Commands ["g"] = { name = "Git", -- Actions b = { gitsigns.toggle_current_line_blame, "Toggle blame virtual text" }, d = { gitsigns.diffthis, "Diff buffer" }, + -- stylua: ignore D = { function() gitsigns.diffthis("~") end, "Diff buffer against last commit" }, g = { "Git", "Git status" }, h = { gitsigns.toggle_deleted, "Show deleted hunks" }, diff --git a/home/vim/plugin/settings/null-ls.lua b/home/vim/plugin/settings/null-ls.lua index 16e52ff..8446683 100644 --- a/home/vim/plugin/settings/null-ls.lua +++ b/home/vim/plugin/settings/null-ls.lua @@ -65,7 +65,6 @@ null_ls.register({ }), }) - -- Shell (non-POSIX) null_ls.register({ null_ls.builtins.code_actions.shellcheck.with({ @@ -98,7 +97,7 @@ null_ls.register({ -- Shell (POSIX) null_ls.register({ null_ls.builtins.code_actions.shellcheck.with({ - -- Restrict to POSIX sh + -- Restrict to POSIX sh filetypes = { "sh" }, -- Only used if available condition = utils.is_executable_condition("shellcheck"), diff --git a/home/vim/plugin/settings/ssh.lua b/home/vim/plugin/settings/ssh.lua index 3af7b61..992a707 100644 --- a/home/vim/plugin/settings/ssh.lua +++ b/home/vim/plugin/settings/ssh.lua @@ -3,15 +3,15 @@ if not require("ambroisie.utils").is_ssh() then end local function copy(lines, _) - require('osc52').copy(table.concat(lines, '\n')) + require("osc52").copy(table.concat(lines, "\n")) end local function paste() - return {vim.fn.split(vim.fn.getreg(''), '\n'), vim.fn.getregtype('')} + return { vim.fn.split(vim.fn.getreg(""), "\n"), vim.fn.getregtype("") } end vim.g.clipboard = { - name = 'osc52', - copy = {['+'] = copy, ['*'] = copy}, - paste = {['+'] = paste, ['*'] = paste}, + name = "osc52", + copy = { ["+"] = copy, ["*"] = copy }, + paste = { ["+"] = paste, ["*"] = paste }, } diff --git a/home/vim/plugin/settings/telescope.lua b/home/vim/plugin/settings/telescope.lua index c87907e..4548ec5 100644 --- a/home/vim/plugin/settings/telescope.lua +++ b/home/vim/plugin/settings/telescope.lua @@ -7,8 +7,8 @@ telescope.setup({ [""] = "which_key", -- I want the normal readline mappings rather than scrolling [""] = false, - } - } + }, + }, }, extensions = { fzf = { From 78c524e19daabcb07e834a4bca6afa670fdfd3de Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 6 May 2023 19:00:26 +0100 Subject: [PATCH 0939/1588] project: add stylua configuration --- .stylua.toml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .stylua.toml diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..394e884 --- /dev/null +++ b/.stylua.toml @@ -0,0 +1 @@ +indent_type = "Spaces" From b86d963a923b21b3b925eb403798df29ffdf4a34 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 6 May 2023 19:01:25 +0100 Subject: [PATCH 0940/1588] flake: checks: enable 'stylua' --- flake/checks.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flake/checks.nix b/flake/checks.nix index 970e91d..98e49bd 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -22,6 +22,10 @@ shellcheck = { enable = true; }; + + stylua = { + enable = true; + }; }; }; }; From 574634b64e19e3bbb8aad320031db4a243318a65 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 7 May 2023 15:20:12 +0100 Subject: [PATCH 0941/1588] modules: services: blog: use 302 redirection That way the browser doesn't cache it, in case I do end up using that domain after all. --- modules/services/blog/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/blog/default.nix b/modules/services/blog/default.nix index 3d3fbdb..4b646c3 100644 --- a/modules/services/blog/default.nix +++ b/modules/services/blog/default.nix @@ -36,7 +36,7 @@ in useACMEHost = domain; default = true; - locations."/".return = "301 https://belanyi.fr$request_uri"; + locations."/".return = "302 https://belanyi.fr$request_uri"; }; }; From 0b64c9caa73e09e439d85be5d9af02811457b10d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 8 May 2023 17:59:42 +0100 Subject: [PATCH 0942/1588] hosts: nixos: porthos: services: disable grocy --- hosts/nixos/porthos/services.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 448132c..e0a1731 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -52,10 +52,6 @@ in passwordFile = secrets."gitea/mail-password".path; }; }; - # Grocy ERP - grocy = { - enable = true; - }; # Meta-indexers indexers = { prowlarr.enable = true; From 102dc4cc7651790208bfd9cf11fc5153a0a19fed Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 9 May 2023 20:22:12 +0100 Subject: [PATCH 0943/1588] home: vim: null-ls: restrict POSIX to bare 'sh' --- home/vim/plugin/settings/null-ls.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/vim/plugin/settings/null-ls.lua b/home/vim/plugin/settings/null-ls.lua index 8446683..af6d629 100644 --- a/home/vim/plugin/settings/null-ls.lua +++ b/home/vim/plugin/settings/null-ls.lua @@ -116,6 +116,8 @@ null_ls.register({ -- Indent with 4 spaces, simplify the code, indent switch cases, -- add space after redirection, use POSIX extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "posix" }, + -- Restrict to POSIX sh + filetypes = { "sh" }, -- Only used if available condition = utils.is_executable_condition("shfmt"), }), From 8a78ce85203a7a1c325c06e372e00f857e9175f2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 9 May 2023 20:22:29 +0100 Subject: [PATCH 0944/1588] home: vim: null-ls: add 'buildifier' configuration --- home/vim/plugin/settings/null-ls.lua | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/home/vim/plugin/settings/null-ls.lua b/home/vim/plugin/settings/null-ls.lua index af6d629..f3cb9ce 100644 --- a/home/vim/plugin/settings/null-ls.lua +++ b/home/vim/plugin/settings/null-ls.lua @@ -6,6 +6,18 @@ null_ls.setup({ on_attach = lsp.on_attach, }) +-- Bazel +null_ls.register({ + null_ls.builtins.diagnostics.buildifier.with({ + -- Only used if available + condition = utils.is_executable_condition("buildifier"), + }), + null_ls.builtins.formatting.buildifier.with({ + -- Only used if available + condition = utils.is_executable_condition("buildifier"), + }), +}) + -- C, C++ null_ls.register({ null_ls.builtins.formatting.clang_format.with({ From 01059616bf876db7a8f25900a1032386047eb04b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 9 May 2023 20:24:49 +0100 Subject: [PATCH 0945/1588] home: vim: don't use 'nixpkgs-fmt' with 'nil' --- home/vim/plugin/settings/null-ls.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/vim/plugin/settings/null-ls.lua b/home/vim/plugin/settings/null-ls.lua index f3cb9ce..0eaa55c 100644 --- a/home/vim/plugin/settings/null-ls.lua +++ b/home/vim/plugin/settings/null-ls.lua @@ -41,7 +41,9 @@ null_ls.register({ null_ls.builtins.formatting.nixpkgs_fmt.with({ -- Only used if available, but prefer rnix if available condition = function() - return utils.is_executable("nixpkgs-fmt") and not utils.is_executable("rnix-lsp") + return utils.is_executable("nixpkgs-fmt") + and not utils.is_executable("rnix-lsp") + and not utils.is_executable("nil") end, }), }) From c8019f84bb010c5eeeeacab82923fba278356be7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 9 May 2023 15:18:35 +0000 Subject: [PATCH 0946/1588] pkgs: wifi-qr: fix icon handling --- pkgs/wifi-qr/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/wifi-qr/default.nix b/pkgs/wifi-qr/default.nix index 540ae20..c68eceb 100644 --- a/pkgs/wifi-qr/default.nix +++ b/pkgs/wifi-qr/default.nix @@ -37,7 +37,7 @@ stdenvNoCC.mkDerivation rec { --replace "Exec=sh -c 'wifi-qr q'" "Exec=$out/bin/wifi-qr q" \ --replace "Exec=sh -c 'wifi-qr p'" "Exec=$out/bin/wifi-qr p" \ --replace "Exec=sh -c 'wifi-qr c'" "Exec=$out/bin/wifi-qr c" \ - --replace "Icon=wifi-qr.svg" "Icon=$out/share/applications/wifi-qr.svg" + --replace "Icon=wifi-qr.svg" "Icon=wifi-qr" ''; installPhase = '' @@ -46,7 +46,7 @@ stdenvNoCC.mkDerivation rec { install -Dm755 wifi-qr $out/bin/wifi-qr install -Dm644 wifi-qr.desktop $out/share/applications/wifi-qr.desktop - install -Dm644 wifi-qr.svg $out/share/applications/wifi-qr.svg + install -Dm644 wifi-qr.svg $out/share/icons/hicolor/scalable/apps/wifi-qr.svg installManPage wifi-qr.1 From d60e26c617d48928e6af8cd31519ea50298b3a44 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 May 2023 10:10:33 +0000 Subject: [PATCH 0947/1588] flake: bump inputs --- flake.lock | 33 ++++++++++++++++++--------------- flake.nix | 1 + 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index c20ac7d..cf667c4 100644 --- a/flake.lock +++ b/flake.lock @@ -3,16 +3,19 @@ "agenix": { "inputs": { "darwin": "darwin", + "home-manager": [ + "home-manager" + ], "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1682101079, - "narHash": "sha256-MdAhtjrLKnk2uiqun1FWABbKpLH090oeqCSiWemtuck=", + "lastModified": 1683866323, + "narHash": "sha256-M2bEuh2jr0Ec13GnP5f8unD8q0AcPt2fHSUynOZJ8No=", "owner": "ryantm", "repo": "agenix", - "rev": "2994d002dcff5353ca1ac48ec584c7f6589fe447", + "rev": "92197270a1eedd142a4aff853e4cc6d1e838c22f", "type": "github" }, "original": { @@ -67,11 +70,11 @@ ] }, "locked": { - "lastModified": 1680392223, - "narHash": "sha256-n3g7QFr85lDODKt250rkZj2IFS3i4/8HBU2yKHO3tqw=", + "lastModified": 1683560683, + "narHash": "sha256-XAygPMN5Xnk/W2c1aW0jyEa6lfMDZWlQgiNtmHXytPc=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "dcc36e45d054d7bb554c9cdab69093debd91a0b5", + "rev": "006c75898cf814ef9497252b022e91c946ba8e17", "type": "github" }, "original": { @@ -128,11 +131,11 @@ ] }, "locked": { - "lastModified": 1682779989, - "narHash": "sha256-H8AjcIBYFYrlRobYJ+n1B+ZJ6TsaaeZpuLn4iRqVvr4=", + "lastModified": 1683883222, + "narHash": "sha256-Tow+8GKwNNk2NvXoBwS/VBP8lpOdqIeeJ46ZU2fw5QU=", "owner": "nix-community", "repo": "home-manager", - "rev": "3144311f31194b537808ae6848f86f3dbf977d59", + "rev": "a835096fd2bcc369f57b76b9b17cc00348f595f5", "type": "github" }, "original": { @@ -144,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1682879489, - "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "lastModified": 1683408522, + "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7", "type": "github" }, "original": { @@ -160,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1682945906, - "narHash": "sha256-45tSf14pbq3AZSUpdos7dod4zGGxONE2MMPr8K7Ni/4=", + "lastModified": 1683884754, + "narHash": "sha256-o3JF2SZJIwnz2YXwS0tb+CZqfXTABZDTdCjOG6fahIA=", "owner": "nix-community", "repo": "NUR", - "rev": "6e170eea820a3b7c28df56c99bb0d4be95b46dab", + "rev": "ee3497fa69c9c48ec7e4c0ffc1610ea543497633", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 30c19b8..8e46ea3 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,7 @@ repo = "agenix"; ref = "main"; inputs = { + home-manager.follows = "home-manager"; nixpkgs.follows = "nixpkgs"; }; }; From f3e888dadc955d1bf28937acea03ea29b0552c03 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 May 2023 11:03:46 +0000 Subject: [PATCH 0948/1588] home: add secrets Now that my module has been merged upstream! Not that I have anything to use it with for now... --- home/default.nix | 1 + home/secrets/default.nix | 25 +++++++++++++++++++++++++ home/secrets/secrets.nix | 10 ++++++++++ 3 files changed, 36 insertions(+) create mode 100644 home/secrets/default.nix create mode 100644 home/secrets/secrets.nix diff --git a/home/default.nix b/home/default.nix index 42d365b..8af9240 100644 --- a/home/default.nix +++ b/home/default.nix @@ -29,6 +29,7 @@ ./packages ./pager ./power-alert + ./secrets ./ssh ./terminal ./tmux diff --git a/home/secrets/default.nix b/home/secrets/default.nix new file mode 100644 index 0000000..7c0c0a1 --- /dev/null +++ b/home/secrets/default.nix @@ -0,0 +1,25 @@ +{ config, inputs, lib, options, ... }: + +{ + imports = [ + inputs.agenix.homeManagerModules.age + ]; + + config.age = { + secrets = + let + toName = lib.removeSuffix ".age"; + toSecret = name: { ... }: { + file = ./. + "/${name}"; + }; + convertSecrets = n: v: lib.nameValuePair (toName n) (toSecret n v); + secrets = import ./secrets.nix; + in + lib.mapAttrs' convertSecrets secrets; + + # Add my usual agenix key to the defaults + identityPaths = options.age.identityPaths.default ++ [ + "${config.home.homeDirectory}/.ssh/agenix" + ]; + }; +} diff --git a/home/secrets/secrets.nix b/home/secrets/secrets.nix new file mode 100644 index 0000000..eb9745f --- /dev/null +++ b/home/secrets/secrets.nix @@ -0,0 +1,10 @@ +# Common secrets +let + keys = import ../../keys; + + # deadnix: skip + all = keys.users; +in +{ + # Add secrets here +} From 527a85bf11c040b2748bf627001b3f62a5c19482 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 7 May 2023 21:17:17 +0100 Subject: [PATCH 0949/1588] home: vim: ftdetect: switch to lua It looks like `vim.filetype.add` is smarter about "local.am". For some reason opening an *empty* Tiger file results in a backtrace... --- home/vim/ftdetect/automake.lua | 6 ++++++ home/vim/ftdetect/automake.vim | 2 -- home/vim/ftdetect/direnv.lua | 6 ++++++ home/vim/ftdetect/direnv.vim | 2 -- home/vim/ftdetect/tiger.lua | 7 +++++++ home/vim/ftdetect/tiger.vim | 3 --- home/vim/ftdetect/tikz.lua | 6 ++++++ home/vim/ftdetect/tikz.vim | 2 -- 8 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 home/vim/ftdetect/automake.lua delete mode 100644 home/vim/ftdetect/automake.vim create mode 100644 home/vim/ftdetect/direnv.lua delete mode 100644 home/vim/ftdetect/direnv.vim create mode 100644 home/vim/ftdetect/tiger.lua delete mode 100644 home/vim/ftdetect/tiger.vim create mode 100644 home/vim/ftdetect/tikz.lua delete mode 100644 home/vim/ftdetect/tikz.vim diff --git a/home/vim/ftdetect/automake.lua b/home/vim/ftdetect/automake.lua new file mode 100644 index 0000000..cfa15d2 --- /dev/null +++ b/home/vim/ftdetect/automake.lua @@ -0,0 +1,6 @@ +-- Use Automake filetype for `local.am` files, explicit `set` to force override +vim.filetype.add({ + filename = { + ["local.am"] = "automake", + }, +}) diff --git a/home/vim/ftdetect/automake.vim b/home/vim/ftdetect/automake.vim deleted file mode 100644 index 5cc73b0..0000000 --- a/home/vim/ftdetect/automake.vim +++ /dev/null @@ -1,2 +0,0 @@ -" Use Automake filetype for `local.am` files, explicit `set` to force override -au BufNewFile,BufRead local.am set filetype=automake diff --git a/home/vim/ftdetect/direnv.lua b/home/vim/ftdetect/direnv.lua new file mode 100644 index 0000000..fba9748 --- /dev/null +++ b/home/vim/ftdetect/direnv.lua @@ -0,0 +1,6 @@ +-- Use bash filetype for `.envrc` files +vim.filetype.add({ + filename = { + [".envrc"] = "bash", + }, +}) diff --git a/home/vim/ftdetect/direnv.vim b/home/vim/ftdetect/direnv.vim deleted file mode 100644 index 44fb811..0000000 --- a/home/vim/ftdetect/direnv.vim +++ /dev/null @@ -1,2 +0,0 @@ -" Use bash filetype for `.envrc` files -au BufNewFile,BufRead .envrc setfiletype bash diff --git a/home/vim/ftdetect/tiger.lua b/home/vim/ftdetect/tiger.lua new file mode 100644 index 0000000..a261103 --- /dev/null +++ b/home/vim/ftdetect/tiger.lua @@ -0,0 +1,7 @@ +-- Use Tiger filetype for programs and header files +vim.filetype.add({ + extension = { + tig = "tiger", + tih = "tiger", + }, +}) diff --git a/home/vim/ftdetect/tiger.vim b/home/vim/ftdetect/tiger.vim deleted file mode 100644 index d474fd7..0000000 --- a/home/vim/ftdetect/tiger.vim +++ /dev/null @@ -1,3 +0,0 @@ -" Use Tiger filetype for programs and header files -au BufNewFile,BufRead *.tig setfiletype tiger -au BufNewFile,BufRead *.tih setfiletype tiger diff --git a/home/vim/ftdetect/tikz.lua b/home/vim/ftdetect/tikz.lua new file mode 100644 index 0000000..93b7db0 --- /dev/null +++ b/home/vim/ftdetect/tikz.lua @@ -0,0 +1,6 @@ +-- Use LaTeX filetype for TikZ files +vim.filetype.add({ + extension = { + tikz = "tex", + }, +}) diff --git a/home/vim/ftdetect/tikz.vim b/home/vim/ftdetect/tikz.vim deleted file mode 100644 index 7327b11..0000000 --- a/home/vim/ftdetect/tikz.vim +++ /dev/null @@ -1,2 +0,0 @@ -" Use LaTeX filetype for TikZ files -au BufNewFile,BufRead *.tikz setfiletype tex From 153b6a43cc01311596a5a3edb98fe724bd3ebcde Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 May 2023 12:28:06 +0000 Subject: [PATCH 0950/1588] home: vim: ftdetect: add kbuild --- home/vim/ftdetect/kbuild.lua | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 home/vim/ftdetect/kbuild.lua diff --git a/home/vim/ftdetect/kbuild.lua b/home/vim/ftdetect/kbuild.lua new file mode 100644 index 0000000..799570e --- /dev/null +++ b/home/vim/ftdetect/kbuild.lua @@ -0,0 +1,6 @@ +-- Kbuild is just a Makefile under a different name +vim.filetype.add({ + filename = { + ["Kbuild"] = "make", + }, +}) From 41df5c01ad6b9dd31175f552645aa4825b7bd173 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 12 May 2023 12:28:14 +0000 Subject: [PATCH 0951/1588] home: vim: ftdetect: add kconfig --- home/vim/ftdetect/kconfig.lua | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 home/vim/ftdetect/kconfig.lua diff --git a/home/vim/ftdetect/kconfig.lua b/home/vim/ftdetect/kconfig.lua new file mode 100644 index 0000000..d51e964 --- /dev/null +++ b/home/vim/ftdetect/kconfig.lua @@ -0,0 +1,6 @@ +-- Mconfig is just Kconfig +vim.filetype.add({ + filename = { + ["Mconfig"] = "kconfig", + }, +}) From 685c571018b0328c49065eaee5aa77bc0931be19 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 13 May 2023 20:19:26 +0200 Subject: [PATCH 0952/1588] modules: services: nginx: add 'socket' option --- modules/services/nginx/default.nix | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index 944cd18..dcaaa0f 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -45,6 +45,16 @@ let ''; }; + socket = mkOption { + type = with types; nullOr path; + default = null; + example = "FIXME"; + description = '' + The UNIX socket for this virtual host. This option is incompatible + with `port`. + ''; + }; + sso = { enable = mkEnableOption "SSO authentication"; }; @@ -185,7 +195,7 @@ in assertions = [ ] ++ (lib.flip builtins.map cfg.virtualHosts ({ subdomain, ... } @ args: let - conflicts = [ "port" "root" "redirect" ]; + conflicts = [ "port" "root" "socket" "redirect" ]; optionsNotNull = builtins.map (v: args.${v} != null) conflicts; optionsSet = lib.filter lib.id optionsNotNull; in @@ -260,6 +270,11 @@ in (lib.optionalAttrs (args.root != null) { inherit (args) root; }) + # Serve to UNIX socket + (lib.optionalAttrs (args.socket != null) { + locations."/".proxyPass = + "http://unix:${args.socket}"; + }) # Redirect to a different domain (lib.optionalAttrs (args.redirect != null) { locations."/".return = "301 ${args.redirect}$request_uri"; From 175a8acde2c3cc0e789f71b043c9679c63b5eeda Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 13 May 2023 20:18:58 +0200 Subject: [PATCH 0953/1588] modules: services: add vikunja --- modules/services/default.nix | 1 + modules/services/vikunja/default.nix | 123 +++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 modules/services/vikunja/default.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 268a3a5..4fcf453 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -32,6 +32,7 @@ ./ssh-server ./tlp ./transmission + ./vikunja ./wireguard ./woodpecker ]; diff --git a/modules/services/vikunja/default.nix b/modules/services/vikunja/default.nix new file mode 100644 index 0000000..1cdef5f --- /dev/null +++ b/modules/services/vikunja/default.nix @@ -0,0 +1,123 @@ +# Todo and kanban app +{ config, lib, ... }: +let + cfg = config.my.services.vikunja; + subdomain = "todo"; + vikunjaDomain = "${subdomain}.${config.networking.domain}"; + socketPath = "/run/vikunja/vikunja.socket"; +in +{ + options.my.services.vikunja = with lib; { + enable = mkEnableOption "Vikunja todo app"; + + mail = { + enable = mkEnableOption { + description = "mailer configuration"; + }; + + configFile = mkOption { + type = types.str; + example = "/run/secrets/vikunja-mail-config.env"; + description = "Configuration for the mailer connection, using environment variables."; + }; + }; + }; + + config = lib.mkIf cfg.enable { + services.vikunja = { + enable = true; + + frontendScheme = "https"; + frontendHostname = vikunjaDomain; + + setupNginx = false; + + database = { + type = "postgres"; + user = "vikunja"; + database = "vikunja"; + host = "/run/postgresql"; + }; + + settings = { + service = { + # Only allow registration of users through the CLI + enableregistration = false; + # Ues the host's timezone + timezone = config.time.timeZone; + # Use UNIX socket for serving the API + unixsocket = socketPath; + unixsocketmode = "0o660"; + }; + + mailer = { + enabled = cfg.mail.enable; + }; + }; + + environmentFiles = lib.optional cfg.mail.enable cfg.mail.configFile; + }; + + # This is a weird setup + my.services.nginx.virtualHosts = [ + { + inherit subdomain; + # Serve the root for the web-ui + root = config.services.vikunja.package-frontend; + + extraConfig = { + locations = { + "/" = { + tryFiles = "try_files $uri $uri/ /"; + }; + + # Serve the API through a UNIX socket + "~* ^/(api|dav|\\.well-known)/" = { + proxyPass = "http://unix:${socketPath}"; + extraConfig = '' + client_max_body_size 20M; + ''; + }; + }; + }; + } + ]; + + systemd.services.vikunja-api = { + serviceConfig = { + # Use a system user to simplify using the CLI + DynamicUser = lib.mkForce false; + # Set the user for postgres authentication + User = "vikunja"; + # Create /run/vikunja/ to serve the UNIX socket + RuntimeDirectory = "vikunja"; + }; + }; + + users.users.vikunja = { + description = "Vikunja Service"; + group = "vikunja"; + isSystemUser = true; + }; + users.groups.vikunja = { }; + + # Allow nginx to access the UNIX socket + users.users.nginx.extraGroups = [ "vikunja" ]; + + services.postgresql = { + ensureDatabases = [ "vikunja" ]; + ensureUsers = [ + { + name = "vikunja"; + ensurePermissions = { "DATABASE vikunja" = "ALL PRIVILEGES"; }; + } + ]; + }; + + my.services.backup = { + paths = [ + config.services.vikunja.settings.files.basepath + ]; + }; + }; +} From 30d01972b2ed29586bf8de4630055020daebcd5e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 13 May 2023 21:17:13 +0200 Subject: [PATCH 0954/1588] hosts: nixos: porthos: secrets: add vikunja --- hosts/nixos/porthos/secrets/secrets.nix | 2 ++ hosts/nixos/porthos/secrets/vikunja/mail.age | Bin 0 -> 740 bytes 2 files changed, 2 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/vikunja/mail.age diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 85a3d48..3b88e60 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -61,6 +61,8 @@ in "transmission/credentials.age".publicKeys = all; + "vikunja/mail.age".publicKeys = all; + "wireguard/private-key.age".publicKeys = all; "woodpecker/gitea.age".publicKeys = all; diff --git a/hosts/nixos/porthos/secrets/vikunja/mail.age b/hosts/nixos/porthos/secrets/vikunja/mail.age new file mode 100644 index 0000000000000000000000000000000000000000..4c83acd8586c808c5938889471406eeb283c550a GIT binary patch literal 740 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;<2-N%izj zD>XLr505f*%BgZOicCt*35|44Hi<~7$gK!X@(pk+3&}MLapcOh^saI%Ns0`1^Rp-` z4>xp5HSn=?(>5*6^EC7b(+>1>icBssw6x6j%SX2@DCUYDH<8XL_2pQ?Z+&uTxH8RcWcY2Ul2eVP!>;r@w`BqKRLnqqCo>yGuy8mwsSU zR8fd~xl5j(w^61?Sczv!nrTK!h_<$8B$uwPu7YEfUsiU$VTNN)S)#sEXPq1THT2NJ*ey&q$MQ%!AGS_GI0@g@P^#k5PM*nsyz1y+;V*k&bj+_y3O1*n7 zKCE^z{us4pOa52=)zj87aoTA$g?=o~eRSvOo&L4|_iijTcwOPU%e+-HgyV9^A*YsC z`^-fT{jb=`vVH6G`xk3vE?r+T-(}O1Ul|f^KRl=X^UTR@dsA`m)a;+xzMpE`n{Ihq zyt(pX(_^l!dV7s!ugquk;=O0$xo=yznDmUxFFS4bZ;0ys^zTVKDi~|1ZSE=FU{= U%vr-cciYDIrzg0ax}mTW02ksVE&u=k literal 0 HcmV?d00001 From e68ae266094ce4715c792ae18fa0c8c50b203023 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 13 May 2023 21:18:11 +0200 Subject: [PATCH 0955/1588] hosts: nixos: porthos: services: enable vikunja --- hosts/nixos/porthos/services.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index e0a1731..3b146fa 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -141,6 +141,14 @@ in enable = true; credentialsFile = secrets."transmission/credentials".path; }; + # Self-hosted todo app + vikunja = { + enable = true; + mail = { + enable = true; + configFile = secrets."vikunja/mail".path; + }; + }; # Simple, in-kernel VPN wireguard = { enable = true; From c0a80c250358439045c98cfd3cbe7058cbf0e21c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 17 May 2023 11:12:18 +0000 Subject: [PATCH 0956/1588] home: secrets: fix public keys list --- home/secrets/secrets.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/secrets/secrets.nix b/home/secrets/secrets.nix index eb9745f..93a5e60 100644 --- a/home/secrets/secrets.nix +++ b/home/secrets/secrets.nix @@ -3,7 +3,7 @@ let keys = import ../../keys; # deadnix: skip - all = keys.users; + all = builtins.attrValues keys.users; in { # Add secrets here From b570cf227c5c30587aedc6226afb61d2f0d0b534 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 17 May 2023 11:13:26 +0000 Subject: [PATCH 0957/1588] home: secrets: add github --- home/secrets/github/token.age | Bin 0 -> 369 bytes home/secrets/secrets.nix | 3 +-- 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 home/secrets/github/token.age diff --git a/home/secrets/github/token.age b/home/secrets/github/token.age new file mode 100644 index 0000000000000000000000000000000000000000..1d36ccdc3cc89a5b9c5bd9df4e8b62445fe4b3b0 GIT binary patch literal 369 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCU73dk?dOIOG!EcbRv z%*%Bv&j~h+$TTVUbTg>RG0AiHan1`)jWl#I33EwGDlkc|$mWU+4yp?B$+t|Z$}#gQ zDfKMzbS%yFG_r6qPc*1Xt#mVWa%ZT5eWS zSP*RBtdpvYY^(;l9G|nl@Xqr;}>F<>RwpjAC(#qR1{ForK_u}V4js$lII+r z5|v|UR2-39l3kTskz1_oQ{w5K?G)ngR%zrOl2}q+suutkx`fyO literal 0 HcmV?d00001 diff --git a/home/secrets/secrets.nix b/home/secrets/secrets.nix index 93a5e60..f474342 100644 --- a/home/secrets/secrets.nix +++ b/home/secrets/secrets.nix @@ -2,9 +2,8 @@ let keys = import ../../keys; - # deadnix: skip all = builtins.attrValues keys.users; in { - # Add secrets here + "github/token.age".publicKeys = all; } From b80053d7868f71d7fc28c9aa0ff71ef92a44c4b9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 17 May 2023 19:20:08 +0100 Subject: [PATCH 0958/1588] home: add nixpkgs --- home/default.nix | 1 + home/nixpkgs/default.nix | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 home/nixpkgs/default.nix diff --git a/home/default.nix b/home/default.nix index 8af9240..7fbd406 100644 --- a/home/default.nix +++ b/home/default.nix @@ -25,6 +25,7 @@ ./mpv ./nix ./nix-index + ./nixpkgs ./nm-applet ./packages ./pager diff --git a/home/nixpkgs/default.nix b/home/nixpkgs/default.nix new file mode 100644 index 0000000..2b7fca4 --- /dev/null +++ b/home/nixpkgs/default.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.nixpkgs; +in +{ + options.my.home.nixpkgs = with lib; { + enable = mkEnableOption "nixpkgs configuration"; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + nixpkgs-review + ]; + + home.sessionVariables = { + GITHUB_TOKEN = ''$(cat "${config.age.secrets."github/token".path}")''; + }; + }; +} From e26672494c6352c3a4a7ae3185b5e7cf90f249b1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 25 May 2023 09:31:41 +0000 Subject: [PATCH 0959/1588] flake: dev-shells: use 'mkShellNoCC' We don't need compilers. --- flake/dev-shells.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index 82d9581..d5f5989 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -2,7 +2,7 @@ { perSystem = { config, pkgs, ... }: { devShells = { - default = pkgs.mkShell { + default = pkgs.mkShellNoCC { name = "NixOS-config"; nativeBuildInputs = with pkgs; [ From 0321889d50687a504b792e0d5b249f660acfe634 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 27 May 2023 09:24:09 +0100 Subject: [PATCH 0960/1588] home: wm: i3bar: add 'muon' bluetooth block --- home/wm/i3bar/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index a2c9f3a..b066550 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -43,6 +43,12 @@ in format = " $icon Boson{ $percentage|} "; disconnected_format = ""; }) + (lib.optionalAttrs config.my.home.bluetooth.enable { + block = "bluetooth"; + mac = "38:18:4C:BE:8E:97"; + format = " $icon Muon{ $percentage|} "; + disconnected_format = ""; + }) (lib.optionalAttrs config.my.home.bluetooth.enable { block = "bluetooth"; mac = "94:DB:56:00:EE:93"; From 908c2e39b3cbf934abc27520e1bac878c744bd0d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 28 May 2023 14:43:19 +0200 Subject: [PATCH 0961/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index cf667c4..8570510 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1683866323, - "narHash": "sha256-M2bEuh2jr0Ec13GnP5f8unD8q0AcPt2fHSUynOZJ8No=", + "lastModified": 1684153753, + "narHash": "sha256-PVbWt3qrjYAK+T5KplFcO+h7aZWfEj1UtyoKlvcDxh0=", "owner": "ryantm", "repo": "agenix", - "rev": "92197270a1eedd142a4aff853e4cc6d1e838c22f", + "rev": "db5637d10f797bb251b94ef9040b237f4702cde3", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1683883222, - "narHash": "sha256-Tow+8GKwNNk2NvXoBwS/VBP8lpOdqIeeJ46ZU2fw5QU=", + "lastModified": 1685189510, + "narHash": "sha256-Hq5WF7zIixojPgvhgcd6MBvywwycVZ9wpK/8ogOyoaA=", "owner": "nix-community", "repo": "home-manager", - "rev": "a835096fd2bcc369f57b76b9b17cc00348f595f5", + "rev": "2d963854ae2499193c0c72fd67435fee34d3e4fd", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1683408522, - "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=", + "lastModified": 1685168767, + "narHash": "sha256-wQgnxz0PdqbyKKpsWl/RU8T8QhJQcHfeC6lh1xRUTfk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7", + "rev": "e10802309bf9ae351eb27002c85cfdeb1be3b262", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1683884754, - "narHash": "sha256-o3JF2SZJIwnz2YXwS0tb+CZqfXTABZDTdCjOG6fahIA=", + "lastModified": 1685267138, + "narHash": "sha256-EEcFwvOxP4eQJ4xiDJSwL7LaHsL43eSHX0naxaXzi5M=", "owner": "nix-community", "repo": "NUR", - "rev": "ee3497fa69c9c48ec7e4c0ffc1610ea543497633", + "rev": "3fc82dd79202d19dd1aeac972a9c66ce2689fc1f", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1682596858, - "narHash": "sha256-Hf9XVpqaGqe/4oDGr30W8HlsWvJXtMsEPHDqHZA6dDg=", + "lastModified": 1684842236, + "narHash": "sha256-rYWsIXHvNhVQ15RQlBUv67W3YnM+Pd+DuXGMvCBq2IE=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "fb58866e20af98779017134319b5663b8215d912", + "rev": "61e567d6497bc9556f391faebe5e410e6623217f", "type": "github" }, "original": { From 7c4e0e31bc255bebbfd4c1ababc5f9aa32b7b7cd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 28 May 2023 14:49:10 +0200 Subject: [PATCH 0962/1588] hosts: nixos: porthos: boot: remove 'grub.version' --- hosts/nixos/porthos/boot.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/hosts/nixos/porthos/boot.nix b/hosts/nixos/porthos/boot.nix index 3b56eb9..f0cb925 100644 --- a/hosts/nixos/porthos/boot.nix +++ b/hosts/nixos/porthos/boot.nix @@ -6,7 +6,6 @@ # Use the GRUB 2 boot loader. loader.grub = { enable = true; - version = 2; # Define on which hard drive you want to install Grub. device = "/dev/sda"; }; From 5de4ee93d581080fd559be85aab0271d985513c9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 31 May 2023 14:00:32 +0000 Subject: [PATCH 0963/1588] home: vim: use smarter diagnostics float display --- home/vim/after/plugin/mappings/unimpaired.lua | 6 ++- home/vim/lua/ambroisie/lsp.lua | 37 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/home/vim/after/plugin/mappings/unimpaired.lua b/home/vim/after/plugin/mappings/unimpaired.lua index f39a8c0..f502056 100644 --- a/home/vim/after/plugin/mappings/unimpaired.lua +++ b/home/vim/after/plugin/mappings/unimpaired.lua @@ -1,5 +1,7 @@ local wk = require("which-key") +local lsp = require("ambroisie.lsp") + local keys = { -- Edition and navigation mappins ["["] = { @@ -30,7 +32,7 @@ local keys = { x = "XML encode", y = "C string encode", -- Custom - d = { vim.diagnostic.goto_prev, "Previous diagnostic" }, + d = { lsp.goto_prev_diagnostic, "Previous diagnostic" }, }, ["]"] = { name = "Next", @@ -60,7 +62,7 @@ local keys = { x = "XML decode", y = "C string decode", -- Custom - d = { vim.diagnostic.goto_next, "Next diagnostic" }, + d = { lsp.goto_next_diagnostic, "Next diagnostic" }, }, -- Option mappings diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index b682d27..05869b7 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -3,6 +3,43 @@ local M = {} -- Simplified LSP formatting configuration local lsp_format = require("lsp-format") +-- Move to the next/previous diagnostic, automatically showing the diagnostics +-- float if necessary. +-- @param forward whether to go forward or backwards +local function goto_diagnostic(forward) + vim.validate({ + forward = { forward, "boolean" }, + }) + + local opts = { + float = false, + } + + -- Only show floating diagnostics if they are otherwise not displayed + local config = vim.diagnostic.config() + if not (config.virtual_text or config.virtual_lines) then + opts.float = true + end + + if forward then + vim.diagnostic.goto_next(opts) + else + vim.diagnostic.goto_prev(opts) + end +end + +-- Move to the next diagnostic, automatically showing the diagnostics float if +-- necessary. +M.goto_next_diagnostic = function() + goto_diagnostic(true) +end + +-- Move to the previous diagnostic, automatically showing the diagnostics float +-- if necessary. +M.goto_prev_diagnostic = function() + goto_diagnostic(false) +end + -- shared LSP configuration callback -- @param client native client configuration -- @param bufnr int? buffer number of the attched client From 39a512bc0a69134fe228a06cbe1060a20e10758c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 1 Jun 2023 11:17:34 +0000 Subject: [PATCH 0964/1588] home: vim: unset 'splitkeep' Turns out I do _not_ like this behaviour when it messes with the cursor position. If they had an option that kept my cursor correctly positioned, and only then tried to move the buffer to keep it steady, I'd try it. This reverts commit 4feee73b8e8d0e62f4a06eb9adc65328c032467c. --- home/vim/init.vim | 2 -- 1 file changed, 2 deletions(-) diff --git a/home/vim/init.vim b/home/vim/init.vim index ad332d2..bd63d25 100644 --- a/home/vim/init.vim +++ b/home/vim/init.vim @@ -48,8 +48,6 @@ set noswapfile """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Set the minimal amount of lignes under and above the cursor for context set scrolloff=5 -" More stable splits -set splitkeep=screen " Always show status line set laststatus=2 " Enable Doxygen highlighting From 4f6f48385196207491733aa3cd2d3ba0310208e7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 3 Jun 2023 13:39:52 +0100 Subject: [PATCH 0965/1588] modules: programs: steam: simplify wrapper --- modules/programs/steam/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/programs/steam/default.nix b/modules/programs/steam/default.nix index f52effe..277e41a 100644 --- a/modules/programs/steam/default.nix +++ b/modules/programs/steam/default.nix @@ -1,6 +1,8 @@ { config, lib, pkgs, ... }: let cfg = config.my.programs.steam; + + steam = pkgs.steam; in { options.my.programs.steam = with lib; { @@ -26,13 +28,13 @@ in (pkgs.writeScriptBin "steam" '' #!/bin/sh mkdir -p "${cfg.dataDir}" - HOME="${cfg.dataDir}" exec ${pkgs.steam}/bin/steam "$@" + HOME="${cfg.dataDir}" exec ${lib.getExe steam} "$@" '') # Same, for GOG and other such games (pkgs.writeScriptBin "steam-run" '' #!/bin/sh mkdir -p "${cfg.dataDir}" - HOME="${cfg.dataDir}" exec ${pkgs.steam-run}/bin/steam-run "$@" + HOME="${cfg.dataDir}" exec ${lib.getExe steam.run} "$@" '') ]; }; From 5d570dbf1ec9da325aac77b193fadb509e392c18 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 3 Jun 2023 13:39:52 +0100 Subject: [PATCH 0966/1588] modules: programs: steam: use writeShellScriptBin --- modules/programs/steam/default.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/programs/steam/default.nix b/modules/programs/steam/default.nix index 277e41a..0c7f9da 100644 --- a/modules/programs/steam/default.nix +++ b/modules/programs/steam/default.nix @@ -25,14 +25,12 @@ in environment.systemPackages = builtins.map lib.hiPrio [ # Respect XDG conventions, leave my HOME alone - (pkgs.writeScriptBin "steam" '' - #!/bin/sh + (pkgs.writeShellScriptBin "steam" '' mkdir -p "${cfg.dataDir}" HOME="${cfg.dataDir}" exec ${lib.getExe steam} "$@" '') # Same, for GOG and other such games - (pkgs.writeScriptBin "steam-run" '' - #!/bin/sh + (pkgs.writeShellScriptBin "steam-run" '' mkdir -p "${cfg.dataDir}" HOME="${cfg.dataDir}" exec ${lib.getExe steam.run} "$@" '') From d69dbf8d627156497d81d3d9e0e33e58f9dde276 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 6 Jun 2023 20:01:07 +0100 Subject: [PATCH 0967/1588] home: wm: i3bar: fix 'net' block on non-wireless --- home/wm/i3bar/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index b066550..929cc27 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -69,7 +69,7 @@ in } { block = "net"; - format = " $icon $ssid $ip $signal_strength "; + format = " $icon{| $ssid|} $ip{| $signal_strength|} "; } { block = "backlight"; From c0995929c434e27c1981403ec7c402533a5a7904 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 8 Jun 2023 11:25:05 +0000 Subject: [PATCH 0968/1588] modules: system: podman: add weekly purge --- modules/system/podman/default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/system/podman/default.nix b/modules/system/podman/default.nix index dd1b617..6e4abb7 100644 --- a/modules/system/podman/default.nix +++ b/modules/system/podman/default.nix @@ -20,6 +20,17 @@ in # Allow DNS resolution in the default network defaultNetwork.dnsname.enable = true; + + # Remove unused data on a weekly basis + autoPrune = { + enable = true; + + dates = "weekly"; + + flags = [ + "--all" + ]; + }; }; }; } From 18c9458cfa99fefb1e4382107ee4d98a9223d832 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 8 Jun 2023 11:53:17 +0000 Subject: [PATCH 0969/1588] modules: system: users: add 'docker' group --- modules/system/users/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/system/users/default.nix b/modules/system/users/default.nix index 3fa5b2e..27557bd 100644 --- a/modules/system/users/default.nix +++ b/modules/system/users/default.nix @@ -27,6 +27,7 @@ in shell = pkgs.zsh; extraGroups = groupsIfExist [ "audio" # sound control + "docker" # usage of `docker` socket "media" # access to media files "networkmanager" # wireless configuration "plugdev" # usage of ZSA keyboard tools From 5aa136f796a7293208345b2c4420227ad2803079 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 8 Jun 2023 11:58:47 +0000 Subject: [PATCH 0970/1588] modules: system: podman: fix removed option --- modules/system/podman/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/system/podman/default.nix b/modules/system/podman/default.nix index 6e4abb7..765ed3d 100644 --- a/modules/system/podman/default.nix +++ b/modules/system/podman/default.nix @@ -19,7 +19,9 @@ in dockerSocket.enable = true; # Allow DNS resolution in the default network - defaultNetwork.dnsname.enable = true; + defaultNetwork.settings = { + dns_enabled = true; + }; # Remove unused data on a weekly basis autoPrune = { From 1807b8b88c2812a8a9957d6251400d94a6d8a562 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 10 Jun 2023 13:35:02 +0100 Subject: [PATCH 0971/1588] hosts: nixos: porthos: services: disable vikunja I don't use it. --- hosts/nixos/porthos/services.nix | 8 -------- 1 file changed, 8 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 3b146fa..e0a1731 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -141,14 +141,6 @@ in enable = true; credentialsFile = secrets."transmission/credentials".path; }; - # Self-hosted todo app - vikunja = { - enable = true; - mail = { - enable = true; - configFile = secrets."vikunja/mail".path; - }; - }; # Simple, in-kernel VPN wireguard = { enable = true; From a846d19b1aa4057953ae843cd94f8d7c4bac1468 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 10 Jun 2023 20:47:20 +0100 Subject: [PATCH 0972/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 8570510..79dd32a 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1683560683, - "narHash": "sha256-XAygPMN5Xnk/W2c1aW0jyEa6lfMDZWlQgiNtmHXytPc=", + "lastModified": 1685662779, + "narHash": "sha256-cKDDciXGpMEjP1n6HlzKinN0H+oLmNpgeCTzYnsA2po=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "006c75898cf814ef9497252b022e91c946ba8e17", + "rev": "71fb97f0d875fd4de4994dfb849f2c75e17eb6c3", "type": "github" }, "original": { @@ -89,11 +89,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1681202837, - "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "cfacdce06f30d2b68473a46042957675eebb3401", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1685189510, - "narHash": "sha256-Hq5WF7zIixojPgvhgcd6MBvywwycVZ9wpK/8ogOyoaA=", + "lastModified": 1686391840, + "narHash": "sha256-5S0APl6Mfm6a37taHwvuf11UHnAX0+PnoWQbsYbMUnc=", "owner": "nix-community", "repo": "home-manager", - "rev": "2d963854ae2499193c0c72fd67435fee34d3e4fd", + "rev": "0144ac418ef633bfc9dbd89b8c199ad3a617c59f", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1685168767, - "narHash": "sha256-wQgnxz0PdqbyKKpsWl/RU8T8QhJQcHfeC6lh1xRUTfk=", + "lastModified": 1686319658, + "narHash": "sha256-tGWdoUAqKnE866mYFlEfc2a99kxFy31hOQJH5YQKrTQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e10802309bf9ae351eb27002c85cfdeb1be3b262", + "rev": "ae766d59b07c450e0f1de8a1bfd6529089f40849", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1685267138, - "narHash": "sha256-EEcFwvOxP4eQJ4xiDJSwL7LaHsL43eSHX0naxaXzi5M=", + "lastModified": 1686425941, + "narHash": "sha256-9Lip/8IvSxMB6KlvVLTHKx2C4TNm1gUzR8U/CsLjwzA=", "owner": "nix-community", "repo": "NUR", - "rev": "3fc82dd79202d19dd1aeac972a9c66ce2689fc1f", + "rev": "012d2d97f09d2eaa36fb8d83947b2dd9c61cf470", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1684842236, - "narHash": "sha256-rYWsIXHvNhVQ15RQlBUv67W3YnM+Pd+DuXGMvCBq2IE=", + "lastModified": 1686213770, + "narHash": "sha256-Re6xXLEqQ/HRnThryumyGzEf3Uv0Pl4cuG50MrDofP8=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "61e567d6497bc9556f391faebe5e410e6623217f", + "rev": "182af51202998af5b64ddecaa7ff9be06425399b", "type": "github" }, "original": { From e5c27d7aa8f2c97bfd2f425b44af5f37fe4d435e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 10 Jun 2023 22:57:05 +0100 Subject: [PATCH 0973/1588] home: firefox: fix settings sort --- home/firefox/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index 61c8d64..7374b63 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -57,8 +57,8 @@ in "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket "extensions.pocket.enabled" = false; # Disable pocket "media.eme.enabled" = true; # Enable DRM - "media.gmp-widevinecdm.visible" = true; # Enable DRM "media.gmp-widevinecdm.enabled" = true; # Enable DRM + "media.gmp-widevinecdm.visible" = true; # Enable DRM "signon.autofillForms" = false; # Disable built-in form-filling "signon.rememberSignons" = false; # Disable built-in password manager "ui.systemUsesDarkTheme" = true; # Dark mode From 8fcb7f42a6e90538b412841a212ef283e299d33e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 11 Jun 2023 16:13:42 +0100 Subject: [PATCH 0974/1588] home: wm: i3: assert name of 'i3status-rs' bar --- home/wm/i3/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index b5316f3..c7a728a 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -75,6 +75,7 @@ in let i3status-rs = lib.getExe config.programs.i3status-rust.package; in + assert [ "top" ] == lib.attrNames config.programs.i3status-rust.bars; [ { statusCommand = "${i3status-rs} config-top.toml"; From 73fdd4622beabd7a5b807fb2cfd4e5fd422dfb4e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 11 Jun 2023 16:17:42 +0100 Subject: [PATCH 0975/1588] modules: system: add docker --- modules/system/default.nix | 1 + modules/system/docker/default.nix | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 modules/system/docker/default.nix diff --git a/modules/system/default.nix b/modules/system/default.nix index 3c81cac..9fe3b57 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -4,6 +4,7 @@ { imports = [ ./boot + ./docker ./documentation ./language ./nix diff --git a/modules/system/docker/default.nix b/modules/system/docker/default.nix new file mode 100644 index 0000000..f051814 --- /dev/null +++ b/modules/system/docker/default.nix @@ -0,0 +1,27 @@ +# Podman related settings +{ config, lib, ... }: +let + cfg = config.my.system.docker; +in +{ + options.my.system.docker = with lib; { + enable = mkEnableOption "docker configuration"; + }; + + config = lib.mkIf cfg.enable { + virtualisation.docker = { + enable = true; + + # Remove unused data on a weekly basis + autoPrune = { + enable = true; + + dates = "weekly"; + + flags = [ + "--all" + ]; + }; + }; + }; +} From df9b060947af50f182643b38429c9bc2148452fa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 11 Jun 2023 16:23:31 +0100 Subject: [PATCH 0976/1588] modules: system: podman: check for docker conflict --- modules/system/podman/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/system/podman/default.nix b/modules/system/podman/default.nix index 765ed3d..52630c7 100644 --- a/modules/system/podman/default.nix +++ b/modules/system/podman/default.nix @@ -9,6 +9,16 @@ in }; config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = cfg.enable -> !config.my.system.docker.enable; + message = '' + `config.my.system.podman` is incompatible with + `config.my.system.docker`. + ''; + } + ]; + virtualisation.podman = { enable = true; From e44dd4c6ea24b99657d42623473fc468833bc565 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 11 Jun 2023 16:25:07 +0100 Subject: [PATCH 0977/1588] modules: services: drone: use docker module --- modules/services/drone/runner-docker/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/drone/runner-docker/default.nix b/modules/services/drone/runner-docker/default.nix index 0f2e3b3..6ccb5fe 100644 --- a/modules/services/drone/runner-docker/default.nix +++ b/modules/services/drone/runner-docker/default.nix @@ -32,7 +32,7 @@ in }; # Make sure it is activated in that case - virtualisation.docker.enable = true; + my.system.docker.enable = true; users.users.drone-runner-docker = { isSystemUser = true; From 2f03d92dd9bd53431067402eb031b39ca632f109 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 11 Jun 2023 16:25:19 +0100 Subject: [PATCH 0978/1588] modules: services: woodpecker: use docker module --- modules/services/woodpecker/agent-docker/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/woodpecker/agent-docker/default.nix b/modules/services/woodpecker/agent-docker/default.nix index 8b5307c..2d431bc 100644 --- a/modules/services/woodpecker/agent-docker/default.nix +++ b/modules/services/woodpecker/agent-docker/default.nix @@ -27,7 +27,7 @@ in }; # Make sure it is activated in that case - virtualisation.docker.enable = true; + my.system.docker.enable = true; # FIXME: figure out the issue services.unbound.resolveLocalQueries = false; From cecb7d9bb4069fcce3d5c54e9c8e9d655ad78c39 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 22 Jun 2023 15:35:30 +0000 Subject: [PATCH 0979/1588] home: vim: lspconfig: configure diagnostics once There's no need to configure it on each LSP attach, this is wasted work and could change options that have since been changed. --- home/vim/lua/ambroisie/lsp.lua | 16 ---------------- home/vim/plugin/settings/lspconfig.lua | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index 05869b7..7ef6e26 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -44,22 +44,6 @@ end -- @param client native client configuration -- @param bufnr int? buffer number of the attched client M.on_attach = function(client, bufnr) - -- Diagnostics - vim.diagnostic.config({ - -- Disable virtual test next to affected regions - virtual_text = false, - -- Also disable virtual diagnostics under the affected regions - virtual_lines = false, - -- Show diagnostics signs - signs = true, - -- Underline offending regions - underline = true, - -- Do not bother me in the middle of insertion - update_in_insert = false, - -- Show highest severity first - severity_sort = true, - }) - -- Format on save lsp_format.on_attach(client, bufnr) diff --git a/home/vim/plugin/settings/lspconfig.lua b/home/vim/plugin/settings/lspconfig.lua index 45be269..794a765 100644 --- a/home/vim/plugin/settings/lspconfig.lua +++ b/home/vim/plugin/settings/lspconfig.lua @@ -2,6 +2,22 @@ local lspconfig = require("lspconfig") local lsp = require("ambroisie.lsp") local utils = require("ambroisie.utils") +-- Diagnostics +vim.diagnostic.config({ + -- Disable virtual test next to affected regions + virtual_text = false, + -- Also disable virtual diagnostics under the affected regions + virtual_lines = false, + -- Show diagnostics signs + signs = true, + -- Underline offending regions + underline = true, + -- Do not bother me in the middle of insertion + update_in_insert = false, + -- Show highest severity first + severity_sort = true, +}) + -- Inform servers we are able to do completion, snippets, etc... local capabilities = require("cmp_nvim_lsp").default_capabilities() From 0bc31619c87d920527ddb8fc17adb7cbfe5c38b3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 23 Jun 2023 09:10:24 +0000 Subject: [PATCH 0980/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 79dd32a..6ccbfaf 100644 --- a/flake.lock +++ b/flake.lock @@ -89,11 +89,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1687171271, + "narHash": "sha256-BJlq+ozK2B1sJDQXS3tzJM5a+oVZmi1q0FlBK/Xqv7M=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1686391840, - "narHash": "sha256-5S0APl6Mfm6a37taHwvuf11UHnAX0+PnoWQbsYbMUnc=", + "lastModified": 1687506590, + "narHash": "sha256-CSou9mrG9h/WVRjCptfTrATVxvhmtdQXElmWV/ZkrAs=", "owner": "nix-community", "repo": "home-manager", - "rev": "0144ac418ef633bfc9dbd89b8c199ad3a617c59f", + "rev": "d2b6f2d154bf6b27a93ed895392f80c503df7cfa", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1686319658, - "narHash": "sha256-tGWdoUAqKnE866mYFlEfc2a99kxFy31hOQJH5YQKrTQ=", + "lastModified": 1687412861, + "narHash": "sha256-Z/g0wbL68C+mSGerYS2quv9FXQ1RRP082cAC0Bh4vcs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ae766d59b07c450e0f1de8a1bfd6529089f40849", + "rev": "e603dc5f061ca1d8a19b3ede6a8cf9c9fcba6cdc", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1686425941, - "narHash": "sha256-9Lip/8IvSxMB6KlvVLTHKx2C4TNm1gUzR8U/CsLjwzA=", + "lastModified": 1687497781, + "narHash": "sha256-iySsVFg90kwpIs5E4u71cEVkZZRPRsqYvDmZjPtbgvc=", "owner": "nix-community", "repo": "NUR", - "rev": "012d2d97f09d2eaa36fb8d83947b2dd9c61cf470", + "rev": "299f27861e05df6637aa586ab8eaf7c8f33db863", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1686213770, - "narHash": "sha256-Re6xXLEqQ/HRnThryumyGzEf3Uv0Pl4cuG50MrDofP8=", + "lastModified": 1687251716, + "narHash": "sha256-+sFS41thsB5U+lY/dBYPSmU4AJ7nz/VdM1WD35fXVeM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "182af51202998af5b64ddecaa7ff9be06425399b", + "rev": "7807e1851d95828ed98491930d2d9e7ddbe65da4", "type": "github" }, "original": { From b6ccc7a18def81da9bbc40e41bc90b283381fe25 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 23 Jun 2023 09:11:15 +0000 Subject: [PATCH 0981/1588] overlays: remove 'nix-serve-ng-initLibStore' --- overlays/default.nix | 2 +- overlays/nix-serve-ng-initLibStore/default.nix | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 overlays/nix-serve-ng-initLibStore/default.nix diff --git a/overlays/default.nix b/overlays/default.nix index d24e60f..e504b17 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - nix-serve-ng-initLibStore = import ./nix-serve-ng-initLibStore; + # No overlays } diff --git a/overlays/nix-serve-ng-initLibStore/default.nix b/overlays/nix-serve-ng-initLibStore/default.nix deleted file mode 100644 index b528dc7..0000000 --- a/overlays/nix-serve-ng-initLibStore/default.nix +++ /dev/null @@ -1,11 +0,0 @@ -final: prev: -{ - nix-serve-ng = prev.nix-serve-ng.overrideAttrs (_: { - src = final.fetchFromGitHub { - owner = "aristanetworks"; - repo = "nix-serve-ng"; - rev = "dabf46d65d8e3be80fa2eacd229eb3e621add4bd"; - hash = "sha256-SoJJ3rMtDMfUzBSzuGMY538HDIj/s8bPf8CjIkpqY2w="; - }; - }); -} From 3e5fbfeb7ad7e50d596c77dd809124f9e87e8696 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 23 Jun 2023 12:02:57 +0200 Subject: [PATCH 0982/1588] modules: services: nextcloud: bump to 27 --- modules/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index cffa58d..9fb0cd8 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -31,7 +31,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud26; + package = pkgs.nextcloud27; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From 89168324e72893cb237f0c04f681632a9884a25d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 24 Jun 2023 16:26:53 +0100 Subject: [PATCH 0983/1588] overlays: add 'calibre-dedrm' --- overlays/calibre-dedrm/default.nix | 7 +++++++ overlays/default.nix | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 overlays/calibre-dedrm/default.nix diff --git a/overlays/calibre-dedrm/default.nix b/overlays/calibre-dedrm/default.nix new file mode 100644 index 0000000..17ccda5 --- /dev/null +++ b/overlays/calibre-dedrm/default.nix @@ -0,0 +1,7 @@ +self: super: { + calibre-dedrm = + super.calibre.overrideAttrs (oa: { + # We want to have pycryptodome around in order to support DeDRM + nativeBuildInputs = oa.nativeBuildInputs ++ [ self.python3Packages.pycryptodome ]; + }); +} diff --git a/overlays/default.nix b/overlays/default.nix index e504b17..14c2ef2 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - # No overlays + calibre-dedrm = import ./calibre-dedrm; } From ac725bd5e43e63681bb8d32f357316a3b25f8e61 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 24 Jun 2023 16:30:06 +0100 Subject: [PATCH 0984/1588] home: add calibre Ideally I will extend this module to handle the plugin (and dependencies) natively. --- home/calibre/default.nix | 15 +++++++++++++++ home/default.nix | 1 + 2 files changed, 16 insertions(+) create mode 100644 home/calibre/default.nix diff --git a/home/calibre/default.nix b/home/calibre/default.nix new file mode 100644 index 0000000..e0f2069 --- /dev/null +++ b/home/calibre/default.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.home.calibre; +in +{ + options.my.home.calibre = with lib; { + enable = mkEnableOption "calibre configuration"; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + calibre # NOTE: relies on my overlay to add necessary plug-in dependencies + ]; + }; +} diff --git a/home/default.nix b/home/default.nix index 7fbd406..6b6ad36 100644 --- a/home/default.nix +++ b/home/default.nix @@ -5,6 +5,7 @@ ./atuin ./bat ./bluetooth + ./calibre ./comma ./dircolors ./direnv From 950940e3c7f06cb9b8345e3fb5c48543ef32b8e5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 24 Jun 2023 16:31:09 +0100 Subject: [PATCH 0985/1588] hosts: nixos: aramis: home: enable calibre --- hosts/nixos/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index cdacf04..6d4fefe 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -1,6 +1,8 @@ { pkgs, ... }: { my.home = { + # Ebook library + calibre.enable = true; # Some amount of social life discord.enable = true; # Image viewver From b8f8c7cfa7c3d1b4b2a14725e3d2acd76042e9ad Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 27 Jun 2023 20:14:23 +0100 Subject: [PATCH 0986/1588] home: wm: i3bar: fix 'battery' block on empty --- home/wm/i3bar/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index 929cc27..38a78b9 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -78,6 +78,7 @@ in { block = "battery"; format = " $icon $percentage{ ($time)|} "; + empty_format = " $icon $percentage{ ($time)|} "; not_charging_format = " $icon $percentage "; full_format = " $icon $percentage "; } From cbbe371aceaf4c778c34a86a090cd99465aeeb1c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 28 Jun 2023 21:41:52 +0100 Subject: [PATCH 0987/1588] hosts: nixos: aramis: home: remove 'quasselclient' --- hosts/nixos/aramis/home.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index 6d4fefe..6d66384 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -18,7 +18,6 @@ element-desktop # Matrix client jellyfin-media-player # Wraps the webui and mpv together pavucontrol # Audio mixer GUI - quasselClient # IRC client transgui # Transmission remote ]; # Minimal video player From f73be2fc4e3db13b9d4929d43dc331c2be691798 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 30 Jun 2023 22:44:04 +0200 Subject: [PATCH 0988/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 6ccbfaf..6da0c3e 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1685662779, - "narHash": "sha256-cKDDciXGpMEjP1n6HlzKinN0H+oLmNpgeCTzYnsA2po=", + "lastModified": 1687762428, + "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "71fb97f0d875fd4de4994dfb849f2c75e17eb6c3", + "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836", "type": "github" }, "original": { @@ -89,11 +89,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1687171271, - "narHash": "sha256-BJlq+ozK2B1sJDQXS3tzJM5a+oVZmi1q0FlBK/Xqv7M=", + "lastModified": 1687709756, + "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", "owner": "numtide", "repo": "flake-utils", - "rev": "abfb11bd1aec8ced1c9bb9adfe68018230f4fb3c", + "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1687506590, - "narHash": "sha256-CSou9mrG9h/WVRjCptfTrATVxvhmtdQXElmWV/ZkrAs=", + "lastModified": 1687969886, + "narHash": "sha256-tC2qFLmuM0PFaw0tMHVcFmzsG/351q09qa1EpuL2n1U=", "owner": "nix-community", "repo": "home-manager", - "rev": "d2b6f2d154bf6b27a93ed895392f80c503df7cfa", + "rev": "a7002d6bfca54742d5fc9b485a1879953b4585b9", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1687412861, - "narHash": "sha256-Z/g0wbL68C+mSGerYS2quv9FXQ1RRP082cAC0Bh4vcs=", + "lastModified": 1688049487, + "narHash": "sha256-100g4iaKC9MalDjUW9iN6Jl/OocTDtXdeAj7pEGIRh4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e603dc5f061ca1d8a19b3ede6a8cf9c9fcba6cdc", + "rev": "4bc72cae107788bf3f24f30db2e2f685c9298dc9", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1687497781, - "narHash": "sha256-iySsVFg90kwpIs5E4u71cEVkZZRPRsqYvDmZjPtbgvc=", + "lastModified": 1688149889, + "narHash": "sha256-lHAwpd4ij6GUtu1ww9M9P81HnV/1mdsQXwEAoLQPZso=", "owner": "nix-community", "repo": "NUR", - "rev": "299f27861e05df6637aa586ab8eaf7c8f33db863", + "rev": "4cd52203c52face9ee649200a0d666c51e012dfa", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1687251716, - "narHash": "sha256-+sFS41thsB5U+lY/dBYPSmU4AJ7nz/VdM1WD35fXVeM=", + "lastModified": 1688137124, + "narHash": "sha256-ramG4s/+A5+t/QG2MplTNPP/lmBWDtbW6ilpwb9sKVo=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "7807e1851d95828ed98491930d2d9e7ddbe65da4", + "rev": "522fd47af79b66cdd04b92618e65c7a11504650a", "type": "github" }, "original": { From 737e9df202d085b439974ef82250c496f4de8655 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 Jul 2023 14:58:03 +0000 Subject: [PATCH 0989/1588] home: tmux: make status left longer --- home/tmux/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 8e673b1..70f037f 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -66,6 +66,9 @@ in # Allow any application to send OSC52 escapes to set the clipboard set -s set-clipboard on + # Longer session names in status bar + set -g status-left-length 16 + ${ lib.optionalString cfg.enabledPassthrough '' # Allow any application to use the tmux DCS for passthrough From 6100a092af2f21270a3d689d771f9a3857b04ca6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 4 Jul 2023 15:40:39 +0000 Subject: [PATCH 0990/1588] hosts: homes: cloudtop: disable 'git' package A recent update modified `ssh_config`, and nixpkgs' version of OpenSSH does not know how to deal with those options. The `git` package does not make use of the system-provided SSH client, and errors-out. Given that those patches are never going to be upstreamed, just override the `git` package, and use the system-provided one instead... --- hosts/homes/ambroisie@ambroisie/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix index 5a561f7..94efc09 100644 --- a/hosts/homes/ambroisie@ambroisie/default.nix +++ b/hosts/homes/ambroisie@ambroisie/default.nix @@ -1,5 +1,5 @@ # Google Cloudtop configuration -{ ... }: +{ lib, pkgs, ... }: { # Google specific configuration home.homeDirectory = "/usr/local/google/home/ambroisie"; @@ -12,4 +12,6 @@ systemd.user.sessionVariables = { LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; }; + + programs.git.package = lib.mkForce pkgs.emptyDirectory; } From 758e88e620e5acedbb7a542991f1da856fd4a8bc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 5 Jul 2023 20:14:27 +0100 Subject: [PATCH 0991/1588] overlays: remove 'calibre-dedrm' Turns out I didn't need it. This reverts commit 89168324e72893cb237f0c04f681632a9884a25d. --- overlays/calibre-dedrm/default.nix | 7 ------- overlays/default.nix | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) delete mode 100644 overlays/calibre-dedrm/default.nix diff --git a/overlays/calibre-dedrm/default.nix b/overlays/calibre-dedrm/default.nix deleted file mode 100644 index 17ccda5..0000000 --- a/overlays/calibre-dedrm/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -self: super: { - calibre-dedrm = - super.calibre.overrideAttrs (oa: { - # We want to have pycryptodome around in order to support DeDRM - nativeBuildInputs = oa.nativeBuildInputs ++ [ self.python3Packages.pycryptodome ]; - }); -} diff --git a/overlays/default.nix b/overlays/default.nix index 14c2ef2..e504b17 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,3 @@ { - calibre-dedrm = import ./calibre-dedrm; + # No overlays } From c037d3844a6d1f0da5d83b9b3cabfbdf9b501566 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 Jul 2023 14:01:14 +0100 Subject: [PATCH 0992/1588] modules: services: nextcloud: configure redis I keep having some file-locking issues, and heard that using redis might help alleviate those errant locks. It's also necessary to use the `notify_push` app. --- modules/services/nextcloud/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index 9fb0cd8..ae4bf14 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -36,6 +36,7 @@ in home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; enableBrokenCiphersForSSE = false; + configureRedis = true; config = { adminuser = cfg.admin; adminpassFile = cfg.passwordFile; From 5741421604ba77208924490c67f896914638ba12 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 15 Jul 2023 15:45:42 +0200 Subject: [PATCH 0993/1588] modules: services: nextcloud: enable 'notify_push' --- modules/services/nextcloud/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index ae4bf14..1477c13 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -44,6 +44,12 @@ in dbhost = "/run/postgresql"; overwriteProtocol = "https"; # Nginx only allows SSL }; + + notify_push = { + enable = true; + # Allow using the push service without hard-coding my IP in the configuration + bendDomainToLocalhost = true; + }; }; services.postgresql = { From 4bb13873764664709483fc31cff7f86ab709f894 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 24 Sep 2022 21:52:06 +0200 Subject: [PATCH 0994/1588] modules: services: add tandoor-recipes --- modules/services/default.nix | 1 + modules/services/tandoor-recipes/default.nix | 79 ++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 modules/services/tandoor-recipes/default.nix diff --git a/modules/services/default.nix b/modules/services/default.nix index 4fcf453..86badf5 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -30,6 +30,7 @@ ./rss-bridge ./sabnzbd ./ssh-server + ./tandoor-recipes ./tlp ./transmission ./vikunja diff --git a/modules/services/tandoor-recipes/default.nix b/modules/services/tandoor-recipes/default.nix new file mode 100644 index 0000000..d78bef3 --- /dev/null +++ b/modules/services/tandoor-recipes/default.nix @@ -0,0 +1,79 @@ +{ config, lib, ... }: +let + cfg = config.my.services.tandoor-recipes; +in +{ + options.my.services.tandoor-recipes = with lib; { + enable = mkEnableOption "Tandoor Recipes service"; + + port = mkOption { + type = types.port; + default = 4536; + example = 8080; + description = "Internal port for webui"; + }; + + secretKeyFile = mkOption { + type = types.str; + example = "/var/lib/tandoor-recipes/secret-key.env"; + description = '' + Secret key as an 'EnvironmentFile' (see `systemd.exec(5)`) + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.tandoor-recipes = { + enable = true; + + port = cfg.port; + extraConfig = + let + tandoorRecipesDomain = "recipes.${config.networking.domain}"; + in + { + # Use PostgreSQL + DB_ENGINE = "django.db.backends.postgresql"; + POSTGRES_HOST = "/run/postgresql"; + POSTGRES_USER = "tandoor_recipes"; + POSTGRES_DB = "tandoor_recipes"; + + # Security settings + ALLOWED_HOSTS = tandoorRecipesDomain; + CSRF_TRUSTED_ORIGINS = "https://${tandoorRecipesDomain}"; + + # Misc + TIMEZONE = config.time.timeZone; + }; + }; + + systemd.services = { + tandoor-recipes = { + after = [ "postgresql.service" ]; + + serviceConfig = { + EnvironmentFile = cfg.secretKeyFile; + }; + }; + }; + + # Set-up database + services.postgresql = { + enable = true; + ensureDatabases = [ "tandoor_recipes" ]; + ensureUsers = [ + { + name = "tandoor_recipes"; + ensurePermissions."DATABASE tandoor_recipes" = "ALL PRIVILEGES"; + } + ]; + }; + + my.services.nginx.virtualHosts = [ + { + subdomain = "recipes"; + inherit (cfg) port; + } + ]; + }; +} From 5ff0b62af89f8a2befe8a7f435996aade95228b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 24 Sep 2022 21:53:22 +0200 Subject: [PATCH 0995/1588] hosts: nixos: porthos: secrets: add tandoor --- hosts/nixos/porthos/secrets/secrets.nix | 2 ++ .../secrets/tandoor-recipes/secret-key.age | Bin 0 -> 496 bytes 2 files changed, 2 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/tandoor-recipes/secret-key.age diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 3b88e60..821cc25 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -59,6 +59,8 @@ in "sso/ambroisie/password-hash.age".publicKeys = all; "sso/ambroisie/totp-secret.age".publicKeys = all; + "tandoor-recipes/secret-key.age".publicKeys = all; + "transmission/credentials.age".publicKeys = all; "vikunja/mail.age".publicKeys = all; diff --git a/hosts/nixos/porthos/secrets/tandoor-recipes/secret-key.age b/hosts/nixos/porthos/secrets/tandoor-recipes/secret-key.age new file mode 100644 index 0000000000000000000000000000000000000000..2ec147d8edff2730442d1ae253609e27bd43bec4 GIT binary patch literal 496 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCU73dk?dOIL_6DYvln z2{*P()2|Hk^oTU_arVl{F7qlg&h|0S2{bP74>1i1Dlki`EauYIuSy9lH>pa=iAptf z%u2~Nb*iv*_0M$9P7blukIX2H@+e9UGe|R!bVRo;**iZgH(enj$KSOiIo&iP+b=yZ z+btz6EJ@obGuPO-*rz$u7bZpULu!^ zTZw^LT7f}QrH`9qT1G^si)(10e_+0|cDiM5R+(X*TbZ__S&mPEw`Z=0yOBjono~eP zu5YP(v3F6bVP+*)aXOc-uC78=qH#*PYhZ}KW3soGc}h}hZmGVnxv8U5QdVV(M~ZQk zqq}cpjzOe Date: Sat, 24 Sep 2022 21:53:50 +0200 Subject: [PATCH 0996/1588] hosts: nixos: porthos: services: add tandoor --- hosts/nixos/porthos/services.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index e0a1731..76ea1ee 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -136,6 +136,11 @@ in sabnzbd.enable = true; # Because I stilll need to play sysadmin ssh-server.enable = true; + # Recipe manager + tandoor-recipes = { + enable = true; + secretKeyFile = secrets."tandoor-recipes/secret-key".path; + }; # Torrent client and webui transmission = { enable = true; From caa8357db897182f9351d8a3e8f3b33a210f28ac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 17 Jul 2023 09:57:24 +0000 Subject: [PATCH 0997/1588] home: nixpkgs: define 'GITHUB_API_TOKEN' Turns out the nixpkgs scripts are not consistent in which environment variable they expect to be defined... --- home/nixpkgs/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/nixpkgs/default.nix b/home/nixpkgs/default.nix index 2b7fca4..720fc9b 100644 --- a/home/nixpkgs/default.nix +++ b/home/nixpkgs/default.nix @@ -14,6 +14,7 @@ in home.sessionVariables = { GITHUB_TOKEN = ''$(cat "${config.age.secrets."github/token".path}")''; + GITHUB_API_TOKEN = ''$(cat "${config.age.secrets."github/token".path}")''; }; }; } From ae13ab0c86fa3fb496fc522324c6f55b26e72228 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 17 Jul 2023 10:57:41 +0000 Subject: [PATCH 0998/1588] nixos: porthos: secrets: add grafana secret-key The secret will be used in the next commit. --- .../porthos/secrets/monitoring/secret-key.age | Bin 0 -> 507 bytes hosts/nixos/porthos/secrets/secrets.nix | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/monitoring/secret-key.age diff --git a/hosts/nixos/porthos/secrets/monitoring/secret-key.age b/hosts/nixos/porthos/secrets/monitoring/secret-key.age new file mode 100644 index 0000000000000000000000000000000000000000..4cef94fa385ae398c60f78536f661c35edf04631 GIT binary patch literal 507 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;_*_F)T0+ z$oA8A@~-f+$n|vhEi?);3v+Q!sw%EBxA3g+Ob-pyFRRG+$mYsOHmgjv2y^qVu*~qt zs0?%}@prVeOw)F&DE1D@&kIPb$nZ%jcFZbs4@9>uDqicz!uX#YRS45RzT5z^oWPn*|WPq=;kxQtvyGvA6UZQqN zUVem^p=pUpgr!k#Nn%kJm#(g^f={BKMS4n(QEG^jzPm-ZQ&x$7g{y0bmw9n%NqJ#J zctLJyYK3b=eyLA7*M6P()8b<$GbBds_j<$HsU&gXW^9%J1s0R7CxdfuioQE0v%67y i$qNz5ce@K;OrO5?x=*9vHD2TJcPoBRP09Si^8f(Rs;wsg literal 0 HcmV?d00001 diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 821cc25..498aebf 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -42,6 +42,10 @@ in owner = "grafana"; publicKeys = all; }; + "monitoring/secret-key.age" = { + owner = "grafana"; + publicKeys = all; + }; "nextcloud/password.age" = { owner = "nextcloud"; From 47533f119e21b444c8ee62a3ab985ad4551886bd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 17 Jul 2023 10:58:29 +0000 Subject: [PATCH 0999/1588] modules: services: monitoring: add 'secretKeyFile' --- hosts/nixos/porthos/services.nix | 1 + modules/services/monitoring/default.nix | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 76ea1ee..e4cae5e 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -80,6 +80,7 @@ in enable = true; grafana = { passwordFile = secrets."monitoring/password".path; + secretKeyFile = secrets."monitoring/secret-key".path; }; }; # FLOSS music streaming server diff --git a/modules/services/monitoring/default.nix b/modules/services/monitoring/default.nix index ece6cc1..829bfe0 100644 --- a/modules/services/monitoring/default.nix +++ b/modules/services/monitoring/default.nix @@ -27,6 +27,12 @@ in example = "/var/lib/grafana/password.txt"; description = "Admin password stored in a file"; }; + + secretKeyFile = mkOption { + type = types.str; + example = "/var/lib/grafana/secret_key.txt"; + description = "Secret key stored in a file"; + }; }; prometheus = { @@ -61,6 +67,7 @@ in security = { admin_user = cfg.grafana.username; admin_password = "$__file{${cfg.grafana.passwordFile}}"; + secret_key = "$__file{${cfg.grafana.secretKeyFile}}"; }; }; From fc6b221ba135a7f99adbcde435170ff05008346c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 20 Jul 2023 21:47:10 +0100 Subject: [PATCH 1000/1588] overlays: make overlay import automatic Don't rely on nixpkgs' lib to make it easier to just `import` the directory. --- overlays/default.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/overlays/default.nix b/overlays/default.nix index e504b17..683e021 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,3 +1,6 @@ -{ - # No overlays -} +# Automatically import all overlays in the directory +let + files = builtins.readDir ./.; + overlays = builtins.removeAttrs files [ "default.nix" ]; +in +builtins.mapAttrs (name: _: import "${./.}/${name}") overlays From 65de9c5a0e4f143051b7d2074ff9535ade0c9a21 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 21 Jul 2023 10:19:05 +0000 Subject: [PATCH 1001/1588] home: zsh: add fallback for all mappings I don't actually think any of these are _necessary_, but you never know. --- home/zsh/extra-mappings.zsh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index 2e9c18f..3456e13 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -92,6 +92,10 @@ if [ -n "${terminfo[kpp]}" ]; then bindkey -M emacs "${terminfo[kpp]}" up-line-or-history bindkey -M viins "${terminfo[kpp]}" up-line-or-history bindkey -M vicmd "${terminfo[kpp]}" up-line-or-history +else + bindkey -M emacs "^[[5~" up-line-or-history + bindkey -M viins "^[[5~" up-line-or-history + bindkey -M vicmd "^[[5~" up-line-or-history fi # PageDown goes forward in history @@ -99,6 +103,10 @@ if [ -n "${terminfo[knp]}" ]; then bindkey -M emacs "${terminfo[knp]}" down-line-or-history bindkey -M viins "${terminfo[knp]}" down-line-or-history bindkey -M vicmd "${terminfo[knp]}" down-line-or-history +else + bindkey -M emacs "^[[6~" down-line-or-history + bindkey -M viins "^[[6~" down-line-or-history + bindkey -M vicmd "^[[6~" down-line-or-history fi # Home goes to the beginning of the line @@ -106,6 +114,10 @@ if [ -n "${terminfo[khome]}" ]; then bindkey -M emacs "${terminfo[khome]}" beginning-of-line bindkey -M viins "${terminfo[khome]}" beginning-of-line bindkey -M vicmd "${terminfo[khome]}" beginning-of-line +else + bindkey -M emacs "^[[1~" beginning-of-line + bindkey -M viins "^[[1~" beginning-of-line + bindkey -M vicmd "^[[1~" beginning-of-line fi # End goes to the end of the line @@ -113,4 +125,8 @@ if [ -n "${terminfo[kend]}" ]; then bindkey -M emacs "${terminfo[kend]}" end-of-line bindkey -M viins "${terminfo[kend]}" end-of-line bindkey -M vicmd "${terminfo[kend]}" end-of-line +else + bindkey -M emacs "^[[4~" end-of-line + bindkey -M viins "^[[4~" end-of-line + bindkey -M vicmd "^[[4~" end-of-line fi From ae8d8d75fdbf70094a9db5296afe13f844a6240e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 21 Jul 2023 22:33:47 +0200 Subject: [PATCH 1002/1588] flake: bump inputs Update `fail2ban` to accomodate for RFC-42 migration. --- flake.lock | 42 +++++++++++++-------------- modules/services/fail2ban/default.nix | 8 ++--- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/flake.lock b/flake.lock index 6da0c3e..ec43468 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1684153753, - "narHash": "sha256-PVbWt3qrjYAK+T5KplFcO+h7aZWfEj1UtyoKlvcDxh0=", + "lastModified": 1689334118, + "narHash": "sha256-djk5AZv1yU84xlKFaVHqFWvH73U7kIRstXwUAnDJPsk=", "owner": "ryantm", "repo": "agenix", - "rev": "db5637d10f797bb251b94ef9040b237f4702cde3", + "rev": "0d8c5325fc81daf00532e3e26c6752f7bcde1143", "type": "github" }, "original": { @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1687762428, - "narHash": "sha256-DIf7mi45PKo+s8dOYF+UlXHzE0Wl/+k3tXUyAoAnoGE=", + "lastModified": 1688466019, + "narHash": "sha256-VeM2akYrBYMsb4W/MmBo1zmaMfgbL4cH3Pu8PGyIwJ0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "37dd7bb15791c86d55c5121740a1887ab55ee836", + "rev": "8e8d955c22df93dbe24f19ea04f47a74adbdc5ec", "type": "github" }, "original": { @@ -89,11 +89,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1687709756, - "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=", + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", "owner": "numtide", "repo": "flake-utils", - "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1687969886, - "narHash": "sha256-tC2qFLmuM0PFaw0tMHVcFmzsG/351q09qa1EpuL2n1U=", + "lastModified": 1689891262, + "narHash": "sha256-Pc4wDczbdgd6QXKJIXprgxe7L9AVDsoAkMnvm5vmpUU=", "owner": "nix-community", "repo": "home-manager", - "rev": "a7002d6bfca54742d5fc9b485a1879953b4585b9", + "rev": "ee5673246de0254186e469935909e821b8f4ec15", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1688049487, - "narHash": "sha256-100g4iaKC9MalDjUW9iN6Jl/OocTDtXdeAj7pEGIRh4=", + "lastModified": 1689850295, + "narHash": "sha256-fUYf6WdQlhd2H+3aR8jST5dhFH1d0eE22aes8fNIfyk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4bc72cae107788bf3f24f30db2e2f685c9298dc9", + "rev": "5df4d78d54f7a34e9ea1f84a22b4fd9baebc68d0", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1688149889, - "narHash": "sha256-lHAwpd4ij6GUtu1ww9M9P81HnV/1mdsQXwEAoLQPZso=", + "lastModified": 1689968828, + "narHash": "sha256-5qA6R/cBeLsS09ZMRKzhJq74nOGWEgGYpjdbKXDnCow=", "owner": "nix-community", "repo": "NUR", - "rev": "4cd52203c52face9ee649200a0d666c51e012dfa", + "rev": "876b9498f36a394fcf8472f62ecf6685585c0509", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1688137124, - "narHash": "sha256-ramG4s/+A5+t/QG2MplTNPP/lmBWDtbW6ilpwb9sKVo=", + "lastModified": 1689668210, + "narHash": "sha256-XAATwDkaUxH958yXLs1lcEOmU6pSEIkatY3qjqk8X0E=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "522fd47af79b66cdd04b92618e65c7a11504650a", + "rev": "eb433bff05b285258be76513add6f6c57b441775", "type": "github" }, "original": { diff --git a/modules/services/fail2ban/default.nix b/modules/services/fail2ban/default.nix index ab80bda..d62b9e2 100644 --- a/modules/services/fail2ban/default.nix +++ b/modules/services/fail2ban/default.nix @@ -28,10 +28,10 @@ in rndtime = "5m"; # Use 5 minute jitter to avoid unban evasion }; - jails.DEFAULT = ''; - findtime = 4h - bantime = 10m - ''; + jails.DEFAULT.settings = { + findtime = "4h"; + bantime = "10m"; + }; }; }; } From f363ae71a596a011b67c177b1fe495c6548013ad Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Jul 2023 22:02:06 +0200 Subject: [PATCH 1003/1588] hosts: nixos: porthos: boot: use '/dev/disk/by-id' Somehow `/dev/sda` and `/dev/sdb` switched around, so use a more stable path. --- hosts/nixos/porthos/boot.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/nixos/porthos/boot.nix b/hosts/nixos/porthos/boot.nix index f0cb925..fbc5db7 100644 --- a/hosts/nixos/porthos/boot.nix +++ b/hosts/nixos/porthos/boot.nix @@ -7,7 +7,7 @@ loader.grub = { enable = true; # Define on which hard drive you want to install Grub. - device = "/dev/sda"; + device = "/dev/disk/by-id/ata-HGST_HUS724020ALA640_PN2181P6J58M1P"; }; initrd = { From 850b9f792ff19dcf3e66b0ffaccabe97e8f8ca71 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 28 Jul 2023 16:05:38 +0000 Subject: [PATCH 1004/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index ec43468..2f2ccbb 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1689334118, - "narHash": "sha256-djk5AZv1yU84xlKFaVHqFWvH73U7kIRstXwUAnDJPsk=", + "lastModified": 1690228878, + "narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=", "owner": "ryantm", "repo": "agenix", - "rev": "0d8c5325fc81daf00532e3e26c6752f7bcde1143", + "rev": "d8c973fd228949736dedf61b7f8cc1ece3236792", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1689891262, - "narHash": "sha256-Pc4wDczbdgd6QXKJIXprgxe7L9AVDsoAkMnvm5vmpUU=", + "lastModified": 1690476848, + "narHash": "sha256-PSmzyuEbMxEn2uwwLYUN2l1psoJXb7jm/kfHD12Sq0k=", "owner": "nix-community", "repo": "home-manager", - "rev": "ee5673246de0254186e469935909e821b8f4ec15", + "rev": "8d243f7da13d6ee32f722a3f1afeced150b6d4da", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1689850295, - "narHash": "sha256-fUYf6WdQlhd2H+3aR8jST5dhFH1d0eE22aes8fNIfyk=", + "lastModified": 1690367991, + "narHash": "sha256-2VwOn1l8y6+cu7zjNE8MgeGJNNz1eat1HwHrINeogFA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5df4d78d54f7a34e9ea1f84a22b4fd9baebc68d0", + "rev": "c9cf0708f00fbe553319258e48ca89ff9a413703", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1689968828, - "narHash": "sha256-5qA6R/cBeLsS09ZMRKzhJq74nOGWEgGYpjdbKXDnCow=", + "lastModified": 1690541304, + "narHash": "sha256-EypV1o52D9SdHWyH3Wf6RLdDiDnKIqqXiUROrtN2KyQ=", "owner": "nix-community", "repo": "NUR", - "rev": "876b9498f36a394fcf8472f62ecf6685585c0509", + "rev": "03f02d6f7b5c284fe6ed12f86debb21429ca124c", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1689668210, - "narHash": "sha256-XAATwDkaUxH958yXLs1lcEOmU6pSEIkatY3qjqk8X0E=", + "lastModified": 1690464206, + "narHash": "sha256-38V4kmOh6ikpfGiAS+Kt2H/TA2DubSqE66veP/jmB4Q=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "eb433bff05b285258be76513add6f6c57b441775", + "rev": "9289996dcac62fd45836db7c07b87d2521eb526d", "type": "github" }, "original": { From e5a1105c59545c940fbfb78d03c7194766ac0fe0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Jul 2023 17:59:12 +0100 Subject: [PATCH 1005/1588] home: wm: i3: remove 'pamixer' This was left-over from the first version of my volume mappings. --- home/wm/i3/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index c7a728a..44e2614 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -61,7 +61,6 @@ in ambroisie.dragger # drag-and-drop from the CLI ambroisie.i3-get-window-criteria # little helper for i3 configuration arandr # Used by a mapping - pamixer # Used by a mapping playerctl # Used by a mapping ]; From 36c0590ae59700f98ad8c18702ebdcb0c14323bb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 11 May 2021 12:43:42 +0200 Subject: [PATCH 1006/1588] home: add bitwarden --- home/bitwarden/default.nix | 27 +++++++++++++++++++++++++++ home/default.nix | 1 + 2 files changed, 28 insertions(+) create mode 100644 home/bitwarden/default.nix diff --git a/home/bitwarden/default.nix b/home/bitwarden/default.nix new file mode 100644 index 0000000..c709f7b --- /dev/null +++ b/home/bitwarden/default.nix @@ -0,0 +1,27 @@ +{ config, lib, ... }: +let + cfg = config.my.home.bitwarden; +in +{ + options.my.home.bitwarden = with lib; { + enable = my.mkDisableOption "bitwarden configuration"; + + pinentry = mkOption { + type = types.str; + default = "tty"; + example = "gtk2"; + description = "Which pinentry interface to use"; + }; + }; + + config = lib.mkIf cfg.enable { + programs.rbw = { + enable = true; + + settings = { + email = lib.my.mkMailAddress "bruno" "belanyi.fr"; + inherit (cfg) pinentry; + }; + }; + }; +} diff --git a/home/default.nix b/home/default.nix index 6b6ad36..8ba3a8d 100644 --- a/home/default.nix +++ b/home/default.nix @@ -4,6 +4,7 @@ ./aliases ./atuin ./bat + ./bitwarden ./bluetooth ./calibre ./comma From 4a9a46547e7d975f3bb6fdb3a59b3d8e417a361b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 11 May 2021 12:44:38 +0200 Subject: [PATCH 1007/1588] machine: aramis: home: set 'bitwarden.pinentry' --- hosts/nixos/aramis/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index 6d66384..66a0892 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -1,6 +1,8 @@ { pkgs, ... }: { my.home = { + # Use graphical pinentry + bitwarden.pinentry = "gtk2"; # Ebook library calibre.enable = true; # Some amount of social life From 2dfc788ed486d5dab0eae902ac134494cad73ec9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Jul 2023 17:58:07 +0100 Subject: [PATCH 1008/1588] home: wm: i3: add 'rofi-rbw' mapping --- home/wm/i3/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 44e2614..34c1db4 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -62,6 +62,7 @@ in ambroisie.i3-get-window-criteria # little helper for i3 configuration arandr # Used by a mapping playerctl # Used by a mapping + xdotool # Used by 'rofi-rbw', in a mapping ]; xsession.windowManager.i3 = { @@ -188,6 +189,7 @@ in "${modifier}+d" = "exec rofi -show drun -disable-history"; "${modifier}+Shift+d" = "exec rofi -show run -disable-history"; "${modifier}+p" = "exec --no-startup-id flameshot gui"; + "${modifier}+Ctrl+p" = "exec ${lib.getExe pkgs.rofi-rbw}"; "${modifier}+Shift+p" = "exec rofi -show emoji"; "${modifier}+b" = let From 8f818b86114a13c59745a69bb884001d0a8a605b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Jul 2023 18:44:08 +0100 Subject: [PATCH 1009/1588] pkgs: add rbw-pass This is honestly almost overkill, as the script doesn't really have any logic in it, but it's good to have a common base with the bitwarden-cli one. --- pkgs/default.nix | 2 ++ pkgs/rbw-pass/default.nix | 40 ++++++++++++++++++++++++++++++++++++ pkgs/rbw-pass/rbw-pass | 43 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 pkgs/rbw-pass/default.nix create mode 100755 pkgs/rbw-pass/rbw-pass diff --git a/pkgs/default.nix b/pkgs/default.nix index 4a84b9c..cfd722d 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -26,6 +26,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { osc52 = pkgs.callPackage ./osc52 { }; + rbw-pass = pkgs.callPackage ./rbw-pass { }; + unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { }; diff --git a/pkgs/rbw-pass/default.nix b/pkgs/rbw-pass/default.nix new file mode 100644 index 0000000..7f0286b --- /dev/null +++ b/pkgs/rbw-pass/default.nix @@ -0,0 +1,40 @@ +{ lib, coreutils, makeWrapper, rbw, rofi, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "rbw-pass"; + version = "0.1.0"; + + src = ./rbw-pass; + + nativeBuildInputs = [ + makeWrapper + ]; + + dontUnpack = true; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${pname} + chmod a+x $out/bin/${pname} + ''; + + wrapperPath = lib.makeBinPath [ + rbw + coreutils + rofi + ]; + + fixupPhase = '' + patchShebangs $out/bin/${pname} + wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = "A simple script to query a password from rbw"; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + platforms = platforms.linux; + maintainers = with maintainers; [ ambroisie ]; + }; +} diff --git a/pkgs/rbw-pass/rbw-pass b/pkgs/rbw-pass/rbw-pass new file mode 100755 index 0000000..90e916c --- /dev/null +++ b/pkgs/rbw-pass/rbw-pass @@ -0,0 +1,43 @@ +#!/usr/bin/env bash + +usage() { + printf '%s\n' "Usage: bw-pass [directory name] " >&2 +} + +error_out() { + printf '%s\n' "$1" >&2 + rofi -dmenu -no-fixed-num-lines -p "$1" + exit 1 +} + +ensure_logged_in() { + rbw login +} + +query_password() { + # Either use with `query_password + # Or `query_password ` when the account has no directory + + local FOLDER_ARGS=() + local PASSWORD + + # FIXME: no way to enforce filering by "no folder" + if [ $# -eq 2 ]; then + FOLDER_ARGS+=(--folder "$1") + shift + fi + PASSWORD="$(rbw get "${FOLDER_ARGS[@]}" "$1")" + + if [ -z "$PASSWORD" ]; then + error_out "Did not find password for '$1'" + fi + printf '%s\n' "$PASSWORD" +} + +if [ $# -lt 1 ] || [ $# -gt 2 ]; then + usage + exit 1 +fi + +ensure_logged_in +query_password "$@" From 9f7472222cbfe03b09a6caec2ff7b50595f43483 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Jul 2023 18:58:40 +0100 Subject: [PATCH 1010/1588] treewide: use 'lib.getExe' when possible Don't use it in wireguard to keep it consistent, as only half the commands could use it. --- home/mail/accounts/default.nix | 2 +- home/mail/himalaya/default.nix | 2 +- home/wm/default.nix | 4 ++-- home/wm/i3/default.nix | 6 +++--- home/wm/screen-lock/default.nix | 2 +- modules/services/drone/runner-docker/default.nix | 3 +-- modules/services/drone/runner-exec/default.nix | 3 +-- modules/services/flood/default.nix | 2 +- modules/services/lohr/default.nix | 4 +--- modules/services/nginx/sso/default.nix | 4 ++-- pkgs/ff2mpv-go/default.nix | 2 +- pkgs/unbound-zones-adblock/default.nix | 2 +- 12 files changed, 16 insertions(+), 20 deletions(-) diff --git a/home/mail/accounts/default.nix b/home/mail/accounts/default.nix index f513605..9ccc643 100644 --- a/home/mail/accounts/default.nix +++ b/home/mail/accounts/default.nix @@ -8,7 +8,7 @@ let realName = lib.mkDefault "Bruno BELANYI"; userName = lib.mkDefault (mkMailAddress address domain); passwordCommand = - lib.mkDefault [ "${pkgs.ambroisie.bw-pass}/bin/bw-pass" "Mail" passName ]; + lib.mkDefault [ (lib.getExe pkgs.ambroisie.bw-pass) "Mail" passName ]; address = mkMailAddress address domain; aliases = builtins.map (lib.flip mkMailAddress domain) aliases; diff --git a/home/mail/himalaya/default.nix b/home/mail/himalaya/default.nix index c2d3b05..849a415 100644 --- a/home/mail/himalaya/default.nix +++ b/home/mail/himalaya/default.nix @@ -9,7 +9,7 @@ in settings = { notify-cmd = let - notify-send = "${pkgs.libnotify}/bin/notify-send"; + notify-send = lib.getExe pkgs.libnotify; in pkgs.writeScript "mail-notifier" '' SENDER="$1" diff --git a/home/wm/default.nix b/home/wm/default.nix index fb9ecee..6a615e5 100644 --- a/home/wm/default.nix +++ b/home/wm/default.nix @@ -47,8 +47,8 @@ in command = mkOption { type = types.str; - default = "${pkgs.i3lock}/bin/i3lock -n -c 000000"; - example = "\${pkgs.i3lock}/bin/i3lock -n -i lock.png"; + default = "${lib.getExe pkgs.i3lock} -n -c 000000"; + example = "\${lib.getExe pkgs.i3lock} -n -i lock.png"; description = "Locker command to run"; }; diff --git a/home/wm/i3/default.nix b/home/wm/i3/default.nix index 34c1db4..d1dbe2c 100644 --- a/home/wm/i3/default.nix +++ b/home/wm/i3/default.nix @@ -27,13 +27,13 @@ let genMovementBindings = f: addVimKeyBindings (lib.my.genAttrs' movementKeys f); # Used in multiple scripts to show messages through keybindings - notify-send = "${pkgs.libnotify}/bin/notify-send"; + notify-send = lib.getExe pkgs.libnotify; # Screen backlight management - changeBacklight = "${pkgs.ambroisie.change-backlight}/bin/change-backlight"; + changeBacklight = lib.getExe pkgs.ambroisie.change-backlight; # Audio and volume management - changeAudio = "${pkgs.ambroisie.change-audio}/bin/change-audio"; + changeAudio = lib.getExe pkgs.ambroisie.change-audio; # Lock management toggleXautolock = diff --git a/home/wm/screen-lock/default.nix b/home/wm/screen-lock/default.nix index 95060b8..3b2ead6 100644 --- a/home/wm/screen-lock/default.nix +++ b/home/wm/screen-lock/default.nix @@ -5,7 +5,7 @@ let notficationCmd = let duration = toString (cfg.notify.delay * 1000); - notifyCmd = "${pkgs.libnotify}/bin/notify-send -u critical -t ${duration}"; + notifyCmd = "${lib.getExe pkgs.libnotify} -u critical -t ${duration}"; in # Needs to be surrounded by quotes for systemd to launch it correctly ''"${notifyCmd} -- 'Locking in ${toString cfg.notify.delay} seconds'"''; diff --git a/modules/services/drone/runner-docker/default.nix b/modules/services/drone/runner-docker/default.nix index 6ccb5fe..e53c608 100644 --- a/modules/services/drone/runner-docker/default.nix +++ b/modules/services/drone/runner-docker/default.nix @@ -2,7 +2,6 @@ let cfg = config.my.services.drone; hasRunner = (name: builtins.elem name cfg.runners); - dockerPkg = pkgs.drone-runner-docker; in { config = lib.mkIf (cfg.enable && hasRunner "docker") { @@ -25,7 +24,7 @@ in EnvironmentFile = [ cfg.sharedSecretFile ]; - ExecStart = "${dockerPkg}/bin/drone-runner-docker"; + ExecStart = lib.getExe pkgs.drone-runner-docker; User = "drone-runner-docker"; Group = "drone-runner-docker"; }; diff --git a/modules/services/drone/runner-exec/default.nix b/modules/services/drone/runner-exec/default.nix index f0dddb9..a9bb563 100644 --- a/modules/services/drone/runner-exec/default.nix +++ b/modules/services/drone/runner-exec/default.nix @@ -2,7 +2,6 @@ let cfg = config.my.services.drone; hasRunner = (name: builtins.elem name cfg.runners); - execPkg = pkgs.drone-runner-exec; in { config = lib.mkIf (cfg.enable && hasRunner "exec") { @@ -53,7 +52,7 @@ in EnvironmentFile = [ cfg.sharedSecretFile ]; - ExecStart = "${execPkg}/bin/drone-runner-exec"; + ExecStart = lib.getExe pkgs.drone-runner-exec; User = "drone-runner-exec"; Group = "drone-runner-exec"; }; diff --git a/modules/services/flood/default.nix b/modules/services/flood/default.nix index ae8e219..ff5d941 100644 --- a/modules/services/flood/default.nix +++ b/modules/services/flood/default.nix @@ -30,7 +30,7 @@ in serviceConfig = { ExecStart = lib.concatStringsSep " " [ - "${pkgs.flood}/bin/flood" + (lib.getExe pkgs.flood) "--port ${builtins.toString cfg.port}" "--rundir /var/lib/${cfg.stateDir}" ]; diff --git a/modules/services/lohr/default.nix b/modules/services/lohr/default.nix index f43bc40..245567c 100644 --- a/modules/services/lohr/default.nix +++ b/modules/services/lohr/default.nix @@ -4,8 +4,6 @@ let cfg = config.my.services.lohr; settingsFormat = pkgs.formats.yaml { }; - lohrPkg = pkgs.ambroisie.lohr; - lohrStateDirectory = "lohr"; lohrHome = "/var/lib/lohr/"; in @@ -80,7 +78,7 @@ in let configFile = settingsFormat.generate "lohr-config.yaml" cfg.setting; in - "${lohrPkg}/bin/lohr --config ${configFile}"; + "${lib.getExe pkgs.ambroisie.lohr} --config ${configFile}"; StateDirectory = lohrStateDirectory; WorkingDirectory = lohrHome; User = "lohr"; diff --git a/modules/services/nginx/sso/default.nix b/modules/services/nginx/sso/default.nix index 13292ec..cbb35d5 100644 --- a/modules/services/nginx/sso/default.nix +++ b/modules/services/nginx/sso/default.nix @@ -60,7 +60,7 @@ in WorkingDirectory = "/var/lib/nginx-sso"; # The files to be merged might not have the correct permissions ExecStartPre = ''+${pkgs.writeScript "merge-nginx-sso-config" '' - #!${pkgs.bash}/bin/bash + #!${lib.getExe pkgs.bash} rm -f '${confPath}' ${utils.genJqSecretsReplacementSnippet cfg.configuration confPath} @@ -70,7 +70,7 @@ in '' }''; ExecStart = lib.mkForce '' - ${pkg}/bin/nginx-sso \ + ${lib.getExe pkg} \ --config ${confPath} \ --frontend-dir ${pkg}/share/frontend ''; diff --git a/pkgs/ff2mpv-go/default.nix b/pkgs/ff2mpv-go/default.nix index dcdb7f3..fdd9201 100644 --- a/pkgs/ff2mpv-go/default.nix +++ b/pkgs/ff2mpv-go/default.nix @@ -12,7 +12,7 @@ buildGoModule rec { vendorHash = null; postPatch = '' - sed -i -e 's,"mpv","${mpv}/bin/mpv",' ff2mpv.go + sed -i -e 's,"mpv","${lib.getExe mpv}",' ff2mpv.go ''; postInstall = '' diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index 824a7d6..f8d89b1 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -10,7 +10,7 @@ stdenvNoCC.mkDerivation { installPhase = let gawkCmd = lib.concatStringsSep " " [ - ''${gawk}/bin/awk'' + (lib.getExe gawk) '''{sub(/\r$/,"")}'' ''{sub(/^127\.0\.0\.1/,"0.0.0.0")}'' ''BEGIN { OFS = "" }'' From 868a9aa2120621f609f5723c35a3b984a1a7f6ff Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sun, 23 Jul 2023 18:46:39 +0100 Subject: [PATCH 1011/1588] home: mail: accounts: use 'rbw-pass' It should be more robust than the one based on bitwarden-cli. --- home/mail/accounts/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/mail/accounts/default.nix b/home/mail/accounts/default.nix index 9ccc643..e7663d8 100644 --- a/home/mail/accounts/default.nix +++ b/home/mail/accounts/default.nix @@ -8,7 +8,7 @@ let realName = lib.mkDefault "Bruno BELANYI"; userName = lib.mkDefault (mkMailAddress address domain); passwordCommand = - lib.mkDefault [ (lib.getExe pkgs.ambroisie.bw-pass) "Mail" passName ]; + lib.mkDefault [ (lib.getExe pkgs.ambroisie.rbw-pass) "Mail" passName ]; address = mkMailAddress address domain; aliases = builtins.map (lib.flip mkMailAddress domain) aliases; From 58a94bdf1bd6a686124d0252b7d656f58fcb9b1b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 28 Jul 2023 16:05:56 +0000 Subject: [PATCH 1012/1588] pkgs: remove woodpecker-plugin-git I have now upstreamed the package, so let's remove it. --- .../woodpecker/agent-exec/default.nix | 2 +- pkgs/default.nix | 2 - pkgs/woodpecker-plugin-git/default.nix | 37 ------------------- 3 files changed, 1 insertion(+), 40 deletions(-) delete mode 100644 pkgs/woodpecker-plugin-git/default.nix diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/services/woodpecker/agent-exec/default.nix index d7adc4e..68510d7 100644 --- a/modules/services/woodpecker/agent-exec/default.nix +++ b/modules/services/woodpecker/agent-exec/default.nix @@ -33,7 +33,7 @@ in restartIfChanged = false; path = with pkgs; [ - ambroisie.woodpecker-plugin-git + woodpecker-plugin-git bash coreutils git diff --git a/pkgs/default.nix b/pkgs/default.nix index cfd722d..ed27dc9 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -44,7 +44,5 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { woodpecker-frontend = pkgs.callPackage ./woodpecker/frontend.nix { }; - woodpecker-plugin-git = pkgs.callPackage ./woodpecker-plugin-git { }; - woodpecker-server = pkgs.callPackage ./woodpecker/server.nix { }; }) diff --git a/pkgs/woodpecker-plugin-git/default.nix b/pkgs/woodpecker-plugin-git/default.nix deleted file mode 100644 index 8411216..0000000 --- a/pkgs/woodpecker-plugin-git/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ lib, buildGoModule, fetchFromGitHub, fetchpatch }: -buildGoModule rec { - pname = "woodpecker-plugin-git"; - version = "2.0.3"; - - src = fetchFromGitHub { - owner = "woodpecker-ci"; - repo = "plugin-git"; - rev = "v${version}"; - hash = "sha256-KU/A3V7KS8R1nAZoJJwkDc9C8y3t148kUzGnkeYtFjs="; - }; - - vendorHash = "sha256-63Ly/9yIJu2K/DwOfGs9pYU3fokbs2senZkl3MJ1UIY="; - - patches = [ - # https://github.com/woodpecker-ci/plugin-git/pull/67 - (fetchpatch { - name = "do-not-overwrite-command-env.patch"; - url = "https://github.com/woodpecker-ci/plugin-git/commit/970cc63a9b212872deac565c6292feb3f4cf4b51.patch"; - hash = "sha256-izu0X7j+OyNbrOkksf+7VF3KiKVylVv2o00xaX/b1Rg="; - }) - ]; - - CGO_ENABLED = "0"; - - # Checks fail because they require network access. - doCheck = false; - - meta = with lib; { - description = "Woodpecker plugin for cloning Git repositories."; - homepage = "https://woodpecker-ci.org/"; - license = licenses.asl20; - mainProgram = "pluging-git"; - maintainers = with maintainers; [ thehedgeh0g ]; - platforms = platforms.all; - }; -} From 45c3b8260657b46776cd64b3a627e935a8168127 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Wed, 2 Aug 2023 16:11:19 +0000 Subject: [PATCH 1013/1588] modules: services: nginx-sso: use writeShellScript --- modules/services/nginx/sso/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/services/nginx/sso/default.nix b/modules/services/nginx/sso/default.nix index cbb35d5..4a78282 100644 --- a/modules/services/nginx/sso/default.nix +++ b/modules/services/nginx/sso/default.nix @@ -59,8 +59,7 @@ in StateDirectory = "nginx-sso"; WorkingDirectory = "/var/lib/nginx-sso"; # The files to be merged might not have the correct permissions - ExecStartPre = ''+${pkgs.writeScript "merge-nginx-sso-config" '' - #!${lib.getExe pkgs.bash} + ExecStartPre = ''+${pkgs.writeShellScript "merge-nginx-sso-config" '' rm -f '${confPath}' ${utils.genJqSecretsReplacementSnippet cfg.configuration confPath} From 68118e8f935260c9e88ef25a90053f0bc30781d8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Aug 2023 09:17:28 +0000 Subject: [PATCH 1014/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 2f2ccbb..b3c3e01 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1688466019, - "narHash": "sha256-VeM2akYrBYMsb4W/MmBo1zmaMfgbL4cH3Pu8PGyIwJ0=", + "lastModified": 1690933134, + "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8e8d955c22df93dbe24f19ea04f47a74adbdc5ec", + "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1690476848, - "narHash": "sha256-PSmzyuEbMxEn2uwwLYUN2l1psoJXb7jm/kfHD12Sq0k=", + "lastModified": 1691039228, + "narHash": "sha256-iPNZJ1LvfUf1Y456ewC0DXgf99TNssG8OLObOyqxO6M=", "owner": "nix-community", "repo": "home-manager", - "rev": "8d243f7da13d6ee32f722a3f1afeced150b6d4da", + "rev": "86dd48d70a2e2c17e84e747ba4faa92453e68d4a", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1690367991, - "narHash": "sha256-2VwOn1l8y6+cu7zjNE8MgeGJNNz1eat1HwHrINeogFA=", + "lastModified": 1691006197, + "narHash": "sha256-DbtxVWPt+ZP5W0Usg7jAyTomIM//c3Jtfa59Ht7AV8s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c9cf0708f00fbe553319258e48ca89ff9a413703", + "rev": "66aedfd010204949cb225cf749be08cb13ce1813", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1690541304, - "narHash": "sha256-EypV1o52D9SdHWyH3Wf6RLdDiDnKIqqXiUROrtN2KyQ=", + "lastModified": 1691139289, + "narHash": "sha256-cZtqvYztpGwLtAsfrzY2VeTfFdW3HBwX7m1KV2Zy2nw=", "owner": "nix-community", "repo": "NUR", - "rev": "03f02d6f7b5c284fe6ed12f86debb21429ca124c", + "rev": "cb20b89d5b355c53a18dd149e7104a67381c7c17", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1690464206, - "narHash": "sha256-38V4kmOh6ikpfGiAS+Kt2H/TA2DubSqE66veP/jmB4Q=", + "lastModified": 1691093055, + "narHash": "sha256-sjNWYpDHc6vx+/M0WbBZKltR0Avh2S43UiDbmYtfHt0=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "9289996dcac62fd45836db7c07b87d2521eb526d", + "rev": "ebb43bdacd1af8954d04869c77bc3b61fde515e4", "type": "github" }, "original": { From 7b6779f2b5e5aae5f3608371b157d70dcb24f2d8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Aug 2023 14:57:22 +0000 Subject: [PATCH 1015/1588] modules: services: woodpecker: default packages Now that v1.0.0 is on nixpkgs, no need for my custom packages. --- modules/services/woodpecker/agent-docker/default.nix | 4 +--- modules/services/woodpecker/agent-exec/default.nix | 2 -- modules/services/woodpecker/server/default.nix | 4 +--- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/modules/services/woodpecker/agent-docker/default.nix b/modules/services/woodpecker/agent-docker/default.nix index 2d431bc..b18d075 100644 --- a/modules/services/woodpecker/agent-docker/default.nix +++ b/modules/services/woodpecker/agent-docker/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.services.woodpecker; @@ -10,8 +10,6 @@ in agents.docker = { enable = true; - package = pkgs.ambroisie.woodpecker-agent; - environment = { WOODPECKER_SERVER = "localhost:${toString cfg.rpcPort}"; WOODPECKER_MAX_WORKFLOWS = "10"; diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/services/woodpecker/agent-exec/default.nix index 68510d7..db98241 100644 --- a/modules/services/woodpecker/agent-exec/default.nix +++ b/modules/services/woodpecker/agent-exec/default.nix @@ -10,8 +10,6 @@ in agents.exec = { enable = true; - package = pkgs.ambroisie.woodpecker-agent; - environment = { WOODPECKER_SERVER = "localhost:${toString cfg.rpcPort}"; WOODPECKER_MAX_WORKFLOWS = "10"; diff --git a/modules/services/woodpecker/server/default.nix b/modules/services/woodpecker/server/default.nix index 590f07c..152e707 100644 --- a/modules/services/woodpecker/server/default.nix +++ b/modules/services/woodpecker/server/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.services.woodpecker; in @@ -7,8 +7,6 @@ in services.woodpecker-server = { enable = true; - package = pkgs.ambroisie.woodpecker-server; - environment = { WOODPECKER_OPEN = "true"; WOODPECKER_HOST = "https://woodpecker.${config.networking.domain}"; From 0cf6cfe39bf5f047f1927b60b6ecdc1387266eb7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Aug 2023 14:58:16 +0000 Subject: [PATCH 1016/1588] pkgs: remove woodpecker Now that v1.0.0 is on nixpkgs, no need for my custom packages. --- pkgs/default.nix | 8 - pkgs/woodpecker/agent.nix | 25 - pkgs/woodpecker/cli.nix | 16 - pkgs/woodpecker/common.nix | 38 - pkgs/woodpecker/frontend.nix | 57 - pkgs/woodpecker/server.nix | 26 - pkgs/woodpecker/update.sh | 50 - pkgs/woodpecker/woodpecker-package.json | 71 - pkgs/woodpecker/yarn.lock | 3153 ----------------------- 9 files changed, 3444 deletions(-) delete mode 100644 pkgs/woodpecker/agent.nix delete mode 100644 pkgs/woodpecker/cli.nix delete mode 100644 pkgs/woodpecker/common.nix delete mode 100644 pkgs/woodpecker/frontend.nix delete mode 100644 pkgs/woodpecker/server.nix delete mode 100755 pkgs/woodpecker/update.sh delete mode 100644 pkgs/woodpecker/woodpecker-package.json delete mode 100644 pkgs/woodpecker/yarn.lock diff --git a/pkgs/default.nix b/pkgs/default.nix index ed27dc9..c9e755a 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -37,12 +37,4 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { volantes-cursors = pkgs.callPackage ./volantes-cursors { }; wifi-qr = pkgs.callPackage ./wifi-qr { }; - - woodpecker-agent = pkgs.callPackage ./woodpecker/agent.nix { }; - - woodpecker-cli = pkgs.callPackage ./woodpecker/cli.nix { }; - - woodpecker-frontend = pkgs.callPackage ./woodpecker/frontend.nix { }; - - woodpecker-server = pkgs.callPackage ./woodpecker/server.nix { }; }) diff --git a/pkgs/woodpecker/agent.nix b/pkgs/woodpecker/agent.nix deleted file mode 100644 index 49ff887..0000000 --- a/pkgs/woodpecker/agent.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ buildGoModule, callPackage, fetchpatch }: -let - common = callPackage ./common.nix { }; -in -buildGoModule { - pname = "woodpecker-agent"; - inherit (common) version src ldflags postInstall vendorHash; - - patches = [ - # https://github.com/woodpecker-ci/woodpecker/pull/1686 - (fetchpatch { - name = "fix-local-pipeline-home.patch"; - url = "https://github.com/woodpecker-ci/woodpecker/commit/d2c9b73ebf015bfa64062b9855c33e14484ccc3e.patch"; - hash = "sha256-1wYe4+oCWiV/6W4cIbdDT+mEL9ETQmcYQZhjJASvmUk="; - }) - ]; - - subPackages = "cmd/agent"; - - CGO_ENABLED = 0; - - meta = common.meta // { - description = "Woodpecker Continuous Integration agent"; - }; -} diff --git a/pkgs/woodpecker/cli.nix b/pkgs/woodpecker/cli.nix deleted file mode 100644 index efe6d5f..0000000 --- a/pkgs/woodpecker/cli.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ buildGoModule, callPackage }: -let - common = callPackage ./common.nix { }; -in -buildGoModule { - pname = "woodpecker-cli"; - inherit (common) version src ldflags postInstall vendorHash; - - subPackages = "cmd/cli"; - - CGO_ENABLED = 0; - - meta = common.meta // { - description = "Command line client for the Woodpecker Continuous Integration server"; - }; -} diff --git a/pkgs/woodpecker/common.nix b/pkgs/woodpecker/common.nix deleted file mode 100644 index 8ca96d4..0000000 --- a/pkgs/woodpecker/common.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ lib, fetchFromGitHub }: -let - rev = "e7ca28026bc4576b2dd30aa2ab71c2d07dfc7197"; - srcHash = "sha256-vtttb+tRi3uDFn8liFgZcAqWLENfpTY7lWsNCoTFzEM="; - vendorHash = "sha256-u7HT8+LeqS7mCNbUhrvSW0xd/uduL2Kw7A0mUUpW2w4="; - yarnHash = "sha256-h+he2VxvZlStIoLb1PPxqKSmTfFNGgJmUXptjtc5xD8="; - version = "next-${lib.substring 0 8 rev}"; -in -{ - inherit version yarnHash vendorHash; - - src = fetchFromGitHub { - owner = "woodpecker-ci"; - repo = "woodpecker"; - inherit rev; - hash = srcHash; - }; - - postInstall = '' - cd $out/bin - for f in *; do - mv -- "$f" "woodpecker-$f" - done - cd - - ''; - - ldflags = [ - "-s" - "-w" - "-X github.com/woodpecker-ci/woodpecker/version.Version=${version}" - ]; - - meta = with lib; { - homepage = "https://woodpecker-ci.org/"; - license = licenses.asl20; - maintainers = with maintainers; [ ambroisie techknowlogick ]; - }; -} diff --git a/pkgs/woodpecker/frontend.nix b/pkgs/woodpecker/frontend.nix deleted file mode 100644 index e584549..0000000 --- a/pkgs/woodpecker/frontend.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ lib, buildPackages, callPackage, fetchFromGitHub, fetchYarnDeps, mkYarnPackage }: -let - common = callPackage ./common.nix { }; - - esbuild_0_17_12 = buildPackages.esbuild.overrideAttrs (_: rec { - version = "0.17.12"; - - src = fetchFromGitHub { - owner = "evanw"; - repo = "esbuild"; - rev = "v${version}"; - hash = "sha256-75qDQWAp6cmuXtq90oIIQCj5IKUoQxNARxhFo2Sm5mk="; - }; - - vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ="; - }); -in -mkYarnPackage { - pname = "woodpecker-frontend"; - inherit (common) version; - - src = "${common.src}/web"; - - packageJSON = ./woodpecker-package.json; - yarnLock = ./yarn.lock; - - offlineCache = fetchYarnDeps { - yarnLock = ./yarn.lock; - hash = common.yarnHash; - }; - - ESBUILD_BINARY_PATH = lib.getExe esbuild_0_17_12; - - buildPhase = '' - runHook preBuild - - yarn --offline build - - runHook postBuild - ''; - - installPhase = '' - runHook preInstall - - cp -R deps/woodpecker-ci/dist $out - echo "${common.version}" > "$out/version" - - runHook postInstall - ''; - - # Do not attempt generating a tarball for woodpecker-frontend again. - doDist = false; - - meta = common.meta // { - description = "Woodpecker Continuous Integration server frontend"; - }; -} diff --git a/pkgs/woodpecker/server.nix b/pkgs/woodpecker/server.nix deleted file mode 100644 index fd8415c..0000000 --- a/pkgs/woodpecker/server.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ buildGoModule, callPackage, woodpecker-frontend }: -let - common = callPackage ./common.nix { }; -in -buildGoModule { - pname = "woodpecker-server"; - inherit (common) version src ldflags postInstall vendorHash; - - postPatch = '' - cp -r ${woodpecker-frontend} web/dist - ''; - - subPackages = "cmd/server"; - - CGO_ENABLED = 1; - - passthru = { - inherit woodpecker-frontend; - - updateScript = ./update.sh; - }; - - meta = common.meta // { - description = "Woodpecker Continuous Integration server"; - }; -} diff --git a/pkgs/woodpecker/update.sh b/pkgs/woodpecker/update.sh deleted file mode 100755 index 460ea0b..0000000 --- a/pkgs/woodpecker/update.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i bash -p nix wget prefetch-yarn-deps nix-prefetch-github jq nix-prefetch pnpm-lock-export - -# shellcheck shell=bash - -if [ -n "$GITHUB_TOKEN" ]; then - TOKEN_ARGS=(--header "Authorization: token $GITHUB_TOKEN") -fi - -if [[ $# -gt 1 || $1 == -* ]]; then - echo "Regenerates packaging data for the woodpecker packages." - echo "Usage: $0 [git release tag]" - exit 1 -fi - -set -x - -cd "$(dirname "$0")" -rev="$1" - -set -euo pipefail - -if [ -z "$rev" ]; then - rev="$(wget -O- "${TOKEN_ARGS[@]}" "https://api.github.com/repos/woodpecker-ci/woodpecker/commits?per_page=1" | jq -r '.[0].sha')" -fi - -# Woodpecker repository -src_hash=$(nix-prefetch-github woodpecker-ci woodpecker --rev "${rev}" | jq -r .sha256) - -# Go modules -mod_hash=$(nix-prefetch '{ sha256 }: (callPackage (import ./cli.nix) { }).go-modules.overrideAttrs (_: { modHash = sha256; })') - -# Front-end dependencies -woodpecker_src="https://raw.githubusercontent.com/woodpecker-ci/woodpecker/$rev" -wget "${TOKEN_ARGS[@]}" "$woodpecker_src/web/package.json" -O woodpecker-package.json - -trap 'rm -rf pnpm-lock.yaml' EXIT -wget "${TOKEN_ARGS[@]}" "$woodpecker_src/web/pnpm-lock.yaml" -pnpm-lock-export --schema yarn.lock@v1 -yarn_hash=$(prefetch-yarn-deps yarn.lock) - -# Use friendlier hashes -src_hash=$(nix hash to-sri --type sha256 "$src_hash") -mod_hash=$(nix hash to-sri --type sha256 "$mod_hash") -yarn_hash=$(nix hash to-sri --type sha256 "$yarn_hash") - -sed -i -E -e "s#rev = \".*\"#rev = \"$rev\"#" common.nix -sed -i -E -e "s#srcHash = \".*\"#srcHash = \"$src_hash\"#" common.nix -sed -i -E -e "s#modHash = \".*\"#modHash = \"$mod_hash\"#" common.nix -sed -i -E -e "s#yarnHash = \".*\"#yarnHash = \"$yarn_hash\"#" common.nix diff --git a/pkgs/woodpecker/woodpecker-package.json b/pkgs/woodpecker/woodpecker-package.json deleted file mode 100644 index 08210db..0000000 --- a/pkgs/woodpecker/woodpecker-package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "woodpecker-ci", - "author": "Woodpecker CI", - "version": "0.0.0", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - }, - "scripts": { - "start": "vite", - "build": "vite build", - "serve": "vite preview", - "lint": "eslint --max-warnings 0 --ext .js,.ts,.vue,.json .", - "formatcheck": "prettier -c .", - "format:fix": "prettier --write .", - "typecheck": "vue-tsc --noEmit", - "test": "echo 'No tests configured' && exit 0" - }, - "dependencies": { - "@intlify/unplugin-vue-i18n": "^0.9.2", - "@kyvg/vue3-notification": "^2.9.0", - "@vueuse/core": "^9.13.0", - "ansi_up": "^5.1.0", - "dayjs": "^1.11.7", - "floating-vue": "^2.0.0-beta.20", - "fuse.js": "^6.6.2", - "humanize-duration": "^3.28.0", - "javascript-time-ago": "^2.5.9", - "lodash": "^4.17.21", - "node-emoji": "^1.11.0", - "pinia": "^2.0.33", - "prismjs": "^1.29.0", - "vue": "^3.2.47", - "vue-i18n": "^9.2.2", - "vue-router": "^4.1.6" - }, - "devDependencies": { - "@iconify/json": "^2.2.36", - "@types/humanize-duration": "^3.27.1", - "@types/javascript-time-ago": "^2.0.3", - "@types/lodash": "^4.14.191", - "@types/node": "^18.15.3", - "@types/node-emoji": "^1.8.2", - "@types/prismjs": "^1.26.0", - "@typescript-eslint/eslint-plugin": "^5.55.0", - "@typescript-eslint/parser": "^5.55.0", - "@vitejs/plugin-vue": "^4.1.0", - "@vue/compiler-sfc": "^3.2.47", - "eslint": "^8.36.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-airbnb-typescript": "^17.0.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-simple-import-sort": "^10.0.0", - "eslint-plugin-vue": "^9.9.0", - "eslint-plugin-vue-scoped-css": "^2.4.0", - "prettier": "^2.8.5", - "typescript": "5.0.2", - "unplugin-icons": "^0.15.3", - "unplugin-vue-components": "^0.24.1", - "vite": "^4.2.0", - "vite-plugin-prismjs": "^0.0.8", - "vite-plugin-windicss": "^1.8.10", - "vite-svg-loader": "^4.0.0", - "vue-eslint-parser": "^9.1.0", - "vue-tsc": "^1.2.0", - "windicss": "^3.5.6" - } -} diff --git a/pkgs/woodpecker/yarn.lock b/pkgs/woodpecker/yarn.lock deleted file mode 100644 index f99656c..0000000 --- a/pkgs/woodpecker/yarn.lock +++ /dev/null @@ -1,3153 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@2.2.0": - version "2.2.0" - resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" - integrity "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==" - dependencies: - "@jridgewell/gen-mapping" "0.1.1" - "@jridgewell/trace-mapping" "0.3.17" - -"@antfu/install-pkg@0.1.1": - version "0.1.1" - resolved "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz" - integrity "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==" - dependencies: - "execa" "5.1.1" - "find-up" "5.0.0" - -"@antfu/utils@0.7.2": - version "0.7.2" - resolved "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.2.tgz" - integrity "sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==" - -"@babel/code-frame@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - integrity "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==" - dependencies: - "@babel/highlight" "7.18.6" - -"@babel/compat-data@7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz" - integrity "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==" - -"@babel/core@7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz" - integrity "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==" - dependencies: - "@ampproject/remapping" "2.2.0" - "@babel/code-frame" "7.18.6" - "@babel/generator" "7.19.5" - "@babel/helper-compilation-targets" "7.19.3" - "@babel/helper-module-transforms" "7.19.0" - "@babel/helpers" "7.19.4" - "@babel/parser" "7.19.4" - "@babel/template" "7.18.10" - "@babel/traverse" "7.19.4" - "@babel/types" "7.19.4" - "convert-source-map" "1.9.0" - "debug" "4.3.4" - "gensync" "1.0.0-beta.2" - "json5" "2.2.1" - "semver" "6.3.0" - -"@babel/generator@7.19.5": - version "7.19.5" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz" - integrity "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==" - dependencies: - "@babel/types" "7.19.4" - "@jridgewell/gen-mapping" "0.3.2" - "jsesc" "2.5.2" - -"@babel/helper-compilation-targets@7.19.3": - version "7.19.3" - resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz" - integrity "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==" - dependencies: - "@babel/compat-data" "7.19.4" - "@babel/core" "7.19.3" - "@babel/helper-validator-option" "7.18.6" - "browserslist" "4.21.4" - "semver" "6.3.0" - -"@babel/helper-environment-visitor@7.18.9": - version "7.18.9" - resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz" - integrity "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==" - -"@babel/helper-function-name@7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz" - integrity "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==" - dependencies: - "@babel/template" "7.18.10" - "@babel/types" "7.19.4" - -"@babel/helper-hoist-variables@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" - integrity "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" - dependencies: - "@babel/types" "7.19.4" - -"@babel/helper-module-imports@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" - integrity "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==" - dependencies: - "@babel/types" "7.19.4" - -"@babel/helper-module-transforms@7.19.0": - version "7.19.0" - resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz" - integrity "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==" - dependencies: - "@babel/helper-environment-visitor" "7.18.9" - "@babel/helper-module-imports" "7.18.6" - "@babel/helper-simple-access" "7.19.4" - "@babel/helper-split-export-declaration" "7.18.6" - "@babel/helper-validator-identifier" "7.19.1" - "@babel/template" "7.18.10" - "@babel/traverse" "7.19.4" - "@babel/types" "7.19.4" - -"@babel/helper-simple-access@7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz" - integrity "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==" - dependencies: - "@babel/types" "7.19.4" - -"@babel/helper-split-export-declaration@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" - integrity "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" - dependencies: - "@babel/types" "7.19.4" - -"@babel/helper-string-parser@7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz" - integrity "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==" - -"@babel/helper-validator-identifier@7.19.1": - version "7.19.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" - integrity "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" - -"@babel/helper-validator-option@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" - integrity "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==" - -"@babel/helpers@7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz" - integrity "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw==" - dependencies: - "@babel/template" "7.18.10" - "@babel/traverse" "7.19.4" - "@babel/types" "7.19.4" - -"@babel/highlight@7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - integrity "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" - dependencies: - "@babel/helper-validator-identifier" "7.19.1" - "chalk" "2.4.2" - "js-tokens" "4.0.0" - -"@babel/parser@7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz" - integrity "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==" - dependencies: - "@babel/types" "7.19.4" - -"@babel/template@7.18.10": - version "7.18.10" - resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz" - integrity "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==" - dependencies: - "@babel/code-frame" "7.18.6" - "@babel/parser" "7.19.4" - "@babel/types" "7.19.4" - -"@babel/traverse@7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz" - integrity "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g==" - dependencies: - "@babel/code-frame" "7.18.6" - "@babel/generator" "7.19.5" - "@babel/helper-environment-visitor" "7.18.9" - "@babel/helper-function-name" "7.19.0" - "@babel/helper-hoist-variables" "7.18.6" - "@babel/helper-split-export-declaration" "7.18.6" - "@babel/parser" "7.19.4" - "@babel/types" "7.19.4" - "debug" "4.3.4" - "globals" "11.12.0" - -"@babel/types@7.19.4": - version "7.19.4" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz" - integrity "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==" - dependencies: - "@babel/helper-string-parser" "7.19.4" - "@babel/helper-validator-identifier" "7.19.1" - "to-fast-properties" "2.0.0" - -"@esbuild/android-arm@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz" - integrity "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ==" - -"@esbuild/android-arm64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz" - integrity "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA==" - -"@esbuild/android-x64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz" - integrity "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w==" - -"@esbuild/darwin-arm64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz" - integrity "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg==" - -"@esbuild/darwin-x64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz" - integrity "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA==" - -"@esbuild/freebsd-arm64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz" - integrity "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ==" - -"@esbuild/freebsd-x64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz" - integrity "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw==" - -"@esbuild/linux-arm@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz" - integrity "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA==" - -"@esbuild/linux-arm64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz" - integrity "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg==" - -"@esbuild/linux-ia32@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz" - integrity "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw==" - -"@esbuild/linux-loong64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz" - integrity "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA==" - -"@esbuild/linux-mips64el@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz" - integrity "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA==" - -"@esbuild/linux-ppc64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz" - integrity "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A==" - -"@esbuild/linux-riscv64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz" - integrity "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA==" - -"@esbuild/linux-s390x@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz" - integrity "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g==" - -"@esbuild/linux-x64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz" - integrity "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA==" - -"@esbuild/netbsd-x64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz" - integrity "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg==" - -"@esbuild/openbsd-x64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz" - integrity "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA==" - -"@esbuild/sunos-x64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz" - integrity "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg==" - -"@esbuild/win32-arm64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz" - integrity "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg==" - -"@esbuild/win32-ia32@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz" - integrity "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng==" - -"@esbuild/win32-x64@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz" - integrity "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw==" - -"@eslint-community/eslint-utils@4.3.0": - version "4.3.0" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz" - integrity "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==" - dependencies: - "eslint" "8.36.0" - "eslint-visitor-keys" "3.3.0" - -"@eslint-community/regexpp@4.4.0": - version "4.4.0" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz" - integrity "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==" - -"@eslint/eslintrc@2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz" - integrity "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==" - dependencies: - "ajv" "6.12.6" - "debug" "4.3.4" - "espree" "9.5.0" - "globals" "13.20.0" - "ignore" "5.2.0" - "import-fresh" "3.3.0" - "js-yaml" "4.1.0" - "minimatch" "3.1.2" - "strip-json-comments" "3.1.1" - -"@eslint/js@8.36.0": - version "8.36.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz" - integrity "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==" - -"@floating-ui/core@0.3.1": - version "0.3.1" - resolved "https://registry.npmjs.org/@floating-ui/core/-/core-0.3.1.tgz" - integrity "sha512-ensKY7Ub59u16qsVIFEo2hwTCqZ/r9oZZFh51ivcLGHfUwTn8l1Xzng8RJUe91H/UP8PeqeBronAGx0qmzwk2g==" - -"@floating-ui/dom@0.1.10": - version "0.1.10" - resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.1.10.tgz" - integrity "sha512-4kAVoogvQm2N0XE0G6APQJuCNuErjOfPW8Ux7DFxh8+AfugWflwVJ5LDlHOwrwut7z/30NUvdtHzQ3zSip4EzQ==" - dependencies: - "@floating-ui/core" "0.3.1" - -"@humanwhocodes/config-array@0.11.8": - version "0.11.8" - resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz" - integrity "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==" - dependencies: - "@humanwhocodes/object-schema" "1.2.1" - "debug" "4.3.4" - "minimatch" "3.1.2" - -"@humanwhocodes/module-importer@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - integrity "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" - -"@humanwhocodes/object-schema@1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - integrity "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - -"@iconify/json@^2.2.36", "@iconify/json@2.2.36": - version "2.2.36" - resolved "https://registry.npmjs.org/@iconify/json/-/json-2.2.36.tgz" - integrity "sha512-M3NzzLjmE5udIO24EgT9MV1LfU5FQDw9nfAfgrV3NySiLMtZFoOvFEdURJihH2SJWCoFhIpRRkgSZKN8qWIhuQ==" - dependencies: - "@iconify/types" "2.0.0" - "pathe" "1.1.0" - -"@iconify/types@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz" - integrity "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" - -"@iconify/utils@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.5.tgz" - integrity "sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q==" - dependencies: - "@antfu/install-pkg" "0.1.1" - "@antfu/utils" "0.7.2" - "@iconify/types" "2.0.0" - "debug" "4.3.4" - "kolorist" "1.7.0" - "local-pkg" "0.4.3" - -"@intlify/bundle-utils@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-5.2.0.tgz" - integrity "sha512-rIfoNUTBoZK6IfaEeuoYMQZSuAXhPyZoy+UsdZj+V4eM632ynN1bGt5ttkpGO8xe0c+esfYslgJxBz//bdu4qg==" - dependencies: - "@intlify/message-compiler" "9.3.0-beta.16" - "@intlify/shared" "9.3.0-beta.16" - "acorn" "8.8.2" - "estree-walker" "2.0.2" - "jsonc-eslint-parser" "1.4.1" - "source-map" "0.6.1" - "vue-i18n" "9.2.2" - "yaml-eslint-parser" "0.3.2" - -"@intlify/core-base@9.2.2": - version "9.2.2" - resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz" - integrity "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==" - dependencies: - "@intlify/devtools-if" "9.2.2" - "@intlify/message-compiler" "9.2.2" - "@intlify/shared" "9.2.2" - "@intlify/vue-devtools" "9.2.2" - -"@intlify/devtools-if@9.2.2": - version "9.2.2" - resolved "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz" - integrity "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==" - dependencies: - "@intlify/shared" "9.2.2" - -"@intlify/message-compiler@9.2.2": - version "9.2.2" - resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz" - integrity "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==" - dependencies: - "@intlify/shared" "9.2.2" - "source-map" "0.6.1" - -"@intlify/message-compiler@9.3.0-beta.16": - version "9.3.0-beta.16" - resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.3.0-beta.16.tgz" - integrity "sha512-CGQI3xRcs1ET75eDQ0DUy3MRYOqTauRIIgaMoISKiF83gqRWg93FqN8lGMKcpBqaF4tI0JhsfosCaGiBL9+dnw==" - dependencies: - "@intlify/shared" "9.3.0-beta.16" - "source-map" "0.6.1" - -"@intlify/shared@9.2.2": - version "9.2.2" - resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz" - integrity "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==" - -"@intlify/shared@9.3.0-beta.16": - version "9.3.0-beta.16" - resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.3.0-beta.16.tgz" - integrity "sha512-kXbm4svALe3lX+EjdJxfnabOphqS4yQ1Ge/iIlR8tvUiYRCoNz3hig1M4336iY++Dfx5ytEQJPNjIcknNIuvig==" - -"@intlify/unplugin-vue-i18n@^0.9.2", "@intlify/unplugin-vue-i18n@0.9.2": - version "0.9.2" - resolved "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-0.9.2.tgz" - integrity "sha512-cNfa90+NVNdYJ0qqwRaEb2kGGp9zAve2xaAKCL7EzcQcvSWw42mhiOxcNkUc1QKlXnSHERMd6aT4/GUlFT1zBw==" - dependencies: - "@intlify/bundle-utils" "5.2.0" - "@intlify/shared" "9.3.0-beta.16" - "@rollup/pluginutils" "5.0.2" - "@vue/compiler-sfc" "3.2.47" - "debug" "4.3.4" - "fast-glob" "3.2.12" - "js-yaml" "4.1.0" - "json5" "2.2.3" - "pathe" "1.1.0" - "picocolors" "1.0.0" - "source-map" "0.6.1" - "unplugin" "1.3.1" - "vue-i18n" "9.2.2" - -"@intlify/vue-devtools@9.2.2": - version "9.2.2" - resolved "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz" - integrity "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==" - dependencies: - "@intlify/core-base" "9.2.2" - "@intlify/shared" "9.2.2" - -"@jridgewell/gen-mapping@0.1.1": - version "0.1.1" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" - integrity "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==" - dependencies: - "@jridgewell/set-array" "1.1.2" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@jridgewell/gen-mapping@0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" - integrity "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==" - dependencies: - "@jridgewell/set-array" "1.1.2" - "@jridgewell/sourcemap-codec" "1.4.14" - "@jridgewell/trace-mapping" "0.3.17" - -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" - integrity "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" - -"@jridgewell/set-array@1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" - integrity "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" - -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" - integrity "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - -"@jridgewell/trace-mapping@0.3.17": - version "0.3.17" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz" - integrity "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==" - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@kyvg/vue3-notification@^2.9.0", "@kyvg/vue3-notification@2.9.0": - version "2.9.0" - resolved "https://registry.npmjs.org/@kyvg/vue3-notification/-/vue3-notification-2.9.0.tgz" - integrity "sha512-5Vxl8h/+PFtBmzGgMxTjkH4gwEpvmTEka+dLqpek+8GJFm6LDfSji+rFx9vumgBF7db0KenGWeSrA+Qnclz9vg==" - dependencies: - "vue" "3.2.47" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - dependencies: - "@nodelib/fs.stat" "2.0.5" - "run-parallel" "1.2.0" - -"@nodelib/fs.stat@2.0.5": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - -"@nodelib/fs.walk@1.2.8": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - dependencies: - "@nodelib/fs.scandir" "2.1.5" - "fastq" "1.13.0" - -"@rollup/pluginutils@5.0.2": - version "5.0.2" - resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz" - integrity "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==" - dependencies: - "@types/estree" "1.0.0" - "estree-walker" "2.0.2" - "picomatch" "2.3.1" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" - integrity "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" - -"@types/estree@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz" - integrity "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" - -"@types/humanize-duration@^3.27.1", "@types/humanize-duration@3.27.1": - version "3.27.1" - resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz" - integrity "sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w==" - -"@types/javascript-time-ago@^2.0.3", "@types/javascript-time-ago@2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@types/javascript-time-ago/-/javascript-time-ago-2.0.3.tgz" - integrity "sha512-G6SdYh6gHxgCTU0s4cMIRHwRO4p3f7jQSZbDPfUOZpUAG1od3rTjT0e8rxGThUiTTWQHwpBRws8eHO8D2QqfkA==" - -"@types/json-schema@7.0.11": - version "7.0.11" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" - integrity "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" - -"@types/json5@0.0.29": - version "0.0.29" - resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" - integrity "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - -"@types/lodash@^4.14.191", "@types/lodash@4.14.191": - version "4.14.191" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz" - integrity "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==" - -"@types/node-emoji@^1.8.2", "@types/node-emoji@1.8.2": - version "1.8.2" - resolved "https://registry.npmjs.org/@types/node-emoji/-/node-emoji-1.8.2.tgz" - integrity "sha512-PfF1qL/9veo8BSHLV84C9ORNr3lHSlnWJ6yU8OdNufoftajeWHTLVbGHvp2B7e7DPDS9gMs6cfeSsqo5rqSitg==" - -"@types/node@^18.15.3", "@types/node@18.15.3": - version "18.15.3" - resolved "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz" - integrity "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==" - -"@types/prismjs@^1.26.0", "@types/prismjs@1.26.0": - version "1.26.0" - resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz" - integrity "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==" - -"@types/semver@7.3.12": - version "7.3.12" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz" - integrity "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==" - -"@types/web-bluetooth@0.0.16": - version "0.0.16" - resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz" - integrity "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" - -"@typescript-eslint/eslint-plugin@^5.55.0", "@typescript-eslint/eslint-plugin@5.55.0": - version "5.55.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.55.0.tgz" - integrity "sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==" - dependencies: - "@eslint-community/regexpp" "4.4.0" - "@typescript-eslint/parser" "5.55.0" - "@typescript-eslint/scope-manager" "5.55.0" - "@typescript-eslint/type-utils" "5.55.0" - "@typescript-eslint/utils" "5.55.0" - "debug" "4.3.4" - "eslint" "8.36.0" - "grapheme-splitter" "1.0.4" - "ignore" "5.2.0" - "natural-compare-lite" "1.4.0" - "semver" "7.3.8" - "tsutils" "3.21.0" - "typescript" "5.0.2" - -"@typescript-eslint/parser@^5.55.0", "@typescript-eslint/parser@5.55.0": - version "5.55.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.55.0.tgz" - integrity "sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==" - dependencies: - "@typescript-eslint/scope-manager" "5.55.0" - "@typescript-eslint/types" "5.55.0" - "@typescript-eslint/typescript-estree" "5.55.0" - "debug" "4.3.4" - "eslint" "8.36.0" - "typescript" "5.0.2" - -"@typescript-eslint/scope-manager@5.55.0": - version "5.55.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.55.0.tgz" - integrity "sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==" - dependencies: - "@typescript-eslint/types" "5.55.0" - "@typescript-eslint/visitor-keys" "5.55.0" - -"@typescript-eslint/type-utils@5.55.0": - version "5.55.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.55.0.tgz" - integrity "sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==" - dependencies: - "@typescript-eslint/typescript-estree" "5.55.0" - "@typescript-eslint/utils" "5.55.0" - "debug" "4.3.4" - "eslint" "8.36.0" - "tsutils" "3.21.0" - "typescript" "5.0.2" - -"@typescript-eslint/types@5.55.0": - version "5.55.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.55.0.tgz" - integrity "sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==" - -"@typescript-eslint/typescript-estree@5.55.0": - version "5.55.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.55.0.tgz" - integrity "sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==" - dependencies: - "@typescript-eslint/types" "5.55.0" - "@typescript-eslint/visitor-keys" "5.55.0" - "debug" "4.3.4" - "globby" "11.1.0" - "is-glob" "4.0.3" - "semver" "7.3.8" - "tsutils" "3.21.0" - "typescript" "5.0.2" - -"@typescript-eslint/utils@5.55.0": - version "5.55.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.55.0.tgz" - integrity "sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==" - dependencies: - "@eslint-community/eslint-utils" "4.3.0" - "@types/json-schema" "7.0.11" - "@types/semver" "7.3.12" - "@typescript-eslint/scope-manager" "5.55.0" - "@typescript-eslint/types" "5.55.0" - "@typescript-eslint/typescript-estree" "5.55.0" - "eslint" "8.36.0" - "eslint-scope" "5.1.1" - "semver" "7.3.8" - -"@typescript-eslint/visitor-keys@5.55.0": - version "5.55.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.55.0.tgz" - integrity "sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==" - dependencies: - "@typescript-eslint/types" "5.55.0" - "eslint-visitor-keys" "3.3.0" - -"@vitejs/plugin-vue@^4.1.0", "@vitejs/plugin-vue@4.1.0": - version "4.1.0" - resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz" - integrity "sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ==" - dependencies: - "vite" "4.2.0" - "vue" "3.2.47" - -"@volar/language-core@1.3.0-alpha.0": - version "1.3.0-alpha.0" - resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.3.0-alpha.0.tgz" - integrity "sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==" - dependencies: - "@volar/source-map" "1.3.0-alpha.0" - -"@volar/source-map@1.3.0-alpha.0": - version "1.3.0-alpha.0" - resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.3.0-alpha.0.tgz" - integrity "sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==" - dependencies: - "muggle-string" "0.2.2" - -"@volar/typescript@1.3.0-alpha.0": - version "1.3.0-alpha.0" - resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-1.3.0-alpha.0.tgz" - integrity "sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==" - dependencies: - "@volar/language-core" "1.3.0-alpha.0" - -"@volar/vue-language-core@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.2.0.tgz" - integrity "sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==" - dependencies: - "@volar/language-core" "1.3.0-alpha.0" - "@volar/source-map" "1.3.0-alpha.0" - "@vue/compiler-dom" "3.2.47" - "@vue/compiler-sfc" "3.2.47" - "@vue/reactivity" "3.2.47" - "@vue/shared" "3.2.47" - "minimatch" "6.2.0" - "muggle-string" "0.2.2" - "vue-template-compiler" "2.7.14" - -"@volar/vue-typescript@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.2.0.tgz" - integrity "sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==" - dependencies: - "@volar/typescript" "1.3.0-alpha.0" - "@volar/vue-language-core" "1.2.0" - -"@vue/compiler-core@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz" - integrity "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==" - dependencies: - "@babel/parser" "7.19.4" - "@vue/shared" "3.2.47" - "estree-walker" "2.0.2" - "source-map" "0.6.1" - -"@vue/compiler-dom@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz" - integrity "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==" - dependencies: - "@vue/compiler-core" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/compiler-sfc@^3.2.47", "@vue/compiler-sfc@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz" - integrity "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==" - dependencies: - "@babel/parser" "7.19.4" - "@vue/compiler-core" "3.2.47" - "@vue/compiler-dom" "3.2.47" - "@vue/compiler-ssr" "3.2.47" - "@vue/reactivity-transform" "3.2.47" - "@vue/shared" "3.2.47" - "estree-walker" "2.0.2" - "magic-string" "0.25.9" - "postcss" "8.4.18" - "source-map" "0.6.1" - -"@vue/compiler-ssr@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz" - integrity "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==" - dependencies: - "@vue/compiler-dom" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/devtools-api@6.4.5": - version "6.4.5" - resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz" - integrity "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ==" - -"@vue/devtools-api@6.5.0": - version "6.5.0" - resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz" - integrity "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==" - -"@vue/reactivity-transform@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz" - integrity "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==" - dependencies: - "@babel/parser" "7.19.4" - "@vue/compiler-core" "3.2.47" - "@vue/shared" "3.2.47" - "estree-walker" "2.0.2" - "magic-string" "0.25.9" - -"@vue/reactivity@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz" - integrity "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==" - dependencies: - "@vue/shared" "3.2.47" - -"@vue/runtime-core@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz" - integrity "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==" - dependencies: - "@vue/reactivity" "3.2.47" - "@vue/shared" "3.2.47" - -"@vue/runtime-dom@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz" - integrity "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==" - dependencies: - "@vue/runtime-core" "3.2.47" - "@vue/shared" "3.2.47" - "csstype" "2.6.21" - -"@vue/server-renderer@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz" - integrity "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==" - dependencies: - "@vue/compiler-ssr" "3.2.47" - "@vue/shared" "3.2.47" - "vue" "3.2.47" - -"@vue/shared@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz" - integrity "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==" - -"@vueuse/core@^9.13.0", "@vueuse/core@9.13.0": - version "9.13.0" - resolved "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz" - integrity "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==" - dependencies: - "@types/web-bluetooth" "0.0.16" - "@vueuse/metadata" "9.13.0" - "@vueuse/shared" "9.13.0" - "vue-demi" "0.13.11" - -"@vueuse/metadata@9.13.0": - version "9.13.0" - resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz" - integrity "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" - -"@vueuse/shared@9.13.0": - version "9.13.0" - resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz" - integrity "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==" - dependencies: - "vue-demi" "0.13.11" - -"@windicss/config@1.8.10": - version "1.8.10" - resolved "https://registry.npmjs.org/@windicss/config/-/config-1.8.10.tgz" - integrity "sha512-O9SsC110b1Ik3YYa4Ck/0TWuCo7YFfA9KDrwD5sAeqscT5COIGK1HszdCT3oh0MJFej2wNrvpfyW9h6yQaW6PA==" - dependencies: - "debug" "4.3.4" - "jiti" "1.16.0" - "windicss" "3.5.6" - -"@windicss/plugin-utils@1.8.10": - version "1.8.10" - resolved "https://registry.npmjs.org/@windicss/plugin-utils/-/plugin-utils-1.8.10.tgz" - integrity "sha512-Phqk5OW1w+Mv+ry6t7BzAeDq3aMhbI94gR49j9vQCufFfDGCHndhhjtMK0sBv+NPJUsIAIh6qayb1iwBCXUGrw==" - dependencies: - "@antfu/utils" "0.7.2" - "@windicss/config" "1.8.10" - "debug" "4.3.4" - "fast-glob" "3.2.12" - "magic-string" "0.27.0" - "micromatch" "4.0.5" - "windicss" "3.5.6" - -"acorn-jsx@5.3.2": - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - dependencies: - "acorn" "8.8.0" - -"acorn@7.4.1": - version "7.4.1" - resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - integrity "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - -"acorn@8.8.0": - version "8.8.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz" - integrity "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" - -"acorn@8.8.2": - version "8.8.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" - integrity "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" - -"ajv@6.12.6": - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - dependencies: - "fast-deep-equal" "3.1.3" - "fast-json-stable-stringify" "2.1.0" - "json-schema-traverse" "0.4.1" - "uri-js" "4.4.1" - -"ansi-regex@5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - -"ansi-styles@3.2.1": - version "3.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - integrity "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - dependencies: - "color-convert" "1.9.3" - -"ansi-styles@4.3.0": - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - dependencies: - "color-convert" "2.0.1" - -"ansi_up@^5.1.0", "ansi_up@5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/ansi_up/-/ansi_up-5.1.0.tgz" - integrity "sha512-3wwu+nJCKBVBwOCurm0uv91lMoVkhFB+3qZQz3U11AmAdDJ4tkw1sNPWJQcVxMVYwe0pGEALOjSBOxdxNc+pNQ==" - -"anymatch@3.1.2": - version "3.1.2" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - integrity "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" - dependencies: - "normalize-path" "3.0.0" - "picomatch" "2.3.1" - -"argparse@2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - -"array-includes@3.1.6": - version "3.1.6" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" - integrity "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "es-abstract" "1.20.4" - "get-intrinsic" "1.1.3" - "is-string" "1.0.7" - -"array-union@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - integrity "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - -"array.prototype.flat@1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" - integrity "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "es-abstract" "1.20.4" - "es-shim-unscopables" "1.0.0" - -"array.prototype.flatmap@1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" - integrity "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "es-abstract" "1.20.4" - "es-shim-unscopables" "1.0.0" - -"atob@2.1.2": - version "2.1.2" - resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - integrity "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - -"babel-plugin-prismjs@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/babel-plugin-prismjs/-/babel-plugin-prismjs-2.1.0.tgz" - integrity "sha512-ehzSKYfeAz4U78zi/sfwsjDPlq0LvDKxNefcZTJ/iKBu+plsHsLqZhUeGf1+82LAcA35UZGbU6ksEx2Utphc/g==" - dependencies: - "prismjs" "1.29.0" - -"balanced-match@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - -"binary-extensions@2.2.0": - version "2.2.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - integrity "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - -"boolbase@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - -"brace-expansion@1.1.11": - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - dependencies: - "balanced-match" "1.0.2" - "concat-map" "0.0.1" - -"brace-expansion@2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" - dependencies: - "balanced-match" "1.0.2" - -"braces@3.0.2": - version "3.0.2" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - integrity "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - dependencies: - "fill-range" "7.0.1" - -"browserslist@4.21.4": - version "4.21.4" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz" - integrity "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==" - dependencies: - "caniuse-lite" "1.0.30001422" - "electron-to-chromium" "1.4.284" - "node-releases" "2.0.6" - "update-browserslist-db" "1.0.10" - -"call-bind@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - integrity "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - dependencies: - "function-bind" "1.1.1" - "get-intrinsic" "1.1.3" - -"callsites@3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - -"caniuse-lite@1.0.30001422": - version "1.0.30001422" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001422.tgz" - integrity "sha512-hSesn02u1QacQHhaxl/kNMZwqVG35Sz/8DgvmgedxSH8z9UUpcDYSPYgsj3x5dQNRcNp6BwpSfQfVzYUTm+fog==" - -"chalk@2.4.2": - version "2.4.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - integrity "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - dependencies: - "ansi-styles" "3.2.1" - "escape-string-regexp" "1.0.5" - "supports-color" "5.5.0" - -"chalk@4.1.2": - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - dependencies: - "ansi-styles" "4.3.0" - "supports-color" "7.2.0" - -"chokidar@3.5.3": - version "3.5.3" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" - integrity "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==" - dependencies: - "anymatch" "3.1.2" - "braces" "3.0.2" - "glob-parent" "5.1.2" - "is-binary-path" "2.1.0" - "is-glob" "4.0.3" - "normalize-path" "3.0.0" - "readdirp" "3.6.0" - -"color-convert@1.9.3": - version "1.9.3" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - integrity "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - dependencies: - "color-name" "1.1.3" - -"color-convert@2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - dependencies: - "color-name" "1.1.4" - -"color-name@1.1.3": - version "1.1.3" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - integrity "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - -"color-name@1.1.4": - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - -"commander@7.2.0": - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - -"concat-map@0.0.1": - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - -"confusing-browser-globals@1.0.11": - version "1.0.11" - resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" - integrity "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" - -"convert-source-map@1.9.0": - version "1.9.0" - resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" - integrity "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - -"cross-spawn@7.0.3": - version "7.0.3" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - integrity "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - dependencies: - "path-key" "3.1.1" - "shebang-command" "2.0.0" - "which" "2.0.2" - -"css-select@5.1.0": - version "5.1.0" - resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz" - integrity "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==" - dependencies: - "boolbase" "1.0.0" - "css-what" "6.1.0" - "domhandler" "5.0.3" - "domutils" "3.0.1" - "nth-check" "2.1.1" - -"css-tree@2.2.1": - version "2.2.1" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz" - integrity "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==" - dependencies: - "mdn-data" "2.0.28" - "source-map-js" "1.0.2" - -"css-tree@2.3.1": - version "2.3.1" - resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz" - integrity "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==" - dependencies: - "mdn-data" "2.0.30" - "source-map-js" "1.0.2" - -"css-what@6.1.0": - version "6.1.0" - resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" - integrity "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - -"css@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/css/-/css-3.0.0.tgz" - integrity "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==" - dependencies: - "inherits" "2.0.4" - "source-map" "0.6.1" - "source-map-resolve" "0.6.0" - -"cssesc@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - -"csso@5.0.5": - version "5.0.5" - resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz" - integrity "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==" - dependencies: - "css-tree" "2.2.1" - -"csstype@2.6.21": - version "2.6.21" - resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" - integrity "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - -"dayjs@^1.11.7", "dayjs@1.11.7": - version "1.11.7" - resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz" - integrity "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" - -"de-indent@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" - integrity "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" - -"debug@3.2.7": - version "3.2.7" - resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - integrity "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - dependencies: - "ms" "2.1.3" - -"debug@4.3.4": - version "4.3.4" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" - integrity "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" - dependencies: - "ms" "2.1.2" - -"decode-uri-component@0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - integrity "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" - -"deep-is@0.1.4": - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - -"define-properties@1.1.4": - version "1.1.4" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" - integrity "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==" - dependencies: - "has-property-descriptors" "1.0.0" - "object-keys" "1.1.1" - -"dir-glob@3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - integrity "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - dependencies: - "path-type" "4.0.0" - -"doctrine@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" - integrity "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==" - dependencies: - "esutils" "2.0.3" - -"doctrine@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - integrity "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - dependencies: - "esutils" "2.0.3" - -"dom-serializer@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz" - integrity "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==" - dependencies: - "domelementtype" "2.3.0" - "domhandler" "5.0.3" - "entities" "4.4.0" - -"domelementtype@2.3.0": - version "2.3.0" - resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" - integrity "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - -"domhandler@5.0.3": - version "5.0.3" - resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz" - integrity "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==" - dependencies: - "domelementtype" "2.3.0" - -"domutils@3.0.1": - version "3.0.1" - resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz" - integrity "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==" - dependencies: - "dom-serializer" "2.0.0" - "domelementtype" "2.3.0" - "domhandler" "5.0.3" - -"electron-to-chromium@1.4.284": - version "1.4.284" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz" - integrity "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - -"entities@4.4.0": - version "4.4.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz" - integrity "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==" - -"es-abstract@1.20.4": - version "1.20.4" - resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz" - integrity "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==" - dependencies: - "call-bind" "1.0.2" - "es-to-primitive" "1.2.1" - "function-bind" "1.1.1" - "function.prototype.name" "1.1.5" - "get-intrinsic" "1.1.3" - "get-symbol-description" "1.0.0" - "has" "1.0.3" - "has-property-descriptors" "1.0.0" - "has-symbols" "1.0.3" - "internal-slot" "1.0.3" - "is-callable" "1.2.7" - "is-negative-zero" "2.0.2" - "is-regex" "1.1.4" - "is-shared-array-buffer" "1.0.2" - "is-string" "1.0.7" - "is-weakref" "1.0.2" - "object-inspect" "1.12.2" - "object-keys" "1.1.1" - "object.assign" "4.1.4" - "regexp.prototype.flags" "1.4.3" - "safe-regex-test" "1.0.0" - "string.prototype.trimend" "1.0.5" - "string.prototype.trimstart" "1.0.5" - "unbox-primitive" "1.0.2" - -"es-shim-unscopables@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" - integrity "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==" - dependencies: - "has" "1.0.3" - -"es-to-primitive@1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - integrity "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - dependencies: - "is-callable" "1.2.7" - "is-date-object" "1.0.5" - "is-symbol" "1.0.4" - -"esbuild@0.17.12": - version "0.17.12" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz" - integrity "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ==" - -"escalade@3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - integrity "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - -"escape-string-regexp@1.0.5": - version "1.0.5" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - integrity "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - -"escape-string-regexp@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - -"eslint-config-airbnb-base@^15.0.0", "eslint-config-airbnb-base@15.0.0": - version "15.0.0" - resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz" - integrity "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==" - dependencies: - "confusing-browser-globals" "1.0.11" - "eslint" "8.36.0" - "eslint-plugin-import" "2.27.5" - "object.assign" "4.1.4" - "object.entries" "1.1.5" - "semver" "6.3.0" - -"eslint-config-airbnb-typescript@^17.0.0", "eslint-config-airbnb-typescript@17.0.0": - version "17.0.0" - resolved "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz" - integrity "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==" - dependencies: - "@typescript-eslint/eslint-plugin" "5.55.0" - "@typescript-eslint/parser" "5.55.0" - "eslint" "8.36.0" - "eslint-config-airbnb-base" "15.0.0" - "eslint-plugin-import" "2.27.5" - -"eslint-config-prettier@^8.7.0", "eslint-config-prettier@8.7.0": - version "8.7.0" - resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz" - integrity "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==" - dependencies: - "eslint" "8.36.0" - -"eslint-import-resolver-node@0.3.7": - version "0.3.7" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz" - integrity "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==" - dependencies: - "debug" "3.2.7" - "is-core-module" "2.11.0" - "resolve" "1.22.1" - -"eslint-module-utils@2.7.4": - version "2.7.4" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz" - integrity "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==" - dependencies: - "@typescript-eslint/parser" "5.55.0" - "debug" "3.2.7" - "eslint" "8.36.0" - "eslint-import-resolver-node" "0.3.7" - -"eslint-plugin-import@^2.27.5", "eslint-plugin-import@2.27.5": - version "2.27.5" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz" - integrity "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==" - dependencies: - "@typescript-eslint/parser" "5.55.0" - "array-includes" "3.1.6" - "array.prototype.flat" "1.3.1" - "array.prototype.flatmap" "1.3.1" - "debug" "3.2.7" - "doctrine" "2.1.0" - "eslint" "8.36.0" - "eslint-import-resolver-node" "0.3.7" - "eslint-module-utils" "2.7.4" - "has" "1.0.3" - "is-core-module" "2.11.0" - "is-glob" "4.0.3" - "minimatch" "3.1.2" - "object.values" "1.1.6" - "resolve" "1.22.1" - "semver" "6.3.0" - "tsconfig-paths" "3.14.1" - -"eslint-plugin-prettier@^4.2.1", "eslint-plugin-prettier@4.2.1": - version "4.2.1" - resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" - integrity "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==" - dependencies: - "eslint" "8.36.0" - "eslint-config-prettier" "8.7.0" - "prettier" "2.8.5" - "prettier-linter-helpers" "1.0.0" - -"eslint-plugin-promise@^6.1.1", "eslint-plugin-promise@6.1.1": - version "6.1.1" - resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz" - integrity "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==" - dependencies: - "eslint" "8.36.0" - -"eslint-plugin-simple-import-sort@^10.0.0", "eslint-plugin-simple-import-sort@10.0.0": - version "10.0.0" - resolved "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz" - integrity "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==" - dependencies: - "eslint" "8.36.0" - -"eslint-plugin-vue-scoped-css@^2.4.0", "eslint-plugin-vue-scoped-css@2.4.0": - version "2.4.0" - resolved "https://registry.npmjs.org/eslint-plugin-vue-scoped-css/-/eslint-plugin-vue-scoped-css-2.4.0.tgz" - integrity "sha512-H2GdGyaNuz58gMwJYrPAyok2ZZFklb1wnI4jqLyQZf17gvZeTOpYzCxqhhcT5hBeaCUHhjxU5akCI7A4AtBHew==" - dependencies: - "eslint" "8.36.0" - "eslint-utils" "3.0.0" - "lodash" "4.17.21" - "postcss" "8.4.18" - "postcss-safe-parser" "6.0.0" - "postcss-scss" "4.0.5" - "postcss-selector-parser" "6.0.10" - "postcss-styl" "0.12.3" - "vue-eslint-parser" "9.1.0" - -"eslint-plugin-vue@^9.9.0", "eslint-plugin-vue@9.9.0": - version "9.9.0" - resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.9.0.tgz" - integrity "sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ==" - dependencies: - "eslint" "8.36.0" - "eslint-utils" "3.0.0" - "natural-compare" "1.4.0" - "nth-check" "2.1.1" - "postcss-selector-parser" "6.0.10" - "semver" "7.3.8" - "vue-eslint-parser" "9.1.0" - "xml-name-validator" "4.0.0" - -"eslint-scope@5.1.1": - version "5.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - integrity "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - dependencies: - "esrecurse" "4.3.0" - "estraverse" "4.3.0" - -"eslint-scope@7.1.1": - version "7.1.1" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" - integrity "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" - dependencies: - "esrecurse" "4.3.0" - "estraverse" "5.3.0" - -"eslint-utils@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - integrity "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" - dependencies: - "eslint-visitor-keys" "1.3.0" - -"eslint-utils@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - integrity "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" - dependencies: - "eslint" "8.36.0" - "eslint-visitor-keys" "2.1.0" - -"eslint-visitor-keys@1.3.0": - version "1.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - integrity "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - -"eslint-visitor-keys@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - integrity "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - -"eslint-visitor-keys@3.3.0": - version "3.3.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" - integrity "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" - -"eslint@^8.36.0", "eslint@8.36.0": - version "8.36.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz" - integrity "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==" - dependencies: - "@eslint-community/eslint-utils" "4.3.0" - "@eslint-community/regexpp" "4.4.0" - "@eslint/eslintrc" "2.0.1" - "@eslint/js" "8.36.0" - "@humanwhocodes/config-array" "0.11.8" - "@humanwhocodes/module-importer" "1.0.1" - "@nodelib/fs.walk" "1.2.8" - "ajv" "6.12.6" - "chalk" "4.1.2" - "cross-spawn" "7.0.3" - "debug" "4.3.4" - "doctrine" "3.0.0" - "escape-string-regexp" "4.0.0" - "eslint-scope" "7.1.1" - "eslint-visitor-keys" "3.3.0" - "espree" "9.5.0" - "esquery" "1.5.0" - "esutils" "2.0.3" - "fast-deep-equal" "3.1.3" - "file-entry-cache" "6.0.1" - "find-up" "5.0.0" - "glob-parent" "6.0.2" - "globals" "13.20.0" - "grapheme-splitter" "1.0.4" - "ignore" "5.2.0" - "import-fresh" "3.3.0" - "imurmurhash" "0.1.4" - "is-glob" "4.0.3" - "is-path-inside" "3.0.3" - "js-sdsl" "4.1.5" - "js-yaml" "4.1.0" - "json-stable-stringify-without-jsonify" "1.0.1" - "levn" "0.4.1" - "lodash.merge" "4.6.2" - "minimatch" "3.1.2" - "natural-compare" "1.4.0" - "optionator" "0.9.1" - "strip-ansi" "6.0.1" - "strip-json-comments" "3.1.1" - "text-table" "0.2.0" - -"espree@6.2.1": - version "6.2.1" - resolved "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz" - integrity "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==" - dependencies: - "acorn" "7.4.1" - "acorn-jsx" "5.3.2" - "eslint-visitor-keys" "1.3.0" - -"espree@9.4.0": - version "9.4.0" - resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz" - integrity "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==" - dependencies: - "acorn" "8.8.0" - "acorn-jsx" "5.3.2" - "eslint-visitor-keys" "3.3.0" - -"espree@9.5.0": - version "9.5.0" - resolved "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz" - integrity "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==" - dependencies: - "acorn" "8.8.0" - "acorn-jsx" "5.3.2" - "eslint-visitor-keys" "3.3.0" - -"esquery@1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - integrity "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" - dependencies: - "estraverse" "5.3.0" - -"esquery@1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" - integrity "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" - dependencies: - "estraverse" "5.3.0" - -"esrecurse@4.3.0": - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - dependencies: - "estraverse" "5.3.0" - -"estraverse@4.3.0": - version "4.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - integrity "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - -"estraverse@5.3.0": - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - -"estree-walker@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" - integrity "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" - -"esutils@2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - -"execa@5.1.1": - version "5.1.1" - resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - integrity "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - dependencies: - "cross-spawn" "7.0.3" - "get-stream" "6.0.1" - "human-signals" "2.1.0" - "is-stream" "2.0.1" - "merge-stream" "2.0.0" - "npm-run-path" "4.0.1" - "onetime" "5.1.2" - "signal-exit" "3.0.7" - "strip-final-newline" "2.0.0" - -"fast-deep-equal@3.1.3": - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - -"fast-diff@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" - integrity "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" - -"fast-glob@3.2.12": - version "3.2.12" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" - integrity "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==" - dependencies: - "@nodelib/fs.stat" "2.0.5" - "@nodelib/fs.walk" "1.2.8" - "glob-parent" "5.1.2" - "merge2" "1.4.1" - "micromatch" "4.0.5" - -"fast-json-stable-stringify@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - integrity "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - -"fast-levenshtein@2.0.6": - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - -"fastq@1.13.0": - version "1.13.0" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - integrity "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" - dependencies: - "reusify" "1.0.4" - -"file-entry-cache@6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - integrity "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - dependencies: - "flat-cache" "3.0.4" - -"fill-range@7.0.1": - version "7.0.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - integrity "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - dependencies: - "to-regex-range" "5.0.1" - -"find-up@5.0.0": - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - dependencies: - "locate-path" "6.0.0" - "path-exists" "4.0.0" - -"flat-cache@3.0.4": - version "3.0.4" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - integrity "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" - dependencies: - "flatted" "3.2.7" - "rimraf" "3.0.2" - -"flatted@3.2.7": - version "3.2.7" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" - integrity "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - -"floating-vue@^2.0.0-beta.20", "floating-vue@2.0.0-beta.20": - version "2.0.0-beta.20" - resolved "https://registry.npmjs.org/floating-vue/-/floating-vue-2.0.0-beta.20.tgz" - integrity "sha512-N68otcpp6WwcYC7zP8GeJqNZVdfvS7tEY88lwmuAHeqRgnfWx1Un8enzLxROyVnBDZ3TwUoUdj5IFg+bUT7JeA==" - dependencies: - "@floating-ui/dom" "0.1.10" - "vue" "3.2.47" - "vue-resize" "2.0.0-alpha.1" - -"fs.realpath@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - integrity "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - -"fsevents@2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - integrity "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - -"function-bind@1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - integrity "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - -"function.prototype.name@1.1.5": - version "1.1.5" - resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" - integrity "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "es-abstract" "1.20.4" - "functions-have-names" "1.2.3" - -"functions-have-names@1.2.3": - version "1.2.3" - resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" - integrity "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - -"fuse.js@^6.6.2", "fuse.js@6.6.2": - version "6.6.2" - resolved "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz" - integrity "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==" - -"gensync@1.0.0-beta.2": - version "1.0.0-beta.2" - resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" - integrity "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" - -"get-intrinsic@1.1.3": - version "1.1.3" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz" - integrity "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==" - dependencies: - "function-bind" "1.1.1" - "has" "1.0.3" - "has-symbols" "1.0.3" - -"get-stream@6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - integrity "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - -"get-symbol-description@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - integrity "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - dependencies: - "call-bind" "1.0.2" - "get-intrinsic" "1.1.3" - -"glob-parent@5.1.2": - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - dependencies: - "is-glob" "4.0.3" - -"glob-parent@6.0.2": - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" - dependencies: - "is-glob" "4.0.3" - -"glob@7.2.3": - version "7.2.3" - resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" - integrity "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" - dependencies: - "fs.realpath" "1.0.0" - "inflight" "1.0.6" - "inherits" "2.0.4" - "minimatch" "3.1.2" - "once" "1.4.0" - "path-is-absolute" "1.0.1" - -"globals@11.12.0": - version "11.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - integrity "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - -"globals@13.20.0": - version "13.20.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz" - integrity "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==" - dependencies: - "type-fest" "0.20.2" - -"globby@11.1.0": - version "11.1.0" - resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" - integrity "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==" - dependencies: - "array-union" "2.1.0" - "dir-glob" "3.0.1" - "fast-glob" "3.2.12" - "ignore" "5.2.0" - "merge2" "1.4.1" - "slash" "3.0.0" - -"grapheme-splitter@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" - integrity "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - -"has-bigints@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" - integrity "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" - -"has-flag@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - integrity "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - -"has-flag@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - -"has-property-descriptors@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" - integrity "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==" - dependencies: - "get-intrinsic" "1.1.3" - -"has-symbols@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" - integrity "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - -"has-tostringtag@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - integrity "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - dependencies: - "has-symbols" "1.0.3" - -"has@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - integrity "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - dependencies: - "function-bind" "1.1.1" - -"he@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - -"human-signals@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - integrity "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - -"humanize-duration@^3.28.0", "humanize-duration@3.28.0": - version "3.28.0" - resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.28.0.tgz" - integrity "sha512-jMAxraOOmHuPbffLVDKkEKi/NeG8dMqP8lGRd6Tbf7JgAeG33jjgPWDbXXU7ypCI0o+oNKJFgbSB9FKVdWNI2A==" - -"ignore@5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - integrity "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - -"import-fresh@3.3.0": - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - dependencies: - "parent-module" "1.0.1" - "resolve-from" "4.0.0" - -"imurmurhash@0.1.4": - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" - -"inflight@1.0.6": - version "1.0.6" - resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - integrity "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==" - dependencies: - "once" "1.4.0" - "wrappy" "1.0.2" - -"inherits@2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - integrity "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - -"internal-slot@1.0.3": - version "1.0.3" - resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - integrity "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" - dependencies: - "get-intrinsic" "1.1.3" - "has" "1.0.3" - "side-channel" "1.0.4" - -"is-bigint@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - integrity "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - dependencies: - "has-bigints" "1.0.2" - -"is-binary-path@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - dependencies: - "binary-extensions" "2.2.0" - -"is-boolean-object@1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - integrity "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - dependencies: - "call-bind" "1.0.2" - "has-tostringtag" "1.0.0" - -"is-callable@1.2.7": - version "1.2.7" - resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" - integrity "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" - -"is-core-module@2.11.0": - version "2.11.0" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz" - integrity "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==" - dependencies: - "has" "1.0.3" - -"is-date-object@1.0.5": - version "1.0.5" - resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - integrity "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - dependencies: - "has-tostringtag" "1.0.0" - -"is-extglob@2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" - -"is-glob@4.0.3": - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - dependencies: - "is-extglob" "2.1.1" - -"is-negative-zero@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" - integrity "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - -"is-number-object@1.0.7": - version "1.0.7" - resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" - integrity "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==" - dependencies: - "has-tostringtag" "1.0.0" - -"is-number@7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - -"is-path-inside@3.0.3": - version "3.0.3" - resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - integrity "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - -"is-regex@1.1.4": - version "1.1.4" - resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - integrity "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - dependencies: - "call-bind" "1.0.2" - "has-tostringtag" "1.0.0" - -"is-shared-array-buffer@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" - integrity "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==" - dependencies: - "call-bind" "1.0.2" - -"is-stream@2.0.1": - version "2.0.1" - resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - integrity "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - -"is-string@1.0.7": - version "1.0.7" - resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - integrity "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - dependencies: - "has-tostringtag" "1.0.0" - -"is-symbol@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - integrity "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - dependencies: - "has-symbols" "1.0.3" - -"is-weakref@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" - integrity "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==" - dependencies: - "call-bind" "1.0.2" - -"isexe@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - -"javascript-time-ago@^2.5.9", "javascript-time-ago@2.5.9": - version "2.5.9" - resolved "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.9.tgz" - integrity "sha512-pQ8mNco/9g9TqWXWWjP0EWl6i/lAQScOyEeXy5AB+f7MfLSdgyV9BJhiOD1zrIac/lrxPYOWNbyl/IW8CW5n0A==" - dependencies: - "relative-time-format" "1.1.6" - -"jiti@1.16.0": - version "1.16.0" - resolved "https://registry.npmjs.org/jiti/-/jiti-1.16.0.tgz" - integrity "sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg==" - -"js-sdsl@4.1.5": - version "4.1.5" - resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz" - integrity "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==" - -"js-tokens@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - integrity "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - -"js-yaml@4.1.0": - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" - dependencies: - "argparse" "2.0.1" - -"jsesc@2.5.2": - version "2.5.2" - resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - integrity "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - -"json-schema-traverse@0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - -"json-stable-stringify-without-jsonify@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - -"json5@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - integrity "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" - dependencies: - "minimist" "1.2.7" - -"json5@2.2.1": - version "2.2.1" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz" - integrity "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" - -"json5@2.2.3": - version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - integrity "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - -"jsonc-eslint-parser@1.4.1": - version "1.4.1" - resolved "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-1.4.1.tgz" - integrity "sha512-hXBrvsR1rdjmB2kQmUjf1rEIa+TqHBGMge8pwi++C+Si1ad7EjZrJcpgwym+QGK/pqTx+K7keFAtLlVNdLRJOg==" - dependencies: - "acorn" "7.4.1" - "eslint-utils" "2.1.0" - "eslint-visitor-keys" "1.3.0" - "espree" "6.2.1" - "semver" "6.3.0" - -"kolorist@1.6.0": - version "1.6.0" - resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz" - integrity "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==" - -"kolorist@1.7.0": - version "1.7.0" - resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.7.0.tgz" - integrity "sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==" - -"levn@0.4.1": - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - dependencies: - "prelude-ls" "1.2.1" - "type-check" "0.4.0" - -"local-pkg@0.4.3": - version "0.4.3" - resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz" - integrity "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==" - -"locate-path@6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - dependencies: - "p-locate" "5.0.0" - -"lodash.merge@4.6.2": - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - -"lodash.sortedlastindex@4.1.0": - version "4.1.0" - resolved "https://registry.npmjs.org/lodash.sortedlastindex/-/lodash.sortedlastindex-4.1.0.tgz" - integrity "sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==" - -"lodash@^4.17.21", "lodash@4.17.21": - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - -"lru-cache@6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - integrity "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - dependencies: - "yallist" "4.0.0" - -"magic-string@0.25.9": - version "0.25.9" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" - integrity "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==" - dependencies: - "sourcemap-codec" "1.4.8" - -"magic-string@0.27.0": - version "0.27.0" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz" - integrity "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==" - dependencies: - "@jridgewell/sourcemap-codec" "1.4.14" - -"magic-string@0.30.0": - version "0.30.0" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz" - integrity "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==" - dependencies: - "@jridgewell/sourcemap-codec" "1.4.14" - -"mdn-data@2.0.28": - version "2.0.28" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz" - integrity "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" - -"mdn-data@2.0.30": - version "2.0.30" - resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz" - integrity "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" - -"merge-stream@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - integrity "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - -"merge2@1.4.1": - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - -"micromatch@4.0.5": - version "4.0.5" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" - integrity "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==" - dependencies: - "braces" "3.0.2" - "picomatch" "2.3.1" - -"mimic-fn@2.1.0": - version "2.1.0" - resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - integrity "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - -"minimatch@3.1.2": - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" - dependencies: - "brace-expansion" "1.1.11" - -"minimatch@6.2.0": - version "6.2.0" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz" - integrity "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==" - dependencies: - "brace-expansion" "2.0.1" - -"minimatch@7.4.2": - version "7.4.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz" - integrity "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==" - dependencies: - "brace-expansion" "2.0.1" - -"minimist@1.2.7": - version "1.2.7" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz" - integrity "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" - -"ms@2.1.2": - version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - integrity "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - -"ms@2.1.3": - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - -"muggle-string@0.2.2": - version "0.2.2" - resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.2.2.tgz" - integrity "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==" - -"nanoid@3.3.4": - version "3.3.4" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" - integrity "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - -"natural-compare-lite@1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" - integrity "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" - -"natural-compare@1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - -"node-emoji@^1.11.0", "node-emoji@1.11.0": - version "1.11.0" - resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" - integrity "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==" - dependencies: - "lodash" "4.17.21" - -"node-releases@2.0.6": - version "2.0.6" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz" - integrity "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - -"normalize-path@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - -"npm-run-path@4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - integrity "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - dependencies: - "path-key" "3.1.1" - -"nth-check@2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - integrity "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==" - dependencies: - "boolbase" "1.0.0" - -"object-inspect@1.12.2": - version "1.12.2" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" - integrity "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" - -"object-keys@1.1.1": - version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - integrity "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - -"object.assign@4.1.4": - version "4.1.4" - resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" - integrity "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "has-symbols" "1.0.3" - "object-keys" "1.1.1" - -"object.entries@1.1.5": - version "1.1.5" - resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz" - integrity "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "es-abstract" "1.20.4" - -"object.values@1.1.6": - version "1.1.6" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" - integrity "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "es-abstract" "1.20.4" - -"once@1.4.0": - version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - integrity "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==" - dependencies: - "wrappy" "1.0.2" - -"onetime@5.1.2": - version "5.1.2" - resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - integrity "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - dependencies: - "mimic-fn" "2.1.0" - -"optionator@0.9.1": - version "0.9.1" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - integrity "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" - dependencies: - "deep-is" "0.1.4" - "fast-levenshtein" "2.0.6" - "levn" "0.4.1" - "prelude-ls" "1.2.1" - "type-check" "0.4.0" - "word-wrap" "1.2.3" - -"p-limit@3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - dependencies: - "yocto-queue" "0.1.0" - -"p-locate@5.0.0": - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - dependencies: - "p-limit" "3.1.0" - -"parent-module@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - dependencies: - "callsites" "3.1.0" - -"path-exists@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - -"path-is-absolute@1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - integrity "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - -"path-key@3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - -"path-parse@1.0.7": - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - -"path-type@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - integrity "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - -"pathe@1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz" - integrity "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==" - -"picocolors@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" - integrity "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - -"picomatch@2.3.1": - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" - -"pinia@^2.0.33", "pinia@2.0.33": - version "2.0.33" - resolved "https://registry.npmjs.org/pinia/-/pinia-2.0.33.tgz" - integrity "sha512-HOj1yVV2itw6rNIrR2f7+MirGNxhORjrULL8GWgRwXsGSvEqIQ+SE0MYt6cwtpegzCda3i+rVTZM+AM7CG+kRg==" - dependencies: - "@vue/devtools-api" "6.5.0" - "typescript" "5.0.2" - "vue" "3.2.47" - "vue-demi" "0.13.11" - -"postcss-safe-parser@6.0.0": - version "6.0.0" - resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz" - integrity "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==" - dependencies: - "postcss" "8.4.18" - -"postcss-scss@4.0.5": - version "4.0.5" - resolved "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.5.tgz" - integrity "sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA==" - dependencies: - "postcss" "8.4.18" - -"postcss-selector-parser@6.0.10": - version "6.0.10" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" - integrity "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==" - dependencies: - "cssesc" "3.0.0" - "util-deprecate" "1.0.2" - -"postcss-styl@0.12.3": - version "0.12.3" - resolved "https://registry.npmjs.org/postcss-styl/-/postcss-styl-0.12.3.tgz" - integrity "sha512-8I7Cd8sxiEITIp32xBK4K/Aj1ukX6vuWnx8oY/oAH35NfQI4OZaY5nd68Yx8HeN5S49uhQ6DL0rNk0ZBu/TaLg==" - dependencies: - "debug" "4.3.4" - "fast-diff" "1.2.0" - "lodash.sortedlastindex" "4.1.0" - "postcss" "8.4.21" - "stylus" "0.57.0" - -"postcss@8.4.18": - version "8.4.18" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz" - integrity "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==" - dependencies: - "nanoid" "3.3.4" - "picocolors" "1.0.0" - "source-map-js" "1.0.2" - -"postcss@8.4.21": - version "8.4.21" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz" - integrity "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==" - dependencies: - "nanoid" "3.3.4" - "picocolors" "1.0.0" - "source-map-js" "1.0.2" - -"prelude-ls@1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - -"prettier-linter-helpers@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" - integrity "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" - dependencies: - "fast-diff" "1.2.0" - -"prettier@^2.8.5", "prettier@2.8.5": - version "2.8.5" - resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.5.tgz" - integrity "sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ==" - -"prismjs@^1.29.0", "prismjs@1.29.0": - version "1.29.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz" - integrity "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" - -"punycode@2.1.1": - version "2.1.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - integrity "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - -"queue-microtask@1.2.3": - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - -"readdirp@3.6.0": - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - dependencies: - "picomatch" "2.3.1" - -"regexp.prototype.flags@1.4.3": - version "1.4.3" - resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" - integrity "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "functions-have-names" "1.2.3" - -"relative-time-format@1.1.6": - version "1.1.6" - resolved "https://registry.npmjs.org/relative-time-format/-/relative-time-format-1.1.6.tgz" - integrity "sha512-aCv3juQw4hT1/P/OrVltKWLlp15eW1GRcwP1XdxHrPdZE9MtgqFpegjnTjLhi2m2WI9MT/hQQtE+tjEWG1hgkQ==" - -"resolve-from@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - -"resolve@1.22.1": - version "1.22.1" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" - integrity "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==" - dependencies: - "is-core-module" "2.11.0" - "path-parse" "1.0.7" - "supports-preserve-symlinks-flag" "1.0.0" - -"reusify@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - -"rimraf@3.0.2": - version "3.0.2" - resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - integrity "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - dependencies: - "glob" "7.2.3" - -"rollup@3.19.1": - version "3.19.1" - resolved "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz" - integrity "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==" - -"run-parallel@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - dependencies: - "queue-microtask" "1.2.3" - -"safe-regex-test@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" - integrity "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==" - dependencies: - "call-bind" "1.0.2" - "get-intrinsic" "1.1.3" - "is-regex" "1.1.4" - -"safer-buffer@2.1.2": - version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - integrity "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - -"sax@1.2.4": - version "1.2.4" - resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - integrity "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - -"semver@6.3.0": - version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - integrity "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - -"semver@7.3.8": - version "7.3.8" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - integrity "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" - dependencies: - "lru-cache" "6.0.0" - -"shebang-command@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - dependencies: - "shebang-regex" "3.0.0" - -"shebang-regex@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - -"side-channel@1.0.4": - version "1.0.4" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - integrity "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - dependencies: - "call-bind" "1.0.2" - "get-intrinsic" "1.1.3" - "object-inspect" "1.12.2" - -"signal-exit@3.0.7": - version "3.0.7" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" - integrity "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - -"slash@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - integrity "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - -"source-map-js@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" - integrity "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - -"source-map-resolve@0.6.0": - version "0.6.0" - resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz" - integrity "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==" - dependencies: - "atob" "2.1.2" - "decode-uri-component" "0.2.0" - -"source-map@0.6.1": - version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - integrity "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - -"source-map@0.7.4": - version "0.7.4" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" - integrity "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" - -"sourcemap-codec@1.4.8": - version "1.4.8" - resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" - integrity "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" - -"string.prototype.trimend@1.0.5": - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" - integrity "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "es-abstract" "1.20.4" - -"string.prototype.trimstart@1.0.5": - version "1.0.5" - resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" - integrity "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==" - dependencies: - "call-bind" "1.0.2" - "define-properties" "1.1.4" - "es-abstract" "1.20.4" - -"strip-ansi@6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - dependencies: - "ansi-regex" "5.0.1" - -"strip-bom@3.0.0": - version "3.0.0" - resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" - integrity "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==" - -"strip-final-newline@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - integrity "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - -"strip-json-comments@3.1.1": - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - -"stylus@0.57.0": - version "0.57.0" - resolved "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz" - integrity "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==" - dependencies: - "css" "3.0.0" - "debug" "4.3.4" - "glob" "7.2.3" - "safer-buffer" "2.1.2" - "sax" "1.2.4" - "source-map" "0.7.4" - -"supports-color@5.5.0": - version "5.5.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - integrity "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - dependencies: - "has-flag" "3.0.0" - -"supports-color@7.2.0": - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - dependencies: - "has-flag" "4.0.0" - -"supports-preserve-symlinks-flag@1.0.0": - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - integrity "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" - -"svgo@3.0.2": - version "3.0.2" - resolved "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz" - integrity "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==" - dependencies: - "@trysound/sax" "0.2.0" - "commander" "7.2.0" - "css-select" "5.1.0" - "css-tree" "2.3.1" - "csso" "5.0.5" - "picocolors" "1.0.0" - -"text-table@0.2.0": - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - -"to-fast-properties@2.0.0": - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - -"to-regex-range@5.0.1": - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - dependencies: - "is-number" "7.0.0" - -"tsconfig-paths@3.14.1": - version "3.14.1" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - integrity "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==" - dependencies: - "@types/json5" "0.0.29" - "json5" "1.0.1" - "minimist" "1.2.7" - "strip-bom" "3.0.0" - -"tslib@1.14.1": - version "1.14.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - integrity "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - -"tsutils@3.21.0": - version "3.21.0" - resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - integrity "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - dependencies: - "tslib" "1.14.1" - "typescript" "5.0.2" - -"type-check@0.4.0": - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - dependencies: - "prelude-ls" "1.2.1" - -"type-fest@0.20.2": - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - -"typescript@5.0.2": - version "5.0.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz" - integrity "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==" - -"unbox-primitive@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" - integrity "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==" - dependencies: - "call-bind" "1.0.2" - "has-bigints" "1.0.2" - "has-symbols" "1.0.3" - "which-boxed-primitive" "1.0.2" - -"unplugin-icons@^0.15.3", "unplugin-icons@0.15.3": - version "0.15.3" - resolved "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.15.3.tgz" - integrity "sha512-YWgJqv5AahrokeOnta8uX/m1damZA6Rf6zPClgHg2Fa/45iyOe3Lj+Wn/Ba+CSsq9yBffn17YfKfJNyWCNZPvw==" - dependencies: - "@antfu/install-pkg" "0.1.1" - "@antfu/utils" "0.7.2" - "@iconify/utils" "2.1.5" - "@vue/compiler-sfc" "3.2.47" - "debug" "4.3.4" - "kolorist" "1.7.0" - "local-pkg" "0.4.3" - "unplugin" "1.3.1" - -"unplugin-vue-components@^0.24.1", "unplugin-vue-components@0.24.1": - version "0.24.1" - resolved "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.24.1.tgz" - integrity "sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==" - dependencies: - "@antfu/utils" "0.7.2" - "@rollup/pluginutils" "5.0.2" - "chokidar" "3.5.3" - "debug" "4.3.4" - "fast-glob" "3.2.12" - "local-pkg" "0.4.3" - "magic-string" "0.30.0" - "minimatch" "7.4.2" - "resolve" "1.22.1" - "unplugin" "1.3.1" - "vue" "3.2.47" - -"unplugin@1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.3.1.tgz" - integrity "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==" - dependencies: - "acorn" "8.8.2" - "chokidar" "3.5.3" - "webpack-sources" "3.2.3" - "webpack-virtual-modules" "0.5.0" - -"update-browserslist-db@1.0.10": - version "1.0.10" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz" - integrity "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==" - dependencies: - "browserslist" "4.21.4" - "escalade" "3.1.1" - "picocolors" "1.0.0" - -"uri-js@4.4.1": - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - dependencies: - "punycode" "2.1.1" - -"util-deprecate@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - -"vite-plugin-prismjs@^0.0.8", "vite-plugin-prismjs@0.0.8": - version "0.0.8" - resolved "https://registry.npmjs.org/vite-plugin-prismjs/-/vite-plugin-prismjs-0.0.8.tgz" - integrity "sha512-mBPPMS/hwVUArdqCtp/oajZT7iq1qwJDDCciNZ3R5+Q5tQUuUHXtDKuZHYnklPLElNbENf2FyuOtC4FrgxQRAA==" - dependencies: - "@babel/core" "7.19.3" - "babel-plugin-prismjs" "2.1.0" - -"vite-plugin-windicss@^1.8.10", "vite-plugin-windicss@1.8.10": - version "1.8.10" - resolved "https://registry.npmjs.org/vite-plugin-windicss/-/vite-plugin-windicss-1.8.10.tgz" - integrity "sha512-scywsuzo46lcTBohspmF0WiwhWEte6p+OUVrX4yr7VMRvLHMHVfLtJReyD5pppjijG7YOwVsZn7XBWWZtF658Q==" - dependencies: - "@windicss/plugin-utils" "1.8.10" - "debug" "4.3.4" - "kolorist" "1.6.0" - "vite" "4.2.0" - "windicss" "3.5.6" - -"vite-svg-loader@^4.0.0", "vite-svg-loader@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/vite-svg-loader/-/vite-svg-loader-4.0.0.tgz" - integrity "sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA==" - dependencies: - "@vue/compiler-sfc" "3.2.47" - "svgo" "3.0.2" - -"vite@^4.2.0", "vite@4.2.0": - version "4.2.0" - resolved "https://registry.npmjs.org/vite/-/vite-4.2.0.tgz" - integrity "sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g==" - dependencies: - "@types/node" "18.15.3" - "esbuild" "0.17.12" - "postcss" "8.4.21" - "resolve" "1.22.1" - "rollup" "3.19.1" - -"vue-demi@0.13.11": - version "0.13.11" - resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz" - integrity "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==" - dependencies: - "vue" "3.2.47" - -"vue-eslint-parser@^9.1.0", "vue-eslint-parser@9.1.0": - version "9.1.0" - resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz" - integrity "sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ==" - dependencies: - "debug" "4.3.4" - "eslint" "8.36.0" - "eslint-scope" "7.1.1" - "eslint-visitor-keys" "3.3.0" - "espree" "9.4.0" - "esquery" "1.4.0" - "lodash" "4.17.21" - "semver" "7.3.8" - -"vue-i18n@^9.2.2", "vue-i18n@9.2.2": - version "9.2.2" - resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz" - integrity "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==" - dependencies: - "@intlify/core-base" "9.2.2" - "@intlify/shared" "9.2.2" - "@intlify/vue-devtools" "9.2.2" - "@vue/devtools-api" "6.4.5" - "vue" "3.2.47" - -"vue-resize@2.0.0-alpha.1": - version "2.0.0-alpha.1" - resolved "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz" - integrity "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==" - dependencies: - "vue" "3.2.47" - -"vue-router@^4.1.6", "vue-router@4.1.6": - version "4.1.6" - resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz" - integrity "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==" - dependencies: - "@vue/devtools-api" "6.4.5" - "vue" "3.2.47" - -"vue-template-compiler@2.7.14": - version "2.7.14" - resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz" - integrity "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==" - dependencies: - "de-indent" "1.0.2" - "he" "1.2.0" - -"vue-tsc@^1.2.0", "vue-tsc@1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.2.0.tgz" - integrity "sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==" - dependencies: - "@volar/vue-language-core" "1.2.0" - "@volar/vue-typescript" "1.2.0" - "typescript" "5.0.2" - -"vue@^3.2.47", "vue@3.2.47": - version "3.2.47" - resolved "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz" - integrity "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==" - dependencies: - "@vue/compiler-dom" "3.2.47" - "@vue/compiler-sfc" "3.2.47" - "@vue/runtime-dom" "3.2.47" - "@vue/server-renderer" "3.2.47" - "@vue/shared" "3.2.47" - -"webpack-sources@3.2.3": - version "3.2.3" - resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" - integrity "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" - -"webpack-virtual-modules@0.5.0": - version "0.5.0" - resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz" - integrity "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==" - -"which-boxed-primitive@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - integrity "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - dependencies: - "is-bigint" "1.0.4" - "is-boolean-object" "1.1.2" - "is-number-object" "1.0.7" - "is-string" "1.0.7" - "is-symbol" "1.0.4" - -"which@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - dependencies: - "isexe" "2.0.0" - -"windicss@^3.5.6", "windicss@3.5.6": - version "3.5.6" - resolved "https://registry.npmjs.org/windicss/-/windicss-3.5.6.tgz" - integrity "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA==" - -"word-wrap@1.2.3": - version "1.2.3" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - integrity "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - -"wrappy@1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - integrity "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - -"xml-name-validator@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" - integrity "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" - -"yallist@4.0.0": - version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - integrity "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - -"yaml-eslint-parser@0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-0.3.2.tgz" - integrity "sha512-32kYO6kJUuZzqte82t4M/gB6/+11WAuHiEnK7FreMo20xsCKPeFH5tDBU7iWxR7zeJpNnMXfJyXwne48D0hGrg==" - dependencies: - "eslint-visitor-keys" "1.3.0" - "lodash" "4.17.21" - "yaml" "1.10.2" - -"yaml@1.10.2": - version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - integrity "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - -"yocto-queue@0.1.0": - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" From 1b960c744963f115585080b58c248ef65bc0c289 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 1 Aug 2023 22:57:06 +0100 Subject: [PATCH 1017/1588] ci: use 'backend' tag --- .woodpecker/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.woodpecker/check.yml b/.woodpecker/check.yml index c3b00ef..d7c5dff 100644 --- a/.woodpecker/check.yml +++ b/.woodpecker/check.yml @@ -1,5 +1,5 @@ labels: - type: exec + backend: local pipeline: - name: nix flake check From 761393205ca877a90744f15ef88a8669b2f658d7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Aug 2023 09:54:10 +0000 Subject: [PATCH 1018/1588] pkgs: re-order 'meta' This is (mostly) alphetically sorted. --- pkgs/bw-pass/default.nix | 2 +- pkgs/change-audio/default.nix | 2 +- pkgs/change-backlight/default.nix | 2 +- pkgs/comma/default.nix | 4 ++-- pkgs/diff-flake/default.nix | 2 +- pkgs/drone-rsync/default.nix | 2 +- pkgs/i3-get-window-criteria/default.nix | 2 +- pkgs/lohr/default.nix | 2 +- pkgs/matrix-notifier/default.nix | 2 +- pkgs/osc52/default.nix | 2 +- pkgs/rbw-pass/default.nix | 2 +- pkgs/unbound-zones-adblock/default.nix | 2 +- pkgs/unified-hosts-lists/default.nix | 2 +- pkgs/vimix-cursors/default.nix | 2 +- pkgs/volantes-cursors/default.nix | 2 +- pkgs/wifi-qr/default.nix | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix index ef66f22..4e18c20 100644 --- a/pkgs/bw-pass/default.nix +++ b/pkgs/bw-pass/default.nix @@ -36,7 +36,7 @@ stdenvNoCC.mkDerivation rec { description = "A simple script to query a password from bitwarden"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; }; } diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index f201a55..d08d60e 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -35,7 +35,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; }; } diff --git a/pkgs/change-backlight/default.nix b/pkgs/change-backlight/default.nix index f9a1afd..d1b8981 100644 --- a/pkgs/change-backlight/default.nix +++ b/pkgs/change-backlight/default.nix @@ -35,7 +35,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; }; } diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix index 0ce542d..32e09d0 100644 --- a/pkgs/comma/default.nix +++ b/pkgs/comma/default.nix @@ -30,11 +30,11 @@ stdenvNoCC.mkDerivation rec { ''; meta = with lib; { - mainProgram = ","; description = "A simple script inspired by Shopify's comma, for modern Nix"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.unix; + mainProgram = ","; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; }; } diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 55d9403..0c2600b 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -34,7 +34,7 @@ stdenvNoCC.mkDerivation rec { description = "Nix flake helper to visualize changes in closures"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; }; } diff --git a/pkgs/drone-rsync/default.nix b/pkgs/drone-rsync/default.nix index 0783ad1..1e679a8 100644 --- a/pkgs/drone-rsync/default.nix +++ b/pkgs/drone-rsync/default.nix @@ -34,7 +34,7 @@ stdenvNoCC.mkDerivation rec { description = "Helper script to run rsync in a CI pipeline"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; }; } diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix index a464091..e5f605b 100644 --- a/pkgs/i3-get-window-criteria/default.nix +++ b/pkgs/i3-get-window-criteria/default.nix @@ -35,7 +35,7 @@ stdenvNoCC.mkDerivation rec { description = "Helper script to query i3 window criterions"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; }; } diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix index 38892bb..986472a 100644 --- a/pkgs/lohr/default.nix +++ b/pkgs/lohr/default.nix @@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec { description = "Git mirroring daemon"; homepage = "https://github.com/alarsyo/lohr"; license = with licenses; [ mit asl20 ]; - platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; }; } diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index 1762b62..d4a3844 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -38,7 +38,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://git.belanyi.fr/ambroisie/${pname}"; license = licenses.mit; - platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; }; } diff --git a/pkgs/osc52/default.nix b/pkgs/osc52/default.nix index 9e20eab..e02121b 100644 --- a/pkgs/osc52/default.nix +++ b/pkgs/osc52/default.nix @@ -34,7 +34,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; }; } diff --git a/pkgs/rbw-pass/default.nix b/pkgs/rbw-pass/default.nix index 7f0286b..1767408 100644 --- a/pkgs/rbw-pass/default.nix +++ b/pkgs/rbw-pass/default.nix @@ -34,7 +34,7 @@ stdenvNoCC.mkDerivation rec { description = "A simple script to query a password from rbw"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; - platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; }; } diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index f8d89b1..b8392ae 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -32,7 +32,7 @@ stdenvNoCC.mkDerivation { ''; homepage = "https://github.com/StevenBlack/hosts"; license = licenses.mit; - platforms = platforms.all; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.all; }; } diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index 1bafb03..06d24ac 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -28,7 +28,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://github.com/StevenBlack/hosts"; license = licenses.mit; - platforms = platforms.all; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.all; }; } diff --git a/pkgs/vimix-cursors/default.nix b/pkgs/vimix-cursors/default.nix index 8f92595..80424de 100644 --- a/pkgs/vimix-cursors/default.nix +++ b/pkgs/vimix-cursors/default.nix @@ -38,7 +38,7 @@ stdenvNoCC.mkDerivation rec { description = "An X cursor theme inspired by Materia design"; homepage = "https://github.com/vinceliuice/Vimix-cursors"; license = licenses.gpl3Only; - platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; }; } diff --git a/pkgs/volantes-cursors/default.nix b/pkgs/volantes-cursors/default.nix index 0a49912..b2c7865 100644 --- a/pkgs/volantes-cursors/default.nix +++ b/pkgs/volantes-cursors/default.nix @@ -38,7 +38,7 @@ stdenvNoCC.mkDerivation rec { description = "Classic cursor with a flying style"; homepage = "https://github.com/varlesh/volantes-cursors"; license = licenses.gpl2Only; - platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; }; } diff --git a/pkgs/wifi-qr/default.nix b/pkgs/wifi-qr/default.nix index c68eceb..79f4109 100644 --- a/pkgs/wifi-qr/default.nix +++ b/pkgs/wifi-qr/default.nix @@ -74,7 +74,7 @@ stdenvNoCC.mkDerivation rec { description = "WiFi password sharing via QR codes"; homepage = "https://github.com/kokoye2007/wifi-qr"; license = with licenses; [ gpl3Plus ]; - platforms = platforms.linux; maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; }; } From 405965dc7211c20632eaca3545a87a283c16b7f6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 4 Aug 2023 09:54:23 +0000 Subject: [PATCH 1019/1588] pkgs: add explicit 'meta.mainProgram' Since upstream has decided to deprecate the implied value when using `lib.getExe` (see [1]), we should set it explicitly. [1]: https://github.com/NixOS/nixpkgs/pull/246386 --- pkgs/bw-pass/default.nix | 1 + pkgs/change-audio/default.nix | 1 + pkgs/change-backlight/default.nix | 1 + pkgs/diff-flake/default.nix | 1 + pkgs/dragger/default.nix | 1 + pkgs/drone-rsync/default.nix | 1 + pkgs/drone-scp/default.nix | 1 + pkgs/ff2mpv-go/default.nix | 1 + pkgs/i3-get-window-criteria/default.nix | 1 + pkgs/lohr/default.nix | 1 + pkgs/matrix-notifier/default.nix | 1 + pkgs/osc52/default.nix | 1 + pkgs/rbw-pass/default.nix | 1 + pkgs/wifi-qr/default.nix | 1 + 14 files changed, 14 insertions(+) diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix index 4e18c20..9b959f5 100644 --- a/pkgs/bw-pass/default.nix +++ b/pkgs/bw-pass/default.nix @@ -36,6 +36,7 @@ stdenvNoCC.mkDerivation rec { description = "A simple script to query a password from bitwarden"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; + mainProgram = "bw-pass"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; }; diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix index d08d60e..12814e1 100644 --- a/pkgs/change-audio/default.nix +++ b/pkgs/change-audio/default.nix @@ -35,6 +35,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; + mainProgram = "change-audio"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; }; diff --git a/pkgs/change-backlight/default.nix b/pkgs/change-backlight/default.nix index d1b8981..1f8c88c 100644 --- a/pkgs/change-backlight/default.nix +++ b/pkgs/change-backlight/default.nix @@ -35,6 +35,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; + mainProgram = "change-backlight"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; }; diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix index 0c2600b..9cccd20 100644 --- a/pkgs/diff-flake/default.nix +++ b/pkgs/diff-flake/default.nix @@ -34,6 +34,7 @@ stdenvNoCC.mkDerivation rec { description = "Nix flake helper to visualize changes in closures"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; + mainProgram = "diff-flake"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.unix; }; diff --git a/pkgs/dragger/default.nix b/pkgs/dragger/default.nix index 255cc01..9eda7df 100644 --- a/pkgs/dragger/default.nix +++ b/pkgs/dragger/default.nix @@ -23,6 +23,7 @@ qt5.mkDerivation rec { description = "A CLI drag-and-drop tool"; homepage = "https://git.belanyi.fr/ambroisie/dragger"; license = licenses.mit; + mainProgram = "dragger"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; }; diff --git a/pkgs/drone-rsync/default.nix b/pkgs/drone-rsync/default.nix index 1e679a8..a7c2cbc 100644 --- a/pkgs/drone-rsync/default.nix +++ b/pkgs/drone-rsync/default.nix @@ -34,6 +34,7 @@ stdenvNoCC.mkDerivation rec { description = "Helper script to run rsync in a CI pipeline"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; + mainProgram = "drone-rsync"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.unix; }; diff --git a/pkgs/drone-scp/default.nix b/pkgs/drone-scp/default.nix index 0affedb..7437b06 100644 --- a/pkgs/drone-scp/default.nix +++ b/pkgs/drone-scp/default.nix @@ -20,5 +20,6 @@ buildGoModule rec { ''; homepage = "https://github.com/appleboy/drone-scp"; license = licenses.mit; + mainProgram = "drone-scp"; }; } diff --git a/pkgs/ff2mpv-go/default.nix b/pkgs/ff2mpv-go/default.nix index fdd9201..8c59bf5 100644 --- a/pkgs/ff2mpv-go/default.nix +++ b/pkgs/ff2mpv-go/default.nix @@ -26,5 +26,6 @@ buildGoModule rec { ''; homepage = "https://git.clsr.net/util/ff2mpv-go/"; license = licenses.publicDomain; + mainProgram = "ff2mpv-go"; }; } diff --git a/pkgs/i3-get-window-criteria/default.nix b/pkgs/i3-get-window-criteria/default.nix index e5f605b..2fc840d 100644 --- a/pkgs/i3-get-window-criteria/default.nix +++ b/pkgs/i3-get-window-criteria/default.nix @@ -35,6 +35,7 @@ stdenvNoCC.mkDerivation rec { description = "Helper script to query i3 window criterions"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; + mainProgram = "i3-get-window-criteria"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.unix; }; diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix index 986472a..a83b092 100644 --- a/pkgs/lohr/default.nix +++ b/pkgs/lohr/default.nix @@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec { description = "Git mirroring daemon"; homepage = "https://github.com/alarsyo/lohr"; license = with licenses; [ mit asl20 ]; + mainProgram = "lohr"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.unix; }; diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index d4a3844..a96cb61 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -38,6 +38,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://git.belanyi.fr/ambroisie/${pname}"; license = licenses.mit; + mainProgram = "matrix-notifier"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.unix; }; diff --git a/pkgs/osc52/default.nix b/pkgs/osc52/default.nix index e02121b..d4b0c08 100644 --- a/pkgs/osc52/default.nix +++ b/pkgs/osc52/default.nix @@ -34,6 +34,7 @@ stdenvNoCC.mkDerivation rec { ''; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; + mainProgram = "osc52"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; }; diff --git a/pkgs/rbw-pass/default.nix b/pkgs/rbw-pass/default.nix index 1767408..6f9ff0a 100644 --- a/pkgs/rbw-pass/default.nix +++ b/pkgs/rbw-pass/default.nix @@ -34,6 +34,7 @@ stdenvNoCC.mkDerivation rec { description = "A simple script to query a password from rbw"; homepage = "https://git.belanyi.fr/ambroisie/nix-config"; license = with licenses; [ mit ]; + mainProgram = "rbw-pass"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; }; diff --git a/pkgs/wifi-qr/default.nix b/pkgs/wifi-qr/default.nix index 79f4109..88164e5 100644 --- a/pkgs/wifi-qr/default.nix +++ b/pkgs/wifi-qr/default.nix @@ -74,6 +74,7 @@ stdenvNoCC.mkDerivation rec { description = "WiFi password sharing via QR codes"; homepage = "https://github.com/kokoye2007/wifi-qr"; license = with licenses; [ gpl3Plus ]; + mainProgram = "wifi-qr"; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.linux; }; From 424bb2e7b9dcaa3591a60d3895a76f91e2122f5e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 5 Aug 2023 23:47:21 +0200 Subject: [PATCH 1020/1588] modules: services: woodpecker: simplify path I'm not sure why it was written that way to begin with. --- modules/services/woodpecker/agent-exec/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/services/woodpecker/agent-exec/default.nix index db98241..ad30188 100644 --- a/modules/services/woodpecker/agent-exec/default.nix +++ b/modules/services/woodpecker/agent-exec/default.nix @@ -52,7 +52,7 @@ in BindReadOnlyPaths = [ "/etc/passwd:/etc/passwd" "/etc/group:/etc/group" - "/nix/var/nix/profiles/system/etc/nix:/etc/nix" + "/etc/nix:/etc/nix" "${config.environment.etc."ssh/ssh_known_hosts".source}:/etc/ssh/ssh_known_hosts" "/etc/machine-id" # channels are dynamic paths in the nix store, therefore we need to bind mount the whole thing From 3ef71cc1652ca0d290fccf06187d46a3a5071f0b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 5 Aug 2023 22:49:35 +0100 Subject: [PATCH 1021/1588] home: wm: i3bar: add 'quarks' bluetooth block --- home/wm/i3bar/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix index 38a78b9..05b0f50 100644 --- a/home/wm/i3bar/default.nix +++ b/home/wm/i3bar/default.nix @@ -55,6 +55,12 @@ in format = " $icon Protons{ $percentage|} "; disconnected_format = ""; }) + (lib.optionalAttrs config.my.home.bluetooth.enable { + block = "bluetooth"; + mac = "88:C9:E8:6B:B7:55"; + format = " $icon Quarks{ $percentage|} "; + disconnected_format = ""; + }) (lib.optionalAttrs config.my.home.bluetooth.enable { block = "bluetooth"; mac = "F7:78:BA:76:52:F7"; From 7529d2b7f94a7d44ac8fc57d4c3f43710c0b2c47 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Aug 2023 15:35:47 +0000 Subject: [PATCH 1022/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index b3c3e01..a6f5424 100644 --- a/flake.lock +++ b/flake.lock @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1691039228, - "narHash": "sha256-iPNZJ1LvfUf1Y456ewC0DXgf99TNssG8OLObOyqxO6M=", + "lastModified": 1691312444, + "narHash": "sha256-J9e9dGwAPTX+UlAn8jehoyaEq6fwK+L+gunfx0cYT4E=", "owner": "nix-community", "repo": "home-manager", - "rev": "86dd48d70a2e2c17e84e747ba4faa92453e68d4a", + "rev": "903e06d734bcae48efb79b9afd51b406d2744179", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1691006197, - "narHash": "sha256-DbtxVWPt+ZP5W0Usg7jAyTomIM//c3Jtfa59Ht7AV8s=", + "lastModified": 1691368598, + "narHash": "sha256-ia7li22keBBbj02tEdqjVeLtc7ZlSBuhUk+7XTUFr14=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "66aedfd010204949cb225cf749be08cb13ce1813", + "rev": "5a8e9243812ba528000995b294292d3b5e120947", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1691139289, - "narHash": "sha256-cZtqvYztpGwLtAsfrzY2VeTfFdW3HBwX7m1KV2Zy2nw=", + "lastModified": 1691410813, + "narHash": "sha256-khyrWULs4+wHc3c545yHchsK/p8Ej4vAx7Tflgeq1oE=", "owner": "nix-community", "repo": "NUR", - "rev": "cb20b89d5b355c53a18dd149e7104a67381c7c17", + "rev": "7038553b4660dbac2a11f24ceb9f7282b1ece316", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1691093055, - "narHash": "sha256-sjNWYpDHc6vx+/M0WbBZKltR0Avh2S43UiDbmYtfHt0=", + "lastModified": 1691397944, + "narHash": "sha256-4fa4bX3kPYKpEssgrFRxRCPVXczidArDeSWaUMSzQAU=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "ebb43bdacd1af8954d04869c77bc3b61fde515e4", + "rev": "e5588ddffd4c3578547a86ef40ec9a6fbdae2986", "type": "github" }, "original": { From 7ace62da72a5988ee091964a75a022ff2610b539 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Mon, 7 Aug 2023 15:37:35 +0000 Subject: [PATCH 1023/1588] home: vim: use async path completion This makes the editor more responsive when completing in directories that are network mounted or have a large amount of entries. --- home/vim/default.nix | 1 + home/vim/plugin/settings/completion.lua | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index 1aad3c1..a9c2bda 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -77,6 +77,7 @@ in luasnip # Snippet manager compatible with LSP friendly-snippets # LSP snippets collection nvim-cmp # Completion engine + cmp-async-path # More responsive path completion cmp-buffer # Words from open buffers cmp-nvim-lsp # LSP suggestions cmp-nvim-lua # NeoVim lua API diff --git a/home/vim/plugin/settings/completion.lua b/home/vim/plugin/settings/completion.lua index 2d150e8..0ed8c7f 100644 --- a/home/vim/plugin/settings/completion.lua +++ b/home/vim/plugin/settings/completion.lua @@ -37,7 +37,7 @@ cmp.setup({ entries = "native", }, sources = { - { name = "path", priority_weight = 110 }, + { name = "async_path", priority_weight = 110 }, { name = "nvim_lsp", priority_weight = 100 }, { name = "nvim_lua", priority_weight = 90 }, { name = "luasnip", priority_weight = 80 }, From 5f42e7cc90d426b1e883bb834d4776e1ff9a6fe3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Aug 2023 13:02:20 +0000 Subject: [PATCH 1024/1588] home: tmux: fix option name typo --- home/tmux/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index 70f037f..e554fd0 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -10,7 +10,7 @@ in options.my.home.tmux = with lib; { enable = my.mkDisableOption "tmux terminal multiplexer"; - enabledPassthrough = mkEnableOption "tmux DCS passthrough sequence"; + enablePassthrough = mkEnableOption "tmux DCS passthrough sequence"; }; config.programs.tmux = lib.mkIf cfg.enable { @@ -70,7 +70,7 @@ in set -g status-left-length 16 ${ - lib.optionalString cfg.enabledPassthrough '' + lib.optionalString cfg.enablePassthrough '' # Allow any application to use the tmux DCS for passthrough set -g allow-passthrough on '' From bcdbe455589de1be0652eaf8dd3d224ea6e965b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Fri, 11 Aug 2023 13:13:21 +0000 Subject: [PATCH 1025/1588] pkgs: add osc777 --- pkgs/default.nix | 2 + pkgs/osc777/default.nix | 41 +++++++++++++ pkgs/osc777/osc777 | 126 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 169 insertions(+) create mode 100644 pkgs/osc777/default.nix create mode 100755 pkgs/osc777/osc777 diff --git a/pkgs/default.nix b/pkgs/default.nix index c9e755a..03f9cc3 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -26,6 +26,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { osc52 = pkgs.callPackage ./osc52 { }; + osc777 = pkgs.callPackage ./osc777 { }; + rbw-pass = pkgs.callPackage ./rbw-pass { }; unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; diff --git a/pkgs/osc777/default.nix b/pkgs/osc777/default.nix new file mode 100644 index 0000000..6e9ce2e --- /dev/null +++ b/pkgs/osc777/default.nix @@ -0,0 +1,41 @@ +{ lib, coreutils, makeWrapper, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "osc777"; + version = "0.1.0"; + + src = ./osc777; + + nativeBuildInputs = [ + makeWrapper + ]; + + dontUnpack = true; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/osc777 + chmod a+x $out/bin/osc777 + ''; + + wrapperPath = lib.makeBinPath [ + coreutils + ]; + + fixupPhase = '' + patchShebangs $out/bin/osc777 + wrapProgram $out/bin/osc777 --prefix PATH : "${wrapperPath}" + ''; + + meta = with lib; { + description = '' + A script to send notifications using the OSC777 escape sequence + ''; + homepage = "https://git.belanyi.fr/ambroisie/nix-config"; + license = with licenses; [ mit ]; + mainProgram = "osc777"; + maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/osc777/osc777 b/pkgs/osc777/osc777 new file mode 100755 index 0000000..83d066f --- /dev/null +++ b/pkgs/osc777/osc777 @@ -0,0 +1,126 @@ +#!/usr/bin/env bash + +# Whether to disable tmux/screen DCS escape sequences +: "${OSC777_NO_DCS:=0}" + +die() { + echo "ERROR: $*" + exit 1 +} + +usage() { + if [ $# -gt 0 ]; then + exec 1>&2 + fi + + cat << EOF +Usage: $0 [options] <message> +Send a notification (title and message) to the host system using the OSC 777 +escape sequence: +Options: + -h, --help This screen. + -d, --no-dcs Disable tmux/screen specific DCS sequences, only use OSC 777 + -- Stop options processing +EOF + + if [ $# -gt 0 ]; then + echo + die "$@" + else + exit 0 + fi +} + +tmux_seq() { + # shellcheck disable=1003 + printf '\033Ptmux;\033%s\033\\' "$1" +} + +screen_seq() { + # Screen limits the length of string sequences, so we have to break it up. + # Going by the screen history: + # (v4.2.1) Apr 2014 - today: 768 bytes + # Aug 2008 - Apr 2014 (v4.2.0): 512 bytes + # ??? - Aug 2008 (v4.0.3): 256 bytes + local limit=768 + # We go 4 bytes under the limit because we're going to insert two bytes + # before (\eP) and 2 bytes after (\e\) each string. + printf '%s' "$1" | + sed -E "s:.{$((limit - 4))}:&\n:g" | + sed -E -e 's:^:\x1bP:' -e 's:$:\x1b\\:' | + tr -d '\n' +} + +osc777_seq() { + printf '%s' "$1" +} + +print_seq() { + local seq="$1" + + if [ "${OSC777_NO_DCS}" != 0 ]; then + # Override TERM to avoid tmux/screen DCS escape logic + TERM=dummy + fi + + case ${TERM-} in + screen*) + # Since tmux defaults to setting TERM=screen, special case it. + if [ -n "${TMUX-}" ]; then + tmux_seq "${seq}" + else + screen_seq "${seq}" + fi + ;; + tmux*) + tmux_seq "${seq}" + ;; + *) + osc777_seq "${seq}" + ;; + esac +} + +notify() { + local title=$1 + local message=$2 + + # shellcheck disable=1003 + print_seq "$(printf '\033]777;notify;%s;%s\e\\' "${title}" "${message}")" +} + +main() { + set -e + + local args=() + while [ $# -gt 0 ]; do + case $1 in + -h | --help) + usage + ;; + -d | --no-dcs) + OSC777_NO_DCS=1 + ;; + --) + shift + args+=("$@") + break + ;; + -*) + usage "Unknown option: $1" + ;; + *) + args+=("$1") + ;; + esac + shift + done + + if [ "${#args[@]}" -ne 2 ]; then + usage "Supply exactly two arguments" + fi + + notify "${args[@]}" +} + +main "$@" From 330402d33513d73f570c011003c0f9ed400810cd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 8 Aug 2023 20:43:52 +0200 Subject: [PATCH 1026/1588] hosts: nixos: porthos: services: enable vikunja Trying it out again. This reverts commit 1807b8b88c2812a8a9957d6251400d94a6d8a562. --- hosts/nixos/porthos/services.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index e4cae5e..7653eb5 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -147,6 +147,14 @@ in enable = true; credentialsFile = secrets."transmission/credentials".path; }; + # Self-hosted todo app + vikunja = { + enable = true; + mail = { + enable = true; + configFile = secrets."vikunja/mail".path; + }; + }; # Simple, in-kernel VPN wireguard = { enable = true; From 254eb0cb2de993982271c44bf47850231318a68a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 12 Aug 2023 23:56:58 +0200 Subject: [PATCH 1027/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index a6f5424..658ff11 100644 --- a/flake.lock +++ b/flake.lock @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1691312444, - "narHash": "sha256-J9e9dGwAPTX+UlAn8jehoyaEq6fwK+L+gunfx0cYT4E=", + "lastModified": 1691856649, + "narHash": "sha256-1/KYCwNyOPpUoyno9Yj3zMHITQaW+wPzVlJFPOPPCo4=", "owner": "nix-community", "repo": "home-manager", - "rev": "903e06d734bcae48efb79b9afd51b406d2744179", + "rev": "406d34d919e9e8b831b531782cf5ef6995188566", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1691368598, - "narHash": "sha256-ia7li22keBBbj02tEdqjVeLtc7ZlSBuhUk+7XTUFr14=", + "lastModified": 1691654369, + "narHash": "sha256-gSILTEx1jRaJjwZxRlnu3ZwMn1FVNk80qlwiCX8kmpo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5a8e9243812ba528000995b294292d3b5e120947", + "rev": "ce5e4a6ef2e59d89a971bc434ca8ca222b9c7f5e", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1691410813, - "narHash": "sha256-khyrWULs4+wHc3c545yHchsK/p8Ej4vAx7Tflgeq1oE=", + "lastModified": 1691871985, + "narHash": "sha256-xSuUcMfHQO/GlZsGXHcJpi/22XsrRmw99usQx53bdCw=", "owner": "nix-community", "repo": "NUR", - "rev": "7038553b4660dbac2a11f24ceb9f7282b1ece316", + "rev": "107240729dc0fdd4afa1728aaa03d1df0d70a2e8", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1691397944, - "narHash": "sha256-4fa4bX3kPYKpEssgrFRxRCPVXczidArDeSWaUMSzQAU=", + "lastModified": 1691747570, + "narHash": "sha256-J3fnIwJtHVQ0tK2JMBv4oAmII+1mCdXdpeCxtIsrL2A=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e5588ddffd4c3578547a86ef40ec9a6fbdae2986", + "rev": "c5ac3aa3324bd8aebe8622a3fc92eeb3975d317a", "type": "github" }, "original": { From a87429b0673d5999d731a9623e8314397174ccce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 13 Aug 2023 15:31:43 +0100 Subject: [PATCH 1028/1588] pkgs: add 'zsh-done' --- pkgs/default.nix | 2 ++ pkgs/zsh-done/default.nix | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 pkgs/zsh-done/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 03f9cc3..6558026 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -39,4 +39,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { volantes-cursors = pkgs.callPackage ./volantes-cursors { }; wifi-qr = pkgs.callPackage ./wifi-qr { }; + + zsh-done = pkgs.callPackage ./zsh-done { }; }) diff --git a/pkgs/zsh-done/default.nix b/pkgs/zsh-done/default.nix new file mode 100644 index 0000000..bddc6c1 --- /dev/null +++ b/pkgs/zsh-done/default.nix @@ -0,0 +1,34 @@ +{ lib, fetchFromGitHub, stdenvNoCC }: + +stdenvNoCC.mkDerivation rec { + pname = "zsh-done"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "ambroisie"; + repo = "zsh-done"; + rev = "v${version}"; + hash = "sha256-DC7urJDXPP9vBYABrJF5KZ4HfMbrpHIVogSmEB8PWLA="; + }; + + dontConfigure = true; + + dontBuild = true; + + installPhase = '' + plugindir="$out/share/zsh/site-functions" + + mkdir -p $plugindir + cp $src/done.plugin.zsh $plugindir/ + ''; + + meta = with lib; { + description = '' + A zsh plug-in to receive notifications when long processes finish + ''; + homepage = "https://gitea.belanyi.fr/ambroisie/zsh-done"; + license = licenses.mit; + platforms = platforms.unix; + maintainers = with maintainers; [ ambroisie ]; + }; +} From 4571a39c259e44f8b217fdb2c587a2add58dbaef Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 13 Aug 2023 16:07:33 +0100 Subject: [PATCH 1029/1588] home: gdb: fix 'mkMerge' invocation The `rr` configuration should be enabled only if `gdb` is. --- home/gdb/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/home/gdb/default.nix b/home/gdb/default.nix index c498048..ab51938 100644 --- a/home/gdb/default.nix +++ b/home/gdb/default.nix @@ -20,19 +20,19 @@ in }; }; - config = lib.mkMerge [ - (lib.mkIf cfg.enable { + config = lib.mkIf cfg.enable (lib.mkMerge [ + { home.packages = with pkgs; [ gdb ]; xdg.configFile."gdb/gdbinit".source = ./gdbinit; - }) + } (lib.mkIf cfg.rr.enable { home.packages = [ cfg.rr.package ]; }) - ]; + ]); } From ab590545184198e6479a8ac1564df2234d8808ef Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 19 Aug 2023 12:34:22 +0200 Subject: [PATCH 1030/1588] modules: services: rename 'nix-cache' I'm about to modify the module to use a different cache implementation, so this name is more appropriate. --- hosts/nixos/porthos/services.nix | 2 +- modules/services/default.nix | 2 +- modules/services/{nix-serve => nix-cache}/default.nix | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) rename modules/services/{nix-serve => nix-cache}/default.nix (85%) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 7653eb5..0342864 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -93,7 +93,7 @@ in enable = true; passwordFile = secrets."nextcloud/password".path; }; - nix-serve = { + nix-cache = { enable = true; secretKeyFile = secrets."nix-serve/cache-key".path; }; diff --git a/modules/services/default.nix b/modules/services/default.nix index 86badf5..b27570d 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -20,7 +20,7 @@ ./navidrome ./nextcloud ./nginx - ./nix-serve + ./nix-cache ./paperless ./pirate ./podgrab diff --git a/modules/services/nix-serve/default.nix b/modules/services/nix-cache/default.nix similarity index 85% rename from modules/services/nix-serve/default.nix rename to modules/services/nix-cache/default.nix index 0cf1573..4c04acf 100644 --- a/modules/services/nix-serve/default.nix +++ b/modules/services/nix-cache/default.nix @@ -1,11 +1,11 @@ # Binary cache through nix-serve { config, lib, pkgs, ... }: let - cfg = config.my.services.nix-serve; + cfg = config.my.services.nix-cache; in { - options.my.services.nix-serve = with lib; { - enable = mkEnableOption "nix-serve binary cache"; + options.my.services.nix-cache = with lib; { + enable = mkEnableOption "nix binary cache"; port = mkOption { type = types.port; @@ -16,7 +16,7 @@ in secretKeyFile = mkOption { type = types.str; - example = "/run/secrets/nix-serve"; + example = "/run/secrets/nix-cache"; description = "Secret signing key for the cache"; }; From 19d2916e1c8cdbf48a74026c78d39b1dbd1285df Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 19 Aug 2023 12:36:05 +0200 Subject: [PATCH 1031/1588] hosts: nixos: porthos: secrets: rename 'nix-cache' To go with the module rename. --- .../secrets/{nix-serve => nix-cache}/cache-key.age | Bin hosts/nixos/porthos/secrets/secrets.nix | 2 +- hosts/nixos/porthos/services.nix | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename hosts/nixos/porthos/secrets/{nix-serve => nix-cache}/cache-key.age (100%) diff --git a/hosts/nixos/porthos/secrets/nix-serve/cache-key.age b/hosts/nixos/porthos/secrets/nix-cache/cache-key.age similarity index 100% rename from hosts/nixos/porthos/secrets/nix-serve/cache-key.age rename to hosts/nixos/porthos/secrets/nix-cache/cache-key.age diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 498aebf..8eac0f5 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -52,7 +52,7 @@ in publicKeys = all; }; - "nix-serve/cache-key.age".publicKeys = all; + "nix-cache/cache-key.age".publicKeys = all; "paperless/password.age".publicKeys = all; "paperless/secret-key.age".publicKeys = all; diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 0342864..a4bf485 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -95,7 +95,7 @@ in }; nix-cache = { enable = true; - secretKeyFile = secrets."nix-serve/cache-key".path; + secretKeyFile = secrets."nix-cache/cache-key".path; }; nginx = { enable = true; From 6d9d835e1ce48a45013f846608aa4da55a4fcce0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 19 Aug 2023 14:16:19 +0200 Subject: [PATCH 1032/1588] modules: services: nix-cache: use harmonia --- modules/services/nix-cache/default.nix | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/modules/services/nix-cache/default.nix b/modules/services/nix-cache/default.nix index 4c04acf..b3bdbf3 100644 --- a/modules/services/nix-cache/default.nix +++ b/modules/services/nix-cache/default.nix @@ -1,5 +1,5 @@ -# Binary cache through nix-serve -{ config, lib, pkgs, ... }: +# Binary cache +{ config, lib, ... }: let cfg = config.my.services.nix-cache; in @@ -32,19 +32,15 @@ in }; config = lib.mkIf cfg.enable { - services.nix-serve = { + services.harmonia = { enable = true; - bindAddress = "127.0.0.1"; + settings = { + bind = "127.0.0.1:${toString cfg.port}"; + inherit (cfg) priority; + }; - inherit (cfg) - port - secretKeyFile - ; - - package = pkgs.nix-serve-ng; - - extraParams = "--priority=${toString cfg.priority}"; + signKeyPath = cfg.secretKeyFile; }; my.services.nginx.virtualHosts = [ From e4541d4eccec9ec113d4ac53ee14ea450fa80503 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 19 Aug 2023 14:40:54 +0200 Subject: [PATCH 1033/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 658ff11..cdfdef7 100644 --- a/flake.lock +++ b/flake.lock @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1691856649, - "narHash": "sha256-1/KYCwNyOPpUoyno9Yj3zMHITQaW+wPzVlJFPOPPCo4=", + "lastModified": 1692260837, + "narHash": "sha256-2FpkX1zl+7ni7djK7NeE1ZGupRUwZgjW+RPCSBgDf4k=", "owner": "nix-community", "repo": "home-manager", - "rev": "406d34d919e9e8b831b531782cf5ef6995188566", + "rev": "6a94c1a59737783c282c4031555a289c28b961e4", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1691654369, - "narHash": "sha256-gSILTEx1jRaJjwZxRlnu3ZwMn1FVNk80qlwiCX8kmpo=", + "lastModified": 1692356644, + "narHash": "sha256-AYkPFT+CbCVSBmh0WwIzPpwhEJ4Yy3A7JZvUkGJIg5o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ce5e4a6ef2e59d89a971bc434ca8ca222b9c7f5e", + "rev": "8ecc900b2f695d74dea35a92f8a9f9b32c8ea33d", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1691871985, - "narHash": "sha256-xSuUcMfHQO/GlZsGXHcJpi/22XsrRmw99usQx53bdCw=", + "lastModified": 1692437027, + "narHash": "sha256-gWtVFoPw7HhbKGLp7vupVbCNAvNMQS5+2PujOt2QbRk=", "owner": "nix-community", "repo": "NUR", - "rev": "107240729dc0fdd4afa1728aaa03d1df0d70a2e8", + "rev": "b47c7b8d313f9739a7fbb572413c959a362c244a", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1691747570, - "narHash": "sha256-J3fnIwJtHVQ0tK2JMBv4oAmII+1mCdXdpeCxtIsrL2A=", + "lastModified": 1692274144, + "narHash": "sha256-BxTQuRUANQ81u8DJznQyPmRsg63t4Yc+0kcyq6OLz8s=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "c5ac3aa3324bd8aebe8622a3fc92eeb3975d317a", + "rev": "7e3517c03d46159fdbf8c0e5c97f82d5d4b0c8fa", "type": "github" }, "original": { From ca1d439e7aeb27f07c71b73f83ce99124a1b09fe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 20 Aug 2023 14:19:37 +0100 Subject: [PATCH 1034/1588] hosts: nixos: porthos: services: disable drone I have now completely migrated to Woodpecker, so no need for it anymore. --- hosts/nixos/porthos/services.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index a4bf485..863048c 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -28,12 +28,6 @@ in enable = true; libraryPath = "/data/media/library"; }; - drone = { - enable = true; - runners = [ "docker" "exec" ]; - secretFile = secrets."drone/gitea".path; - sharedSecretFile = secrets."drone/secret".path; - }; # Auto-ban spammy bots and incorrect logins fail2ban = { enable = true; From 5b59a9cf82a68342086803edfd7eb6e2294d2b55 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 21 Aug 2023 13:20:22 +0000 Subject: [PATCH 1035/1588] hosts: homes: cloudtop: enable tmux passthrough Mostly used for my `osc52` and `osc777` scripts. --- hosts/homes/ambroisie@ambroisie/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix index 94efc09..9096610 100644 --- a/hosts/homes/ambroisie@ambroisie/default.nix +++ b/hosts/homes/ambroisie@ambroisie/default.nix @@ -14,4 +14,7 @@ }; programs.git.package = lib.mkForce pkgs.emptyDirectory; + + # I use scripts that use the passthrough sequence often on this host + my.home.tmux.enablePassthrough = true; } From 71a1bbd78d629db58c9f322d1bef64cd27ee28e7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 29 Aug 2023 14:05:21 +0000 Subject: [PATCH 1036/1588] home: vim: set line length in commit messages I'm already getting the correct wrapping behaviour from vim-fugitive, but the displayed width is wrong. --- home/vim/after/ftplugin/gitcommit.vim | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/home/vim/after/ftplugin/gitcommit.vim b/home/vim/after/ftplugin/gitcommit.vim index f785ff8..29d182c 100644 --- a/home/vim/after/ftplugin/gitcommit.vim +++ b/home/vim/after/ftplugin/gitcommit.vim @@ -4,3 +4,7 @@ call ftplugined#check_undo_ft() " Enable spell checking on commit messages setlocal spell let b:undo_ftplugin.='|setlocal spell<' + +" Change max length of a line to 72 for this buffer +setlocal colorcolumn=72 +let b:undo_ftplugin.='|setlocal colorcolumn<' From 13769429f6db871d8d8d64391584e280860a3fc7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 31 Aug 2023 10:22:56 +0000 Subject: [PATCH 1037/1588] hosts: homes: cloudtop: enable 'git' package Turns out that the latest version fixes the issue, but I haven't looked into why exactly. This reverts commit 6100a092af2f21270a3d689d771f9a3857b04ca6. --- hosts/homes/ambroisie@ambroisie/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix index 9096610..f54453b 100644 --- a/hosts/homes/ambroisie@ambroisie/default.nix +++ b/hosts/homes/ambroisie@ambroisie/default.nix @@ -1,5 +1,5 @@ # Google Cloudtop configuration -{ lib, pkgs, ... }: +{ ... }: { # Google specific configuration home.homeDirectory = "/usr/local/google/home/ambroisie"; @@ -13,8 +13,6 @@ LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; }; - programs.git.package = lib.mkForce pkgs.emptyDirectory; - # I use scripts that use the passthrough sequence often on this host my.home.tmux.enablePassthrough = true; } From 861136c47596a0cf6de8ff5bb91fefd29d69642e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 31 Aug 2023 10:41:17 +0000 Subject: [PATCH 1038/1588] treewide: add 'shellcheck shell' directives I used 'bash' for zsh files, since that's the closest and `shell=zsh` is not supported [1]. [1]: https://github.com/koalaman/shellcheck/issues/809 --- bootstrap.sh | 1 + home/zsh/completion-styles.zsh | 2 ++ home/zsh/extra-mappings.zsh | 1 + home/zsh/options.zsh | 2 ++ 4 files changed, 6 insertions(+) diff --git a/bootstrap.sh b/bootstrap.sh index b1c418e..955617d 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,5 +1,6 @@ #!/usr/bin/env nix-shell #! nix-shell -i bash -p bitwarden-cli git gnupg jq nix +# shellcheck shell=bash # Command failure is script failure set -e diff --git a/home/zsh/completion-styles.zsh b/home/zsh/completion-styles.zsh index 156bc2c..87bb014 100644 --- a/home/zsh/completion-styles.zsh +++ b/home/zsh/completion-styles.zsh @@ -1,3 +1,5 @@ +# shellcheck shell=bash + # Style the completion a bit zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # Show a prompt on selection diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index 3456e13..fea2f96 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -1,3 +1,4 @@ +# shellcheck shell=bash # shellcheck disable=2154 # Fix Ctrl+u killing from the cursor instead of the whole line diff --git a/home/zsh/options.zsh b/home/zsh/options.zsh index 82047ff..32da8d8 100644 --- a/home/zsh/options.zsh +++ b/home/zsh/options.zsh @@ -1,3 +1,5 @@ +# shellcheck shell=bash + # Show an error when a globbing expansion doesn't find any match setopt nomatch # List on ambiguous completion and Insert first match immediately From 8bcf56fdec63be3ed9a3d6c8fd36ffdfc456f247 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 31 Aug 2023 10:42:45 +0000 Subject: [PATCH 1039/1588] treewide: fix `shellcheck` issues --- bootstrap.sh | 1 - home/zsh/completion-styles.zsh | 2 ++ home/zsh/extra-mappings.zsh | 1 - hosts/nixos/porthos/install.sh | 3 ++- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/bootstrap.sh b/bootstrap.sh index 955617d..db1662e 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -11,7 +11,6 @@ BOLD_GREEN="\e[0;1;32m" RESET="\e[0m" -DEST="$HOME/.config/nixpkgs" BW_SESSION="" warn() { diff --git a/home/zsh/completion-styles.zsh b/home/zsh/completion-styles.zsh index 87bb014..c3d664d 100644 --- a/home/zsh/completion-styles.zsh +++ b/home/zsh/completion-styles.zsh @@ -1,6 +1,7 @@ # shellcheck shell=bash # Style the completion a bit +# shellcheck disable=2086,2296 zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # Show a prompt on selection zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' @@ -23,6 +24,7 @@ zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.o' '*?.c~' '*?.old' # command for process lists, the local web server details and host completion # on processes completion complete all user processes +# shellcheck disable=2016 zstyle ':completion:*:processes' command 'ps -au$USER' # Completion formatting and messages diff --git a/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh index fea2f96..25c230d 100644 --- a/home/zsh/extra-mappings.zsh +++ b/home/zsh/extra-mappings.zsh @@ -1,5 +1,4 @@ # shellcheck shell=bash -# shellcheck disable=2154 # Fix Ctrl+u killing from the cursor instead of the whole line bindkey '^u' backward-kill-line diff --git a/hosts/nixos/porthos/install.sh b/hosts/nixos/porthos/install.sh index de87aa7..8edc175 100644 --- a/hosts/nixos/porthos/install.sh +++ b/hosts/nixos/porthos/install.sh @@ -30,6 +30,7 @@ swapon /dev/sda2 apt install sudo useradd -m -G sudo setupuser +# shellcheck disable=2117 su setupuser cat << EOF @@ -37,7 +38,7 @@ cat << EOF curl -L https://nixos.org/nix/install | sh . $HOME/.nix-profile/etc/profile.d/nix.sh nix-channel --add https://nixos.org/channels/nixos-20.09 nixpkgs -sudo `which nixos-generate-config` --root /mnt +sudo "$(which nixos-generate-config)" --root /mnt # Change uuids to labels vim /mnt/etc/nixos/hardware-configuration.nix From ce46f3571b2c08922fb09d71d24bd1a8287f0c3b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 31 Aug 2023 11:16:35 +0000 Subject: [PATCH 1040/1588] home: vim: restore python configuration This is a partial revert of 260f5cd66ac78e8626d6d509ef10ee8cd669845d, which erroneously removed this config. --- home/vim/after/ftplugin/python.vim | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 home/vim/after/ftplugin/python.vim diff --git a/home/vim/after/ftplugin/python.vim b/home/vim/after/ftplugin/python.vim new file mode 100644 index 0000000..e7232a8 --- /dev/null +++ b/home/vim/after/ftplugin/python.vim @@ -0,0 +1,6 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Change max length of a line to 88 for this buffer to match black's settings +setlocal colorcolumn=88 +let b:undo_ftplugin.='|setlocal colorcolumn<' From adc4ce9d8a47abe24c996f6fd84755c3ca76bf21 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Sep 2023 12:21:04 +0200 Subject: [PATCH 1041/1588] modules: services: indexers: add prowlarr fail2ban --- modules/services/indexers/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/services/indexers/default.nix b/modules/services/indexers/default.nix index 66f1604..fb06a0b 100644 --- a/modules/services/indexers/default.nix +++ b/modules/services/indexers/default.nix @@ -60,6 +60,22 @@ in port = prowlarrPort; } ]; + + services.fail2ban.jails = { + prowlarr = '' + enabled = true + filter = prowlarr + action = iptables-allports + ''; + }; + + environment.etc = { + "fail2ban/filter.d/prowlarr.conf".text = '' + [Definition] + failregex = ^.*\|Warn\|Auth\|Auth-Failure ip <HOST> username .*$ + journalmatch = _SYSTEMD_UNIT=prowlarr.service + ''; + }; }) ]; } From 14bf03e5fd8f0c9285f131d25b89f6e33799c5df Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Sep 2023 12:22:02 +0200 Subject: [PATCH 1042/1588] modules: services: pirate: refactor This will make adding fail2ban jails easier. --- modules/services/pirate/default.nix | 48 ++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/modules/services/pirate/default.nix b/modules/services/pirate/default.nix index 42dd12b..96f5ad4 100644 --- a/modules/services/pirate/default.nix +++ b/modules/services/pirate/default.nix @@ -13,26 +13,44 @@ let sonarr = 8989; }; - managers = with lib.attrsets; - (mapAttrs - (_: _: { - enable = true; - group = "media"; - }) - ports); + mkService = service: { + services.${service} = { + enable = true; + group = "media"; + }; + }; - redirections = lib.flip lib.mapAttrsToList ports - (subdomain: port: { inherit subdomain port; }); + mkRedirection = service: { + my.services.nginx.virtualHosts = [ + { + subdomain = service; + port = ports.${service}; + } + ]; + }; + + mkFullConfig = service: lib.mkMerge [ + (mkService service) + (mkRedirection service) + ]; in { options.my.services.pirate = { enable = lib.mkEnableOption "Media automation"; }; - config = lib.mkIf cfg.enable { - services = managers; - my.services.nginx.virtualHosts = redirections; - # Set-up media group - users.groups.media = { }; - }; + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + # Set-up media group + users.groups.media = { }; + } + # Bazarr for subtitles + (mkFullConfig "bazarr") + # Lidarr for music + (mkFullConfig "lidarr") + # Radarr for movies + (mkFullConfig "radarr") + # Sonarr for shows + (mkFullConfig "sonarr") + ]); } From fc8ccb8b990730bc95be0a08f499a77b17779aea Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Sep 2023 12:43:46 +0200 Subject: [PATCH 1043/1588] modules: services: pirate: add fail2ban jails --- modules/services/pirate/default.nix | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/modules/services/pirate/default.nix b/modules/services/pirate/default.nix index 96f5ad4..7c341e7 100644 --- a/modules/services/pirate/default.nix +++ b/modules/services/pirate/default.nix @@ -29,6 +29,24 @@ let ]; }; + mkFail2Ban = service: { + services.fail2ban.jails = { + ${service} = '' + enabled = true + filter = ${service} + action = iptables-allports + ''; + }; + + environment.etc = { + "fail2ban/filter.d/${service}.conf".text = '' + [Definition] + failregex = ^.*\|Warn\|Auth\|Auth-Failure ip <HOST> username .*$ + journalmatch = _SYSTEMD_UNIT=${service}.service + ''; + }; + }; + mkFullConfig = service: lib.mkMerge [ (mkService service) (mkRedirection service) @@ -44,13 +62,16 @@ in # Set-up media group users.groups.media = { }; } - # Bazarr for subtitles + # Bazarr does not log authentication failures... (mkFullConfig "bazarr") # Lidarr for music (mkFullConfig "lidarr") + (mkFail2Ban "lidarr") # Radarr for movies (mkFullConfig "radarr") + (mkFail2Ban "radarr") # Sonarr for shows (mkFullConfig "sonarr") + (mkFail2Ban "sonarr") ]); } From 6ba7a63b254ffd79da5ebe714fcf03bfe71e8bb5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Sep 2023 12:53:24 +0200 Subject: [PATCH 1044/1588] modules: services: fail2ban: fix comment --- modules/services/fail2ban/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/fail2ban/default.nix b/modules/services/fail2ban/default.nix index d62b9e2..be5f7da 100644 --- a/modules/services/fail2ban/default.nix +++ b/modules/services/fail2ban/default.nix @@ -1,4 +1,4 @@ -# A minimalist, opinionated feed reader +# Filter and ban unauthorized access { config, lib, ... }: let cfg = config.my.services.fail2ban; From ac93cb0ac8cd2ff4c0194bb0cf2d9aca1c34f758 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Sep 2023 11:10:01 +0000 Subject: [PATCH 1045/1588] home: direnv: refactor option handling This will make it easier to add more options. --- home/direnv/lib/nix.sh | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh index 2d40b20..b0c2dae 100644 --- a/home/direnv/lib/nix.sh +++ b/home/direnv/lib/nix.sh @@ -11,10 +11,21 @@ use_pkgs() { local DEFAULT_FLAKE="${DIRENV_DEFAULT_FLAKE:-nixpkgs}" # Allow changing the default flake through a command line switch - if [ "$1" = "-f" ] || [ "$1" = "--flake" ]; then - DEFAULT_FLAKE="$2" - shift 2 - fi + while true; do + case "$1" in + -f|--flake) + DEFAULT_FLAKE="$2" + shift 2 + ;; + --) + shift + break + ;; + *) + break + ;; + esac + done # Allow specifying a full installable, or just a package name and use the default flake From 5926cd356d28a6652934a2fdae111f71bddb6246 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Sep 2023 11:15:33 +0000 Subject: [PATCH 1046/1588] home: direnv: allow impure 'use pkgs' This makes it easier to use non-free or insecure packages. --- home/direnv/lib/nix.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh index b0c2dae..e05025b 100644 --- a/home/direnv/lib/nix.sh +++ b/home/direnv/lib/nix.sh @@ -9,6 +9,8 @@ use_pkgs() { # Use user-provided default value, or fallback to nixpkgs local DEFAULT_FLAKE="${DIRENV_DEFAULT_FLAKE:-nixpkgs}" + # Additional args that should be forwarded to `nix` + local args=() # Allow changing the default flake through a command line switch while true; do @@ -17,6 +19,10 @@ use_pkgs() { DEFAULT_FLAKE="$2" shift 2 ;; + -i|--impure) + args+=(--impure) + shift + ;; --) shift break @@ -39,5 +45,5 @@ use_pkgs() { done # shellcheck disable=2154 - direnv_load nix shell "${packages[@]}" --command "$direnv" dump + direnv_load nix shell "${args[@]}" "${packages[@]}" --command "$direnv" dump } From d060978b65b510b3da2f81c9d6e8a66197cdf2d5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Sep 2023 16:20:03 +0000 Subject: [PATCH 1047/1588] home: direnv: allow unfree 'use pkgs' --- home/direnv/lib/nix.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh index e05025b..ec8fa88 100644 --- a/home/direnv/lib/nix.sh +++ b/home/direnv/lib/nix.sh @@ -23,6 +23,11 @@ use_pkgs() { args+=(--impure) shift ;; + -u|--unfree) + args+=(--impure) + export NIXPKGS_ALLOW_UNFREE=1 + shift + ;; --) shift break @@ -46,4 +51,7 @@ use_pkgs() { # shellcheck disable=2154 direnv_load nix shell "${args[@]}" "${packages[@]}" --command "$direnv" dump + + # Clean-up after ourselves (assumes the user does not set them before us) + unset NIXPKGS_ALLOW_UNFREE } From 96a2c62e947f66a7d9c8c1501ba56c1ea60f4a41 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Sep 2023 16:20:20 +0000 Subject: [PATCH 1048/1588] home: direnv: allow insecure 'use pkgs' --- home/direnv/lib/nix.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh index ec8fa88..de86dac 100644 --- a/home/direnv/lib/nix.sh +++ b/home/direnv/lib/nix.sh @@ -23,6 +23,11 @@ use_pkgs() { args+=(--impure) shift ;; + -s|--insecure) + args+=(--impure) + export NIXPKGS_ALLOW_INSECURE=1 + shift + ;; -u|--unfree) args+=(--impure) export NIXPKGS_ALLOW_UNFREE=1 @@ -53,5 +58,6 @@ use_pkgs() { direnv_load nix shell "${args[@]}" "${packages[@]}" --command "$direnv" dump # Clean-up after ourselves (assumes the user does not set them before us) + unset NIXPKGS_ALLOW_INSECURE unset NIXPKGS_ALLOW_UNFREE } From f0e387b943ddf059147259ad0345bb582f7ae00f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Sep 2023 16:20:27 +0000 Subject: [PATCH 1049/1588] home: direnv: allow broken 'use pkgs' --- home/direnv/lib/nix.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh index de86dac..a65eb31 100644 --- a/home/direnv/lib/nix.sh +++ b/home/direnv/lib/nix.sh @@ -15,6 +15,11 @@ use_pkgs() { # Allow changing the default flake through a command line switch while true; do case "$1" in + -b|--broken) + args+=(--impure) + export NIXPKGS_ALLOW_BROKEN=1 + shift + ;; -f|--flake) DEFAULT_FLAKE="$2" shift 2 @@ -58,6 +63,7 @@ use_pkgs() { direnv_load nix shell "${args[@]}" "${packages[@]}" --command "$direnv" dump # Clean-up after ourselves (assumes the user does not set them before us) + unset NIXPKGS_ALLOW_BROKEN unset NIXPKGS_ALLOW_INSECURE unset NIXPKGS_ALLOW_UNFREE } From f3f8c8fc3f04c8638ba62368156d708a96cf7ee7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 13 Sep 2023 12:39:39 +0000 Subject: [PATCH 1050/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index cdfdef7..3d28d8d 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1690933134, - "narHash": "sha256-ab989mN63fQZBFrkk4Q8bYxQCktuHmBIBqUG1jl6/FQ=", + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "59cf3f1447cfc75087e7273b04b31e689a8599fb", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", "type": "github" }, "original": { @@ -89,11 +89,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1689068808, - "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", - "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1692260837, - "narHash": "sha256-2FpkX1zl+7ni7djK7NeE1ZGupRUwZgjW+RPCSBgDf4k=", + "lastModified": 1694585439, + "narHash": "sha256-70BlfEsdURx5f8sioj8JuM+R4/SZFyE8UYrULMknxlI=", "owner": "nix-community", "repo": "home-manager", - "rev": "6a94c1a59737783c282c4031555a289c28b961e4", + "rev": "a0ddf43b6268f1717afcda54133dea30435eb178", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1692356644, - "narHash": "sha256-AYkPFT+CbCVSBmh0WwIzPpwhEJ4Yy3A7JZvUkGJIg5o=", + "lastModified": 1694422566, + "narHash": "sha256-lHJ+A9esOz9vln/3CJG23FV6Wd2OoOFbDeEs4cMGMqc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8ecc900b2f695d74dea35a92f8a9f9b32c8ea33d", + "rev": "3a2786eea085f040a66ecde1bc3ddc7099f6dbeb", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1692437027, - "narHash": "sha256-gWtVFoPw7HhbKGLp7vupVbCNAvNMQS5+2PujOt2QbRk=", + "lastModified": 1694601892, + "narHash": "sha256-rGK2Y9vQJQ+v729LfpvTuxDfTE7ns2g34XAPSr9+Z0E=", "owner": "nix-community", "repo": "NUR", - "rev": "b47c7b8d313f9739a7fbb572413c959a362c244a", + "rev": "71a739d93f1e95967e9d641623cbb97d0c8b801a", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1692274144, - "narHash": "sha256-BxTQuRUANQ81u8DJznQyPmRsg63t4Yc+0kcyq6OLz8s=", + "lastModified": 1694364351, + "narHash": "sha256-oadhSCqopYXxURwIA6/Anpe5IAG11q2LhvTJNP5zE6o=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "7e3517c03d46159fdbf8c0e5c97f82d5d4b0c8fa", + "rev": "4f883a76282bc28eb952570afc3d8a1bf6f481d7", "type": "github" }, "original": { From e9795891740c741188afed2fa384a8e2e621af3f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 13 Sep 2023 12:40:19 +0000 Subject: [PATCH 1051/1588] modules: services: woodpecker: use 'path' option One less thing to modify in the systemd service. --- .../woodpecker/agent-exec/default.nix | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/services/woodpecker/agent-exec/default.nix index ad30188..7ae21c8 100644 --- a/modules/services/woodpecker/agent-exec/default.nix +++ b/modules/services/woodpecker/agent-exec/default.nix @@ -21,6 +21,17 @@ in PAGER = "cat"; }; + path = with pkgs; [ + woodpecker-plugin-git + bash + coreutils + git + git-lfs + gnutar + gzip + nix + ]; + environmentFile = [ cfg.sharedSecretFile ]; }; }; @@ -30,17 +41,6 @@ in # Might break deployment restartIfChanged = false; - path = with pkgs; [ - woodpecker-plugin-git - bash - coreutils - git - git-lfs - gnutar - gzip - nix - ]; - serviceConfig = { # Same option as upstream, without @setuid SystemCallFilter = lib.mkForce "~@clock @privileged @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @reboot @swap"; From f0b590c29eb0835ee345db01d51fc2d94cb72967 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 13 Sep 2023 13:45:22 +0000 Subject: [PATCH 1052/1588] hosts: homes: mousqueton: use new name I renamed my cloudtop to follow the usual schema (and because `cloudtop` was not available...) :-). --- flake/home-manager.nix | 2 +- .../{ambroisie@ambroisie => ambroisie@mousqueton}/default.nix | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename hosts/homes/{ambroisie@ambroisie => ambroisie@mousqueton}/default.nix (100%) diff --git a/flake/home-manager.nix b/flake/home-manager.nix index c55c8dd..2c5b65a 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -40,7 +40,7 @@ let }; hosts = { - "ambroisie@ambroisie" = "x86_64-linux"; # Unfortunate naming here... + "ambroisie@mousqueton" = "x86_64-linux"; }; in { diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix similarity index 100% rename from hosts/homes/ambroisie@ambroisie/default.nix rename to hosts/homes/ambroisie@mousqueton/default.nix From 550436eee54d9c06999ad1d991fbc2a20e686252 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Sep 2023 11:00:10 +0000 Subject: [PATCH 1053/1588] home: vim: remove 'cmp-path' Now that I'm using the async variant. --- home/vim/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index a9c2bda..ec18f5c 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -81,7 +81,6 @@ in cmp-buffer # Words from open buffers cmp-nvim-lsp # LSP suggestions cmp-nvim-lua # NeoVim lua API - cmp-path # Path name suggestions cmp-under-comparator # Sort items that start with '_' lower cmp_luasnip # Snippet suggestions from LuaSnip From 3f7a06237646a2db994a4a96da1a770b339522b0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Sep 2023 11:13:27 +0000 Subject: [PATCH 1054/1588] home: vim: lua: util: fix comments --- home/vim/lua/ambroisie/utils.lua | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua index 984c730..418e0d1 100644 --- a/home/vim/lua/ambroisie/utils.lua +++ b/home/vim/lua/ambroisie/utils.lua @@ -1,29 +1,29 @@ local M = {} --- pretty print lua object --- @param obj any object to pretty print +--- pretty print lua object +--- @param obj any object to pretty print M.dump = function(obj) print(vim.inspect(obj)) end --- checks if a given command is executable ----@param cmd string? command to check ----@return boolean executable +--- @param cmd string? command to check +--- @return boolean executable M.is_executable = function(cmd) return cmd and vim.fn.executable(cmd) == 1 end --- return a function that checks if a given command is executable ----@param cmd string? command to check ----@return fun(cmd: string): boolean executable +--- @param cmd string? command to check +--- @return fun(cmd: string): boolean executable M.is_executable_condition = function(cmd) return function() return M.is_executable(cmd) end end --- whether or not we are currently in an SSH connection --- @return boolean ssh connection +--- whether or not we are currently in an SSH connection +--- @return boolean ssh connection M.is_ssh = function() local variables = { "SSH_CONNECTION", @@ -40,9 +40,9 @@ M.is_ssh = function() return false end --- list all active LSP clients for current buffer --- @param bufnr int? buffer number --- @return table all active LSP client names +--- list all active LSP clients for current buffer +--- @param bufnr int? buffer number +--- @return table all active LSP client names M.list_lsp_clients = function(bufnr) local clients = vim.lsp.buf_get_clients(bufnr) local names = {} From f2f4b9f91ef52170369f7ea198a9fb23c54d3dc2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Sep 2023 11:14:04 +0000 Subject: [PATCH 1055/1588] home: vim: lua: lsp: fix comments --- home/vim/lua/ambroisie/lsp.lua | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua index 7ef6e26..99d8dab 100644 --- a/home/vim/lua/ambroisie/lsp.lua +++ b/home/vim/lua/ambroisie/lsp.lua @@ -3,9 +3,9 @@ local M = {} -- Simplified LSP formatting configuration local lsp_format = require("lsp-format") --- Move to the next/previous diagnostic, automatically showing the diagnostics --- float if necessary. --- @param forward whether to go forward or backwards +--- Move to the next/previous diagnostic, automatically showing the diagnostics +--- float if necessary. +--- @param forward whether to go forward or backwards local function goto_diagnostic(forward) vim.validate({ forward = { forward, "boolean" }, @@ -28,21 +28,21 @@ local function goto_diagnostic(forward) end end --- Move to the next diagnostic, automatically showing the diagnostics float if --- necessary. +--- Move to the next diagnostic, automatically showing the diagnostics float if +--- necessary. M.goto_next_diagnostic = function() goto_diagnostic(true) end --- Move to the previous diagnostic, automatically showing the diagnostics float --- if necessary. +--- Move to the previous diagnostic, automatically showing the diagnostics float +--- if necessary. M.goto_prev_diagnostic = function() goto_diagnostic(false) end --- shared LSP configuration callback --- @param client native client configuration --- @param bufnr int? buffer number of the attched client +--- shared LSP configuration callback +--- @param client native client configuration +--- @param bufnr int? buffer number of the attched client M.on_attach = function(client, bufnr) -- Format on save lsp_format.on_attach(client, bufnr) From 7b56c342ad5e7ca8889b718fbaf9210f8abe116f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 18 Sep 2023 13:43:33 +0000 Subject: [PATCH 1056/1588] modules: services: paperless: beef-up workers This should parallelize the number of documents ingested at once (workers), as well as the speed of the ingestion per document (threads). --- modules/services/paperless/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/services/paperless/default.nix b/modules/services/paperless/default.nix index c9d6220..1ca1f66 100644 --- a/modules/services/paperless/default.nix +++ b/modules/services/paperless/default.nix @@ -73,6 +73,10 @@ in # OCR settings PAPERLESS_OCR_LANGUAGE = "fra+eng"; + # Workers + PAPERLESS_TASK_WORKERS = 3; + PAPERLESS_THREADS_PER_WORKER = 4; + # Misc PAPERLESS_TIME_ZONE = config.time.timeZone; PAPERLESS_ADMIN_USER = cfg.username; From 61fe480e6b337500335f6926e0bfc74186357437 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 26 Sep 2023 16:38:27 +0000 Subject: [PATCH 1057/1588] home: calibre: remove obsolete NOTE --- home/calibre/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/calibre/default.nix b/home/calibre/default.nix index e0f2069..6edf654 100644 --- a/home/calibre/default.nix +++ b/home/calibre/default.nix @@ -9,7 +9,7 @@ in config = lib.mkIf cfg.enable { home.packages = with pkgs; [ - calibre # NOTE: relies on my overlay to add necessary plug-in dependencies + calibre ]; }; } From e81de7faadfdeda12f80d2e6b0ec688e0f203fcd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 26 Sep 2023 16:51:46 +0000 Subject: [PATCH 1058/1588] pkgs: rbw-pass: fix program name in usage string --- pkgs/rbw-pass/rbw-pass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/rbw-pass/rbw-pass b/pkgs/rbw-pass/rbw-pass index 90e916c..23363dc 100755 --- a/pkgs/rbw-pass/rbw-pass +++ b/pkgs/rbw-pass/rbw-pass @@ -1,7 +1,7 @@ #!/usr/bin/env bash usage() { - printf '%s\n' "Usage: bw-pass [directory name] <account name>" >&2 + printf '%s\n' "Usage: rbw-pass [directory name] <account name>" >&2 } error_out() { From 03a1f704aaabefc12d08b6abe7726c89c07fabb4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 27 Sep 2023 19:22:04 +0200 Subject: [PATCH 1059/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 3d28d8d..6e070fc 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1690228878, - "narHash": "sha256-9Xe7JV0krp4RJC9W9W9WutZVlw6BlHTFMiUP/k48LQY=", + "lastModified": 1695384796, + "narHash": "sha256-TYlE4B0ktPtlJJF9IFxTWrEeq+XKG8Ny0gc2FGEAdj0=", "owner": "ryantm", "repo": "agenix", - "rev": "d8c973fd228949736dedf61b7f8cc1ece3236792", + "rev": "1f677b3e161d3bdbfd08a939e8f25de2568e0ef4", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1694585439, - "narHash": "sha256-70BlfEsdURx5f8sioj8JuM+R4/SZFyE8UYrULMknxlI=", + "lastModified": 1695738267, + "narHash": "sha256-LTNAbTQ96xSj17xBfsFrFS9i56U2BMLpD0BduhrsVkU=", "owner": "nix-community", "repo": "home-manager", - "rev": "a0ddf43b6268f1717afcda54133dea30435eb178", + "rev": "0f4e5b4999fd6a42ece5da8a3a2439a50e48e486", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1694422566, - "narHash": "sha256-lHJ+A9esOz9vln/3CJG23FV6Wd2OoOFbDeEs4cMGMqc=", + "lastModified": 1695644571, + "narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3a2786eea085f040a66ecde1bc3ddc7099f6dbeb", + "rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1694601892, - "narHash": "sha256-rGK2Y9vQJQ+v729LfpvTuxDfTE7ns2g34XAPSr9+Z0E=", + "lastModified": 1695824843, + "narHash": "sha256-c1Z+y9oUXOkcU8gVBCyaujUqYLpYoI2b6L9Cq4ywOcA=", "owner": "nix-community", "repo": "NUR", - "rev": "71a739d93f1e95967e9d641623cbb97d0c8b801a", + "rev": "8349f3e37cf21a9da032a2fdb8e7ac45366d01f3", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1694364351, - "narHash": "sha256-oadhSCqopYXxURwIA6/Anpe5IAG11q2LhvTJNP5zE6o=", + "lastModified": 1695576016, + "narHash": "sha256-71KxwRhTfVuh7kNrg3/edNjYVg9DCyKZl2QIKbhRggg=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "4f883a76282bc28eb952570afc3d8a1bf6f481d7", + "rev": "cb770e93516a1609652fa8e945a0f310e98f10c0", "type": "github" }, "original": { From 24d41e829efb8cd7b58bd96cc8ce875b96df47e1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Sep 2023 15:57:04 +0000 Subject: [PATCH 1060/1588] modules: system: users: fix deprecated option name --- modules/system/users/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/system/users/default.nix b/modules/system/users/default.nix index 27557bd..655b31e 100644 --- a/modules/system/users/default.nix +++ b/modules/system/users/default.nix @@ -17,11 +17,11 @@ in users = { root = { - passwordFile = secrets."users/root/hashed-password".path; + hashedPasswordFile = secrets."users/root/hashed-password".path; }; ${config.my.user.name} = { - passwordFile = secrets."users/ambroisie/hashed-password".path; + hashedPasswordFile = secrets."users/ambroisie/hashed-password".path; description = "Bruno BELANYI"; isNormalUser = true; shell = pkgs.zsh; From 6ef0abd5962c904fe0acc9590debb883caff1769 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 10 Oct 2023 15:36:14 +0000 Subject: [PATCH 1061/1588] home: xdg: set 'REPO_CONFIG_DIR' Unfortunately, it will create a `.repoconfig` inside that directory. But that's still better than littering my $HOME. --- home/xdg/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/xdg/default.nix b/home/xdg/default.nix index 3fd8dc9..af9ec18 100644 --- a/home/xdg/default.nix +++ b/home/xdg/default.nix @@ -47,6 +47,7 @@ in LESSHISTFILE = "${dataHome}/less/history"; LESSKEY = "${configHome}/less/lesskey"; PSQL_HISTORY = "${dataHome}/psql_history"; + REPO_CONFIG_DIR = "${configHome}/repo"; REDISCLI_HISTFILE = "${dataHome}/redis/rediscli_history"; XCOMPOSECACHE = "${dataHome}/X11/xcompose"; }; From f9541cbc33d196fc3e811167d67a38d0d47cb422 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Oct 2023 12:56:41 +0000 Subject: [PATCH 1062/1588] hosts: homes: mousqueton: disable 'git' package I had some troubles with `git` once again... This reverts commit 13769429f6db871d8d8d64391584e280860a3fc7. --- hosts/homes/ambroisie@mousqueton/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index f54453b..9096610 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -1,5 +1,5 @@ # Google Cloudtop configuration -{ ... }: +{ lib, pkgs, ... }: { # Google specific configuration home.homeDirectory = "/usr/local/google/home/ambroisie"; @@ -13,6 +13,8 @@ LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; }; + programs.git.package = lib.mkForce pkgs.emptyDirectory; + # I use scripts that use the passthrough sequence often on this host my.home.tmux.enablePassthrough = true; } From fd093465267cf0d53ebc2c710b4ac27c9ce1836f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Oct 2023 13:40:22 +0000 Subject: [PATCH 1063/1588] direnv: remove explicit 'shellHooks' evaluation I _think_ nix-direnv does it automatically, so no need to do it myself. --- .envrc | 2 -- 1 file changed, 2 deletions(-) diff --git a/.envrc b/.envrc index 95ed6fb..7f5642d 100644 --- a/.envrc +++ b/.envrc @@ -6,5 +6,3 @@ use flake watch_file ./flake/checks.nix watch_file ./flake/dev-shells.nix - -eval "$shellHooks" From e09899d59c8c383773e9e76bb9cd7268ca775143 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Oct 2023 13:41:36 +0000 Subject: [PATCH 1064/1588] direnv: fix 'watch_file' directives I should use `nix_direnv_watch_file` and call it _before_ `use_flake`. --- .envrc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.envrc b/.envrc index 7f5642d..956a218 100644 --- a/.envrc +++ b/.envrc @@ -2,7 +2,7 @@ if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" fi -use flake +nix_direnv_watch_file ./flake/checks.nix +nix_direnv_watch_file ./flake/dev-shells.nix -watch_file ./flake/checks.nix -watch_file ./flake/dev-shells.nix +use flake From aca743dea7a76fe96c489f974b435ac2d6ab5b6c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Oct 2023 13:47:01 +0000 Subject: [PATCH 1065/1588] templates: simplify direnv configurations This was mostly a copy-paste error (the `watch_file` calls). As for the shell hooks, it looks like `nix-direnv` takes care of that automatically. --- templates/c++-cmake/.envrc | 5 ----- templates/c++-meson/.envrc | 5 ----- 2 files changed, 10 deletions(-) diff --git a/templates/c++-cmake/.envrc b/templates/c++-cmake/.envrc index 95ed6fb..f347aa9 100644 --- a/templates/c++-cmake/.envrc +++ b/templates/c++-cmake/.envrc @@ -3,8 +3,3 @@ if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then fi use flake - -watch_file ./flake/checks.nix -watch_file ./flake/dev-shells.nix - -eval "$shellHooks" diff --git a/templates/c++-meson/.envrc b/templates/c++-meson/.envrc index 95ed6fb..f347aa9 100644 --- a/templates/c++-meson/.envrc +++ b/templates/c++-meson/.envrc @@ -3,8 +3,3 @@ if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then fi use flake - -watch_file ./flake/checks.nix -watch_file ./flake/dev-shells.nix - -eval "$shellHooks" From ce19887f77e7ab7e735882eb6c5163ccf6d30145 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Oct 2023 15:17:26 +0000 Subject: [PATCH 1066/1588] treewide: update 'nix-direnv' bootstrapping --- .envrc | 4 ++-- templates/c++-cmake/.envrc | 4 ++-- templates/c++-meson/.envrc | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.envrc b/.envrc index 956a218..9222bda 100644 --- a/.envrc +++ b/.envrc @@ -1,5 +1,5 @@ -if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +if ! has nix_direnv_version || ! nix_direnv_version 2.4.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.4.0/direnvrc" "sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=" fi nix_direnv_watch_file ./flake/checks.nix diff --git a/templates/c++-cmake/.envrc b/templates/c++-cmake/.envrc index f347aa9..ccf325e 100644 --- a/templates/c++-cmake/.envrc +++ b/templates/c++-cmake/.envrc @@ -1,5 +1,5 @@ -if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +if ! has nix_direnv_version || ! nix_direnv_version 2.4.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.4.0/direnvrc" "sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=" fi use flake diff --git a/templates/c++-meson/.envrc b/templates/c++-meson/.envrc index f347aa9..ccf325e 100644 --- a/templates/c++-meson/.envrc +++ b/templates/c++-meson/.envrc @@ -1,5 +1,5 @@ -if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +if ! has nix_direnv_version || ! nix_direnv_version 2.4.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.4.0/direnvrc" "sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=" fi use flake From a5febc40e4043bd00c552acde7bf2442f072fa34 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Oct 2023 15:19:44 +0000 Subject: [PATCH 1067/1588] home: comma: remove 'COMMA_PKGS_FLAKE' definition Now that my configurations also set `nixpkgs` in `NIX_PATH`, there's isn't a need for this to be defined anymore. --- home/comma/default.nix | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/home/comma/default.nix b/home/comma/default.nix index cc6a0ad..60de863 100644 --- a/home/comma/default.nix +++ b/home/comma/default.nix @@ -5,25 +5,11 @@ in { options.my.home.comma = with lib; { enable = my.mkDisableOption "comma configuration"; - - pkgsFlake = mkOption { - type = types.str; - default = "pkgs"; - example = "nixpkgs"; - description = '' - Which flake from the registry should be used with - <command>nix shell</command>. - ''; - }; }; config = lib.mkIf cfg.enable { home.packages = with pkgs; [ ambroisie.comma ]; - - home.sessionVariables = { - COMMA_PKGS_FLAKE = cfg.pkgsFlake; - }; }; } From 2d36ffd96dba1ac9acab698d9370983eec0b3574 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Oct 2023 15:19:44 +0000 Subject: [PATCH 1068/1588] pkgs: comma: rename 'COMMA_{,NIX}PKGS_FLAKE' This aligns with the rust implementation of this tool [1]. [1]: https://github.com/nix-community/comma/commit/17a4f3384954a43cec0f91361f153cda908fe3d3 --- pkgs/comma/comma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/comma/comma b/pkgs/comma/comma index ba5c6ae..4367a26 100755 --- a/pkgs/comma/comma +++ b/pkgs/comma/comma @@ -30,4 +30,4 @@ if [ -z "$PROGRAM" ]; then exit 1 fi -nix shell "${COMMA_PKGS_FLAKE:-nixpkgs}#$PROGRAM" -c "$@" +nix shell "${COMMA_NIXPKGS_FLAKE:-nixpkgs}#$PROGRAM" -c "$@" From dae1a434d558b96d8ed3424b8eef09610aecb122 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Sep 2023 18:02:22 +0200 Subject: [PATCH 1069/1588] modules: services: transmission: bump to 4 Not sure why exactly this isn't the default, I'll have to watch out for when upstream catches up. --- modules/services/transmission/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/services/transmission/default.nix b/modules/services/transmission/default.nix index dcba0aa..28df477 100644 --- a/modules/services/transmission/default.nix +++ b/modules/services/transmission/default.nix @@ -3,7 +3,7 @@ # Inspired by [1] # # [1]: https://github.com/delroth/infra.delroth.net/blob/master/roles/seedbox.nix -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.services.transmission; in @@ -45,6 +45,7 @@ in config = lib.mkIf cfg.enable { services.transmission = { enable = true; + package = pkgs.transmission_4; group = "media"; downloadDirPermissions = "775"; From 3b3e7093beb225810a728b44f31afeb24f2f247c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 6 Oct 2023 23:11:46 +0200 Subject: [PATCH 1070/1588] modules: services: pirate: make more fine-grained --- modules/services/pirate/default.nix | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/modules/services/pirate/default.nix b/modules/services/pirate/default.nix index 7c341e7..59f9794 100644 --- a/modules/services/pirate/default.nix +++ b/modules/services/pirate/default.nix @@ -29,7 +29,7 @@ let ]; }; - mkFail2Ban = service: { + mkFail2Ban = service: lib.mkIf cfg.${service}.enable { services.fail2ban.jails = { ${service} = '' enabled = true @@ -47,14 +47,30 @@ let }; }; - mkFullConfig = service: lib.mkMerge [ + mkFullConfig = service: lib.mkIf cfg.${service}.enable (lib.mkMerge [ (mkService service) (mkRedirection service) - ]; + ]); in { options.my.services.pirate = { enable = lib.mkEnableOption "Media automation"; + + bazarr = { + enable = lib.my.mkDisableOption "Bazarr"; + }; + + lidarr = { + enable = lib.my.mkDisableOption "Lidarr"; + }; + + radarr = { + enable = lib.my.mkDisableOption "Radarr"; + }; + + sonarr = { + enable = lib.my.mkDisableOption "Sonarr"; + }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ From f8a0eef4dd993d43dafec88aa33b099b9d05d11c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 6 Oct 2023 23:13:47 +0200 Subject: [PATCH 1071/1588] hosts: nixos: porthos: services: disable lidarr --- hosts/nixos/porthos/services.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 863048c..8487157 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -116,7 +116,13 @@ in secretKeyFile = secrets."paperless/secret-key".path; }; # The whole *arr software suite - pirate.enable = true; + pirate = { + enable = true; + # ... But not Lidarr because I don't care for music that much + lidarr = { + enable = false; + }; + }; # Podcast automatic downloader podgrab = { enable = true; From fcdb5ba59329dc129e93ab228e38943fc90fe978 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Oct 2023 21:36:09 +0200 Subject: [PATCH 1072/1588] modules: services: woodpecker: remove DNS hack I'm not sure what changed, but it looks like I don't need it anymore. Initially I wanted to apply the same DNS fix as [1]. [1]: https://blog.kotatsu.dev/posts/2023-04-21-woodpecker-nix-caching/ --- modules/services/woodpecker/agent-docker/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/services/woodpecker/agent-docker/default.nix b/modules/services/woodpecker/agent-docker/default.nix index b18d075..79d3299 100644 --- a/modules/services/woodpecker/agent-docker/default.nix +++ b/modules/services/woodpecker/agent-docker/default.nix @@ -27,9 +27,6 @@ in # Make sure it is activated in that case my.system.docker.enable = true; - # FIXME: figure out the issue - services.unbound.resolveLocalQueries = false; - # Adjust runner service for nix usage systemd.services.woodpecker-agent-docker = { after = [ "docker.socket" ]; # Needs the socket to be available From 085c563d7538b238e0a180fa0627de27e9ca069d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 19 Oct 2023 10:42:19 +0000 Subject: [PATCH 1073/1588] hosts: homes: mousqueton: disable gpg-agent It doesn't work well in this environment anyway. --- hosts/homes/ambroisie@mousqueton/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 9096610..0bd2272 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -15,6 +15,8 @@ programs.git.package = lib.mkForce pkgs.emptyDirectory; + services.gpg-agent.enable = lib.mkForce false; + # I use scripts that use the passthrough sequence often on this host my.home.tmux.enablePassthrough = true; } From 1425c424899752f4f955a7f2fd1c73711abd9ed5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Sep 2023 15:28:11 +0000 Subject: [PATCH 1074/1588] modules: services: matrix: refactor vhost --- modules/services/matrix/default.nix | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/services/matrix/default.nix b/modules/services/matrix/default.nix index c73afed..9acd8c2 100644 --- a/modules/services/matrix/default.nix +++ b/modules/services/matrix/default.nix @@ -13,6 +13,7 @@ let federationPort = { public = 8448; private = 11338; }; clientPort = { public = 443; private = 11339; }; domain = config.networking.domain; + matrixDomain = "matrix.${domain}"; in { options.my.services.matrix = with lib; { @@ -52,7 +53,7 @@ in settings = { server_name = domain; - public_baseurl = "https://matrix.${domain}"; + public_baseurl = "https://${matrixDomain}"; enable_registration = false; @@ -98,7 +99,7 @@ in conf = { default_server_config = { "m.homeserver" = { - "base_url" = "https://matrix.${domain}"; + "base_url" = "https://${matrixDomain}"; "server_name" = domain; }; "m.identity_server" = { @@ -120,7 +121,7 @@ in # Those are too complicated to use my wrapper... services.nginx.virtualHosts = { - "matrix.${domain}" = { + ${matrixDomain} = { onlySSL = true; useACMEHost = domain; @@ -148,9 +149,9 @@ in }; # same as above, but listening on the federation port - "matrix.${domain}_federation" = { + "${matrixDomain}_federation" = { onlySSL = true; - serverName = "matrix.${domain}"; + serverName = matrixDomain; useACMEHost = domain; locations."/".return = "404"; @@ -171,7 +172,7 @@ in locations."= /.well-known/matrix/server".extraConfig = let - server = { "m.server" = "matrix.${domain}:${toString federationPort.public}"; }; + server = { "m.server" = "${matrixDomain}:${toString federationPort.public}"; }; in '' add_header Content-Type application/json; @@ -181,7 +182,7 @@ in locations."= /.well-known/matrix/client".extraConfig = let client = { - "m.homeserver" = { "base_url" = "https://matrix.${domain}"; }; + "m.homeserver" = { "base_url" = "https://${matrixDomain}"; }; "m.identity_server" = { "base_url" = "https://vector.im"; }; }; # ACAO required to allow element-web on any URL to request this json file From 52413dcaf7d937a69002be661b8a6c26443e162c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Sep 2023 15:53:46 +0000 Subject: [PATCH 1075/1588] hosts: nixos: porthos: secrets: add matrix sync --- .../nixos/porthos/secrets/matrix/sliding-sync-secret.age | 9 +++++++++ hosts/nixos/porthos/secrets/secrets.nix | 3 +++ 2 files changed, 12 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age diff --git a/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age b/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age new file mode 100644 index 0000000..d375a35 --- /dev/null +++ b/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age @@ -0,0 +1,9 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg N182xey8TWRVUWTRP16rT0zlhYZNr/pOZVR7YRnlIkk +HVqAag55z1cKLgjR3WsUj2wvaVjxm169JcDRJGRvCVU +-> ssh-ed25519 jPowng Dc+aaUTxDsMTY+oOst0SC3ldq1e6zX8F5A5uBL5RHhc +JWZou6+VaFc5f2OLRIrmFFWg3Er6WSY+TloXU0mP1K8 +-> |9_9Aqh%-grease $ X8Mn|5 aKnl' fl<D{T- ++fAc0cajqxhYWu55HCY +--- SrmtWXQXGYxNTabSrb5tBRXHnK1F22Qoiy7hKYrrF+0 +D: ,n0i^Ɗ`2#y'9Ҏr]؛xS=uJEclH~ ełKtvo'v+ \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 8eac0f5..ed6c2fd 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -35,6 +35,9 @@ in owner = "matrix-synapse"; publicKeys = all; }; + "matrix/sliding-sync-secret.age" = { + publicKeys = all; + }; "miniflux/credentials.age".publicKeys = all; From b4b9b54f75a0f71ed7f29c01f31be567cf412d00 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Sep 2023 18:42:13 +0200 Subject: [PATCH 1076/1588] modules: services: matrix: register dummy vhosts This is simply to make use of my infrastructure for port collision detection. --- modules/services/matrix/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/services/matrix/default.nix b/modules/services/matrix/default.nix index 9acd8c2..42c5cda 100644 --- a/modules/services/matrix/default.nix +++ b/modules/services/matrix/default.nix @@ -117,6 +117,15 @@ in }; }; } + # Dummy VHosts for port collision detection + { + subdomain = "matrix-federation"; + port = federationPort.private; + } + { + subdomain = "matrix-client"; + port = clientPort.private; + } ]; # Those are too complicated to use my wrapper... From b4c2cc581b6b79db1961e0aa840fad6d17ee6652 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Sep 2023 15:53:46 +0000 Subject: [PATCH 1077/1588] modules: services: matrix: add sliding sync --- hosts/nixos/porthos/services.nix | 3 +++ modules/services/matrix/default.nix | 40 +++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 8487157..d73cdc1 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -64,6 +64,9 @@ in mailConfigFile = secrets."matrix/mail".path; # Only necessary when doing the initial registration secretFile = secrets."matrix/secret".path; + slidingSync = { + secretFile = secrets."matrix/sliding-sync-secret".path; + }; }; miniflux = { enable = true; diff --git a/modules/services/matrix/default.nix b/modules/services/matrix/default.nix index 42c5cda..52b60c5 100644 --- a/modules/services/matrix/default.nix +++ b/modules/services/matrix/default.nix @@ -26,6 +26,21 @@ in description = "Shared secret to register users"; }; + slidingSync = { + port = mkOption { + type = types.port; + default = 8009; + example = 8084; + description = "Port used by sliding sync server"; + }; + + secretFile = mkOption { + type = types.str; + example = "/var/lib/matrix/sliding-sync-secret-file.env"; + description = "Secret file which contains SYNCV3_SECRET definition"; + }; + }; + mailConfigFile = mkOption { type = types.str; example = "/var/lib/matrix/email-config.yaml"; @@ -89,6 +104,17 @@ in extraConfigFiles = [ cfg.mailConfigFile ] ++ lib.optional (cfg.secretFile != null) cfg.secretFile; + + sliding-sync = { + enable = true; + + settings = { + SYNCV3_SERVER = "https://${matrixDomain}"; + SYNCV3_BINDADDR = "127.0.0.1:${toString cfg.slidingSync.port}"; + }; + + environmentFile = cfg.slidingSync.secretFile; + }; }; my.services.nginx.virtualHosts = [ @@ -105,6 +131,9 @@ in "m.identity_server" = { "base_url" = "https://vector.im"; }; + "org.matrix.msc3575.proxy" = { + "url" = "https://matrix-sync.${domain}"; + }; }; showLabsSettings = true; defaultCountryCode = "FR"; # cocorico @@ -126,6 +155,11 @@ in subdomain = "matrix-client"; port = clientPort.private; } + # Sliding sync + { + subdomain = "matrix-sync"; + inherit (cfg.slidingSync) port; + } ]; # Those are too complicated to use my wrapper... @@ -148,6 +182,11 @@ in "/_matrix" = proxyToClientPort; "/_synapse/client" = proxyToClientPort; + + # Sliding sync + "~ ^/(client/|_matrix/client/unstable/org.matrix.msc3575/sync)" = { + proxyPass = "http://${config.services.matrix-synapse.sliding-sync.settings.SYNCV3_BINDADDR}"; + }; }; listen = [ @@ -193,6 +232,7 @@ in client = { "m.homeserver" = { "base_url" = "https://${matrixDomain}"; }; "m.identity_server" = { "base_url" = "https://vector.im"; }; + "org.matrix.msc3575.proxy" = { "url" = "https://matrix-sync.${domain}"; }; }; # ACAO required to allow element-web on any URL to request this json file in From 5248eb59f8480c3531e8e3775580c7ac8941852a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 26 Oct 2023 12:27:31 +0000 Subject: [PATCH 1078/1588] hosts: homes: mousqueton: fix `tmux` 24-bit color This is based on this answer [1] from Stack Overflow. I'll have to look into what the proper fix would be in general, this is just a band-aid to get it working correctly while SSH-ing from my laptop. [1]: https://stackoverflow.com/a/41786092 --- hosts/homes/ambroisie@mousqueton/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 0bd2272..ac73da6 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -19,4 +19,9 @@ # I use scripts that use the passthrough sequence often on this host my.home.tmux.enablePassthrough = true; + + programs.tmux.extraConfig = '' + # Setup 24-bit color explicitly, as the default terminfo entry does not + set-option -sa terminal-overrides ",xterm-256color:Tc" + ''; } From 0795a3d29b90edcfb96f28a9f953e068e3b454a5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Oct 2023 15:26:07 +0000 Subject: [PATCH 1079/1588] flake: bump inputs And fix a removed nextcloud option. --- flake.lock | 34 +++++++++++++------------- modules/services/nextcloud/default.nix | 1 - 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 6e070fc..5fd6c45 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1695384796, + "lastModified": 1696775529, "narHash": "sha256-TYlE4B0ktPtlJJF9IFxTWrEeq+XKG8Ny0gc2FGEAdj0=", "owner": "ryantm", "repo": "agenix", - "rev": "1f677b3e161d3bdbfd08a939e8f25de2568e0ef4", + "rev": "daf42cb35b2dc614d1551e37f96406e4c4a2d3e4", "type": "github" }, "original": { @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1693611461, - "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1695738267, - "narHash": "sha256-LTNAbTQ96xSj17xBfsFrFS9i56U2BMLpD0BduhrsVkU=", + "lastModified": 1698250431, + "narHash": "sha256-qs2gTeH4wpnWPO6Oi6sOhp2IhG0i0DzcnrJxIY3/CP8=", "owner": "nix-community", "repo": "home-manager", - "rev": "0f4e5b4999fd6a42ece5da8a3a2439a50e48e486", + "rev": "09587fbbc6a669f7725613e044c2577dc5d43ab5", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1695644571, - "narHash": "sha256-asS9dCCdlt1lPq0DLwkVBbVoEKuEuz+Zi3DG7pR/RxA=", + "lastModified": 1698134075, + "narHash": "sha256-foCD+nuKzfh49bIoiCBur4+Fx1nozo+4C/6k8BYk4sg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6500b4580c2a1f3d0f980d32d285739d8e156d92", + "rev": "8efd5d1e283604f75a808a20e6cde0ef313d07d4", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1695824843, - "narHash": "sha256-c1Z+y9oUXOkcU8gVBCyaujUqYLpYoI2b6L9Cq4ywOcA=", + "lastModified": 1698317227, + "narHash": "sha256-jzSJjjxJr/IPvoPSWB1ZobmlAKku6eeggh9ffGV7Sig=", "owner": "nix-community", "repo": "NUR", - "rev": "8349f3e37cf21a9da032a2fdb8e7ac45366d01f3", + "rev": "32a38be31067b0a2f4919fd9e7a49bbefc34d25f", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1695576016, - "narHash": "sha256-71KxwRhTfVuh7kNrg3/edNjYVg9DCyKZl2QIKbhRggg=", + "lastModified": 1698227354, + "narHash": "sha256-Fi5H9jbaQLmLw9qBi/mkR33CoFjNbobo5xWdX4tKz1Q=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "cb770e93516a1609652fa8e945a0f310e98f10c0", + "rev": "bd38df3d508dfcdff52cd243d297f218ed2257bf", "type": "github" }, "original": { diff --git a/modules/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix index 1477c13..260e73e 100644 --- a/modules/services/nextcloud/default.nix +++ b/modules/services/nextcloud/default.nix @@ -35,7 +35,6 @@ in hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; - enableBrokenCiphersForSSE = false; configureRedis = true; config = { adminuser = cfg.admin; From 28187c3b8f34c0912d9f8ce5f74f415a6b77a1c2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 26 Oct 2023 12:50:59 +0000 Subject: [PATCH 1080/1588] overlays: add 'gruvbox-nvim-better-diff' I dislike the new style of diff [1]. After somebody wrote a patch [2] I finally started experimenting with what looked best to me. This is using the old vibrant colours, which I like better. And avoids using `reverse = true` to not break high-lighting during visual selection. This is using an overlay as it is _much_ easier to refer to the internal colours in a `dark`/`light` agnostic way that way instead of the intended "use the palette way" (due to breaking changes in [3] which, incidentally, is the MR which changed diff high-lighting). [1]: https://github.com/ellisonleao/gruvbox.nvim/issues/290 [2]: https://github.com/ellisonleao/gruvbox.nvim/pull/291 [3]: https://github.com/ellisonleao/gruvbox.nvim/pull/280 --- .../gruvbox-nvim-better-diff/colours.patch | 28 +++++++++++++++++++ overlays/gruvbox-nvim-better-diff/default.nix | 4 +++ .../gruvbox-nvim-better-diff/generated.nix | 24 ++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 overlays/gruvbox-nvim-better-diff/colours.patch create mode 100644 overlays/gruvbox-nvim-better-diff/default.nix create mode 100644 overlays/gruvbox-nvim-better-diff/generated.nix diff --git a/overlays/gruvbox-nvim-better-diff/colours.patch b/overlays/gruvbox-nvim-better-diff/colours.patch new file mode 100644 index 0000000..5b0d61a --- /dev/null +++ b/overlays/gruvbox-nvim-better-diff/colours.patch @@ -0,0 +1,28 @@ +From 416b3c9c5e783d173ac0fd5310a76c1b144b92c1 Mon Sep 17 00:00:00 2001 +From: eeeXun <sdes96303@gmail.com> +Date: Thu, 19 Oct 2023 02:34:12 +0800 +Subject: Use better diff colours + +--- + README.md | 3 ++- + lua/gruvbox.lua | 7 ++++--- + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/lua/gruvbox.lua b/lua/gruvbox.lua +index ceba0735..a319fc6a 100644 +--- a/lua/gruvbox.lua ++++ b/lua/gruvbox.lua +@@ -360,9 +361,9 @@ local function get_groups() + PmenuSel = { fg = colors.bg2, bg = colors.blue, bold = config.bold }, + PmenuSbar = { bg = colors.bg2 }, + PmenuThumb = { bg = colors.bg4 }, +- DiffDelete = { bg = colors.dark_red }, +- DiffAdd = { bg = colors.dark_green }, +- DiffChange = { bg = colors.dark_aqua }, +- DiffText = { bg = colors.yellow, fg = colors.bg0 }, ++ DiffDelete = { fg = colors.red }, ++ DiffAdd = { fg = colors.green }, ++ DiffChange = { fg = colors.aqua }, ++ DiffText = { fg = colors.yellow, bg = colors.bg0 }, + SpellCap = { link = "GruvboxBlueUnderline" }, + SpellBad = { link = "GruvboxRedUnderline" }, diff --git a/overlays/gruvbox-nvim-better-diff/default.nix b/overlays/gruvbox-nvim-better-diff/default.nix new file mode 100644 index 0000000..832e71d --- /dev/null +++ b/overlays/gruvbox-nvim-better-diff/default.nix @@ -0,0 +1,4 @@ +self: prev: +{ + vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); +} diff --git a/overlays/gruvbox-nvim-better-diff/generated.nix b/overlays/gruvbox-nvim-better-diff/generated.nix new file mode 100644 index 0000000..50ea4ad --- /dev/null +++ b/overlays/gruvbox-nvim-better-diff/generated.nix @@ -0,0 +1,24 @@ +{ vimUtils, fetchFromGitHub }: + +_final: _prev: { + gruvbox-nvim = vimUtils.buildVimPlugin { + pname = "gruvbox.nvim"; + version = "2023-10-07"; + + src = fetchFromGitHub { + owner = "ellisonleao"; + repo = "gruvbox.nvim"; + rev = "477c62493c82684ed510c4f70eaf83802e398898"; + sha256 = "0250c24c6n6yri48l288irdawhqs16qna3y74rdkgjd2jvh66vdm"; + }; + + patches = [ + # Inspired by https://github.com/ellisonleao/gruvbox.nvim/pull/291 + ./colours.patch + ]; + + meta = { + homepage = "https://github.com/ellisonleao/gruvbox.nvim/"; + }; + }; +} From 516df86b3f1fd64bbc29a109179d593e3af26e38 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Oct 2023 15:26:35 +0000 Subject: [PATCH 1081/1588] home: vim: migrate to 'none-ls-nvim' This is the community-maintained fork of the plug-in. --- home/vim/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home/vim/default.nix b/home/vim/default.nix index ec18f5c..871bf40 100644 --- a/home/vim/default.nix +++ b/home/vim/default.nix @@ -67,7 +67,7 @@ in nvim-lspconfig # Easy LSP configuration lsp-format-nvim # Simplified formatting configuration lsp_lines-nvim # Show diagnostics *over* regions - null-ls-nvim # LSP integration for linters and formatters + none-ls-nvim # LSP integration for linters and formatters nvim-treesitter.withAllGrammars # Better highlighting nvim-treesitter-textobjects # More textobjects nvim-ts-context-commentstring # Comment string in nested language blocks From bd69e281434f4a4a129b5b08a2e7c287f3aba9b0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 26 Oct 2023 13:47:29 +0000 Subject: [PATCH 1082/1588] home: firefox: migrate deprecated option --- home/firefox/default.nix | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/home/firefox/default.nix b/home/firefox/default.nix index 7374b63..85a1d59 100644 --- a/home/firefox/default.nix +++ b/home/firefox/default.nix @@ -33,13 +33,10 @@ in enable = true; package = pkgs.firefox.override { - cfg = { - enableTridactylNative = cfg.tridactyl.enable; - }; - - extraNativeMessagingHosts = with pkgs; ([ ] + nativeMessagingHosts = ([ ] + ++ lib.optional cfg.tridactyl.enable pkgs.tridactyl-native # Watch videos using mpv - ++ lib.optional cfg.ff2mpv.enable ambroisie.ff2mpv-go + ++ lib.optional cfg.ff2mpv.enable pkgs.ambroisie.ff2mpv-go ); }; From c01f657e8d46f213ac5906924ff37013275830e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 26 Oct 2023 19:36:32 +0100 Subject: [PATCH 1083/1588] lib: lists: add 'nullableToList' --- lib/lists.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/lists.nix b/lib/lists.nix index 190198e..6c2fadd 100644 --- a/lib/lists.nix +++ b/lib/lists.nix @@ -24,4 +24,10 @@ in # (any -> value) # [ any ] mapFilter = pred: f: attrs: filter pred (map f attrs); + + # Transform a nullable value into a list of zero/one element. + # + # nullableToList :: + # (nullable a) -> [ a ] + nullableToList = x: if x != null then [ x ] else [ ]; } From 3a1ccea1425fdfe60584b6729014d3f12799c87d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 26 Oct 2023 19:37:04 +0100 Subject: [PATCH 1084/1588] home: tmux: add 'trueColorTerminals' This uses the recommended way of enabling true-color [1]. [1]: https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-rgb-colour --- home/tmux/default.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/home/tmux/default.nix b/home/tmux/default.nix index e554fd0..08aeb55 100644 --- a/home/tmux/default.nix +++ b/home/tmux/default.nix @@ -11,6 +11,19 @@ in enable = my.mkDisableOption "tmux terminal multiplexer"; enablePassthrough = mkEnableOption "tmux DCS passthrough sequence"; + + trueColorTerminals = mkOption { + type = with types; listOf str; + default = lib.my.nullableToList config.my.home.terminal.program; + defaultText = '' + `[ config.my.home.terminal.program ]` if it is non-null, otherwise an + empty list. + ''; + example = [ "xterm-256color" ]; + description = '' + $TERM values which should be considered to always support 24-bit color. + ''; + }; }; config.programs.tmux = lib.mkIf cfg.enable { @@ -75,6 +88,14 @@ in set -g allow-passthrough on '' } + + # Force 24-bit color for each relevant $TERM + ${ + let + mkTcFlag = term: ''set -as terminal-features ",${term}:RGB"''; + in + lib.concatMapStringsSep "\n" mkTcFlag cfg.trueColorTerminals + } ''; }; } From 42ab12179e16e7af7e467365d76607d5ae7ca15f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 26 Oct 2023 19:39:44 +0100 Subject: [PATCH 1085/1588] hosts: homes: mousqueton: use 'trueColorTerminals' Ah, much better with an actual option for this :-). --- hosts/homes/ambroisie@mousqueton/default.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index ac73da6..7f9d659 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -20,8 +20,6 @@ # I use scripts that use the passthrough sequence often on this host my.home.tmux.enablePassthrough = true; - programs.tmux.extraConfig = '' - # Setup 24-bit color explicitly, as the default terminfo entry does not - set-option -sa terminal-overrides ",xterm-256color:Tc" - ''; + # HTerm uses `xterm-256color` as its `$TERM`, so use that here + my.home.tmux.trueColorTerminals = [ "xterm-256color" ]; } From 6a8f93df1ffb9abe172fae8c6f228bb461096084 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 28 Oct 2023 12:14:42 +0100 Subject: [PATCH 1086/1588] modules: services: nginx: fix obsolete doc It's annoying to keep it in sync when adding a new incompatible option. --- modules/services/nginx/default.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/services/nginx/default.nix b/modules/services/nginx/default.nix index dcaaa0f..6ca2e42 100644 --- a/modules/services/nginx/default.nix +++ b/modules/services/nginx/default.nix @@ -22,7 +22,6 @@ let example = 8080; description = '' Which port to proxy to, through 127.0.0.1, for this virtual host. - This option is incompatible with `root`. ''; }; @@ -40,8 +39,7 @@ let default = null; example = "/var/www/blog"; description = '' - The root folder for this virtual host. This option is incompatible - with `port`. + The root folder for this virtual host. ''; }; @@ -50,8 +48,7 @@ let default = null; example = "FIXME"; description = '' - The UNIX socket for this virtual host. This option is incompatible - with `port`. + The UNIX socket for this virtual host. ''; }; From ca4fac3c546725014b20778c4b4eca6663356cac Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 30 Oct 2023 13:33:27 +0000 Subject: [PATCH 1087/1588] hosts: nixos: porthos: fix tmux 24-bit color Well at least this fixes it for the usual client (my laptop). --- hosts/nixos/porthos/home.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hosts/nixos/porthos/home.nix b/hosts/nixos/porthos/home.nix index 53d5d25..90aa0ec 100644 --- a/hosts/nixos/porthos/home.nix +++ b/hosts/nixos/porthos/home.nix @@ -1,6 +1,12 @@ { ... }: { my.home = { + # Allow using 24bit color when SSH-ing from various clients + tmux.trueColorTerminals = [ + # My usual terminal, e.g: on laptop + "alacritty" + ]; + # Always start a tmux session when opening a shell session zsh.launchTmux = true; }; From 9b71708e3a49563e4fe8ded452db8ff0c63f1edd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 31 Oct 2023 11:56:39 +0000 Subject: [PATCH 1088/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 5fd6c45..d2f2e6d 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1696343447, - "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "lastModified": 1698579227, + "narHash": "sha256-KVWjFZky+gRuWennKsbo6cWyo7c/z/VgCte5pR9pEKg=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "rev": "f76e870d64779109e41370848074ac4eaa1606ec", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1698250431, - "narHash": "sha256-qs2gTeH4wpnWPO6Oi6sOhp2IhG0i0DzcnrJxIY3/CP8=", + "lastModified": 1698670511, + "narHash": "sha256-jQIu3UhBMPHXzVkHQO1O2gg8SVo5lqAVoC6mOaLQcLQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "09587fbbc6a669f7725613e044c2577dc5d43ab5", + "rev": "8e5416b478e465985eec274bc3a018024435c106", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1698134075, - "narHash": "sha256-foCD+nuKzfh49bIoiCBur4+Fx1nozo+4C/6k8BYk4sg=", + "lastModified": 1698611440, + "narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8efd5d1e283604f75a808a20e6cde0ef313d07d4", + "rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1698317227, - "narHash": "sha256-jzSJjjxJr/IPvoPSWB1ZobmlAKku6eeggh9ffGV7Sig=", + "lastModified": 1698745553, + "narHash": "sha256-Fdip7ewCtZTjOu7ATDFUAy3OqrgcyvzDElLXhr4YmmI=", "owner": "nix-community", "repo": "NUR", - "rev": "32a38be31067b0a2f4919fd9e7a49bbefc34d25f", + "rev": "dfbf198236d40e9741db76936088f05107e19013", "type": "github" }, "original": { From 249ee14d39515928a87915b78226033385ec3eb6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 31 Oct 2023 12:12:20 +0000 Subject: [PATCH 1089/1588] overlays: add 'tandoor-recipes-bump-allauth' This should only be temporary until they release a new version which _does_ support the middleware (see [1]). [1]: https://github.com/TandoorRecipes/recipes/pull/2706 --- .../bump-allauth.patch | 38 +++++++++++++++++++ .../tandoor-recipes-bump-allauth/default.nix | 9 +++++ 2 files changed, 47 insertions(+) create mode 100644 overlays/tandoor-recipes-bump-allauth/bump-allauth.patch create mode 100644 overlays/tandoor-recipes-bump-allauth/default.nix diff --git a/overlays/tandoor-recipes-bump-allauth/bump-allauth.patch b/overlays/tandoor-recipes-bump-allauth/bump-allauth.patch new file mode 100644 index 0000000..84dfaee --- /dev/null +++ b/overlays/tandoor-recipes-bump-allauth/bump-allauth.patch @@ -0,0 +1,38 @@ +From 8f66f5c3ca61751a80cc133ff4c59019d6fca406 Mon Sep 17 00:00:00 2001 +From: Bruno BELANYI <bruno@belanyi.fr> +Date: Tue, 31 Oct 2023 12:15:30 +0000 +Subject: [PATCH] Bump django-allauth from 0.54.0 to 0.58.1 + +See the backwards incompatible changes [1]. + +[1]: https://docs.allauth.org/en/latest/release-notes/recent.html#id10 +--- + recipes/settings.py | 1 + + requirements.txt | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/recipes/settings.py b/recipes/settings.py +index df2c2b1de..b836ea656 100644 +--- a/recipes/settings.py ++++ b/recipes/settings.py +@@ -218,6 +218,7 @@ + 'django.middleware.locale.LocaleMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'cookbook.helper.scope_middleware.ScopeMiddleware', ++ 'allauth.account.middleware.AccountMiddleware', + ] + + if DEBUG_TOOLBAR: +diff --git a/requirements.txt b/requirements.txt +index 26d81b471..09ed2381a 100644 +--- a/requirements.txt ++++ b/requirements.txt +@@ -29,7 +29,7 @@ microdata==0.8.0 + Jinja2==3.1.2 + django-webpack-loader==1.8.1 + git+https://github.com/BITSOLVER/django-js-reverse@071e304fd600107bc64bbde6f2491f1fe049ec82 +-django-allauth==0.54.0 ++django-allauth==0.58.1 + recipe-scrapers==14.36.1 + django-scopes==2.0.0 + pytest==7.3.1 diff --git a/overlays/tandoor-recipes-bump-allauth/default.nix b/overlays/tandoor-recipes-bump-allauth/default.nix new file mode 100644 index 0000000..dfbfec9 --- /dev/null +++ b/overlays/tandoor-recipes-bump-allauth/default.nix @@ -0,0 +1,9 @@ +_self: prev: +{ + tandoor-recipes = prev.tandoor-recipes.overrideAttrs (oa: { + patches = (oa.patches or [ ]) ++ [ + # https://github.com/TandoorRecipes/recipes/pull/2706 + ./bump-allauth.patch + ]; + }); +} From 8ad02dd74daad3010b20ab9f2c661906066521d2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 31 Oct 2023 14:00:47 +0000 Subject: [PATCH 1090/1588] hosts: nixos: porthos: system: disable cache We're never going to get a cache hit, since this is the host for that cache. --- hosts/nixos/porthos/default.nix | 1 + hosts/nixos/porthos/system.nix | 12 ++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 hosts/nixos/porthos/system.nix diff --git a/hosts/nixos/porthos/default.nix b/hosts/nixos/porthos/default.nix index 326d1cd..2dea899 100644 --- a/hosts/nixos/porthos/default.nix +++ b/hosts/nixos/porthos/default.nix @@ -9,6 +9,7 @@ ./networking.nix ./secrets ./services.nix + ./system.nix ./users.nix ]; diff --git a/hosts/nixos/porthos/system.nix b/hosts/nixos/porthos/system.nix new file mode 100644 index 0000000..07b9947 --- /dev/null +++ b/hosts/nixos/porthos/system.nix @@ -0,0 +1,12 @@ +# Core system configuration +{ ... }: +{ + my.system = { + nix = { + cache = { + # This server is the one serving the cache, don't try to query it + selfHosted = false; + }; + }; + }; +} From 7f857ab6617f3f0717bcfbdf3137526a10ed40f9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 31 Oct 2023 14:56:18 +0000 Subject: [PATCH 1091/1588] hosts: homes: mousqueton: fix formatting --- hosts/homes/ambroisie@mousqueton/default.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 7f9d659..7fcd356 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -17,9 +17,13 @@ services.gpg-agent.enable = lib.mkForce false; - # I use scripts that use the passthrough sequence often on this host - my.home.tmux.enablePassthrough = true; + my.home = { + tmux = { + # I use scripts that use the passthrough sequence often on this host + enablePassthrough = true; - # HTerm uses `xterm-256color` as its `$TERM`, so use that here - my.home.tmux.trueColorTerminals = [ "xterm-256color" ]; + # HTerm uses `xterm-256color` as its `$TERM`, so use that here + trueColorTerminals = [ "xterm-256color" ]; + }; + }; } From 830e7bb8650baa2707a4e58f4a4c3050c8e5404c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 6 Nov 2023 20:54:40 +0000 Subject: [PATCH 1092/1588] modules: services: woodpecker: fix interpolation --- modules/services/woodpecker/server/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/services/woodpecker/server/default.nix b/modules/services/woodpecker/server/default.nix index 152e707..161f76c 100644 --- a/modules/services/woodpecker/server/default.nix +++ b/modules/services/woodpecker/server/default.nix @@ -12,7 +12,7 @@ in WOODPECKER_HOST = "https://woodpecker.${config.networking.domain}"; WOODPECKER_DATABASE_DRIVER = "postgres"; WOODPECKER_DATABASE_DATASOURCE = "postgres:///woodpecker?host=/run/postgresql"; - WOODPECKER_ADMIN = "${cfg.admin}"; + WOODPECKER_ADMIN = cfg.admin; WOODPECKER_SERVER_ADDR = ":${toString cfg.port}"; WOODPECKER_GRPC_ADDR = ":${toString cfg.rpcPort}"; From cc331b73c7f925a5c37a7f7a508ccda13919c9f2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 6 Nov 2023 20:55:53 +0000 Subject: [PATCH 1093/1588] treewide: fix postgres service dependencies Some were missing a `requires` even though they had `after`, and woodpecker was missing it entirely. --- modules/services/drone/server/default.nix | 1 + modules/services/tandoor-recipes/default.nix | 1 + modules/services/woodpecker/server/default.nix | 3 +++ 3 files changed, 5 insertions(+) diff --git a/modules/services/drone/server/default.nix b/modules/services/drone/server/default.nix index 1202010..0f56d29 100644 --- a/modules/services/drone/server/default.nix +++ b/modules/services/drone/server/default.nix @@ -7,6 +7,7 @@ in systemd.services.drone-server = { wantedBy = [ "multi-user.target" ]; after = [ "postgresql.service" ]; + requires = [ "postgresql.service" ]; serviceConfig = { EnvironmentFile = [ cfg.secretFile diff --git a/modules/services/tandoor-recipes/default.nix b/modules/services/tandoor-recipes/default.nix index d78bef3..83177c8 100644 --- a/modules/services/tandoor-recipes/default.nix +++ b/modules/services/tandoor-recipes/default.nix @@ -50,6 +50,7 @@ in systemd.services = { tandoor-recipes = { after = [ "postgresql.service" ]; + requires = [ "postgresql.service" ]; serviceConfig = { EnvironmentFile = cfg.secretKeyFile; diff --git a/modules/services/woodpecker/server/default.nix b/modules/services/woodpecker/server/default.nix index 161f76c..d9f723b 100644 --- a/modules/services/woodpecker/server/default.nix +++ b/modules/services/woodpecker/server/default.nix @@ -24,6 +24,9 @@ in }; systemd.services.woodpecker-server = { + after = [ "postgresql.service" ]; + requires = [ "postgresql.service" ]; + serviceConfig = { # Set username for DB access User = "woodpecker"; From 32ec402ad0b239eade07003821bdd00ac9960fc9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 7 Nov 2023 16:51:34 +0000 Subject: [PATCH 1094/1588] pkgs: remove volantes-cursors It has been packaged upstream. --- pkgs/default.nix | 2 -- pkgs/volantes-cursors/default.nix | 44 ------------------------------- 2 files changed, 46 deletions(-) delete mode 100644 pkgs/volantes-cursors/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 6558026..664b5a4 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -36,8 +36,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { vimix-cursors = pkgs.callPackage ./vimix-cursors { }; - volantes-cursors = pkgs.callPackage ./volantes-cursors { }; - wifi-qr = pkgs.callPackage ./wifi-qr { }; zsh-done = pkgs.callPackage ./zsh-done { }; diff --git a/pkgs/volantes-cursors/default.nix b/pkgs/volantes-cursors/default.nix deleted file mode 100644 index b2c7865..0000000 --- a/pkgs/volantes-cursors/default.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ lib, fetchFromGitHub, inkscape, stdenvNoCC, xcursorgen }: -stdenvNoCC.mkDerivation rec { - pname = "volantes-cursors"; - version = "unstable-2020-06-06"; - - src = fetchFromGitHub { - owner = "varlesh"; - repo = pname; - rev = "d1d290ff42cc4fa643716551bd0b02582b90fd2f"; - hash = "sha256-irMN/enoo90nYLfvSOScZoYdvhZKvqqp+grZB2BQD9o="; - }; - - nativeBuildInputs = [ - inkscape - xcursorgen - ]; - - postPatch = '' - patchShebangs . - # The script tries to build in its source directory... - substituteInPlace build.sh --replace \ - ': "''${BUILD_DIR:="$SCRIPT_DIR"/build}"' \ - "BUILD_DIR=$(pwd)/build" - substituteInPlace build.sh --replace \ - ': "''${OUT_DIR:="$SCRIPT_DIR"/dist}"' \ - "OUT_DIR=$(pwd)/dist" - ''; - - buildPhase = '' - HOME="$NIX_BUILD_ROOT" ./build.sh - ''; - - installPhase = '' - make install PREFIX= DESTDIR=$out/ - ''; - - meta = with lib; { - description = "Classic cursor with a flying style"; - homepage = "https://github.com/varlesh/volantes-cursors"; - license = licenses.gpl2Only; - maintainers = with maintainers; [ ambroisie ]; - platforms = platforms.linux; - }; -} From 27564cad42cfd075c5ddc28129e09c14c9e3f6a6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 11 Nov 2023 17:56:56 +0000 Subject: [PATCH 1095/1588] modules: system: printing: move from 'profiles' This isn't really a cross-cutting module, it should be a module rather than a profile. --- hosts/nixos/aramis/default.nix | 1 + hosts/nixos/aramis/profiles.nix | 2 -- hosts/nixos/aramis/system.nix | 10 ++++++++++ modules/system/default.nix | 1 + {profiles => modules/system}/printing/default.nix | 6 +++--- profiles/default.nix | 1 - 6 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 hosts/nixos/aramis/system.nix rename {profiles => modules/system}/printing/default.nix (90%) diff --git a/hosts/nixos/aramis/default.nix b/hosts/nixos/aramis/default.nix index c72fb11..6e0304f 100644 --- a/hosts/nixos/aramis/default.nix +++ b/hosts/nixos/aramis/default.nix @@ -15,6 +15,7 @@ ./secrets ./services.nix ./sound.nix + ./system.nix ]; # Set your time zone. diff --git a/hosts/nixos/aramis/profiles.nix b/hosts/nixos/aramis/profiles.nix index d86da5a..4d2ac7d 100644 --- a/hosts/nixos/aramis/profiles.nix +++ b/hosts/nixos/aramis/profiles.nix @@ -9,8 +9,6 @@ gtk.enable = true; # Laptop specific configuration laptop.enable = true; - # Printers are hell, but so is the unability to print - printing.enable = true; # i3 configuration wm.windowManager = "i3"; # X configuration diff --git a/hosts/nixos/aramis/system.nix b/hosts/nixos/aramis/system.nix new file mode 100644 index 0000000..5e69222 --- /dev/null +++ b/hosts/nixos/aramis/system.nix @@ -0,0 +1,10 @@ +# Core system configuration +{ ... }: +{ + my.system = { + # Printers are hell, but so is the unability to print + printing = { + enable = true; + }; + }; +} diff --git a/modules/system/default.nix b/modules/system/default.nix index 9fe3b57..e7a4dd3 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -10,6 +10,7 @@ ./nix ./packages ./podman + ./printing ./users ]; } diff --git a/profiles/printing/default.nix b/modules/system/printing/default.nix similarity index 90% rename from profiles/printing/default.nix rename to modules/system/printing/default.nix index 9965797..a4547ef 100644 --- a/profiles/printing/default.nix +++ b/modules/system/printing/default.nix @@ -1,10 +1,10 @@ { config, lib, pkgs, ... }: let - cfg = config.my.profiles.printing; + cfg = config.my.system.printing; in { - options.my.profiles.printing = with lib; { - enable = mkEnableOption "printing profile"; + options.my.system.printing = with lib; { + enable = mkEnableOption "printing configuration"; papersize = mkOption { type = with types; either str (enum [ diff --git a/profiles/default.nix b/profiles/default.nix index f7914a1..43d5a84 100644 --- a/profiles/default.nix +++ b/profiles/default.nix @@ -6,7 +6,6 @@ ./devices ./gtk ./laptop - ./printing ./wm ./x ]; From b52e56ed08bea277ceaad9d6454ebc4ff33a29e3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 9 Nov 2023 13:40:58 +0000 Subject: [PATCH 1096/1588] modules: home: use 'self'-relative import --- modules/home/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/default.nix b/modules/home/default.nix index 1e0e0aa..4849ab2 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -14,7 +14,7 @@ in config = lib.mkIf cfg.enable { home-manager = { # Not a fan of out-of-directory imports, but this is a good exception - users.${config.my.user.name} = import ../../home; + users.${config.my.user.name} = import "${inputs.self}/home"; # Nix Flakes compatibility useGlobalPkgs = true; From c856933803d090a882f2cdb449e354cb65646ade Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 9 Nov 2023 13:37:46 +0000 Subject: [PATCH 1097/1588] nixos: create 'modules/nixos' folder Let's consolidate all modules under one path, so that NixOS, home-manager, and nix-darwin (if I ever end up using it down the line) would go under the same folder. --- flake/nixos.nix | 2 +- modules/{ => nixos}/default.nix | 0 modules/{ => nixos}/hardware/bluetooth/default.nix | 0 modules/{ => nixos}/hardware/default.nix | 0 modules/{ => nixos}/hardware/ergodox/default.nix | 0 modules/{ => nixos}/hardware/firmware/default.nix | 0 modules/{ => nixos}/hardware/mx-ergo/default.nix | 0 modules/{ => nixos}/hardware/networking/default.nix | 0 modules/{ => nixos}/hardware/sound/default.nix | 0 modules/{ => nixos}/hardware/upower/default.nix | 0 modules/{ => nixos}/home/default.nix | 0 modules/{ => nixos}/programs/default.nix | 0 modules/{ => nixos}/programs/steam/default.nix | 0 modules/{ => nixos}/secrets/default.nix | 0 modules/{ => nixos}/secrets/secrets.nix | 0 .../secrets/users/ambroisie/hashed-password.age | 0 .../secrets/users/root/hashed-password.age | Bin modules/{ => nixos}/services/adblock/default.nix | 0 modules/{ => nixos}/services/backup/default.nix | 0 modules/{ => nixos}/services/blog/default.nix | 0 .../{ => nixos}/services/calibre-web/default.nix | 0 modules/{ => nixos}/services/default.nix | 0 modules/{ => nixos}/services/drone/default.nix | 0 .../services/drone/runner-docker/default.nix | 0 .../services/drone/runner-exec/default.nix | 0 .../{ => nixos}/services/drone/server/default.nix | 0 modules/{ => nixos}/services/fail2ban/default.nix | 0 modules/{ => nixos}/services/flood/default.nix | 0 modules/{ => nixos}/services/gitea/default.nix | 0 modules/{ => nixos}/services/grocy/default.nix | 0 modules/{ => nixos}/services/indexers/default.nix | 0 modules/{ => nixos}/services/jellyfin/default.nix | 0 modules/{ => nixos}/services/lohr/default.nix | 0 modules/{ => nixos}/services/matrix/default.nix | 0 modules/{ => nixos}/services/miniflux/default.nix | 0 modules/{ => nixos}/services/monitoring/default.nix | 0 modules/{ => nixos}/services/navidrome/default.nix | 0 modules/{ => nixos}/services/nextcloud/default.nix | 0 modules/{ => nixos}/services/nginx/default.nix | 0 modules/{ => nixos}/services/nginx/sso/default.nix | 0 modules/{ => nixos}/services/nix-cache/default.nix | 0 modules/{ => nixos}/services/paperless/default.nix | 0 modules/{ => nixos}/services/pirate/default.nix | 0 modules/{ => nixos}/services/podgrab/default.nix | 0 .../services/postgresql-backup/default.nix | 0 modules/{ => nixos}/services/postgresql/default.nix | 0 modules/{ => nixos}/services/quassel/default.nix | 0 modules/{ => nixos}/services/rss-bridge/default.nix | 0 modules/{ => nixos}/services/sabnzbd/default.nix | 0 modules/{ => nixos}/services/ssh-server/default.nix | 0 .../services/tandoor-recipes/default.nix | 0 modules/{ => nixos}/services/tlp/default.nix | 0 .../{ => nixos}/services/transmission/default.nix | 0 modules/{ => nixos}/services/vikunja/default.nix | 0 modules/{ => nixos}/services/wireguard/default.nix | 0 .../services/wireguard/keys/milady/private-key.age | 0 .../wireguard/keys/richelieu/private-key.age | 0 .../{ => nixos}/services/wireguard/keys/secrets.nix | 0 .../services/woodpecker/agent-docker/default.nix | 0 .../services/woodpecker/agent-exec/default.nix | 0 modules/{ => nixos}/services/woodpecker/default.nix | 0 .../services/woodpecker/server/default.nix | 0 modules/{ => nixos}/system/boot/default.nix | 0 modules/{ => nixos}/system/default.nix | 0 modules/{ => nixos}/system/docker/default.nix | 0 .../{ => nixos}/system/documentation/default.nix | 0 modules/{ => nixos}/system/language/default.nix | 0 modules/{ => nixos}/system/nix/default.nix | 0 modules/{ => nixos}/system/packages/default.nix | 0 modules/{ => nixos}/system/podman/default.nix | 0 modules/{ => nixos}/system/printing/default.nix | 0 modules/{ => nixos}/system/users/default.nix | 0 modules/{ => nixos}/system/users/ssh/aramis.pub | 0 modules/{ => nixos}/system/users/ssh/shared.pub | 0 74 files changed, 1 insertion(+), 1 deletion(-) rename modules/{ => nixos}/default.nix (100%) rename modules/{ => nixos}/hardware/bluetooth/default.nix (100%) rename modules/{ => nixos}/hardware/default.nix (100%) rename modules/{ => nixos}/hardware/ergodox/default.nix (100%) rename modules/{ => nixos}/hardware/firmware/default.nix (100%) rename modules/{ => nixos}/hardware/mx-ergo/default.nix (100%) rename modules/{ => nixos}/hardware/networking/default.nix (100%) rename modules/{ => nixos}/hardware/sound/default.nix (100%) rename modules/{ => nixos}/hardware/upower/default.nix (100%) rename modules/{ => nixos}/home/default.nix (100%) rename modules/{ => nixos}/programs/default.nix (100%) rename modules/{ => nixos}/programs/steam/default.nix (100%) rename modules/{ => nixos}/secrets/default.nix (100%) rename modules/{ => nixos}/secrets/secrets.nix (100%) rename modules/{ => nixos}/secrets/users/ambroisie/hashed-password.age (100%) rename modules/{ => nixos}/secrets/users/root/hashed-password.age (100%) rename modules/{ => nixos}/services/adblock/default.nix (100%) rename modules/{ => nixos}/services/backup/default.nix (100%) rename modules/{ => nixos}/services/blog/default.nix (100%) rename modules/{ => nixos}/services/calibre-web/default.nix (100%) rename modules/{ => nixos}/services/default.nix (100%) rename modules/{ => nixos}/services/drone/default.nix (100%) rename modules/{ => nixos}/services/drone/runner-docker/default.nix (100%) rename modules/{ => nixos}/services/drone/runner-exec/default.nix (100%) rename modules/{ => nixos}/services/drone/server/default.nix (100%) rename modules/{ => nixos}/services/fail2ban/default.nix (100%) rename modules/{ => nixos}/services/flood/default.nix (100%) rename modules/{ => nixos}/services/gitea/default.nix (100%) rename modules/{ => nixos}/services/grocy/default.nix (100%) rename modules/{ => nixos}/services/indexers/default.nix (100%) rename modules/{ => nixos}/services/jellyfin/default.nix (100%) rename modules/{ => nixos}/services/lohr/default.nix (100%) rename modules/{ => nixos}/services/matrix/default.nix (100%) rename modules/{ => nixos}/services/miniflux/default.nix (100%) rename modules/{ => nixos}/services/monitoring/default.nix (100%) rename modules/{ => nixos}/services/navidrome/default.nix (100%) rename modules/{ => nixos}/services/nextcloud/default.nix (100%) rename modules/{ => nixos}/services/nginx/default.nix (100%) rename modules/{ => nixos}/services/nginx/sso/default.nix (100%) rename modules/{ => nixos}/services/nix-cache/default.nix (100%) rename modules/{ => nixos}/services/paperless/default.nix (100%) rename modules/{ => nixos}/services/pirate/default.nix (100%) rename modules/{ => nixos}/services/podgrab/default.nix (100%) rename modules/{ => nixos}/services/postgresql-backup/default.nix (100%) rename modules/{ => nixos}/services/postgresql/default.nix (100%) rename modules/{ => nixos}/services/quassel/default.nix (100%) rename modules/{ => nixos}/services/rss-bridge/default.nix (100%) rename modules/{ => nixos}/services/sabnzbd/default.nix (100%) rename modules/{ => nixos}/services/ssh-server/default.nix (100%) rename modules/{ => nixos}/services/tandoor-recipes/default.nix (100%) rename modules/{ => nixos}/services/tlp/default.nix (100%) rename modules/{ => nixos}/services/transmission/default.nix (100%) rename modules/{ => nixos}/services/vikunja/default.nix (100%) rename modules/{ => nixos}/services/wireguard/default.nix (100%) rename modules/{ => nixos}/services/wireguard/keys/milady/private-key.age (100%) rename modules/{ => nixos}/services/wireguard/keys/richelieu/private-key.age (100%) rename modules/{ => nixos}/services/wireguard/keys/secrets.nix (100%) rename modules/{ => nixos}/services/woodpecker/agent-docker/default.nix (100%) rename modules/{ => nixos}/services/woodpecker/agent-exec/default.nix (100%) rename modules/{ => nixos}/services/woodpecker/default.nix (100%) rename modules/{ => nixos}/services/woodpecker/server/default.nix (100%) rename modules/{ => nixos}/system/boot/default.nix (100%) rename modules/{ => nixos}/system/default.nix (100%) rename modules/{ => nixos}/system/docker/default.nix (100%) rename modules/{ => nixos}/system/documentation/default.nix (100%) rename modules/{ => nixos}/system/language/default.nix (100%) rename modules/{ => nixos}/system/nix/default.nix (100%) rename modules/{ => nixos}/system/packages/default.nix (100%) rename modules/{ => nixos}/system/podman/default.nix (100%) rename modules/{ => nixos}/system/printing/default.nix (100%) rename modules/{ => nixos}/system/users/default.nix (100%) rename modules/{ => nixos}/system/users/ssh/aramis.pub (100%) rename modules/{ => nixos}/system/users/ssh/shared.pub (100%) diff --git a/flake/nixos.nix b/flake/nixos.nix index 9eb6388..541e658 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -13,7 +13,7 @@ let ]; } # Include generic settings - "${self}/modules" + "${self}/modules/nixos" # Include bundles of settings "${self}/profiles" ]; diff --git a/modules/default.nix b/modules/nixos/default.nix similarity index 100% rename from modules/default.nix rename to modules/nixos/default.nix diff --git a/modules/hardware/bluetooth/default.nix b/modules/nixos/hardware/bluetooth/default.nix similarity index 100% rename from modules/hardware/bluetooth/default.nix rename to modules/nixos/hardware/bluetooth/default.nix diff --git a/modules/hardware/default.nix b/modules/nixos/hardware/default.nix similarity index 100% rename from modules/hardware/default.nix rename to modules/nixos/hardware/default.nix diff --git a/modules/hardware/ergodox/default.nix b/modules/nixos/hardware/ergodox/default.nix similarity index 100% rename from modules/hardware/ergodox/default.nix rename to modules/nixos/hardware/ergodox/default.nix diff --git a/modules/hardware/firmware/default.nix b/modules/nixos/hardware/firmware/default.nix similarity index 100% rename from modules/hardware/firmware/default.nix rename to modules/nixos/hardware/firmware/default.nix diff --git a/modules/hardware/mx-ergo/default.nix b/modules/nixos/hardware/mx-ergo/default.nix similarity index 100% rename from modules/hardware/mx-ergo/default.nix rename to modules/nixos/hardware/mx-ergo/default.nix diff --git a/modules/hardware/networking/default.nix b/modules/nixos/hardware/networking/default.nix similarity index 100% rename from modules/hardware/networking/default.nix rename to modules/nixos/hardware/networking/default.nix diff --git a/modules/hardware/sound/default.nix b/modules/nixos/hardware/sound/default.nix similarity index 100% rename from modules/hardware/sound/default.nix rename to modules/nixos/hardware/sound/default.nix diff --git a/modules/hardware/upower/default.nix b/modules/nixos/hardware/upower/default.nix similarity index 100% rename from modules/hardware/upower/default.nix rename to modules/nixos/hardware/upower/default.nix diff --git a/modules/home/default.nix b/modules/nixos/home/default.nix similarity index 100% rename from modules/home/default.nix rename to modules/nixos/home/default.nix diff --git a/modules/programs/default.nix b/modules/nixos/programs/default.nix similarity index 100% rename from modules/programs/default.nix rename to modules/nixos/programs/default.nix diff --git a/modules/programs/steam/default.nix b/modules/nixos/programs/steam/default.nix similarity index 100% rename from modules/programs/steam/default.nix rename to modules/nixos/programs/steam/default.nix diff --git a/modules/secrets/default.nix b/modules/nixos/secrets/default.nix similarity index 100% rename from modules/secrets/default.nix rename to modules/nixos/secrets/default.nix diff --git a/modules/secrets/secrets.nix b/modules/nixos/secrets/secrets.nix similarity index 100% rename from modules/secrets/secrets.nix rename to modules/nixos/secrets/secrets.nix diff --git a/modules/secrets/users/ambroisie/hashed-password.age b/modules/nixos/secrets/users/ambroisie/hashed-password.age similarity index 100% rename from modules/secrets/users/ambroisie/hashed-password.age rename to modules/nixos/secrets/users/ambroisie/hashed-password.age diff --git a/modules/secrets/users/root/hashed-password.age b/modules/nixos/secrets/users/root/hashed-password.age similarity index 100% rename from modules/secrets/users/root/hashed-password.age rename to modules/nixos/secrets/users/root/hashed-password.age diff --git a/modules/services/adblock/default.nix b/modules/nixos/services/adblock/default.nix similarity index 100% rename from modules/services/adblock/default.nix rename to modules/nixos/services/adblock/default.nix diff --git a/modules/services/backup/default.nix b/modules/nixos/services/backup/default.nix similarity index 100% rename from modules/services/backup/default.nix rename to modules/nixos/services/backup/default.nix diff --git a/modules/services/blog/default.nix b/modules/nixos/services/blog/default.nix similarity index 100% rename from modules/services/blog/default.nix rename to modules/nixos/services/blog/default.nix diff --git a/modules/services/calibre-web/default.nix b/modules/nixos/services/calibre-web/default.nix similarity index 100% rename from modules/services/calibre-web/default.nix rename to modules/nixos/services/calibre-web/default.nix diff --git a/modules/services/default.nix b/modules/nixos/services/default.nix similarity index 100% rename from modules/services/default.nix rename to modules/nixos/services/default.nix diff --git a/modules/services/drone/default.nix b/modules/nixos/services/drone/default.nix similarity index 100% rename from modules/services/drone/default.nix rename to modules/nixos/services/drone/default.nix diff --git a/modules/services/drone/runner-docker/default.nix b/modules/nixos/services/drone/runner-docker/default.nix similarity index 100% rename from modules/services/drone/runner-docker/default.nix rename to modules/nixos/services/drone/runner-docker/default.nix diff --git a/modules/services/drone/runner-exec/default.nix b/modules/nixos/services/drone/runner-exec/default.nix similarity index 100% rename from modules/services/drone/runner-exec/default.nix rename to modules/nixos/services/drone/runner-exec/default.nix diff --git a/modules/services/drone/server/default.nix b/modules/nixos/services/drone/server/default.nix similarity index 100% rename from modules/services/drone/server/default.nix rename to modules/nixos/services/drone/server/default.nix diff --git a/modules/services/fail2ban/default.nix b/modules/nixos/services/fail2ban/default.nix similarity index 100% rename from modules/services/fail2ban/default.nix rename to modules/nixos/services/fail2ban/default.nix diff --git a/modules/services/flood/default.nix b/modules/nixos/services/flood/default.nix similarity index 100% rename from modules/services/flood/default.nix rename to modules/nixos/services/flood/default.nix diff --git a/modules/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix similarity index 100% rename from modules/services/gitea/default.nix rename to modules/nixos/services/gitea/default.nix diff --git a/modules/services/grocy/default.nix b/modules/nixos/services/grocy/default.nix similarity index 100% rename from modules/services/grocy/default.nix rename to modules/nixos/services/grocy/default.nix diff --git a/modules/services/indexers/default.nix b/modules/nixos/services/indexers/default.nix similarity index 100% rename from modules/services/indexers/default.nix rename to modules/nixos/services/indexers/default.nix diff --git a/modules/services/jellyfin/default.nix b/modules/nixos/services/jellyfin/default.nix similarity index 100% rename from modules/services/jellyfin/default.nix rename to modules/nixos/services/jellyfin/default.nix diff --git a/modules/services/lohr/default.nix b/modules/nixos/services/lohr/default.nix similarity index 100% rename from modules/services/lohr/default.nix rename to modules/nixos/services/lohr/default.nix diff --git a/modules/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix similarity index 100% rename from modules/services/matrix/default.nix rename to modules/nixos/services/matrix/default.nix diff --git a/modules/services/miniflux/default.nix b/modules/nixos/services/miniflux/default.nix similarity index 100% rename from modules/services/miniflux/default.nix rename to modules/nixos/services/miniflux/default.nix diff --git a/modules/services/monitoring/default.nix b/modules/nixos/services/monitoring/default.nix similarity index 100% rename from modules/services/monitoring/default.nix rename to modules/nixos/services/monitoring/default.nix diff --git a/modules/services/navidrome/default.nix b/modules/nixos/services/navidrome/default.nix similarity index 100% rename from modules/services/navidrome/default.nix rename to modules/nixos/services/navidrome/default.nix diff --git a/modules/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix similarity index 100% rename from modules/services/nextcloud/default.nix rename to modules/nixos/services/nextcloud/default.nix diff --git a/modules/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix similarity index 100% rename from modules/services/nginx/default.nix rename to modules/nixos/services/nginx/default.nix diff --git a/modules/services/nginx/sso/default.nix b/modules/nixos/services/nginx/sso/default.nix similarity index 100% rename from modules/services/nginx/sso/default.nix rename to modules/nixos/services/nginx/sso/default.nix diff --git a/modules/services/nix-cache/default.nix b/modules/nixos/services/nix-cache/default.nix similarity index 100% rename from modules/services/nix-cache/default.nix rename to modules/nixos/services/nix-cache/default.nix diff --git a/modules/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix similarity index 100% rename from modules/services/paperless/default.nix rename to modules/nixos/services/paperless/default.nix diff --git a/modules/services/pirate/default.nix b/modules/nixos/services/pirate/default.nix similarity index 100% rename from modules/services/pirate/default.nix rename to modules/nixos/services/pirate/default.nix diff --git a/modules/services/podgrab/default.nix b/modules/nixos/services/podgrab/default.nix similarity index 100% rename from modules/services/podgrab/default.nix rename to modules/nixos/services/podgrab/default.nix diff --git a/modules/services/postgresql-backup/default.nix b/modules/nixos/services/postgresql-backup/default.nix similarity index 100% rename from modules/services/postgresql-backup/default.nix rename to modules/nixos/services/postgresql-backup/default.nix diff --git a/modules/services/postgresql/default.nix b/modules/nixos/services/postgresql/default.nix similarity index 100% rename from modules/services/postgresql/default.nix rename to modules/nixos/services/postgresql/default.nix diff --git a/modules/services/quassel/default.nix b/modules/nixos/services/quassel/default.nix similarity index 100% rename from modules/services/quassel/default.nix rename to modules/nixos/services/quassel/default.nix diff --git a/modules/services/rss-bridge/default.nix b/modules/nixos/services/rss-bridge/default.nix similarity index 100% rename from modules/services/rss-bridge/default.nix rename to modules/nixos/services/rss-bridge/default.nix diff --git a/modules/services/sabnzbd/default.nix b/modules/nixos/services/sabnzbd/default.nix similarity index 100% rename from modules/services/sabnzbd/default.nix rename to modules/nixos/services/sabnzbd/default.nix diff --git a/modules/services/ssh-server/default.nix b/modules/nixos/services/ssh-server/default.nix similarity index 100% rename from modules/services/ssh-server/default.nix rename to modules/nixos/services/ssh-server/default.nix diff --git a/modules/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix similarity index 100% rename from modules/services/tandoor-recipes/default.nix rename to modules/nixos/services/tandoor-recipes/default.nix diff --git a/modules/services/tlp/default.nix b/modules/nixos/services/tlp/default.nix similarity index 100% rename from modules/services/tlp/default.nix rename to modules/nixos/services/tlp/default.nix diff --git a/modules/services/transmission/default.nix b/modules/nixos/services/transmission/default.nix similarity index 100% rename from modules/services/transmission/default.nix rename to modules/nixos/services/transmission/default.nix diff --git a/modules/services/vikunja/default.nix b/modules/nixos/services/vikunja/default.nix similarity index 100% rename from modules/services/vikunja/default.nix rename to modules/nixos/services/vikunja/default.nix diff --git a/modules/services/wireguard/default.nix b/modules/nixos/services/wireguard/default.nix similarity index 100% rename from modules/services/wireguard/default.nix rename to modules/nixos/services/wireguard/default.nix diff --git a/modules/services/wireguard/keys/milady/private-key.age b/modules/nixos/services/wireguard/keys/milady/private-key.age similarity index 100% rename from modules/services/wireguard/keys/milady/private-key.age rename to modules/nixos/services/wireguard/keys/milady/private-key.age diff --git a/modules/services/wireguard/keys/richelieu/private-key.age b/modules/nixos/services/wireguard/keys/richelieu/private-key.age similarity index 100% rename from modules/services/wireguard/keys/richelieu/private-key.age rename to modules/nixos/services/wireguard/keys/richelieu/private-key.age diff --git a/modules/services/wireguard/keys/secrets.nix b/modules/nixos/services/wireguard/keys/secrets.nix similarity index 100% rename from modules/services/wireguard/keys/secrets.nix rename to modules/nixos/services/wireguard/keys/secrets.nix diff --git a/modules/services/woodpecker/agent-docker/default.nix b/modules/nixos/services/woodpecker/agent-docker/default.nix similarity index 100% rename from modules/services/woodpecker/agent-docker/default.nix rename to modules/nixos/services/woodpecker/agent-docker/default.nix diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/nixos/services/woodpecker/agent-exec/default.nix similarity index 100% rename from modules/services/woodpecker/agent-exec/default.nix rename to modules/nixos/services/woodpecker/agent-exec/default.nix diff --git a/modules/services/woodpecker/default.nix b/modules/nixos/services/woodpecker/default.nix similarity index 100% rename from modules/services/woodpecker/default.nix rename to modules/nixos/services/woodpecker/default.nix diff --git a/modules/services/woodpecker/server/default.nix b/modules/nixos/services/woodpecker/server/default.nix similarity index 100% rename from modules/services/woodpecker/server/default.nix rename to modules/nixos/services/woodpecker/server/default.nix diff --git a/modules/system/boot/default.nix b/modules/nixos/system/boot/default.nix similarity index 100% rename from modules/system/boot/default.nix rename to modules/nixos/system/boot/default.nix diff --git a/modules/system/default.nix b/modules/nixos/system/default.nix similarity index 100% rename from modules/system/default.nix rename to modules/nixos/system/default.nix diff --git a/modules/system/docker/default.nix b/modules/nixos/system/docker/default.nix similarity index 100% rename from modules/system/docker/default.nix rename to modules/nixos/system/docker/default.nix diff --git a/modules/system/documentation/default.nix b/modules/nixos/system/documentation/default.nix similarity index 100% rename from modules/system/documentation/default.nix rename to modules/nixos/system/documentation/default.nix diff --git a/modules/system/language/default.nix b/modules/nixos/system/language/default.nix similarity index 100% rename from modules/system/language/default.nix rename to modules/nixos/system/language/default.nix diff --git a/modules/system/nix/default.nix b/modules/nixos/system/nix/default.nix similarity index 100% rename from modules/system/nix/default.nix rename to modules/nixos/system/nix/default.nix diff --git a/modules/system/packages/default.nix b/modules/nixos/system/packages/default.nix similarity index 100% rename from modules/system/packages/default.nix rename to modules/nixos/system/packages/default.nix diff --git a/modules/system/podman/default.nix b/modules/nixos/system/podman/default.nix similarity index 100% rename from modules/system/podman/default.nix rename to modules/nixos/system/podman/default.nix diff --git a/modules/system/printing/default.nix b/modules/nixos/system/printing/default.nix similarity index 100% rename from modules/system/printing/default.nix rename to modules/nixos/system/printing/default.nix diff --git a/modules/system/users/default.nix b/modules/nixos/system/users/default.nix similarity index 100% rename from modules/system/users/default.nix rename to modules/nixos/system/users/default.nix diff --git a/modules/system/users/ssh/aramis.pub b/modules/nixos/system/users/ssh/aramis.pub similarity index 100% rename from modules/system/users/ssh/aramis.pub rename to modules/nixos/system/users/ssh/aramis.pub diff --git a/modules/system/users/ssh/shared.pub b/modules/nixos/system/users/ssh/shared.pub similarity index 100% rename from modules/system/users/ssh/shared.pub rename to modules/nixos/system/users/ssh/shared.pub From 65a8f7c4813dd442da29639766e6d6e8ccff5a1d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 9 Nov 2023 13:43:55 +0000 Subject: [PATCH 1098/1588] home: create 'modules/home' folder Consolidating all modules under the same path, to clear out the top-level directory. --- flake/home-manager.nix | 2 +- {home => modules/home}/aliases/default.nix | 0 {home => modules/home}/atuin/default.nix | 0 {home => modules/home}/bat/default.nix | 0 {home => modules/home}/bitwarden/default.nix | 0 {home => modules/home}/bluetooth/default.nix | 0 {home => modules/home}/calibre/default.nix | 0 {home => modules/home}/comma/default.nix | 0 {home => modules/home}/default.nix | 0 {home => modules/home}/dircolors/default.nix | 0 {home => modules/home}/direnv/default.nix | 0 {home => modules/home}/direnv/lib/nix.sh | 0 {home => modules/home}/direnv/lib/postgres.sh | 0 {home => modules/home}/direnv/lib/python.sh | 0 {home => modules/home}/discord/default.nix | 0 {home => modules/home}/documentation/default.nix | 0 {home => modules/home}/feh/default.nix | 0 {home => modules/home}/firefox/default.nix | 0 .../home}/firefox/tridactyl/default.nix | 0 .../home}/firefox/tridactyl/tridactylrc | 0 {home => modules/home}/flameshot/default.nix | 0 {home => modules/home}/fzf/default.nix | 0 {home => modules/home}/gammastep/default.nix | 0 {home => modules/home}/gdb/default.nix | 0 {home => modules/home}/gdb/gdbinit | 0 {home => modules/home}/git/default.ignore | 0 {home => modules/home}/git/default.nix | 0 {home => modules/home}/gpg/default.nix | 0 {home => modules/home}/gtk/default.nix | 0 {home => modules/home}/htop/default.nix | 0 {home => modules/home}/jq/default.nix | 0 {home => modules/home}/mail/accounts/default.nix | 0 {home => modules/home}/mail/default.nix | 0 {home => modules/home}/mail/himalaya/default.nix | 0 {home => modules/home}/mail/msmtp/default.nix | 0 {home => modules/home}/mpv/default.nix | 0 {home => modules/home}/nix-index/default.nix | 0 {home => modules/home}/nix/default.nix | 0 {home => modules/home}/nixpkgs/default.nix | 0 {home => modules/home}/nm-applet/default.nix | 0 {home => modules/home}/packages/default.nix | 0 {home => modules/home}/pager/default.nix | 0 {home => modules/home}/power-alert/default.nix | 0 {home => modules/home}/secrets/default.nix | 0 {home => modules/home}/secrets/github/token.age | Bin {home => modules/home}/secrets/secrets.nix | 0 {home => modules/home}/ssh/default.nix | 0 .../home}/terminal/alacritty/default.nix | 0 {home => modules/home}/terminal/default.nix | 0 {home => modules/home}/terminal/termite/default.nix | 0 {home => modules/home}/tmux/default.nix | 0 {home => modules/home}/udiskie/default.nix | 0 .../home}/vim/after/ftplugin/beancount.vim | 0 {home => modules/home}/vim/after/ftplugin/cmake.vim | 0 .../home}/vim/after/ftplugin/fugitive.vim | 0 .../home}/vim/after/ftplugin/gitcommit.vim | 0 .../home}/vim/after/ftplugin/gitconfig.vim | 0 .../home}/vim/after/ftplugin/haskell.vim | 0 {home => modules/home}/vim/after/ftplugin/help.vim | 0 {home => modules/home}/vim/after/ftplugin/mail.vim | 0 {home => modules/home}/vim/after/ftplugin/make.vim | 0 .../home}/vim/after/ftplugin/markdown.vim | 0 {home => modules/home}/vim/after/ftplugin/netrw.vim | 0 {home => modules/home}/vim/after/ftplugin/nix.vim | 0 .../home}/vim/after/ftplugin/python.vim | 0 {home => modules/home}/vim/after/ftplugin/rust.vim | 0 {home => modules/home}/vim/after/ftplugin/tex.vim | 0 {home => modules/home}/vim/after/ftplugin/tiger.vim | 0 {home => modules/home}/vim/after/ftplugin/yaml.vim | 0 .../home}/vim/after/plugin/mappings/commentary.lua | 0 .../home}/vim/after/plugin/mappings/misc.lua | 0 .../home}/vim/after/plugin/mappings/telescope.lua | 0 .../plugin/mappings/tree-sitter-textobjects.lua | 0 .../home}/vim/after/plugin/mappings/unimpaired.lua | 0 {home => modules/home}/vim/autoload/ftplugined.vim | 0 {home => modules/home}/vim/default.nix | 0 {home => modules/home}/vim/ftdetect/automake.lua | 0 {home => modules/home}/vim/ftdetect/direnv.lua | 0 {home => modules/home}/vim/ftdetect/kbuild.lua | 0 {home => modules/home}/vim/ftdetect/kconfig.lua | 0 {home => modules/home}/vim/ftdetect/tiger.lua | 0 {home => modules/home}/vim/ftdetect/tikz.lua | 0 {home => modules/home}/vim/init.vim | 0 {home => modules/home}/vim/lua/ambroisie/lsp.lua | 0 {home => modules/home}/vim/lua/ambroisie/utils.lua | 0 {home => modules/home}/vim/plugin/abbreviations.lua | 0 {home => modules/home}/vim/plugin/numbertoggle.lua | 0 .../home}/vim/plugin/settings/completion.lua | 0 .../home}/vim/plugin/settings/dressing.lua | 0 .../home}/vim/plugin/settings/fastfold.lua | 0 .../home}/vim/plugin/settings/formatting.lua | 0 {home => modules/home}/vim/plugin/settings/git.lua | 0 .../home}/vim/plugin/settings/lsp-lines.lua | 0 .../home}/vim/plugin/settings/lspconfig.lua | 0 .../home}/vim/plugin/settings/lualine.lua | 0 .../home}/vim/plugin/settings/luasnip.lua | 0 .../home}/vim/plugin/settings/null-ls.lua | 0 {home => modules/home}/vim/plugin/settings/ssh.lua | 0 .../home}/vim/plugin/settings/surround.lua | 0 .../home}/vim/plugin/settings/telescope.lua | 0 .../home}/vim/plugin/settings/tree-sitter.lua | 0 .../home}/vim/plugin/settings/which-key.lua | 0 {home => modules/home}/vim/plugin/signtoggle.lua | 0 {home => modules/home}/wm/cursor/default.nix | 0 {home => modules/home}/wm/default.nix | 0 {home => modules/home}/wm/dunst/default.nix | 0 {home => modules/home}/wm/i3/default.nix | 0 {home => modules/home}/wm/i3bar/default.nix | 0 {home => modules/home}/wm/rofi/default.nix | 0 {home => modules/home}/wm/screen-lock/default.nix | 0 {home => modules/home}/x/default.nix | 0 {home => modules/home}/x/keyboard/default.nix | 0 {home => modules/home}/xdg/default.nix | 0 {home => modules/home}/zathura/default.nix | 0 {home => modules/home}/zsh/completion-styles.zsh | 0 {home => modules/home}/zsh/default.nix | 0 {home => modules/home}/zsh/extra-mappings.zsh | 0 {home => modules/home}/zsh/options.zsh | 0 modules/nixos/home/default.nix | 2 +- 119 files changed, 2 insertions(+), 2 deletions(-) rename {home => modules/home}/aliases/default.nix (100%) rename {home => modules/home}/atuin/default.nix (100%) rename {home => modules/home}/bat/default.nix (100%) rename {home => modules/home}/bitwarden/default.nix (100%) rename {home => modules/home}/bluetooth/default.nix (100%) rename {home => modules/home}/calibre/default.nix (100%) rename {home => modules/home}/comma/default.nix (100%) rename {home => modules/home}/default.nix (100%) rename {home => modules/home}/dircolors/default.nix (100%) rename {home => modules/home}/direnv/default.nix (100%) rename {home => modules/home}/direnv/lib/nix.sh (100%) rename {home => modules/home}/direnv/lib/postgres.sh (100%) rename {home => modules/home}/direnv/lib/python.sh (100%) rename {home => modules/home}/discord/default.nix (100%) rename {home => modules/home}/documentation/default.nix (100%) rename {home => modules/home}/feh/default.nix (100%) rename {home => modules/home}/firefox/default.nix (100%) rename {home => modules/home}/firefox/tridactyl/default.nix (100%) rename {home => modules/home}/firefox/tridactyl/tridactylrc (100%) rename {home => modules/home}/flameshot/default.nix (100%) rename {home => modules/home}/fzf/default.nix (100%) rename {home => modules/home}/gammastep/default.nix (100%) rename {home => modules/home}/gdb/default.nix (100%) rename {home => modules/home}/gdb/gdbinit (100%) rename {home => modules/home}/git/default.ignore (100%) rename {home => modules/home}/git/default.nix (100%) rename {home => modules/home}/gpg/default.nix (100%) rename {home => modules/home}/gtk/default.nix (100%) rename {home => modules/home}/htop/default.nix (100%) rename {home => modules/home}/jq/default.nix (100%) rename {home => modules/home}/mail/accounts/default.nix (100%) rename {home => modules/home}/mail/default.nix (100%) rename {home => modules/home}/mail/himalaya/default.nix (100%) rename {home => modules/home}/mail/msmtp/default.nix (100%) rename {home => modules/home}/mpv/default.nix (100%) rename {home => modules/home}/nix-index/default.nix (100%) rename {home => modules/home}/nix/default.nix (100%) rename {home => modules/home}/nixpkgs/default.nix (100%) rename {home => modules/home}/nm-applet/default.nix (100%) rename {home => modules/home}/packages/default.nix (100%) rename {home => modules/home}/pager/default.nix (100%) rename {home => modules/home}/power-alert/default.nix (100%) rename {home => modules/home}/secrets/default.nix (100%) rename {home => modules/home}/secrets/github/token.age (100%) rename {home => modules/home}/secrets/secrets.nix (100%) rename {home => modules/home}/ssh/default.nix (100%) rename {home => modules/home}/terminal/alacritty/default.nix (100%) rename {home => modules/home}/terminal/default.nix (100%) rename {home => modules/home}/terminal/termite/default.nix (100%) rename {home => modules/home}/tmux/default.nix (100%) rename {home => modules/home}/udiskie/default.nix (100%) rename {home => modules/home}/vim/after/ftplugin/beancount.vim (100%) rename {home => modules/home}/vim/after/ftplugin/cmake.vim (100%) rename {home => modules/home}/vim/after/ftplugin/fugitive.vim (100%) rename {home => modules/home}/vim/after/ftplugin/gitcommit.vim (100%) rename {home => modules/home}/vim/after/ftplugin/gitconfig.vim (100%) rename {home => modules/home}/vim/after/ftplugin/haskell.vim (100%) rename {home => modules/home}/vim/after/ftplugin/help.vim (100%) rename {home => modules/home}/vim/after/ftplugin/mail.vim (100%) rename {home => modules/home}/vim/after/ftplugin/make.vim (100%) rename {home => modules/home}/vim/after/ftplugin/markdown.vim (100%) rename {home => modules/home}/vim/after/ftplugin/netrw.vim (100%) rename {home => modules/home}/vim/after/ftplugin/nix.vim (100%) rename {home => modules/home}/vim/after/ftplugin/python.vim (100%) rename {home => modules/home}/vim/after/ftplugin/rust.vim (100%) rename {home => modules/home}/vim/after/ftplugin/tex.vim (100%) rename {home => modules/home}/vim/after/ftplugin/tiger.vim (100%) rename {home => modules/home}/vim/after/ftplugin/yaml.vim (100%) rename {home => modules/home}/vim/after/plugin/mappings/commentary.lua (100%) rename {home => modules/home}/vim/after/plugin/mappings/misc.lua (100%) rename {home => modules/home}/vim/after/plugin/mappings/telescope.lua (100%) rename {home => modules/home}/vim/after/plugin/mappings/tree-sitter-textobjects.lua (100%) rename {home => modules/home}/vim/after/plugin/mappings/unimpaired.lua (100%) rename {home => modules/home}/vim/autoload/ftplugined.vim (100%) rename {home => modules/home}/vim/default.nix (100%) rename {home => modules/home}/vim/ftdetect/automake.lua (100%) rename {home => modules/home}/vim/ftdetect/direnv.lua (100%) rename {home => modules/home}/vim/ftdetect/kbuild.lua (100%) rename {home => modules/home}/vim/ftdetect/kconfig.lua (100%) rename {home => modules/home}/vim/ftdetect/tiger.lua (100%) rename {home => modules/home}/vim/ftdetect/tikz.lua (100%) rename {home => modules/home}/vim/init.vim (100%) rename {home => modules/home}/vim/lua/ambroisie/lsp.lua (100%) rename {home => modules/home}/vim/lua/ambroisie/utils.lua (100%) rename {home => modules/home}/vim/plugin/abbreviations.lua (100%) rename {home => modules/home}/vim/plugin/numbertoggle.lua (100%) rename {home => modules/home}/vim/plugin/settings/completion.lua (100%) rename {home => modules/home}/vim/plugin/settings/dressing.lua (100%) rename {home => modules/home}/vim/plugin/settings/fastfold.lua (100%) rename {home => modules/home}/vim/plugin/settings/formatting.lua (100%) rename {home => modules/home}/vim/plugin/settings/git.lua (100%) rename {home => modules/home}/vim/plugin/settings/lsp-lines.lua (100%) rename {home => modules/home}/vim/plugin/settings/lspconfig.lua (100%) rename {home => modules/home}/vim/plugin/settings/lualine.lua (100%) rename {home => modules/home}/vim/plugin/settings/luasnip.lua (100%) rename {home => modules/home}/vim/plugin/settings/null-ls.lua (100%) rename {home => modules/home}/vim/plugin/settings/ssh.lua (100%) rename {home => modules/home}/vim/plugin/settings/surround.lua (100%) rename {home => modules/home}/vim/plugin/settings/telescope.lua (100%) rename {home => modules/home}/vim/plugin/settings/tree-sitter.lua (100%) rename {home => modules/home}/vim/plugin/settings/which-key.lua (100%) rename {home => modules/home}/vim/plugin/signtoggle.lua (100%) rename {home => modules/home}/wm/cursor/default.nix (100%) rename {home => modules/home}/wm/default.nix (100%) rename {home => modules/home}/wm/dunst/default.nix (100%) rename {home => modules/home}/wm/i3/default.nix (100%) rename {home => modules/home}/wm/i3bar/default.nix (100%) rename {home => modules/home}/wm/rofi/default.nix (100%) rename {home => modules/home}/wm/screen-lock/default.nix (100%) rename {home => modules/home}/x/default.nix (100%) rename {home => modules/home}/x/keyboard/default.nix (100%) rename {home => modules/home}/xdg/default.nix (100%) rename {home => modules/home}/zathura/default.nix (100%) rename {home => modules/home}/zsh/completion-styles.zsh (100%) rename {home => modules/home}/zsh/default.nix (100%) rename {home => modules/home}/zsh/extra-mappings.zsh (100%) rename {home => modules/home}/zsh/options.zsh (100%) diff --git a/flake/home-manager.nix b/flake/home-manager.nix index 2c5b65a..61c9f6e 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -2,7 +2,7 @@ let defaultModules = [ # Include generic settings - "${self}/home" + "${self}/modules/home" { # Basic user information defaults home.username = lib.mkDefault "ambroisie"; diff --git a/home/aliases/default.nix b/modules/home/aliases/default.nix similarity index 100% rename from home/aliases/default.nix rename to modules/home/aliases/default.nix diff --git a/home/atuin/default.nix b/modules/home/atuin/default.nix similarity index 100% rename from home/atuin/default.nix rename to modules/home/atuin/default.nix diff --git a/home/bat/default.nix b/modules/home/bat/default.nix similarity index 100% rename from home/bat/default.nix rename to modules/home/bat/default.nix diff --git a/home/bitwarden/default.nix b/modules/home/bitwarden/default.nix similarity index 100% rename from home/bitwarden/default.nix rename to modules/home/bitwarden/default.nix diff --git a/home/bluetooth/default.nix b/modules/home/bluetooth/default.nix similarity index 100% rename from home/bluetooth/default.nix rename to modules/home/bluetooth/default.nix diff --git a/home/calibre/default.nix b/modules/home/calibre/default.nix similarity index 100% rename from home/calibre/default.nix rename to modules/home/calibre/default.nix diff --git a/home/comma/default.nix b/modules/home/comma/default.nix similarity index 100% rename from home/comma/default.nix rename to modules/home/comma/default.nix diff --git a/home/default.nix b/modules/home/default.nix similarity index 100% rename from home/default.nix rename to modules/home/default.nix diff --git a/home/dircolors/default.nix b/modules/home/dircolors/default.nix similarity index 100% rename from home/dircolors/default.nix rename to modules/home/dircolors/default.nix diff --git a/home/direnv/default.nix b/modules/home/direnv/default.nix similarity index 100% rename from home/direnv/default.nix rename to modules/home/direnv/default.nix diff --git a/home/direnv/lib/nix.sh b/modules/home/direnv/lib/nix.sh similarity index 100% rename from home/direnv/lib/nix.sh rename to modules/home/direnv/lib/nix.sh diff --git a/home/direnv/lib/postgres.sh b/modules/home/direnv/lib/postgres.sh similarity index 100% rename from home/direnv/lib/postgres.sh rename to modules/home/direnv/lib/postgres.sh diff --git a/home/direnv/lib/python.sh b/modules/home/direnv/lib/python.sh similarity index 100% rename from home/direnv/lib/python.sh rename to modules/home/direnv/lib/python.sh diff --git a/home/discord/default.nix b/modules/home/discord/default.nix similarity index 100% rename from home/discord/default.nix rename to modules/home/discord/default.nix diff --git a/home/documentation/default.nix b/modules/home/documentation/default.nix similarity index 100% rename from home/documentation/default.nix rename to modules/home/documentation/default.nix diff --git a/home/feh/default.nix b/modules/home/feh/default.nix similarity index 100% rename from home/feh/default.nix rename to modules/home/feh/default.nix diff --git a/home/firefox/default.nix b/modules/home/firefox/default.nix similarity index 100% rename from home/firefox/default.nix rename to modules/home/firefox/default.nix diff --git a/home/firefox/tridactyl/default.nix b/modules/home/firefox/tridactyl/default.nix similarity index 100% rename from home/firefox/tridactyl/default.nix rename to modules/home/firefox/tridactyl/default.nix diff --git a/home/firefox/tridactyl/tridactylrc b/modules/home/firefox/tridactyl/tridactylrc similarity index 100% rename from home/firefox/tridactyl/tridactylrc rename to modules/home/firefox/tridactyl/tridactylrc diff --git a/home/flameshot/default.nix b/modules/home/flameshot/default.nix similarity index 100% rename from home/flameshot/default.nix rename to modules/home/flameshot/default.nix diff --git a/home/fzf/default.nix b/modules/home/fzf/default.nix similarity index 100% rename from home/fzf/default.nix rename to modules/home/fzf/default.nix diff --git a/home/gammastep/default.nix b/modules/home/gammastep/default.nix similarity index 100% rename from home/gammastep/default.nix rename to modules/home/gammastep/default.nix diff --git a/home/gdb/default.nix b/modules/home/gdb/default.nix similarity index 100% rename from home/gdb/default.nix rename to modules/home/gdb/default.nix diff --git a/home/gdb/gdbinit b/modules/home/gdb/gdbinit similarity index 100% rename from home/gdb/gdbinit rename to modules/home/gdb/gdbinit diff --git a/home/git/default.ignore b/modules/home/git/default.ignore similarity index 100% rename from home/git/default.ignore rename to modules/home/git/default.ignore diff --git a/home/git/default.nix b/modules/home/git/default.nix similarity index 100% rename from home/git/default.nix rename to modules/home/git/default.nix diff --git a/home/gpg/default.nix b/modules/home/gpg/default.nix similarity index 100% rename from home/gpg/default.nix rename to modules/home/gpg/default.nix diff --git a/home/gtk/default.nix b/modules/home/gtk/default.nix similarity index 100% rename from home/gtk/default.nix rename to modules/home/gtk/default.nix diff --git a/home/htop/default.nix b/modules/home/htop/default.nix similarity index 100% rename from home/htop/default.nix rename to modules/home/htop/default.nix diff --git a/home/jq/default.nix b/modules/home/jq/default.nix similarity index 100% rename from home/jq/default.nix rename to modules/home/jq/default.nix diff --git a/home/mail/accounts/default.nix b/modules/home/mail/accounts/default.nix similarity index 100% rename from home/mail/accounts/default.nix rename to modules/home/mail/accounts/default.nix diff --git a/home/mail/default.nix b/modules/home/mail/default.nix similarity index 100% rename from home/mail/default.nix rename to modules/home/mail/default.nix diff --git a/home/mail/himalaya/default.nix b/modules/home/mail/himalaya/default.nix similarity index 100% rename from home/mail/himalaya/default.nix rename to modules/home/mail/himalaya/default.nix diff --git a/home/mail/msmtp/default.nix b/modules/home/mail/msmtp/default.nix similarity index 100% rename from home/mail/msmtp/default.nix rename to modules/home/mail/msmtp/default.nix diff --git a/home/mpv/default.nix b/modules/home/mpv/default.nix similarity index 100% rename from home/mpv/default.nix rename to modules/home/mpv/default.nix diff --git a/home/nix-index/default.nix b/modules/home/nix-index/default.nix similarity index 100% rename from home/nix-index/default.nix rename to modules/home/nix-index/default.nix diff --git a/home/nix/default.nix b/modules/home/nix/default.nix similarity index 100% rename from home/nix/default.nix rename to modules/home/nix/default.nix diff --git a/home/nixpkgs/default.nix b/modules/home/nixpkgs/default.nix similarity index 100% rename from home/nixpkgs/default.nix rename to modules/home/nixpkgs/default.nix diff --git a/home/nm-applet/default.nix b/modules/home/nm-applet/default.nix similarity index 100% rename from home/nm-applet/default.nix rename to modules/home/nm-applet/default.nix diff --git a/home/packages/default.nix b/modules/home/packages/default.nix similarity index 100% rename from home/packages/default.nix rename to modules/home/packages/default.nix diff --git a/home/pager/default.nix b/modules/home/pager/default.nix similarity index 100% rename from home/pager/default.nix rename to modules/home/pager/default.nix diff --git a/home/power-alert/default.nix b/modules/home/power-alert/default.nix similarity index 100% rename from home/power-alert/default.nix rename to modules/home/power-alert/default.nix diff --git a/home/secrets/default.nix b/modules/home/secrets/default.nix similarity index 100% rename from home/secrets/default.nix rename to modules/home/secrets/default.nix diff --git a/home/secrets/github/token.age b/modules/home/secrets/github/token.age similarity index 100% rename from home/secrets/github/token.age rename to modules/home/secrets/github/token.age diff --git a/home/secrets/secrets.nix b/modules/home/secrets/secrets.nix similarity index 100% rename from home/secrets/secrets.nix rename to modules/home/secrets/secrets.nix diff --git a/home/ssh/default.nix b/modules/home/ssh/default.nix similarity index 100% rename from home/ssh/default.nix rename to modules/home/ssh/default.nix diff --git a/home/terminal/alacritty/default.nix b/modules/home/terminal/alacritty/default.nix similarity index 100% rename from home/terminal/alacritty/default.nix rename to modules/home/terminal/alacritty/default.nix diff --git a/home/terminal/default.nix b/modules/home/terminal/default.nix similarity index 100% rename from home/terminal/default.nix rename to modules/home/terminal/default.nix diff --git a/home/terminal/termite/default.nix b/modules/home/terminal/termite/default.nix similarity index 100% rename from home/terminal/termite/default.nix rename to modules/home/terminal/termite/default.nix diff --git a/home/tmux/default.nix b/modules/home/tmux/default.nix similarity index 100% rename from home/tmux/default.nix rename to modules/home/tmux/default.nix diff --git a/home/udiskie/default.nix b/modules/home/udiskie/default.nix similarity index 100% rename from home/udiskie/default.nix rename to modules/home/udiskie/default.nix diff --git a/home/vim/after/ftplugin/beancount.vim b/modules/home/vim/after/ftplugin/beancount.vim similarity index 100% rename from home/vim/after/ftplugin/beancount.vim rename to modules/home/vim/after/ftplugin/beancount.vim diff --git a/home/vim/after/ftplugin/cmake.vim b/modules/home/vim/after/ftplugin/cmake.vim similarity index 100% rename from home/vim/after/ftplugin/cmake.vim rename to modules/home/vim/after/ftplugin/cmake.vim diff --git a/home/vim/after/ftplugin/fugitive.vim b/modules/home/vim/after/ftplugin/fugitive.vim similarity index 100% rename from home/vim/after/ftplugin/fugitive.vim rename to modules/home/vim/after/ftplugin/fugitive.vim diff --git a/home/vim/after/ftplugin/gitcommit.vim b/modules/home/vim/after/ftplugin/gitcommit.vim similarity index 100% rename from home/vim/after/ftplugin/gitcommit.vim rename to modules/home/vim/after/ftplugin/gitcommit.vim diff --git a/home/vim/after/ftplugin/gitconfig.vim b/modules/home/vim/after/ftplugin/gitconfig.vim similarity index 100% rename from home/vim/after/ftplugin/gitconfig.vim rename to modules/home/vim/after/ftplugin/gitconfig.vim diff --git a/home/vim/after/ftplugin/haskell.vim b/modules/home/vim/after/ftplugin/haskell.vim similarity index 100% rename from home/vim/after/ftplugin/haskell.vim rename to modules/home/vim/after/ftplugin/haskell.vim diff --git a/home/vim/after/ftplugin/help.vim b/modules/home/vim/after/ftplugin/help.vim similarity index 100% rename from home/vim/after/ftplugin/help.vim rename to modules/home/vim/after/ftplugin/help.vim diff --git a/home/vim/after/ftplugin/mail.vim b/modules/home/vim/after/ftplugin/mail.vim similarity index 100% rename from home/vim/after/ftplugin/mail.vim rename to modules/home/vim/after/ftplugin/mail.vim diff --git a/home/vim/after/ftplugin/make.vim b/modules/home/vim/after/ftplugin/make.vim similarity index 100% rename from home/vim/after/ftplugin/make.vim rename to modules/home/vim/after/ftplugin/make.vim diff --git a/home/vim/after/ftplugin/markdown.vim b/modules/home/vim/after/ftplugin/markdown.vim similarity index 100% rename from home/vim/after/ftplugin/markdown.vim rename to modules/home/vim/after/ftplugin/markdown.vim diff --git a/home/vim/after/ftplugin/netrw.vim b/modules/home/vim/after/ftplugin/netrw.vim similarity index 100% rename from home/vim/after/ftplugin/netrw.vim rename to modules/home/vim/after/ftplugin/netrw.vim diff --git a/home/vim/after/ftplugin/nix.vim b/modules/home/vim/after/ftplugin/nix.vim similarity index 100% rename from home/vim/after/ftplugin/nix.vim rename to modules/home/vim/after/ftplugin/nix.vim diff --git a/home/vim/after/ftplugin/python.vim b/modules/home/vim/after/ftplugin/python.vim similarity index 100% rename from home/vim/after/ftplugin/python.vim rename to modules/home/vim/after/ftplugin/python.vim diff --git a/home/vim/after/ftplugin/rust.vim b/modules/home/vim/after/ftplugin/rust.vim similarity index 100% rename from home/vim/after/ftplugin/rust.vim rename to modules/home/vim/after/ftplugin/rust.vim diff --git a/home/vim/after/ftplugin/tex.vim b/modules/home/vim/after/ftplugin/tex.vim similarity index 100% rename from home/vim/after/ftplugin/tex.vim rename to modules/home/vim/after/ftplugin/tex.vim diff --git a/home/vim/after/ftplugin/tiger.vim b/modules/home/vim/after/ftplugin/tiger.vim similarity index 100% rename from home/vim/after/ftplugin/tiger.vim rename to modules/home/vim/after/ftplugin/tiger.vim diff --git a/home/vim/after/ftplugin/yaml.vim b/modules/home/vim/after/ftplugin/yaml.vim similarity index 100% rename from home/vim/after/ftplugin/yaml.vim rename to modules/home/vim/after/ftplugin/yaml.vim diff --git a/home/vim/after/plugin/mappings/commentary.lua b/modules/home/vim/after/plugin/mappings/commentary.lua similarity index 100% rename from home/vim/after/plugin/mappings/commentary.lua rename to modules/home/vim/after/plugin/mappings/commentary.lua diff --git a/home/vim/after/plugin/mappings/misc.lua b/modules/home/vim/after/plugin/mappings/misc.lua similarity index 100% rename from home/vim/after/plugin/mappings/misc.lua rename to modules/home/vim/after/plugin/mappings/misc.lua diff --git a/home/vim/after/plugin/mappings/telescope.lua b/modules/home/vim/after/plugin/mappings/telescope.lua similarity index 100% rename from home/vim/after/plugin/mappings/telescope.lua rename to modules/home/vim/after/plugin/mappings/telescope.lua diff --git a/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua b/modules/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua similarity index 100% rename from home/vim/after/plugin/mappings/tree-sitter-textobjects.lua rename to modules/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua diff --git a/home/vim/after/plugin/mappings/unimpaired.lua b/modules/home/vim/after/plugin/mappings/unimpaired.lua similarity index 100% rename from home/vim/after/plugin/mappings/unimpaired.lua rename to modules/home/vim/after/plugin/mappings/unimpaired.lua diff --git a/home/vim/autoload/ftplugined.vim b/modules/home/vim/autoload/ftplugined.vim similarity index 100% rename from home/vim/autoload/ftplugined.vim rename to modules/home/vim/autoload/ftplugined.vim diff --git a/home/vim/default.nix b/modules/home/vim/default.nix similarity index 100% rename from home/vim/default.nix rename to modules/home/vim/default.nix diff --git a/home/vim/ftdetect/automake.lua b/modules/home/vim/ftdetect/automake.lua similarity index 100% rename from home/vim/ftdetect/automake.lua rename to modules/home/vim/ftdetect/automake.lua diff --git a/home/vim/ftdetect/direnv.lua b/modules/home/vim/ftdetect/direnv.lua similarity index 100% rename from home/vim/ftdetect/direnv.lua rename to modules/home/vim/ftdetect/direnv.lua diff --git a/home/vim/ftdetect/kbuild.lua b/modules/home/vim/ftdetect/kbuild.lua similarity index 100% rename from home/vim/ftdetect/kbuild.lua rename to modules/home/vim/ftdetect/kbuild.lua diff --git a/home/vim/ftdetect/kconfig.lua b/modules/home/vim/ftdetect/kconfig.lua similarity index 100% rename from home/vim/ftdetect/kconfig.lua rename to modules/home/vim/ftdetect/kconfig.lua diff --git a/home/vim/ftdetect/tiger.lua b/modules/home/vim/ftdetect/tiger.lua similarity index 100% rename from home/vim/ftdetect/tiger.lua rename to modules/home/vim/ftdetect/tiger.lua diff --git a/home/vim/ftdetect/tikz.lua b/modules/home/vim/ftdetect/tikz.lua similarity index 100% rename from home/vim/ftdetect/tikz.lua rename to modules/home/vim/ftdetect/tikz.lua diff --git a/home/vim/init.vim b/modules/home/vim/init.vim similarity index 100% rename from home/vim/init.vim rename to modules/home/vim/init.vim diff --git a/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua similarity index 100% rename from home/vim/lua/ambroisie/lsp.lua rename to modules/home/vim/lua/ambroisie/lsp.lua diff --git a/home/vim/lua/ambroisie/utils.lua b/modules/home/vim/lua/ambroisie/utils.lua similarity index 100% rename from home/vim/lua/ambroisie/utils.lua rename to modules/home/vim/lua/ambroisie/utils.lua diff --git a/home/vim/plugin/abbreviations.lua b/modules/home/vim/plugin/abbreviations.lua similarity index 100% rename from home/vim/plugin/abbreviations.lua rename to modules/home/vim/plugin/abbreviations.lua diff --git a/home/vim/plugin/numbertoggle.lua b/modules/home/vim/plugin/numbertoggle.lua similarity index 100% rename from home/vim/plugin/numbertoggle.lua rename to modules/home/vim/plugin/numbertoggle.lua diff --git a/home/vim/plugin/settings/completion.lua b/modules/home/vim/plugin/settings/completion.lua similarity index 100% rename from home/vim/plugin/settings/completion.lua rename to modules/home/vim/plugin/settings/completion.lua diff --git a/home/vim/plugin/settings/dressing.lua b/modules/home/vim/plugin/settings/dressing.lua similarity index 100% rename from home/vim/plugin/settings/dressing.lua rename to modules/home/vim/plugin/settings/dressing.lua diff --git a/home/vim/plugin/settings/fastfold.lua b/modules/home/vim/plugin/settings/fastfold.lua similarity index 100% rename from home/vim/plugin/settings/fastfold.lua rename to modules/home/vim/plugin/settings/fastfold.lua diff --git a/home/vim/plugin/settings/formatting.lua b/modules/home/vim/plugin/settings/formatting.lua similarity index 100% rename from home/vim/plugin/settings/formatting.lua rename to modules/home/vim/plugin/settings/formatting.lua diff --git a/home/vim/plugin/settings/git.lua b/modules/home/vim/plugin/settings/git.lua similarity index 100% rename from home/vim/plugin/settings/git.lua rename to modules/home/vim/plugin/settings/git.lua diff --git a/home/vim/plugin/settings/lsp-lines.lua b/modules/home/vim/plugin/settings/lsp-lines.lua similarity index 100% rename from home/vim/plugin/settings/lsp-lines.lua rename to modules/home/vim/plugin/settings/lsp-lines.lua diff --git a/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua similarity index 100% rename from home/vim/plugin/settings/lspconfig.lua rename to modules/home/vim/plugin/settings/lspconfig.lua diff --git a/home/vim/plugin/settings/lualine.lua b/modules/home/vim/plugin/settings/lualine.lua similarity index 100% rename from home/vim/plugin/settings/lualine.lua rename to modules/home/vim/plugin/settings/lualine.lua diff --git a/home/vim/plugin/settings/luasnip.lua b/modules/home/vim/plugin/settings/luasnip.lua similarity index 100% rename from home/vim/plugin/settings/luasnip.lua rename to modules/home/vim/plugin/settings/luasnip.lua diff --git a/home/vim/plugin/settings/null-ls.lua b/modules/home/vim/plugin/settings/null-ls.lua similarity index 100% rename from home/vim/plugin/settings/null-ls.lua rename to modules/home/vim/plugin/settings/null-ls.lua diff --git a/home/vim/plugin/settings/ssh.lua b/modules/home/vim/plugin/settings/ssh.lua similarity index 100% rename from home/vim/plugin/settings/ssh.lua rename to modules/home/vim/plugin/settings/ssh.lua diff --git a/home/vim/plugin/settings/surround.lua b/modules/home/vim/plugin/settings/surround.lua similarity index 100% rename from home/vim/plugin/settings/surround.lua rename to modules/home/vim/plugin/settings/surround.lua diff --git a/home/vim/plugin/settings/telescope.lua b/modules/home/vim/plugin/settings/telescope.lua similarity index 100% rename from home/vim/plugin/settings/telescope.lua rename to modules/home/vim/plugin/settings/telescope.lua diff --git a/home/vim/plugin/settings/tree-sitter.lua b/modules/home/vim/plugin/settings/tree-sitter.lua similarity index 100% rename from home/vim/plugin/settings/tree-sitter.lua rename to modules/home/vim/plugin/settings/tree-sitter.lua diff --git a/home/vim/plugin/settings/which-key.lua b/modules/home/vim/plugin/settings/which-key.lua similarity index 100% rename from home/vim/plugin/settings/which-key.lua rename to modules/home/vim/plugin/settings/which-key.lua diff --git a/home/vim/plugin/signtoggle.lua b/modules/home/vim/plugin/signtoggle.lua similarity index 100% rename from home/vim/plugin/signtoggle.lua rename to modules/home/vim/plugin/signtoggle.lua diff --git a/home/wm/cursor/default.nix b/modules/home/wm/cursor/default.nix similarity index 100% rename from home/wm/cursor/default.nix rename to modules/home/wm/cursor/default.nix diff --git a/home/wm/default.nix b/modules/home/wm/default.nix similarity index 100% rename from home/wm/default.nix rename to modules/home/wm/default.nix diff --git a/home/wm/dunst/default.nix b/modules/home/wm/dunst/default.nix similarity index 100% rename from home/wm/dunst/default.nix rename to modules/home/wm/dunst/default.nix diff --git a/home/wm/i3/default.nix b/modules/home/wm/i3/default.nix similarity index 100% rename from home/wm/i3/default.nix rename to modules/home/wm/i3/default.nix diff --git a/home/wm/i3bar/default.nix b/modules/home/wm/i3bar/default.nix similarity index 100% rename from home/wm/i3bar/default.nix rename to modules/home/wm/i3bar/default.nix diff --git a/home/wm/rofi/default.nix b/modules/home/wm/rofi/default.nix similarity index 100% rename from home/wm/rofi/default.nix rename to modules/home/wm/rofi/default.nix diff --git a/home/wm/screen-lock/default.nix b/modules/home/wm/screen-lock/default.nix similarity index 100% rename from home/wm/screen-lock/default.nix rename to modules/home/wm/screen-lock/default.nix diff --git a/home/x/default.nix b/modules/home/x/default.nix similarity index 100% rename from home/x/default.nix rename to modules/home/x/default.nix diff --git a/home/x/keyboard/default.nix b/modules/home/x/keyboard/default.nix similarity index 100% rename from home/x/keyboard/default.nix rename to modules/home/x/keyboard/default.nix diff --git a/home/xdg/default.nix b/modules/home/xdg/default.nix similarity index 100% rename from home/xdg/default.nix rename to modules/home/xdg/default.nix diff --git a/home/zathura/default.nix b/modules/home/zathura/default.nix similarity index 100% rename from home/zathura/default.nix rename to modules/home/zathura/default.nix diff --git a/home/zsh/completion-styles.zsh b/modules/home/zsh/completion-styles.zsh similarity index 100% rename from home/zsh/completion-styles.zsh rename to modules/home/zsh/completion-styles.zsh diff --git a/home/zsh/default.nix b/modules/home/zsh/default.nix similarity index 100% rename from home/zsh/default.nix rename to modules/home/zsh/default.nix diff --git a/home/zsh/extra-mappings.zsh b/modules/home/zsh/extra-mappings.zsh similarity index 100% rename from home/zsh/extra-mappings.zsh rename to modules/home/zsh/extra-mappings.zsh diff --git a/home/zsh/options.zsh b/modules/home/zsh/options.zsh similarity index 100% rename from home/zsh/options.zsh rename to modules/home/zsh/options.zsh diff --git a/modules/nixos/home/default.nix b/modules/nixos/home/default.nix index 4849ab2..fe00704 100644 --- a/modules/nixos/home/default.nix +++ b/modules/nixos/home/default.nix @@ -14,7 +14,7 @@ in config = lib.mkIf cfg.enable { home-manager = { # Not a fan of out-of-directory imports, but this is a good exception - users.${config.my.user.name} = import "${inputs.self}/home"; + users.${config.my.user.name} = import "${inputs.self}/modules/home"; # Nix Flakes compatibility useGlobalPkgs = true; From 570349e80ffe18f991593e74642b738119411117 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 9 Nov 2023 13:47:30 +0000 Subject: [PATCH 1099/1588] nixos: profiles: move from top-level My profiles are actually just "special" NixOS modules in that they orchestrate settings that usually span the NixOS/home-manager boundary, or otherwise set up configurations from multiple modules at once. --- flake/nixos.nix | 2 -- modules/nixos/default.nix | 1 + {profiles => modules/nixos/profiles}/bluetooth/default.nix | 0 {profiles => modules/nixos/profiles}/default.nix | 0 {profiles => modules/nixos/profiles}/devices/default.nix | 0 {profiles => modules/nixos/profiles}/gtk/default.nix | 0 {profiles => modules/nixos/profiles}/laptop/default.nix | 0 {profiles => modules/nixos/profiles}/wm/default.nix | 0 {profiles => modules/nixos/profiles}/x/default.nix | 0 9 files changed, 1 insertion(+), 2 deletions(-) rename {profiles => modules/nixos/profiles}/bluetooth/default.nix (100%) rename {profiles => modules/nixos/profiles}/default.nix (100%) rename {profiles => modules/nixos/profiles}/devices/default.nix (100%) rename {profiles => modules/nixos/profiles}/gtk/default.nix (100%) rename {profiles => modules/nixos/profiles}/laptop/default.nix (100%) rename {profiles => modules/nixos/profiles}/wm/default.nix (100%) rename {profiles => modules/nixos/profiles}/x/default.nix (100%) diff --git a/flake/nixos.nix b/flake/nixos.nix index 541e658..fe124d7 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -14,8 +14,6 @@ let } # Include generic settings "${self}/modules/nixos" - # Include bundles of settings - "${self}/profiles" ]; buildHost = name: system: lib.nixosSystem { diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 2eaa2e6..3648631 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -5,6 +5,7 @@ imports = [ ./hardware ./home + ./profiles ./programs ./secrets ./services diff --git a/profiles/bluetooth/default.nix b/modules/nixos/profiles/bluetooth/default.nix similarity index 100% rename from profiles/bluetooth/default.nix rename to modules/nixos/profiles/bluetooth/default.nix diff --git a/profiles/default.nix b/modules/nixos/profiles/default.nix similarity index 100% rename from profiles/default.nix rename to modules/nixos/profiles/default.nix diff --git a/profiles/devices/default.nix b/modules/nixos/profiles/devices/default.nix similarity index 100% rename from profiles/devices/default.nix rename to modules/nixos/profiles/devices/default.nix diff --git a/profiles/gtk/default.nix b/modules/nixos/profiles/gtk/default.nix similarity index 100% rename from profiles/gtk/default.nix rename to modules/nixos/profiles/gtk/default.nix diff --git a/profiles/laptop/default.nix b/modules/nixos/profiles/laptop/default.nix similarity index 100% rename from profiles/laptop/default.nix rename to modules/nixos/profiles/laptop/default.nix diff --git a/profiles/wm/default.nix b/modules/nixos/profiles/wm/default.nix similarity index 100% rename from profiles/wm/default.nix rename to modules/nixos/profiles/wm/default.nix diff --git a/profiles/x/default.nix b/modules/nixos/profiles/x/default.nix similarity index 100% rename from profiles/x/default.nix rename to modules/nixos/profiles/x/default.nix From 11c8d4623cf0ac5e18873f23a49f03321b0a3dcc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 17 Nov 2023 16:15:53 +0000 Subject: [PATCH 1100/1588] home: direnv: add 'android' library file --- modules/home/direnv/lib/android.sh | 58 ++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 modules/home/direnv/lib/android.sh diff --git a/modules/home/direnv/lib/android.sh b/modules/home/direnv/lib/android.sh new file mode 100644 index 0000000..b25d675 --- /dev/null +++ b/modules/home/direnv/lib/android.sh @@ -0,0 +1,58 @@ +#shellcheck shell=bash + +# shellcheck disable=2155 +use_android() { + if [ -z "$ANDROID_HOME" ]; then + log_error "use_android: 'ANDROID_HOME' is not defined" + return 1 + fi + + _use_android_find_latest() { + local path="$1" + local version + + version="$(semver_search "$path" "" "")" + if [ -z "$version" ]; then + log_error "use_android: did not find any version at '$path'" + return 1 + fi + + printf '%s' "$version" + } + + # Default to the latest version found + local ndk_version="$(_use_android_find_latest "$ANDROID_HOME/ndk" || return 1)" + local build_tools_version="$(_use_android_find_latest "$ANDROID_SDK_HOME/build-tools" || return 1)" + + unset -f _use_android_find_latest + + # Allow changing the default version through a command line switch + while true; do + case "$1" in + -b|--build-tools) + build_tools_version="$2" + shift 2 + ;; + -n|--ndk) + ndk_version="$2" + shift 2 + ;; + --) + shift + break + ;; + *) + break + ;; + esac + done + + export ANDROID_SDK_HOME="$ANDROID_HOME" + export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$ndk_version" + export ANDROID_ROOT="$ANDROID_HOME" + export ANDROID_SDK_ROOT="$ANDROID_SDK_HOME" + export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME" + + PATH_add "$ANDROID_NDK_HOME" + PATH_add "$ANDROID_SDK_HOME/build-tools/$build_tools_version" +} From 00ee4629fc105320ebcd2e82879808fdb3336488 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 17 Nov 2023 16:25:44 +0000 Subject: [PATCH 1101/1588] hosts: homes: mousqueton: update 'LD_PRELOAD' I was getting dynamic linker errors with the previous value. --- hosts/homes/ambroisie@mousqueton/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 7fcd356..8294ff4 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -6,11 +6,11 @@ # Some tooling (e.g: SSH) need to use this library home.sessionVariables = { - LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; + LD_PRELOAD = "/usr/grte/v5/lib64/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; }; systemd.user.sessionVariables = { - LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; + LD_PRELOAD = "/usr/grte/v5/lib64/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; }; programs.git.package = lib.mkForce pkgs.emptyDirectory; From e04be2d13074152afe29ed2333047760615ee691 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 18 Nov 2023 20:11:56 +0000 Subject: [PATCH 1102/1588] ci: remove deprecated syntax --- .woodpecker/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.woodpecker/check.yml b/.woodpecker/check.yml index d7c5dff..aff6e84 100644 --- a/.woodpecker/check.yml +++ b/.woodpecker/check.yml @@ -1,7 +1,7 @@ labels: backend: local -pipeline: +steps: - name: nix flake check image: bash commands: From c466fd25b4bf1ae6ba8fa7fe5ff785e0928d1943 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 18 Nov 2023 20:17:18 +0000 Subject: [PATCH 1103/1588] templates: fix deprecated CI syntax --- templates/c++-cmake/.woodpecker/check.yml | 2 +- templates/c++-meson/.woodpecker/check.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/c++-cmake/.woodpecker/check.yml b/templates/c++-cmake/.woodpecker/check.yml index c3b00ef..628e491 100644 --- a/templates/c++-cmake/.woodpecker/check.yml +++ b/templates/c++-cmake/.woodpecker/check.yml @@ -1,7 +1,7 @@ labels: type: exec -pipeline: +steps: - name: nix flake check image: bash commands: diff --git a/templates/c++-meson/.woodpecker/check.yml b/templates/c++-meson/.woodpecker/check.yml index c3b00ef..628e491 100644 --- a/templates/c++-meson/.woodpecker/check.yml +++ b/templates/c++-meson/.woodpecker/check.yml @@ -1,7 +1,7 @@ labels: type: exec -pipeline: +steps: - name: nix flake check image: bash commands: From 60d941b40b6d37a3a58000d86d1170655f39d5d9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 21 Nov 2023 00:15:02 +0100 Subject: [PATCH 1104/1588] flake: bump inputs My tandoor-recipes fix was merged upstream, so remove the overlay. And because of the recent postgres bump for 23.11, `ensureDBOwnership` is the new way of dealing with DB permissions [1]. This means I had to fix manually migrate my `gitea` DB and make it match the DB user. [1]: https://github.com/NixOS/nixpkgs/pull/266270 --- flake.lock | 30 +++++++-------- modules/nixos/services/gitea/default.nix | 1 + .../bump-allauth.patch | 38 ------------------- .../tandoor-recipes-bump-allauth/default.nix | 9 ----- 4 files changed, 16 insertions(+), 62 deletions(-) delete mode 100644 overlays/tandoor-recipes-bump-allauth/bump-allauth.patch delete mode 100644 overlays/tandoor-recipes-bump-allauth/default.nix diff --git a/flake.lock b/flake.lock index d2f2e6d..63bc1f3 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1698579227, - "narHash": "sha256-KVWjFZky+gRuWennKsbo6cWyo7c/z/VgCte5pR9pEKg=", + "lastModified": 1698882062, + "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f76e870d64779109e41370848074ac4eaa1606ec", + "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1698670511, - "narHash": "sha256-jQIu3UhBMPHXzVkHQO1O2gg8SVo5lqAVoC6mOaLQcLQ=", + "lastModified": 1700419052, + "narHash": "sha256-U6a5f9ynbzcp8PMIHULbHPkbwp7YfPKOYmTcLqlalD4=", "owner": "nix-community", "repo": "home-manager", - "rev": "8e5416b478e465985eec274bc3a018024435c106", + "rev": "993fb02d20760067b8ee19c713d94cee07037759", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1698611440, - "narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=", + "lastModified": 1700390070, + "narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735", + "rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1698745553, - "narHash": "sha256-Fdip7ewCtZTjOu7ATDFUAy3OqrgcyvzDElLXhr4YmmI=", + "lastModified": 1700477143, + "narHash": "sha256-43dtFRTcFxQJXmy0jvXGDttXD7fAuGIZ0D8frdIg84M=", "owner": "nix-community", "repo": "NUR", - "rev": "dfbf198236d40e9741db76936088f05107e19013", + "rev": "3a7dd170a152b8525e64e1a21b3f95d402ead2b8", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1698227354, - "narHash": "sha256-Fi5H9jbaQLmLw9qBi/mkR33CoFjNbobo5xWdX4tKz1Q=", + "lastModified": 1700064067, + "narHash": "sha256-1ZWNDzhu8UlVCK7+DUN9dVQfiHX1bv6OQP9VxstY/gs=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "bd38df3d508dfcdff52cd243d297f218ed2257bf", + "rev": "e558068cba67b23b4fbc5537173dbb43748a17e8", "type": "github" }, "original": { diff --git a/modules/nixos/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix index 28a448d..00ba941 100644 --- a/modules/nixos/services/gitea/default.nix +++ b/modules/nixos/services/gitea/default.nix @@ -65,6 +65,7 @@ in database = { type = "postgres"; # Automatic setup user = "git"; # User needs to be the same as gitea user + name = "git"; # Name must be the same as user for `ensureDBOwnership` }; # NixOS module uses `gitea dump` to backup repositories and the database, diff --git a/overlays/tandoor-recipes-bump-allauth/bump-allauth.patch b/overlays/tandoor-recipes-bump-allauth/bump-allauth.patch deleted file mode 100644 index 84dfaee..0000000 --- a/overlays/tandoor-recipes-bump-allauth/bump-allauth.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 8f66f5c3ca61751a80cc133ff4c59019d6fca406 Mon Sep 17 00:00:00 2001 -From: Bruno BELANYI <bruno@belanyi.fr> -Date: Tue, 31 Oct 2023 12:15:30 +0000 -Subject: [PATCH] Bump django-allauth from 0.54.0 to 0.58.1 - -See the backwards incompatible changes [1]. - -[1]: https://docs.allauth.org/en/latest/release-notes/recent.html#id10 ---- - recipes/settings.py | 1 + - requirements.txt | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/recipes/settings.py b/recipes/settings.py -index df2c2b1de..b836ea656 100644 ---- a/recipes/settings.py -+++ b/recipes/settings.py -@@ -218,6 +218,7 @@ - 'django.middleware.locale.LocaleMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'cookbook.helper.scope_middleware.ScopeMiddleware', -+ 'allauth.account.middleware.AccountMiddleware', - ] - - if DEBUG_TOOLBAR: -diff --git a/requirements.txt b/requirements.txt -index 26d81b471..09ed2381a 100644 ---- a/requirements.txt -+++ b/requirements.txt -@@ -29,7 +29,7 @@ microdata==0.8.0 - Jinja2==3.1.2 - django-webpack-loader==1.8.1 - git+https://github.com/BITSOLVER/django-js-reverse@071e304fd600107bc64bbde6f2491f1fe049ec82 --django-allauth==0.54.0 -+django-allauth==0.58.1 - recipe-scrapers==14.36.1 - django-scopes==2.0.0 - pytest==7.3.1 diff --git a/overlays/tandoor-recipes-bump-allauth/default.nix b/overlays/tandoor-recipes-bump-allauth/default.nix deleted file mode 100644 index dfbfec9..0000000 --- a/overlays/tandoor-recipes-bump-allauth/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -_self: prev: -{ - tandoor-recipes = prev.tandoor-recipes.overrideAttrs (oa: { - patches = (oa.patches or [ ]) ++ [ - # https://github.com/TandoorRecipes/recipes/pull/2706 - ./bump-allauth.patch - ]; - }); -} From b48d81451d84176782752bcb0631e27fb49de779 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 21 Nov 2023 00:18:29 +0100 Subject: [PATCH 1105/1588] nixos: services: migrate to 'ensureDBOwnership' `ensurePermissions` is deprecated, and doesn't work on PostgreSQL 15. --- modules/nixos/services/drone/server/default.nix | 4 +--- modules/nixos/services/nextcloud/default.nix | 2 +- modules/nixos/services/paperless/default.nix | 2 +- modules/nixos/services/quassel/default.nix | 2 +- modules/nixos/services/tandoor-recipes/default.nix | 2 +- modules/nixos/services/vikunja/default.nix | 2 +- modules/nixos/services/woodpecker/server/default.nix | 4 +--- 7 files changed, 7 insertions(+), 11 deletions(-) diff --git a/modules/nixos/services/drone/server/default.nix b/modules/nixos/services/drone/server/default.nix index 0f56d29..d651f85 100644 --- a/modules/nixos/services/drone/server/default.nix +++ b/modules/nixos/services/drone/server/default.nix @@ -41,9 +41,7 @@ in ensureDatabases = [ "drone" ]; ensureUsers = [{ name = "drone"; - ensurePermissions = { - "DATABASE drone" = "ALL PRIVILEGES"; - }; + ensureDBOwnership = true; }]; }; diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index 260e73e..65b7234 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -57,7 +57,7 @@ in ensureUsers = [ { name = "nextcloud"; - ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES"; + ensureDBOwnership = true; } ]; }; diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index 1ca1f66..90f6b0c 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -131,7 +131,7 @@ in ensureUsers = [ { name = "paperless"; - ensurePermissions."DATABASE paperless" = "ALL PRIVILEGES"; + ensureDBOwnership = true; } ]; }; diff --git a/modules/nixos/services/quassel/default.nix b/modules/nixos/services/quassel/default.nix index ec686e1..695f9e0 100644 --- a/modules/nixos/services/quassel/default.nix +++ b/modules/nixos/services/quassel/default.nix @@ -39,7 +39,7 @@ in ensureUsers = [ { name = "quassel"; - ensurePermissions."DATABASE quassel" = "ALL PRIVILEGES"; + ensureDBOwnership = true; } ]; # Insecure, I don't care. diff --git a/modules/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix index 83177c8..541e198 100644 --- a/modules/nixos/services/tandoor-recipes/default.nix +++ b/modules/nixos/services/tandoor-recipes/default.nix @@ -65,7 +65,7 @@ in ensureUsers = [ { name = "tandoor_recipes"; - ensurePermissions."DATABASE tandoor_recipes" = "ALL PRIVILEGES"; + ensureDBOwnership = true; } ]; }; diff --git a/modules/nixos/services/vikunja/default.nix b/modules/nixos/services/vikunja/default.nix index 1cdef5f..8c051b0 100644 --- a/modules/nixos/services/vikunja/default.nix +++ b/modules/nixos/services/vikunja/default.nix @@ -109,7 +109,7 @@ in ensureUsers = [ { name = "vikunja"; - ensurePermissions = { "DATABASE vikunja" = "ALL PRIVILEGES"; }; + ensureDBOwnership = true; } ]; }; diff --git a/modules/nixos/services/woodpecker/server/default.nix b/modules/nixos/services/woodpecker/server/default.nix index d9f723b..cebbc9b 100644 --- a/modules/nixos/services/woodpecker/server/default.nix +++ b/modules/nixos/services/woodpecker/server/default.nix @@ -48,9 +48,7 @@ in ensureDatabases = [ "woodpecker" ]; ensureUsers = [{ name = "woodpecker"; - ensurePermissions = { - "DATABASE woodpecker" = "ALL PRIVILEGES"; - }; + ensureDBOwnership = true; }]; }; From 3fb8734c5670559feec8a2ce46beee0723171708 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 27 Nov 2023 11:18:26 +0000 Subject: [PATCH 1106/1588] home: direnv: fix 'use_android' Don't rely on `ANDROID_SDK_HOME` if it hasn't yet been defined. --- modules/home/direnv/lib/android.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/direnv/lib/android.sh b/modules/home/direnv/lib/android.sh index b25d675..3f730c2 100644 --- a/modules/home/direnv/lib/android.sh +++ b/modules/home/direnv/lib/android.sh @@ -22,7 +22,7 @@ use_android() { # Default to the latest version found local ndk_version="$(_use_android_find_latest "$ANDROID_HOME/ndk" || return 1)" - local build_tools_version="$(_use_android_find_latest "$ANDROID_SDK_HOME/build-tools" || return 1)" + local build_tools_version="$(_use_android_find_latest "$ANDROID_HOME/build-tools" || return 1)" unset -f _use_android_find_latest @@ -54,5 +54,5 @@ use_android() { export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME" PATH_add "$ANDROID_NDK_HOME" - PATH_add "$ANDROID_SDK_HOME/build-tools/$build_tools_version" + PATH_add "$ANDROID_HOME/build-tools/$build_tools_version" } From 302cb907efd08c56467e12df4c3e78a71a44f0ff Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 28 Nov 2023 20:28:12 +0000 Subject: [PATCH 1107/1588] home: wm: i3: make blueman device manager floating --- modules/home/wm/i3/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/wm/i3/default.nix b/modules/home/wm/i3/default.nix index d1dbe2c..b9661f3 100644 --- a/modules/home/wm/i3/default.nix +++ b/modules/home/wm/i3/default.nix @@ -129,6 +129,7 @@ in { class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; } { class = "^Pavucontrol.*$"; } { class = "^Arandr$"; } + { class = ".?blueman-manager.*$"; } ]; }; From 97f5bf504c1b67a3a1d82c1b889f31b227e0fc96 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 28 Nov 2023 09:28:12 +0000 Subject: [PATCH 1108/1588] hosts: homes: mousqueton: remove 'LD_PRELOAD' It looks like this isn't needed anymore. --- hosts/homes/ambroisie@mousqueton/default.nix | 9 --------- 1 file changed, 9 deletions(-) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 8294ff4..06ee817 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -4,15 +4,6 @@ # Google specific configuration home.homeDirectory = "/usr/local/google/home/ambroisie"; - # Some tooling (e.g: SSH) need to use this library - home.sessionVariables = { - LD_PRELOAD = "/usr/grte/v5/lib64/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; - }; - - systemd.user.sessionVariables = { - LD_PRELOAD = "/usr/grte/v5/lib64/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD"; - }; - programs.git.package = lib.mkForce pkgs.emptyDirectory; services.gpg-agent.enable = lib.mkForce false; From ec79be2a451f9af5464778f54f662626021dbb7b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 28 Nov 2023 14:35:12 +0000 Subject: [PATCH 1109/1588] home: xdg: set 'ANDROID_USER_HOME' --- modules/home/xdg/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index af9ec18..3bba198 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -39,6 +39,7 @@ in # I want a tidier home config.home.sessionVariables = with config.xdg; lib.mkIf cfg.enable { ANDROID_HOME = "${dataHome}/android"; + ANDROID_USER_HOME = "${configHome}/android"; CARGO_HOME = "${dataHome}/cargo"; DOCKER_CONFIG = "${configHome}/docker"; GDBHISTFILE = "${dataHome}/gdb/gdb_history"; From f4cc63c711e69d2e07319d29b6f472c3128e3544 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 28 Nov 2023 14:39:48 +0000 Subject: [PATCH 1110/1588] home: direnv: remove 'ANDROID_SDK_HOME' Turns out this is supposed to be used for configuration, and it makes some tools error out due to a sanity check... I'm not pleased about this, but whatever. --- modules/home/direnv/lib/android.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/home/direnv/lib/android.sh b/modules/home/direnv/lib/android.sh index 3f730c2..fa2f856 100644 --- a/modules/home/direnv/lib/android.sh +++ b/modules/home/direnv/lib/android.sh @@ -47,10 +47,9 @@ use_android() { esac done - export ANDROID_SDK_HOME="$ANDROID_HOME" export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$ndk_version" export ANDROID_ROOT="$ANDROID_HOME" - export ANDROID_SDK_ROOT="$ANDROID_SDK_HOME" + export ANDROID_SDK_ROOT="$ANDROID_HOME" export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME" PATH_add "$ANDROID_NDK_HOME" From 15ca07bc6413046415db6847a1664000a8a13417 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 1 Dec 2023 19:13:32 +0000 Subject: [PATCH 1111/1588] home: wm: i3bar: remove redundant buttons Turns out they're not needed, or at least not anymore? --- modules/home/wm/i3bar/default.nix | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/modules/home/wm/i3bar/default.nix b/modules/home/wm/i3bar/default.nix index 05b0f50..645abeb 100644 --- a/modules/home/wm/i3bar/default.nix +++ b/modules/home/wm/i3bar/default.nix @@ -22,20 +22,6 @@ in block = "music"; # This format seems to remove the block when not playing, somehow format = "{ $icon $combo.str(max_w:50,rot_interval:0.5) $prev $play $next |}"; - click = [ - { - button = "play"; - action = "music_play"; - } - { - button = "prev"; - action = "music_prev"; - } - { - button = "next"; - action = "music_next"; - } - ]; } (lib.optionalAttrs config.my.home.bluetooth.enable { block = "bluetooth"; From 2d532f35a9e7ae3591ec4f260c66807086c9a15a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 30 Nov 2023 21:06:37 +0100 Subject: [PATCH 1112/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 63bc1f3..9ac3083 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1696775529, - "narHash": "sha256-TYlE4B0ktPtlJJF9IFxTWrEeq+XKG8Ny0gc2FGEAdj0=", + "lastModified": 1701216516, + "narHash": "sha256-jKSeJn+7hZ1dZdiH1L+NWUGT2i/BGomKAJ54B9kT06Q=", "owner": "ryantm", "repo": "agenix", - "rev": "daf42cb35b2dc614d1551e37f96406e4c4a2d3e4", + "rev": "13ac9ac6d68b9a0896e3d43a082947233189e247", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1700419052, - "narHash": "sha256-U6a5f9ynbzcp8PMIHULbHPkbwp7YfPKOYmTcLqlalD4=", + "lastModified": 1701071203, + "narHash": "sha256-lQywA7QU/vzTdZ1apI0PfgCWNyQobXUYghVrR5zuIeM=", "owner": "nix-community", "repo": "home-manager", - "rev": "993fb02d20760067b8ee19c713d94cee07037759", + "rev": "db1878f013b52ba5e4034db7c1b63e8d04173a86", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1700390070, - "narHash": "sha256-de9KYi8rSJpqvBfNwscWdalIJXPo8NjdIZcEJum1mH0=", + "lastModified": 1701068326, + "narHash": "sha256-vmMceA+q6hG1yrjb+MP8T0YFDQIrW3bl45e7z24IEts=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e4ad989506ec7d71f7302cc3067abd82730a4beb", + "rev": "8cfef6986adfb599ba379ae53c9f5631ecd2fd9c", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1700477143, - "narHash": "sha256-43dtFRTcFxQJXmy0jvXGDttXD7fAuGIZ0D8frdIg84M=", + "lastModified": 1701366548, + "narHash": "sha256-+cItrtt7Tfd9SM9aQ3lCZWahfxVzWpH5bVgRyz5QDnw=", "owner": "nix-community", "repo": "NUR", - "rev": "3a7dd170a152b8525e64e1a21b3f95d402ead2b8", + "rev": "d16468a8fc6ea13c030349f293e5958adc0e4a54", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1700064067, - "narHash": "sha256-1ZWNDzhu8UlVCK7+DUN9dVQfiHX1bv6OQP9VxstY/gs=", + "lastModified": 1700922917, + "narHash": "sha256-ej2fch/T584b5K9sk1UhmZF7W6wEfDHuoUYpFN8dtvM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e558068cba67b23b4fbc5537173dbb43748a17e8", + "rev": "e5ee5c5f3844550c01d2131096c7271cec5e9b78", "type": "github" }, "original": { From 55362b1db856dac93bba227b5fb30f4e025d79c8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 1 Dec 2023 12:19:52 +0000 Subject: [PATCH 1113/1588] home: vim: add remove deprecated option The plug-in now configures itself automatically. I could also set `vim.g.skip_ts_context_commentstring_module = true`, but that should be removed soon enough anyway, and I would forget to remove it... --- modules/home/vim/plugin/settings/tree-sitter.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/home/vim/plugin/settings/tree-sitter.lua b/modules/home/vim/plugin/settings/tree-sitter.lua index 0d84abd..5503857 100644 --- a/modules/home/vim/plugin/settings/tree-sitter.lua +++ b/modules/home/vim/plugin/settings/tree-sitter.lua @@ -8,9 +8,6 @@ ts_config.setup({ indent = { enable = true, }, - context_commentstring = { - enable = true, - }, textobjects = { select = { enable = true, From e41bacc2fc54cc2a16ef76ba459aaf22947f9fcd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 2 Dec 2023 14:22:44 +0000 Subject: [PATCH 1114/1588] home: wm: i3: make 'rofi-bluetooth' ignore case The options given to the script are piped straight to `rofi -dmenu`, which apparently needs the `-i` switch to be case insensitive. --- modules/home/wm/i3/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/wm/i3/default.nix b/modules/home/wm/i3/default.nix index b9661f3..69246f0 100644 --- a/modules/home/wm/i3/default.nix +++ b/modules/home/wm/i3/default.nix @@ -197,7 +197,7 @@ in inherit (config.my.home.bluetooth) enable; prog = lib.getExe pkgs.rofi-bluetooth; in - lib.mkIf enable "exec ${prog}"; + lib.mkIf enable "exec ${prog} -i"; }) ( # Changing container focus From 093d7a3cb878a13467d7973c96fe16b788d0bf23 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 6 Dec 2023 22:18:46 +0100 Subject: [PATCH 1115/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 9ac3083..c2baaaf 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1698882062, - "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=", + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", "type": "github" }, "original": { @@ -89,11 +89,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1701071203, - "narHash": "sha256-lQywA7QU/vzTdZ1apI0PfgCWNyQobXUYghVrR5zuIeM=", + "lastModified": 1701728041, + "narHash": "sha256-x0pyrI1vC8evVDxCxyO6olOyr4wlFg9+VS3C3p4xFYQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "db1878f013b52ba5e4034db7c1b63e8d04173a86", + "rev": "ac7216918cd65f3824ba7817dea8f22e61221eaf", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1701068326, - "narHash": "sha256-vmMceA+q6hG1yrjb+MP8T0YFDQIrW3bl45e7z24IEts=", + "lastModified": 1701436327, + "narHash": "sha256-tRHbnoNI8SIM5O5xuxOmtSLnswEByzmnQcGGyNRjxsE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8cfef6986adfb599ba379ae53c9f5631ecd2fd9c", + "rev": "91050ea1e57e50388fa87a3302ba12d188ef723a", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1701366548, - "narHash": "sha256-+cItrtt7Tfd9SM9aQ3lCZWahfxVzWpH5bVgRyz5QDnw=", + "lastModified": 1701895548, + "narHash": "sha256-ukg5+dJSa82+CpCNmca10wLjdzVN8thlkOfswsZqf+s=", "owner": "nix-community", "repo": "NUR", - "rev": "d16468a8fc6ea13c030349f293e5958adc0e4a54", + "rev": "52bf9b8e019cd6e9ec6ff604e7b06c82ad487867", "type": "github" }, "original": { From 8398c4350a70ae08b5614b6cf6737c11471b609f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 14:26:36 +0000 Subject: [PATCH 1116/1588] hosts: homes: add work laptop --- flake/home-manager.nix | 1 + hosts/homes/ambroisie@bazin/default.nix | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 hosts/homes/ambroisie@bazin/default.nix diff --git a/flake/home-manager.nix b/flake/home-manager.nix index 61c9f6e..557d5c6 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -40,6 +40,7 @@ let }; hosts = { + "ambroisie@bazin" = "x86_64-linux"; "ambroisie@mousqueton" = "x86_64-linux"; }; in diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix new file mode 100644 index 0000000..235898a --- /dev/null +++ b/hosts/homes/ambroisie@bazin/default.nix @@ -0,0 +1,17 @@ +# Google Cloudtop configuration +{ lib, pkgs, ... }: +{ + programs.git.package = lib.mkForce pkgs.emptyDirectory; + + services.gpg-agent.enable = lib.mkForce false; + + my.home = { + tmux = { + # I use scripts that use the passthrough sequence often on this host + enablePassthrough = true; + + # HTerm uses `xterm-256color` as its `$TERM`, so use that here + trueColorTerminals = [ "xterm-256color" ]; + }; + }; +} From 0b9c2309da9f33a4be355ea3f005efb4b9f06aa6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 14:29:59 +0000 Subject: [PATCH 1117/1588] home: ssh: use 'mkMerge' This will make it easier to add new options (e.g: for `mosh`). --- modules/home/ssh/default.nix | 86 +++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/modules/home/ssh/default.nix b/modules/home/ssh/default.nix index 123190f..b5bdf76 100644 --- a/modules/home/ssh/default.nix +++ b/modules/home/ssh/default.nix @@ -7,48 +7,52 @@ in enable = my.mkDisableOption "ssh configuration"; }; - config.programs.ssh = lib.mkIf cfg.enable { - enable = true; + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + programs.ssh = { + enable = true; - includes = [ - # Local configuration, not-versioned - "config.local" - ]; + includes = [ + # Local configuration, not-versioned + "config.local" + ]; - matchBlocks = { - "github.com" = { - hostname = "github.com"; - identityFile = "~/.ssh/shared_rsa"; - user = "git"; + matchBlocks = { + "github.com" = { + hostname = "github.com"; + identityFile = "~/.ssh/shared_rsa"; + user = "git"; + }; + + "gitlab.com" = { + hostname = "gitlab.com"; + identityFile = "~/.ssh/shared_rsa"; + user = "git"; + }; + + "git.sr.ht" = { + hostname = "git.sr.ht"; + identityFile = "~/.ssh/shared_rsa"; + user = "git"; + }; + + "git.belanyi.fr" = { + hostname = "git.belanyi.fr"; + identityFile = "~/.ssh/shared_rsa"; + user = "git"; + }; + + porthos = { + hostname = "91.121.177.163"; + identityFile = "~/.ssh/shared_rsa"; + user = "ambroisie"; + }; + }; + + extraConfig = '' + AddKeysToAgent yes + ''; }; - - "gitlab.com" = { - hostname = "gitlab.com"; - identityFile = "~/.ssh/shared_rsa"; - user = "git"; - }; - - "git.sr.ht" = { - hostname = "git.sr.ht"; - identityFile = "~/.ssh/shared_rsa"; - user = "git"; - }; - - "git.belanyi.fr" = { - hostname = "git.belanyi.fr"; - identityFile = "~/.ssh/shared_rsa"; - user = "git"; - }; - - porthos = { - hostname = "91.121.177.163"; - identityFile = "~/.ssh/shared_rsa"; - user = "ambroisie"; - }; - }; - - extraConfig = '' - AddKeysToAgent yes - ''; - }; + } + ]); } From 0164d120876cb1187d13797930ad8021faafbcc9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 14:31:32 +0000 Subject: [PATCH 1118/1588] home: ssh: move 'mosh' configuration --- modules/home/packages/default.nix | 1 - modules/home/ssh/default.nix | 14 +++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/home/packages/default.nix b/modules/home/packages/default.nix index 0cfa3b3..be89503 100644 --- a/modules/home/packages/default.nix +++ b/modules/home/packages/default.nix @@ -20,7 +20,6 @@ in config.home.packages = with pkgs; lib.mkIf cfg.enable ([ fd file - mosh ripgrep ] ++ cfg.additionalPackages); } diff --git a/modules/home/ssh/default.nix b/modules/home/ssh/default.nix index b5bdf76..674cf6a 100644 --- a/modules/home/ssh/default.nix +++ b/modules/home/ssh/default.nix @@ -1,10 +1,16 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.home.ssh; in { options.my.home.ssh = with lib; { enable = my.mkDisableOption "ssh configuration"; + + mosh = { + enable = my.mkDisableOption "mosh configuration"; + + package = mkPackageOption pkgs "mosh" { }; + }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ @@ -54,5 +60,11 @@ in ''; }; } + + (lib.mkIf cfg.mosh.enable { + home.packages = [ + cfg.mosh.package + ]; + }) ]); } From 792d997dc961193f6e5d1924e87f4fc4ee5175ec Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 14:34:17 +0000 Subject: [PATCH 1119/1588] hosts: homes: bazin: disable 'mosh' package --- hosts/homes/ambroisie@bazin/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix index 235898a..193a6af 100644 --- a/hosts/homes/ambroisie@bazin/default.nix +++ b/hosts/homes/ambroisie@bazin/default.nix @@ -13,5 +13,11 @@ # HTerm uses `xterm-256color` as its `$TERM`, so use that here trueColorTerminals = [ "xterm-256color" ]; }; + + ssh = { + mosh = { + package = pkgs.emptyDirectory; + }; + }; }; } From afda437f49688307875b427dcb5ecee5170bbfea Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 14:37:47 +0000 Subject: [PATCH 1120/1588] home: git: allow overriding default package --- modules/home/git/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix index 4dba01e..9c10257 100644 --- a/modules/home/git/default.nix +++ b/modules/home/git/default.nix @@ -7,6 +7,9 @@ in { options.my.home.git = with lib; { enable = my.mkDisableOption "git configuration"; + + # I want the full experience by default + package = mkPackageOption pkgs "git" { default = [ "gitFull" ]; }; }; config.home.packages = with pkgs; lib.mkIf cfg.enable [ @@ -22,8 +25,7 @@ in userEmail = mkMailAddress "bruno" "belanyi.fr"; userName = "Bruno BELANYI"; - # I want the full experience - package = pkgs.gitFull; + inherit (cfg) package; aliases = { git = "!git"; From 3a7f4d126d7fc0e04e04881f1078af791aa58fc0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 14:40:15 +0000 Subject: [PATCH 1121/1588] hosts: homes: mousqueton: migrate 'git.package' --- hosts/homes/ambroisie@mousqueton/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 06ee817..5c0a963 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -4,11 +4,13 @@ # Google specific configuration home.homeDirectory = "/usr/local/google/home/ambroisie"; - programs.git.package = lib.mkForce pkgs.emptyDirectory; - services.gpg-agent.enable = lib.mkForce false; my.home = { + git = { + package = pkgs.emptyDirectory; + }; + tmux = { # I use scripts that use the passthrough sequence often on this host enablePassthrough = true; From 20ab6795423903ac269bf318e9d3b64df00052f1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 14:40:21 +0000 Subject: [PATCH 1122/1588] hosts: homes: bazin: migrate 'git.package' --- hosts/homes/ambroisie@bazin/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix index 193a6af..4490c51 100644 --- a/hosts/homes/ambroisie@bazin/default.nix +++ b/hosts/homes/ambroisie@bazin/default.nix @@ -1,11 +1,13 @@ # Google Cloudtop configuration { lib, pkgs, ... }: { - programs.git.package = lib.mkForce pkgs.emptyDirectory; - services.gpg-agent.enable = lib.mkForce false; my.home = { + git = { + package = pkgs.emptyDirectory; + }; + tmux = { # I use scripts that use the passthrough sequence often on this host enablePassthrough = true; From bdc3e63fff4442f7344c782c3cd023e0e5faf1ec Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 20:30:35 +0000 Subject: [PATCH 1123/1588] flake: home-manager: refactor 'hosts' -> 'homes' This makes more sense as a name. --- flake/home-manager.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flake/home-manager.nix b/flake/home-manager.nix index 557d5c6..34af375 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -39,7 +39,7 @@ let }; }; - hosts = { + homes = { "ambroisie@bazin" = "x86_64-linux"; "ambroisie@mousqueton" = "x86_64-linux"; }; @@ -50,13 +50,13 @@ in legacyPackages = { homeConfigurations = let - filteredHosts = lib.filterAttrs (_: v: v == system) hosts; - allHosts = filteredHosts // { + filteredHomes = lib.filterAttrs (_: v: v == system) homes; + allHomes = filteredHomes // { # Default configuration ambroisie = system; }; in - lib.mapAttrs mkHome allHosts; + lib.mapAttrs mkHome allHomes; }; }; } From 3ed2fac3db4553f5101125ce98959a9303377976 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Dec 2023 21:22:09 +0000 Subject: [PATCH 1124/1588] flake: nixos: use module-provided 'lib' I can't use `self.lib` to define options, that would result in infinite recursion. --- flake/nixos.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/flake/nixos.nix b/flake/nixos.nix index fe124d7..b48b551 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -1,7 +1,5 @@ -{ self, inputs, ... }: +{ self, inputs, lib, ... }: let - inherit (self) lib; - defaultModules = [ { # Let 'nixos-version --json' know about the Git revision @@ -23,7 +21,7 @@ let ]; specialArgs = { # Use my extended lib in NixOS configuration - inherit lib; + inherit (self) lib; # Inject inputs to use them in global registry inherit inputs; }; From 22fa05ca0c648c6a2652e653d13a35498e58ac8d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 8 Dec 2023 11:49:52 +0000 Subject: [PATCH 1125/1588] home: packages: refactor config format --- modules/home/packages/default.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/modules/home/packages/default.nix b/modules/home/packages/default.nix index be89503..6e3efcd 100644 --- a/modules/home/packages/default.nix +++ b/modules/home/packages/default.nix @@ -17,9 +17,11 @@ in }; }; - config.home.packages = with pkgs; lib.mkIf cfg.enable ([ - fd - file - ripgrep - ] ++ cfg.additionalPackages); + config = lib.mkIf cfg.enable { + home.packages = with pkgs; ([ + fd + file + ripgrep + ] ++ cfg.additionalPackages); + }; } From 16fade92b4d5ef718e0c84a1b24d5478c4bd4b9e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 8 Dec 2023 11:50:44 +0000 Subject: [PATCH 1126/1588] home: packages: add 'allowAliases', 'allowUnfree' With [1], this should now be taken into account properly. [1]: https://github.com/nix-community/home-manager/pull/4304 --- modules/home/packages/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/home/packages/default.nix b/modules/home/packages/default.nix index 6e3efcd..1362a06 100644 --- a/modules/home/packages/default.nix +++ b/modules/home/packages/default.nix @@ -6,6 +6,10 @@ in options.my.home.packages = with lib; { enable = my.mkDisableOption "user packages"; + allowAliases = mkEnableOption "allow package aliases"; + + allowUnfree = my.mkDisableOption "allow unfree packages"; + additionalPackages = mkOption { type = with types; listOf package; default = [ ]; @@ -23,5 +27,9 @@ in file ripgrep ] ++ cfg.additionalPackages); + + nixpkgs.config = { + inherit (cfg) allowAliases allowUnfree; + }; }; } From f23e6251cef53dd00d512f36fb61ce0a92991ca7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 12 Dec 2023 14:09:10 +0000 Subject: [PATCH 1127/1588] nixos: services: wireguard: add VPN conflicts It's now easier to do the right thing when starting a VPN service, whether the other one is running or not. --- modules/nixos/services/wireguard/default.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/modules/nixos/services/wireguard/default.nix b/modules/nixos/services/wireguard/default.nix index fc5518d..a213e71 100644 --- a/modules/nixos/services/wireguard/default.nix +++ b/modules/nixos/services/wireguard/default.nix @@ -261,5 +261,17 @@ in (lib.mkIf (cfg.internal.enable && !cfg.internal.startAtBoot) { systemd.services."wg-quick-${cfg.internal.name}".wantedBy = lib.mkForce [ ]; }) + + # Make systemd shut down one service when starting the other + (lib.mkIf (cfg.internal.enable) { + systemd.services."wg-quick-${cfg.iface}" = { + conflicts = [ "wg-quick-${cfg.internal.name}.service" ]; + after = [ "wg-quick-${cfg.internal.name}.service" ]; + }; + systemd.services."wg-quick-${cfg.internal.name}" = { + conflicts = [ "wg-quick-${cfg.iface}.service" ]; + after = [ "wg-quick-${cfg.iface}.service" ]; + }; + }) ]); } From 9ddd59eac8eab6b233372117cb36c7d2618b905a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 11:08:15 +0000 Subject: [PATCH 1128/1588] nixos: system: add polkit One nice thing is that it enables the prompts when using `systemctl`, instead of requiring `sudo`. --- modules/nixos/system/default.nix | 1 + modules/nixos/system/polkit/default.nix | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 modules/nixos/system/polkit/default.nix diff --git a/modules/nixos/system/default.nix b/modules/nixos/system/default.nix index e7a4dd3..e6fb25b 100644 --- a/modules/nixos/system/default.nix +++ b/modules/nixos/system/default.nix @@ -10,6 +10,7 @@ ./nix ./packages ./podman + ./polkit ./printing ./users ]; diff --git a/modules/nixos/system/polkit/default.nix b/modules/nixos/system/polkit/default.nix new file mode 100644 index 0000000..1e5b573 --- /dev/null +++ b/modules/nixos/system/polkit/default.nix @@ -0,0 +1,16 @@ +# Polkit settings +{ config, lib, ... }: +let + cfg = config.my.system.polkit; +in +{ + options.my.system.polkit = with lib; { + enable = my.mkDisableOption "polkit configuration"; + }; + + config = lib.mkIf cfg.enable { + security.polkit = { + enable = true; + }; + }; +} From 1faa8d9acff1857537d3fb35768de2ede64e6b36 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 11:10:14 +0000 Subject: [PATCH 1129/1588] nixos: services: wireguard: add 'simpleManagement' This makes it easier to manage the VPN services, as they don't require a password prompt to be brought up/down. --- modules/nixos/services/wireguard/default.nix | 21 ++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/modules/nixos/services/wireguard/default.nix b/modules/nixos/services/wireguard/default.nix index a213e71..26e54e0 100644 --- a/modules/nixos/services/wireguard/default.nix +++ b/modules/nixos/services/wireguard/default.nix @@ -100,6 +100,8 @@ in options.my.services.wireguard = with lib; { enable = mkEnableOption "Wireguard VPN service"; + simpleManagement = my.mkDisableOption "manage units without password prompts"; + startAtBoot = mkEnableOption '' Should the VPN service be started at boot. Must be true for the server to work reliably. @@ -273,5 +275,24 @@ in after = [ "wg-quick-${cfg.iface}.service" ]; }; }) + + # Make it possible to manage those units without using passwords, for admins + (lib.mkIf cfg.simpleManagement { + environment.etc."polkit-1/rules.d/50-wg-quick.rules".text = '' + polkit.addRule(function(action, subject) { + if (action.id == "org.freedesktop.systemd1.manage-units") { + var unit = action.lookup("unit") + if (unit == "wg-quick-${cfg.iface}.service" || unit == "wg-quick-${cfg.internal.name}.service") { + var verb = action.lookup("verb"); + if (verb == "start" || verb == "stop" || verb == "restart") { + if (subject.isInGroup("wheel")) { + return polkit.Result.YES; + } + } + } + } + }); + ''; + }) ]); } From 33b94a7f9d894daaeab4683433ae56f02c670cb0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 11:41:25 +0000 Subject: [PATCH 1130/1588] home: wm: i3bar: add 'flatten' call This makes it easier to declare multiple blocks at once, as will be done in the next commit. --- modules/home/wm/i3bar/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/wm/i3bar/default.nix b/modules/home/wm/i3bar/default.nix index 645abeb..50913a4 100644 --- a/modules/home/wm/i3bar/default.nix +++ b/modules/home/wm/i3bar/default.nix @@ -17,7 +17,7 @@ in top = { icons = "awesome5"; - blocks = builtins.filter (attr: attr != { }) [ + blocks = builtins.filter (attr: attr != { }) (lib.flatten [ { block = "music"; # This format seems to remove the block when not playing, somehow @@ -92,7 +92,7 @@ in format = " $icon $timestamp.datetime(f:'%F %T') "; interval = 5; } - ]; + ]); }; }; }; From 3a2f02f001cbc9b35d4b838088aef116ba25ca51 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 11:42:03 +0000 Subject: [PATCH 1131/1588] home: wm: i3bar: add VPN blocks --- modules/home/wm/default.nix | 25 +++++++++++++++++++++++++ modules/home/wm/i3bar/default.nix | 13 +++++++++++++ 2 files changed, 38 insertions(+) diff --git a/modules/home/wm/default.nix b/modules/home/wm/default.nix index 6a615e5..449918a 100644 --- a/modules/home/wm/default.nix +++ b/modules/home/wm/default.nix @@ -36,6 +36,31 @@ in i3bar = { enable = mkRelatedOption "i3bar configuration" [ "i3" ]; + + vpn = { + enable = my.mkDisableOption "VPN configuration"; + + blockConfigs = mkOption { + type = with types; listOf (attrsOf str); + default = [ + { + active_format = " VPN "; + service = "wg-quick-wg"; + } + { + active_format = " VPN (LAN) "; + service = "wg-quick-lan"; + } + ]; + example = [ + { + active_format = " WORK "; + service = "some-service-name"; + } + ]; + description = "list of block configurations, merged with the defauls"; + }; + }; }; rofi = { diff --git a/modules/home/wm/i3bar/default.nix b/modules/home/wm/i3bar/default.nix index 50913a4..5dbb505 100644 --- a/modules/home/wm/i3bar/default.nix +++ b/modules/home/wm/i3bar/default.nix @@ -59,6 +59,19 @@ in { block = "disk_space"; } + (lib.optionals cfg.vpn.enable + ( + let + defaults = { + block = "service_status"; + active_state = "Good"; + inactive_format = ""; + inactive_state = "Idle"; + }; + in + builtins.map (block: defaults // block) cfg.vpn.blockConfigs + ) + ) { block = "net"; format = " $icon{| $ssid|} $ip{| $signal_strength|} "; From 90aed6b2cab3d74c4aea5d0e72d694acdae2456c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 12:06:25 +0000 Subject: [PATCH 1132/1588] pkgs: lohr: 0.4.2. -> 0.4.5 --- pkgs/lohr/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix index a83b092..ddeac7a 100644 --- a/pkgs/lohr/default.nix +++ b/pkgs/lohr/default.nix @@ -1,16 +1,16 @@ { lib, fetchFromGitHub, rustPlatform }: rustPlatform.buildRustPackage rec { pname = "lohr"; - version = "0.4.2"; + version = "0.4.5"; src = fetchFromGitHub { owner = "alarsyo"; repo = "lohr"; rev = "v${version}"; - hash = "sha256-2pN/Me5fCdE++TzBUswPXzjuUIIB7Uck+Scp361JgE4="; + hash = "sha256-p6E/r+OxFTpxDpOKSlacOxvRLfHSKg1mHNAfTytfqDY="; }; - cargoHash = "sha256-YHg4b6rKcnVJSDoWh9/o+p40NBog65Gd2/UwIDXiUe0="; + cargoHash = "sha256-hext0S0o9D9pN9epzXtD5dwAYMPCLpBBOBT4FX0mTMk="; meta = with lib; { description = "Git mirroring daemon"; From 401972cb42ea23af201327f52d6724e420f904cf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 13:43:41 +0000 Subject: [PATCH 1133/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index c2baaaf..adff398 100644 --- a/flake.lock +++ b/flake.lock @@ -131,11 +131,11 @@ ] }, "locked": { - "lastModified": 1701728041, - "narHash": "sha256-x0pyrI1vC8evVDxCxyO6olOyr4wlFg9+VS3C3p4xFYQ=", + "lastModified": 1702538064, + "narHash": "sha256-At5GwJPu2tzvS9dllhBoZmqK6lkkh/sOp2YefWRlaL8=", "owner": "nix-community", "repo": "home-manager", - "rev": "ac7216918cd65f3824ba7817dea8f22e61221eaf", + "rev": "0e2e443ff24f9d75925e91b89d1da44b863734af", "type": "github" }, "original": { @@ -147,11 +147,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1701436327, - "narHash": "sha256-tRHbnoNI8SIM5O5xuxOmtSLnswEByzmnQcGGyNRjxsE=", + "lastModified": 1702312524, + "narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "91050ea1e57e50388fa87a3302ba12d188ef723a", + "rev": "a9bf124c46ef298113270b1f84a164865987a91c", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "nur": { "locked": { - "lastModified": 1701895548, - "narHash": "sha256-ukg5+dJSa82+CpCNmca10wLjdzVN8thlkOfswsZqf+s=", + "lastModified": 1702558663, + "narHash": "sha256-MHq/DdwsBwsTRqwFg1JuFtcoGArgvaH/XwbxgWQ4Zn0=", "owner": "nix-community", "repo": "NUR", - "rev": "52bf9b8e019cd6e9ec6ff604e7b06c82ad487867", + "rev": "b839a2bae27c0c14dd99dcc1f6d18f83b0af59bd", "type": "github" }, "original": { @@ -192,11 +192,11 @@ ] }, "locked": { - "lastModified": 1700922917, - "narHash": "sha256-ej2fch/T584b5K9sk1UhmZF7W6wEfDHuoUYpFN8dtvM=", + "lastModified": 1702456155, + "narHash": "sha256-I2XhXGAecdGlqi6hPWYT83AQtMgL+aa3ulA85RAEgOk=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e5ee5c5f3844550c01d2131096c7271cec5e9b78", + "rev": "007a45d064c1c32d04e1b8a0de5ef00984c419bc", "type": "github" }, "original": { From 373545ee3882f2024efa11352de49fe5862502fe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 13:55:45 +0000 Subject: [PATCH 1134/1588] nixos: system: printing: migrate deprecated option It's recommended to only enable the IPv4 option, as most mDNS responders only register IPv4 addresses (therefore enabling IPv6 would lead to long timeouts when checking for those addresses first). --- modules/nixos/system/printing/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/system/printing/default.nix b/modules/nixos/system/printing/default.nix index a4547ef..0dfab0f 100644 --- a/modules/nixos/system/printing/default.nix +++ b/modules/nixos/system/printing/default.nix @@ -63,7 +63,7 @@ in enable = true; openFirewall = true; # Allow resolution of '.local' addresses - nssmdns = true; + nssmdns4 = true; }; }; } From e97f295470bab5accd22139aefacfdefdf833561 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 13:49:48 +0000 Subject: [PATCH 1135/1588] home: firefox: use upstream 'ff2mpv-go' --- modules/home/firefox/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/firefox/default.nix b/modules/home/firefox/default.nix index 85a1d59..02c74f2 100644 --- a/modules/home/firefox/default.nix +++ b/modules/home/firefox/default.nix @@ -36,7 +36,7 @@ in nativeMessagingHosts = ([ ] ++ lib.optional cfg.tridactyl.enable pkgs.tridactyl-native # Watch videos using mpv - ++ lib.optional cfg.ff2mpv.enable pkgs.ambroisie.ff2mpv-go + ++ lib.optional cfg.ff2mpv.enable pkgs.ff2mpv-go ); }; From 1d50844fa42550bbbf30ea1bcd74eacb0b631bf6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 13:51:49 +0000 Subject: [PATCH 1136/1588] pkgs: remove 'ff2mpv-go' I've (finally) packaged it upstream. --- pkgs/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index 664b5a4..1bf260c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -16,8 +16,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { drone-scp = pkgs.callPackage ./drone-scp { }; - ff2mpv-go = pkgs.callPackage ./ff2mpv-go { }; - i3-get-window-criteria = pkgs.callPackage ./i3-get-window-criteria { }; lohr = pkgs.callPackage ./lohr { }; From 104bc05871e2ccee9de26a2a959048024c95a9dd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 13:50:47 +0000 Subject: [PATCH 1137/1588] home: wm: use upstream 'vimix-cursors' --- modules/home/wm/cursor/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/wm/cursor/default.nix b/modules/home/wm/cursor/default.nix index 9426232..3b58b7b 100644 --- a/modules/home/wm/cursor/default.nix +++ b/modules/home/wm/cursor/default.nix @@ -8,7 +8,7 @@ in { config = lib.mkIf cfg.enable { home.pointerCursor = { - package = pkgs.ambroisie.vimix-cursors; + package = pkgs.vimix-cursors; name = "Vimix-cursors"; x11 = { From c28959fe029fec43cbf210b64257024f0cde674d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 13:53:17 +0000 Subject: [PATCH 1138/1588] pkgs: remove 'vimix-cursors' Now that I've (finally) packaged it upstream. --- pkgs/default.nix | 2 -- pkgs/vimix-cursors/default.nix | 44 ---------------------------------- 2 files changed, 46 deletions(-) delete mode 100644 pkgs/vimix-cursors/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 1bf260c..f5036fe 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -32,8 +32,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { }; - vimix-cursors = pkgs.callPackage ./vimix-cursors { }; - wifi-qr = pkgs.callPackage ./wifi-qr { }; zsh-done = pkgs.callPackage ./zsh-done { }; diff --git a/pkgs/vimix-cursors/default.nix b/pkgs/vimix-cursors/default.nix deleted file mode 100644 index 80424de..0000000 --- a/pkgs/vimix-cursors/default.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ lib, python3, fetchFromGitHub, inkscape, stdenvNoCC, xcursorgen }: -let - py = python3.withPackages (ps: with ps; [ cairosvg ]); -in -stdenvNoCC.mkDerivation rec { - pname = "vimix-cursors"; - version = "unstable-2020-04-28"; - - src = fetchFromGitHub { - owner = "vinceliuice"; - repo = pname; - rev = "27ebb1935944bc986bf8ae85ee3343b8351d9823"; - hash = "sha256-bIPRrKaNQ2Eo+T6zv7qeA1z7uRHXezM0yxh+uqA01Gs="; - }; - - nativeBuildInputs = [ - inkscape - py - xcursorgen - ]; - - postPatch = '' - patchShebangs . - ''; - - buildPhase = '' - HOME="$NIX_BUILD_ROOT" ./build.sh - ''; - - installPhase = '' - install -dm 755 $out/share/icons - for color in "" "-white"; do - cp -pr dist''${color}/ "$out/share/icons/Vimix''${color}-cursors" - done - ''; - - meta = with lib; { - description = "An X cursor theme inspired by Materia design"; - homepage = "https://github.com/vinceliuice/Vimix-cursors"; - license = licenses.gpl3Only; - maintainers = with maintainers; [ ambroisie ]; - platforms = platforms.linux; - }; -} From ad40c1b1d2a63301a8884268876c2b96f56f2c1d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 14:16:44 +0000 Subject: [PATCH 1139/1588] treewide: update to nix-direnv 3.0.0 --- .envrc | 8 ++++---- templates/c++-cmake/.envrc | 4 ++-- templates/c++-meson/.envrc | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.envrc b/.envrc index 9222bda..f5141c2 100644 --- a/.envrc +++ b/.envrc @@ -1,8 +1,8 @@ -if ! has nix_direnv_version || ! nix_direnv_version 2.4.0; then - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.4.0/direnvrc" "sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=" +if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" fi -nix_direnv_watch_file ./flake/checks.nix -nix_direnv_watch_file ./flake/dev-shells.nix +watch_file ./flake/checks.nix +watch_file ./flake/dev-shells.nix use flake diff --git a/templates/c++-cmake/.envrc b/templates/c++-cmake/.envrc index ccf325e..de77fcb 100644 --- a/templates/c++-cmake/.envrc +++ b/templates/c++-cmake/.envrc @@ -1,5 +1,5 @@ -if ! has nix_direnv_version || ! nix_direnv_version 2.4.0; then - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.4.0/direnvrc" "sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=" +if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" fi use flake diff --git a/templates/c++-meson/.envrc b/templates/c++-meson/.envrc index ccf325e..de77fcb 100644 --- a/templates/c++-meson/.envrc +++ b/templates/c++-meson/.envrc @@ -1,5 +1,5 @@ -if ! has nix_direnv_version || ! nix_direnv_version 2.4.0; then - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.4.0/direnvrc" "sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=" +if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" fi use flake From 49742deb185f9c562de5259fdc3efa6f1444f66c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Dec 2023 20:08:01 +0000 Subject: [PATCH 1140/1588] pkgs: unified-hosts-lists: 3.12.15 -> 3.14.37 --- pkgs/unified-hosts-lists/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix index 06d24ac..6a71fdf 100644 --- a/pkgs/unified-hosts-lists/default.nix +++ b/pkgs/unified-hosts-lists/default.nix @@ -1,7 +1,7 @@ { lib, fetchFromGitHub, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "unified-hosts-lists"; - version = "3.12.15"; + version = "3.14.37"; src = fetchFromGitHub { owner = "StevenBlack"; From 49f695bf68c4fbc6f50a7fa6412334350e71e377 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 16 Dec 2023 12:51:05 +0000 Subject: [PATCH 1141/1588] pkgs: remove 'drone-scp' I added it to upstream nixpkgs. --- pkgs/default.nix | 2 -- pkgs/drone-scp/default.nix | 25 ------------------------- 2 files changed, 27 deletions(-) delete mode 100644 pkgs/drone-scp/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index f5036fe..294051c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -14,8 +14,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { drone-rsync = pkgs.callPackage ./drone-rsync { }; - drone-scp = pkgs.callPackage ./drone-scp { }; - i3-get-window-criteria = pkgs.callPackage ./i3-get-window-criteria { }; lohr = pkgs.callPackage ./lohr { }; diff --git a/pkgs/drone-scp/default.nix b/pkgs/drone-scp/default.nix deleted file mode 100644 index 7437b06..0000000 --- a/pkgs/drone-scp/default.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ lib, buildGoModule, fetchFromGitHub }: -buildGoModule rec { - pname = "drone-scp"; - version = "1.6.3"; - - src = fetchFromGitHub { - owner = "appleboy"; - repo = "drone-scp"; - rev = "v${version}"; - hash = "sha256-ELjPqoRR4O6gmc/PgthQuSXuSTQNzBZoAUT80zVVbV0="; - }; - - vendorHash = "sha256-/c103hTJ/Qdz2KTkdl/ACvAaSSTKcl1DQY3+Us6OxaI="; - - doCheck = false; # Needs a specific user... - - meta = with lib; { - description = '' - Copy files and artifacts via SSH using a binary, docker or Drone CI - ''; - homepage = "https://github.com/appleboy/drone-scp"; - license = licenses.mit; - mainProgram = "drone-scp"; - }; -} From 7ccb8ea8b56a54d9e48ded3ff5c5a0b0858de9ba Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 16 Dec 2023 14:28:46 +0000 Subject: [PATCH 1142/1588] pkgs: unbound-zones-adblock: use upstream package This is a slight regression, as the current version of `stevenblack-blocklist` is 3.13.10 and the version I packaged is 3.14.37. However I am lazy and want to avoid having to bump the version manually... --- pkgs/unbound-zones-adblock/default.nix | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index b8392ae..642ac41 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -1,9 +1,9 @@ -{ lib, gawk, stdenvNoCC, unified-hosts-lists }: +{ lib, gawk, stdenvNoCC, stevenblack-blocklist }: stdenvNoCC.mkDerivation { name = "unbound-zones-adblock"; - version = unified-hosts-lists.version; + version = stevenblack-blocklist.rev; - src = unified-hosts-lists; + src = stevenblack-blocklist; dontUnpack = true; @@ -18,9 +18,11 @@ stdenvNoCC.mkDerivation { ]; in '' - mkdir -p $out - for file in $src/*; do - ${gawkCmd} $file | tr '[:upper:]' '[:lower:]' | sort -u > $out/$(basename $file) + shopt -s globstar + for file in $src/**/hosts; do + outFile="$out/''${file#$src}" + mkdir -p "$(dirname "$outFile")" + ${gawkCmd} $file | tr '[:upper:]' '[:lower:]' | sort -u > "$outFile" done ''; From 4aca698ac6179a626955a867094d49d539887ee8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 16 Dec 2023 14:31:16 +0000 Subject: [PATCH 1143/1588] pkgs: remove 'unified-hosts-lists' Instead make use of the upstream packaged host list. --- pkgs/default.nix | 2 -- pkgs/unified-hosts-lists/default.nix | 34 ---------------------------- 2 files changed, 36 deletions(-) delete mode 100644 pkgs/unified-hosts-lists/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 294051c..3a8e812 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -28,8 +28,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; - unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { }; - wifi-qr = pkgs.callPackage ./wifi-qr { }; zsh-done = pkgs.callPackage ./zsh-done { }; diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix deleted file mode 100644 index 6a71fdf..0000000 --- a/pkgs/unified-hosts-lists/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ lib, fetchFromGitHub, stdenvNoCC }: -stdenvNoCC.mkDerivation rec { - pname = "unified-hosts-lists"; - version = "3.14.37"; - - src = fetchFromGitHub { - owner = "StevenBlack"; - repo = "hosts"; - rev = version; - hash = "sha256-HoNX57lCoIr36B/7HMuazWSWeAPPfWY1oZf6dXnxYIE="; - }; - - dontUnpack = true; - - installPhase = '' - mkdir -p $out - cp -r $src/hosts $out - for file in $src/alternates/*/hosts; do - cp $file $out/$(basename $(dirname $file)) - done - ''; - - meta = with lib; { - description = "Unified host lists"; - longDescription = '' - Consolidating and extending hosts files from several well-curated sources. - Optionally pick extensions for porn, social media, and other categories. - ''; - homepage = "https://github.com/StevenBlack/hosts"; - license = licenses.mit; - maintainers = with maintainers; [ ambroisie ]; - platforms = platforms.all; - }; -} From 864e0a5ae63b9cd1f5fafdad0f9df93661f5d788 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 16 Dec 2023 16:23:04 +0000 Subject: [PATCH 1144/1588] home: firefox: tridactyl: fix Google mapping --- modules/home/firefox/tridactyl/tridactylrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/firefox/tridactyl/tridactylrc b/modules/home/firefox/tridactyl/tridactylrc index 31d3cb7..0401292 100644 --- a/modules/home/firefox/tridactyl/tridactylrc +++ b/modules/home/firefox/tridactyl/tridactylrc @@ -22,8 +22,8 @@ bind ;c hint -Jc [class*="expand"],[class*="togg"],[class="comment_folder"] bindurl reddit.com gu urlparent 3 " Only hint search results on Google -bindurl www.google.com f hint -Jc #search div:not(.action-menu) > a -bindurl www.google.com F hint -Jbc #search div:not(.action-menu) > a +bindurl www.google.com f hint -Jc #search a +bindurl www.google.com F hint -Jbc #search a " Only hint search results on DuckDuckGo bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result-title-a"] From 066a33587debe4a4c8e9465882d39cb3160e7142 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 16 Dec 2023 20:24:38 +0000 Subject: [PATCH 1145/1588] home: mpv: add uosc script --- modules/home/mpv/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/mpv/default.nix b/modules/home/mpv/default.nix index 9aef379..931c252 100644 --- a/modules/home/mpv/default.nix +++ b/modules/home/mpv/default.nix @@ -13,6 +13,7 @@ in scripts = [ pkgs.mpvScripts.mpris # Allow controlling using media keys + pkgs.mpvScripts.uosc # Nicer UI ]; }; }; From a657a7742eec560caaca8d4925b83671490cb548 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 18 Dec 2023 09:41:35 +0000 Subject: [PATCH 1146/1588] home: wm: i3bar: fix 'net' block when disconnected I still sometimes get the error message about not being able to format the block, this should fix it. --- modules/home/wm/i3bar/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/wm/i3bar/default.nix b/modules/home/wm/i3bar/default.nix index 5dbb505..5ae0e7d 100644 --- a/modules/home/wm/i3bar/default.nix +++ b/modules/home/wm/i3bar/default.nix @@ -74,7 +74,7 @@ in ) { block = "net"; - format = " $icon{| $ssid|} $ip{| $signal_strength|} "; + format = " $icon{| $ssid|}{| $ip|}{| $signal_strength|} "; } { block = "backlight"; From 13d85c30f98eacbc512fcf27bb76ede4dd30f7ef Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 19 Dec 2023 19:08:10 +0100 Subject: [PATCH 1147/1588] pkgs: remove 'wifi-qr' Now that I added it to upstream, I can get rid of it. --- pkgs/default.nix | 2 - pkgs/wifi-qr/default.nix | 81 ---------------------------------------- 2 files changed, 83 deletions(-) delete mode 100644 pkgs/wifi-qr/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 3a8e812..6b7fce1 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -28,7 +28,5 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; - wifi-qr = pkgs.callPackage ./wifi-qr { }; - zsh-done = pkgs.callPackage ./zsh-done { }; }) diff --git a/pkgs/wifi-qr/default.nix b/pkgs/wifi-qr/default.nix deleted file mode 100644 index 88164e5..0000000 --- a/pkgs/wifi-qr/default.nix +++ /dev/null @@ -1,81 +0,0 @@ -{ lib -, fetchFromGitHub -, gnome -, installShellFiles -, makeWrapper -, networkmanager -, qrencode -, stdenvNoCC -, xdg-utils -, zbar -}: -stdenvNoCC.mkDerivation rec { - pname = "wifi-qr"; - version = "unstable-2023-04-19"; - - outputs = [ "out" "man" ]; - - src = fetchFromGitHub { - owner = "kokoye2007"; - repo = "wifi-qr"; - rev = "b81d4a44257252f07e745464879aa5618ae3d434"; - hash = "sha256-oGTAr+raJGpK4PV4GdBxX8fIUE8gcbXw7W0SvQJAee0="; - }; - - nativeBuildInputs = [ - installShellFiles - makeWrapper - ]; - - dontBuild = true; - - dontConfigure = true; - - postPatch = '' - substituteInPlace wifi-qr.desktop \ - --replace "Exec=sh -c 'wifi-qr g'" "Exec=$out/bin/wifi-qr g" \ - --replace "Exec=sh -c 'wifi-qr q'" "Exec=$out/bin/wifi-qr q" \ - --replace "Exec=sh -c 'wifi-qr p'" "Exec=$out/bin/wifi-qr p" \ - --replace "Exec=sh -c 'wifi-qr c'" "Exec=$out/bin/wifi-qr c" \ - --replace "Icon=wifi-qr.svg" "Icon=wifi-qr" - ''; - - installPhase = '' - runHook preInstall - - install -Dm755 wifi-qr $out/bin/wifi-qr - - install -Dm644 wifi-qr.desktop $out/share/applications/wifi-qr.desktop - install -Dm644 wifi-qr.svg $out/share/icons/hicolor/scalable/apps/wifi-qr.svg - - installManPage wifi-qr.1 - - runHook postInstall - ''; - - wrapperPath = lib.makeBinPath [ - gnome.zenity - networkmanager - qrencode - xdg-utils - zbar - ]; - - fixupPhase = '' - runHook preFixup - - patchShebangs $out/bin/wifi-qr - wrapProgram $out/bin/wifi-qr --suffix PATH : "${wrapperPath}" - - runHook postFixup - ''; - - meta = with lib; { - description = "WiFi password sharing via QR codes"; - homepage = "https://github.com/kokoye2007/wifi-qr"; - license = with licenses; [ gpl3Plus ]; - mainProgram = "wifi-qr"; - maintainers = with maintainers; [ ambroisie ]; - platforms = platforms.linux; - }; -} From 26950332c7176f98e3a35273d6e8bdd7118a1352 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 19 Dec 2023 22:00:32 +0100 Subject: [PATCH 1148/1588] home: keyboard: extract from X module This deserves to be its own standalone module, as I would want to use it in both X and Wayland, etc... --- modules/home/default.nix | 1 + modules/home/{x => }/keyboard/default.nix | 6 +++++- modules/home/x/default.nix | 4 ---- 3 files changed, 6 insertions(+), 5 deletions(-) rename modules/home/{x => }/keyboard/default.nix (50%) diff --git a/modules/home/default.nix b/modules/home/default.nix index 8ba3a8d..4dcfc35 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -23,6 +23,7 @@ ./gtk ./htop ./jq + ./keyboard ./mail ./mpv ./nix diff --git a/modules/home/x/keyboard/default.nix b/modules/home/keyboard/default.nix similarity index 50% rename from modules/home/x/keyboard/default.nix rename to modules/home/keyboard/default.nix index 40af800..2216a08 100644 --- a/modules/home/x/keyboard/default.nix +++ b/modules/home/keyboard/default.nix @@ -1,8 +1,12 @@ { config, lib, ... }: let - cfg = config.my.home.x; + cfg = config.my.home.keyboard; in { + options.my.home.keyboard = with lib; { + enable = my.mkDisableOption "keyboard configuration"; + }; + config = lib.mkIf cfg.enable { home.keyboard = { layout = "fr"; diff --git a/modules/home/x/default.nix b/modules/home/x/default.nix index 0312bc4..c320e52 100644 --- a/modules/home/x/default.nix +++ b/modules/home/x/default.nix @@ -3,10 +3,6 @@ let cfg = config.my.home.x; in { - imports = [ - ./keyboard - ]; - options.my.home.x = with lib; { enable = mkEnableOption "X server configuration"; }; From faa87743e5f54be48874282aa4d244a1482e6e72 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 25 Dec 2023 19:25:08 +0100 Subject: [PATCH 1149/1588] nixos: services: nginx: use attrset for vhosts Attribute sets compose better than lists, it was a mistake to use a list in the first place... --- modules/nixos/services/blog/default.nix | 2 +- .../nixos/services/calibre-web/default.nix | 8 ++-- .../nixos/services/drone/server/default.nix | 8 ++-- modules/nixos/services/flood/default.nix | 8 ++-- modules/nixos/services/gitea/default.nix | 12 +++--- modules/nixos/services/indexers/default.nix | 24 ++++++------ modules/nixos/services/jellyfin/default.nix | 8 ++-- modules/nixos/services/lohr/default.nix | 8 ++-- modules/nixos/services/matrix/default.nix | 20 +++++----- modules/nixos/services/miniflux/default.nix | 8 ++-- modules/nixos/services/monitoring/default.nix | 8 ++-- modules/nixos/services/navidrome/default.nix | 8 ++-- modules/nixos/services/nginx/default.nix | 38 +++++++++---------- modules/nixos/services/nix-cache/default.nix | 8 ++-- modules/nixos/services/paperless/default.nix | 8 ++-- modules/nixos/services/pirate/default.nix | 8 ++-- modules/nixos/services/podgrab/default.nix | 8 ++-- modules/nixos/services/sabnzbd/default.nix | 8 ++-- .../services/tandoor-recipes/default.nix | 8 ++-- .../nixos/services/transmission/default.nix | 8 ++-- modules/nixos/services/vikunja/default.nix | 8 ++-- .../services/woodpecker/server/default.nix | 12 +++--- 22 files changed, 118 insertions(+), 118 deletions(-) diff --git a/modules/nixos/services/blog/default.nix b/modules/nixos/services/blog/default.nix index 4b646c3..38ada5e 100644 --- a/modules/nixos/services/blog/default.nix +++ b/modules/nixos/services/blog/default.nix @@ -9,7 +9,7 @@ let root = "/var/www/${subdomain}"; }; - hostsInfo = map makeHostInfo [ "cv" "dev" "key" ]; + hostsInfo = lib.flip lib.genAttrs makeHostInfo [ "cv" "dev" "key" ]; in { options.my.services.blog = { diff --git a/modules/nixos/services/calibre-web/default.nix b/modules/nixos/services/calibre-web/default.nix index 858851c..fe53b7e 100644 --- a/modules/nixos/services/calibre-web/default.nix +++ b/modules/nixos/services/calibre-web/default.nix @@ -40,12 +40,12 @@ in # Set-up media group users.groups.media = { }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + library = { subdomain = "library"; inherit (cfg) port; - } - ]; + }; + }; my.services.backup = { paths = [ diff --git a/modules/nixos/services/drone/server/default.nix b/modules/nixos/services/drone/server/default.nix index d651f85..2207765 100644 --- a/modules/nixos/services/drone/server/default.nix +++ b/modules/nixos/services/drone/server/default.nix @@ -45,11 +45,11 @@ in }]; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + drone = { subdomain = "drone"; inherit (cfg) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/flood/default.nix b/modules/nixos/services/flood/default.nix index ff5d941..e227dde 100644 --- a/modules/nixos/services/flood/default.nix +++ b/modules/nixos/services/flood/default.nix @@ -40,11 +40,11 @@ in }; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + flood = { subdomain = "flood"; inherit (cfg) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix index 00ba941..4d5429e 100644 --- a/modules/nixos/services/gitea/default.nix +++ b/modules/nixos/services/gitea/default.nix @@ -116,18 +116,18 @@ in }; users.groups.git = { }; - my.services.nginx.virtualHosts = [ + my.services.nginx.virtualHosts = { # Proxy to Gitea - { + git = { subdomain = "git"; inherit (cfg) port; - } + }; # Redirect `gitea.` to actual forge subdomain - { + gitea = { subdomain = "gitea"; redirect = config.services.gitea.settings.server.ROOT_URL; - } - ]; + }; + }; my.services.backup = { paths = [ diff --git a/modules/nixos/services/indexers/default.nix b/modules/nixos/services/indexers/default.nix index fb06a0b..ff2d91c 100644 --- a/modules/nixos/services/indexers/default.nix +++ b/modules/nixos/services/indexers/default.nix @@ -28,12 +28,12 @@ in }; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + jackett = { subdomain = "jackett"; port = jackettPort; - } - ]; + }; + }; }) (lib.mkIf cfg.nzbhydra.enable { @@ -41,12 +41,12 @@ in enable = true; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + nzbhydra = { subdomain = "nzbhydra"; port = nzbhydraPort; - } - ]; + }; + }; }) (lib.mkIf cfg.prowlarr.enable { @@ -54,12 +54,12 @@ in enable = true; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + prowlarr = { subdomain = "prowlarr"; port = prowlarrPort; - } - ]; + }; + }; services.fail2ban.jails = { prowlarr = '' diff --git a/modules/nixos/services/jellyfin/default.nix b/modules/nixos/services/jellyfin/default.nix index 2fcf51e..326dab3 100644 --- a/modules/nixos/services/jellyfin/default.nix +++ b/modules/nixos/services/jellyfin/default.nix @@ -17,8 +17,8 @@ in # Set-up media group users.groups.media = { }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + jellyfin = { subdomain = "jellyfin"; port = 8096; extraConfig = { @@ -33,7 +33,7 @@ in proxyWebsockets = true; }; }; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/lohr/default.nix b/modules/nixos/services/lohr/default.nix index 245567c..af292cc 100644 --- a/modules/nixos/services/lohr/default.nix +++ b/modules/nixos/services/lohr/default.nix @@ -98,11 +98,11 @@ in }; users.groups.lohr = { }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + lohr = { subdomain = "lohr"; inherit (cfg) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index 52b60c5..3328747 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -117,9 +117,9 @@ in }; }; - my.services.nginx.virtualHosts = [ + my.services.nginx.virtualHosts = { # Element Web app deployment - { + chat = { subdomain = "chat"; root = pkgs.element-web.override { conf = { @@ -145,22 +145,22 @@ in }; }; }; - } + }; # Dummy VHosts for port collision detection - { + matrix-federation = { subdomain = "matrix-federation"; port = federationPort.private; - } - { + }; + matrix-client = { subdomain = "matrix-client"; port = clientPort.private; - } + }; # Sliding sync - { + matrix-sync = { subdomain = "matrix-sync"; inherit (cfg.slidingSync) port; - } - ]; + }; + }; # Those are too complicated to use my wrapper... services.nginx.virtualHosts = { diff --git a/modules/nixos/services/miniflux/default.nix b/modules/nixos/services/miniflux/default.nix index 6d9ffc8..07eb6f8 100644 --- a/modules/nixos/services/miniflux/default.nix +++ b/modules/nixos/services/miniflux/default.nix @@ -43,11 +43,11 @@ in }; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + reader = { subdomain = "reader"; inherit (cfg) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/monitoring/default.nix b/modules/nixos/services/monitoring/default.nix index 829bfe0..2f23ff0 100644 --- a/modules/nixos/services/monitoring/default.nix +++ b/modules/nixos/services/monitoring/default.nix @@ -125,11 +125,11 @@ in ]; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + monitoring = { subdomain = "monitoring"; inherit (cfg.grafana) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/navidrome/default.nix b/modules/nixos/services/navidrome/default.nix index 6c001fd..92f9fd2 100644 --- a/modules/nixos/services/navidrome/default.nix +++ b/modules/nixos/services/navidrome/default.nix @@ -47,11 +47,11 @@ in }; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + music = { subdomain = "music"; inherit (cfg) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index 6ca2e42..53c947b 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -97,19 +97,19 @@ in }; virtualHosts = mkOption { - type = types.listOf virtualHostOption; - default = [ ]; + type = types.attrsOf virtualHostOption; + default = { }; example = litteralExample '' - [ - { - subdomain = "gitea"; + { + gitea = { + subdomain = "git"; port = 8080; - } - { + }; + dev = { subdomain = "dev"; root = "/var/www/dev"; - } - { + }; + jellyfin = { subdomain = "jellyfin"; port = 8096; extraConfig = { @@ -118,8 +118,8 @@ in proxyWebsockets = true; }; }; - } - ] + }; + } ''; description = '' List of virtual hosts to set-up using default settings. @@ -190,7 +190,7 @@ in config = lib.mkIf cfg.enable { assertions = [ ] - ++ (lib.flip builtins.map cfg.virtualHosts ({ subdomain, ... } @ args: + ++ (lib.flip lib.mapAttrsToList cfg.virtualHosts (_: { subdomain, ... } @ args: let conflicts = [ "port" "root" "socket" "redirect" ]; optionsNotNull = builtins.map (v: args.${v} != null) conflicts; @@ -209,7 +209,7 @@ in ports = lib.my.mapFilter (v: v != null) ({ port, ... }: port) - cfg.virtualHosts; + (lib.attrValues cfg.virtualHosts); portCounts = lib.my.countValues ports; nonUniquesCounts = lib.filterAttrs (_: v: v != 1) portCounts; nonUniques = builtins.attrNames nonUniquesCounts; @@ -221,7 +221,7 @@ in map mkAssertion nonUniques ) ++ ( let - subs = map ({ subdomain, ... }: subdomain) cfg.virtualHosts; + subs = lib.mapAttrsToList (_: { subdomain, ... }: subdomain) cfg.virtualHosts; subsCounts = lib.my.countValues subs; nonUniquesCounts = lib.filterAttrs (_: v: v != 1) subsCounts; nonUniques = builtins.attrNames nonUniquesCounts; @@ -325,7 +325,7 @@ in ]) ); in - lib.my.genAttrs' cfg.virtualHosts mkVHost; + lib.my.genAttrs' (lib.attrValues cfg.virtualHosts) mkVHost; sso = { enable = true; @@ -403,12 +403,12 @@ in }; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + login = { subdomain = "login"; inherit (cfg.sso) port; - } - ]; + }; + }; networking.firewall.allowedTCPPorts = [ 80 443 ]; diff --git a/modules/nixos/services/nix-cache/default.nix b/modules/nixos/services/nix-cache/default.nix index b3bdbf3..5517a78 100644 --- a/modules/nixos/services/nix-cache/default.nix +++ b/modules/nixos/services/nix-cache/default.nix @@ -43,11 +43,11 @@ in signKeyPath = cfg.secretKeyFile; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + cache = { subdomain = "cache"; inherit (cfg) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index 90f6b0c..87a816a 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -143,8 +143,8 @@ in extraGroups = [ "media" ]; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + paperless = { subdomain = "paperless"; inherit (cfg) port; sso = { @@ -155,8 +155,8 @@ in extraConfig = { locations."/".proxyWebsockets = true; }; - } - ]; + }; + }; my.services.backup = { paths = [ diff --git a/modules/nixos/services/pirate/default.nix b/modules/nixos/services/pirate/default.nix index 59f9794..88a2250 100644 --- a/modules/nixos/services/pirate/default.nix +++ b/modules/nixos/services/pirate/default.nix @@ -21,12 +21,12 @@ let }; mkRedirection = service: { - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + ${service} = { subdomain = service; port = ports.${service}; - } - ]; + }; + }; }; mkFail2Ban = service: lib.mkIf cfg.${service}.enable { diff --git a/modules/nixos/services/podgrab/default.nix b/modules/nixos/services/podgrab/default.nix index 9793d60..e59b20d 100644 --- a/modules/nixos/services/podgrab/default.nix +++ b/modules/nixos/services/podgrab/default.nix @@ -31,11 +31,11 @@ in inherit (cfg) passwordFile port; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + podgrab = { subdomain = "podgrab"; inherit (cfg) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/sabnzbd/default.nix b/modules/nixos/services/sabnzbd/default.nix index 7ab145f..42058e7 100644 --- a/modules/nixos/services/sabnzbd/default.nix +++ b/modules/nixos/services/sabnzbd/default.nix @@ -18,12 +18,12 @@ in # Set-up media group users.groups.media = { }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + sabnzbd = { subdomain = "sabnzbd"; inherit port; - } - ]; + }; + }; services.fail2ban.jails = { sabnzbd = '' diff --git a/modules/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix index 541e198..353fac3 100644 --- a/modules/nixos/services/tandoor-recipes/default.nix +++ b/modules/nixos/services/tandoor-recipes/default.nix @@ -70,11 +70,11 @@ in ]; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + recipes = { subdomain = "recipes"; inherit (cfg) port; - } - ]; + }; + }; }; } diff --git a/modules/nixos/services/transmission/default.nix b/modules/nixos/services/transmission/default.nix index 28df477..ce7f9e6 100644 --- a/modules/nixos/services/transmission/default.nix +++ b/modules/nixos/services/transmission/default.nix @@ -80,12 +80,12 @@ in # Default transmission webui, I prefer combustion but its development # seems to have stalled - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + transmission = { subdomain = "transmission"; inherit (cfg) port; - } - ]; + }; + }; networking.firewall = { allowedTCPPorts = [ cfg.peerPort ]; diff --git a/modules/nixos/services/vikunja/default.nix b/modules/nixos/services/vikunja/default.nix index 8c051b0..425698d 100644 --- a/modules/nixos/services/vikunja/default.nix +++ b/modules/nixos/services/vikunja/default.nix @@ -59,8 +59,8 @@ in }; # This is a weird setup - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + vikunja = { inherit subdomain; # Serve the root for the web-ui root = config.services.vikunja.package-frontend; @@ -80,8 +80,8 @@ in }; }; }; - } - ]; + }; + }; systemd.services.vikunja-api = { serviceConfig = { diff --git a/modules/nixos/services/woodpecker/server/default.nix b/modules/nixos/services/woodpecker/server/default.nix index cebbc9b..b5ec0d8 100644 --- a/modules/nixos/services/woodpecker/server/default.nix +++ b/modules/nixos/services/woodpecker/server/default.nix @@ -52,16 +52,16 @@ in }]; }; - my.services.nginx.virtualHosts = [ - { + my.services.nginx.virtualHosts = { + woodpecker = { subdomain = "woodpecker"; inherit (cfg) port; - } + }; # I might want to be able to RPC from other hosts in the future - { + woodpecker-rpc = { subdomain = "woodpecker-rpc"; port = cfg.rpcPort; - } - ]; + }; + }; }; } From b7a4bc063fb6b26064c1f626aa3bd1b3960c85b5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 25 Dec 2023 19:28:53 +0100 Subject: [PATCH 1150/1588] nixos: services: nginx: add default subdomain In almost all cases, the subdomain should be the same as the attribute name... --- modules/nixos/services/nginx/default.nix | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index 53c947b..e916c9c 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -5,10 +5,11 @@ let domain = config.networking.domain; - virtualHostOption = with lib; types.submodule { + virtualHostOption = with lib; types.submodule ({ name, ... }: { options = { subdomain = mkOption { type = types.str; + default = name; example = "dev"; description = '' Which subdomain, under config.networking.domain, to use @@ -72,7 +73,7 @@ let ''; }; }; - }; + }); in { imports = [ @@ -106,11 +107,9 @@ in port = 8080; }; dev = { - subdomain = "dev"; root = "/var/www/dev"; }; jellyfin = { - subdomain = "jellyfin"; port = 8096; extraConfig = { locations."/socket" = { From 6948424b81e41c4335c9ff13d95ce1534703d644 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 25 Dec 2023 19:42:20 +0100 Subject: [PATCH 1151/1588] nixos: services: remove redundant subdomains See previous commit for the defaults. --- modules/nixos/services/blog/default.nix | 1 - modules/nixos/services/calibre-web/default.nix | 1 - modules/nixos/services/drone/server/default.nix | 1 - modules/nixos/services/flood/default.nix | 1 - modules/nixos/services/gitea/default.nix | 2 -- modules/nixos/services/indexers/default.nix | 3 --- modules/nixos/services/jellyfin/default.nix | 1 - modules/nixos/services/lohr/default.nix | 1 - modules/nixos/services/matrix/default.nix | 4 ---- modules/nixos/services/miniflux/default.nix | 1 - modules/nixos/services/monitoring/default.nix | 1 - modules/nixos/services/navidrome/default.nix | 1 - modules/nixos/services/nginx/default.nix | 1 - modules/nixos/services/nix-cache/default.nix | 1 - modules/nixos/services/paperless/default.nix | 1 - modules/nixos/services/pirate/default.nix | 1 - modules/nixos/services/podgrab/default.nix | 1 - modules/nixos/services/sabnzbd/default.nix | 1 - modules/nixos/services/tandoor-recipes/default.nix | 1 - modules/nixos/services/transmission/default.nix | 1 - modules/nixos/services/vikunja/default.nix | 3 +-- modules/nixos/services/woodpecker/server/default.nix | 2 -- 22 files changed, 1 insertion(+), 30 deletions(-) diff --git a/modules/nixos/services/blog/default.nix b/modules/nixos/services/blog/default.nix index 38ada5e..3e68df2 100644 --- a/modules/nixos/services/blog/default.nix +++ b/modules/nixos/services/blog/default.nix @@ -5,7 +5,6 @@ let domain = config.networking.domain; makeHostInfo = subdomain: { - inherit subdomain; root = "/var/www/${subdomain}"; }; diff --git a/modules/nixos/services/calibre-web/default.nix b/modules/nixos/services/calibre-web/default.nix index fe53b7e..b7bf9df 100644 --- a/modules/nixos/services/calibre-web/default.nix +++ b/modules/nixos/services/calibre-web/default.nix @@ -42,7 +42,6 @@ in my.services.nginx.virtualHosts = { library = { - subdomain = "library"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/drone/server/default.nix b/modules/nixos/services/drone/server/default.nix index 2207765..a3a1e49 100644 --- a/modules/nixos/services/drone/server/default.nix +++ b/modules/nixos/services/drone/server/default.nix @@ -47,7 +47,6 @@ in my.services.nginx.virtualHosts = { drone = { - subdomain = "drone"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/flood/default.nix b/modules/nixos/services/flood/default.nix index e227dde..155e73d 100644 --- a/modules/nixos/services/flood/default.nix +++ b/modules/nixos/services/flood/default.nix @@ -42,7 +42,6 @@ in my.services.nginx.virtualHosts = { flood = { - subdomain = "flood"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix index 4d5429e..4a8a3bb 100644 --- a/modules/nixos/services/gitea/default.nix +++ b/modules/nixos/services/gitea/default.nix @@ -119,12 +119,10 @@ in my.services.nginx.virtualHosts = { # Proxy to Gitea git = { - subdomain = "git"; inherit (cfg) port; }; # Redirect `gitea.` to actual forge subdomain gitea = { - subdomain = "gitea"; redirect = config.services.gitea.settings.server.ROOT_URL; }; }; diff --git a/modules/nixos/services/indexers/default.nix b/modules/nixos/services/indexers/default.nix index ff2d91c..8a42345 100644 --- a/modules/nixos/services/indexers/default.nix +++ b/modules/nixos/services/indexers/default.nix @@ -30,7 +30,6 @@ in my.services.nginx.virtualHosts = { jackett = { - subdomain = "jackett"; port = jackettPort; }; }; @@ -43,7 +42,6 @@ in my.services.nginx.virtualHosts = { nzbhydra = { - subdomain = "nzbhydra"; port = nzbhydraPort; }; }; @@ -56,7 +54,6 @@ in my.services.nginx.virtualHosts = { prowlarr = { - subdomain = "prowlarr"; port = prowlarrPort; }; }; diff --git a/modules/nixos/services/jellyfin/default.nix b/modules/nixos/services/jellyfin/default.nix index 326dab3..9efe11e 100644 --- a/modules/nixos/services/jellyfin/default.nix +++ b/modules/nixos/services/jellyfin/default.nix @@ -19,7 +19,6 @@ in my.services.nginx.virtualHosts = { jellyfin = { - subdomain = "jellyfin"; port = 8096; extraConfig = { locations."/" = { diff --git a/modules/nixos/services/lohr/default.nix b/modules/nixos/services/lohr/default.nix index af292cc..dd4eea8 100644 --- a/modules/nixos/services/lohr/default.nix +++ b/modules/nixos/services/lohr/default.nix @@ -100,7 +100,6 @@ in my.services.nginx.virtualHosts = { lohr = { - subdomain = "lohr"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index 3328747..bd2a017 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -120,7 +120,6 @@ in my.services.nginx.virtualHosts = { # Element Web app deployment chat = { - subdomain = "chat"; root = pkgs.element-web.override { conf = { default_server_config = { @@ -148,16 +147,13 @@ in }; # Dummy VHosts for port collision detection matrix-federation = { - subdomain = "matrix-federation"; port = federationPort.private; }; matrix-client = { - subdomain = "matrix-client"; port = clientPort.private; }; # Sliding sync matrix-sync = { - subdomain = "matrix-sync"; inherit (cfg.slidingSync) port; }; }; diff --git a/modules/nixos/services/miniflux/default.nix b/modules/nixos/services/miniflux/default.nix index 07eb6f8..5104c8b 100644 --- a/modules/nixos/services/miniflux/default.nix +++ b/modules/nixos/services/miniflux/default.nix @@ -45,7 +45,6 @@ in my.services.nginx.virtualHosts = { reader = { - subdomain = "reader"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/monitoring/default.nix b/modules/nixos/services/monitoring/default.nix index 2f23ff0..49919c1 100644 --- a/modules/nixos/services/monitoring/default.nix +++ b/modules/nixos/services/monitoring/default.nix @@ -127,7 +127,6 @@ in my.services.nginx.virtualHosts = { monitoring = { - subdomain = "monitoring"; inherit (cfg.grafana) port; }; }; diff --git a/modules/nixos/services/navidrome/default.nix b/modules/nixos/services/navidrome/default.nix index 92f9fd2..944a97a 100644 --- a/modules/nixos/services/navidrome/default.nix +++ b/modules/nixos/services/navidrome/default.nix @@ -49,7 +49,6 @@ in my.services.nginx.virtualHosts = { music = { - subdomain = "music"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index e916c9c..ae6c0dc 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -404,7 +404,6 @@ in my.services.nginx.virtualHosts = { login = { - subdomain = "login"; inherit (cfg.sso) port; }; }; diff --git a/modules/nixos/services/nix-cache/default.nix b/modules/nixos/services/nix-cache/default.nix index 5517a78..1ce3161 100644 --- a/modules/nixos/services/nix-cache/default.nix +++ b/modules/nixos/services/nix-cache/default.nix @@ -45,7 +45,6 @@ in my.services.nginx.virtualHosts = { cache = { - subdomain = "cache"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index 87a816a..c40e895 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -145,7 +145,6 @@ in my.services.nginx.virtualHosts = { paperless = { - subdomain = "paperless"; inherit (cfg) port; sso = { enable = true; diff --git a/modules/nixos/services/pirate/default.nix b/modules/nixos/services/pirate/default.nix index 88a2250..e500b54 100644 --- a/modules/nixos/services/pirate/default.nix +++ b/modules/nixos/services/pirate/default.nix @@ -23,7 +23,6 @@ let mkRedirection = service: { my.services.nginx.virtualHosts = { ${service} = { - subdomain = service; port = ports.${service}; }; }; diff --git a/modules/nixos/services/podgrab/default.nix b/modules/nixos/services/podgrab/default.nix index e59b20d..5ceebb6 100644 --- a/modules/nixos/services/podgrab/default.nix +++ b/modules/nixos/services/podgrab/default.nix @@ -33,7 +33,6 @@ in my.services.nginx.virtualHosts = { podgrab = { - subdomain = "podgrab"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/sabnzbd/default.nix b/modules/nixos/services/sabnzbd/default.nix index 42058e7..9e0d9c3 100644 --- a/modules/nixos/services/sabnzbd/default.nix +++ b/modules/nixos/services/sabnzbd/default.nix @@ -20,7 +20,6 @@ in my.services.nginx.virtualHosts = { sabnzbd = { - subdomain = "sabnzbd"; inherit port; }; }; diff --git a/modules/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix index 353fac3..f5dc2db 100644 --- a/modules/nixos/services/tandoor-recipes/default.nix +++ b/modules/nixos/services/tandoor-recipes/default.nix @@ -72,7 +72,6 @@ in my.services.nginx.virtualHosts = { recipes = { - subdomain = "recipes"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/transmission/default.nix b/modules/nixos/services/transmission/default.nix index ce7f9e6..aeb88b7 100644 --- a/modules/nixos/services/transmission/default.nix +++ b/modules/nixos/services/transmission/default.nix @@ -82,7 +82,6 @@ in # seems to have stalled my.services.nginx.virtualHosts = { transmission = { - subdomain = "transmission"; inherit (cfg) port; }; }; diff --git a/modules/nixos/services/vikunja/default.nix b/modules/nixos/services/vikunja/default.nix index 425698d..9767d00 100644 --- a/modules/nixos/services/vikunja/default.nix +++ b/modules/nixos/services/vikunja/default.nix @@ -60,8 +60,7 @@ in # This is a weird setup my.services.nginx.virtualHosts = { - vikunja = { - inherit subdomain; + ${subdomain} = { # Serve the root for the web-ui root = config.services.vikunja.package-frontend; diff --git a/modules/nixos/services/woodpecker/server/default.nix b/modules/nixos/services/woodpecker/server/default.nix index b5ec0d8..f02a5c5 100644 --- a/modules/nixos/services/woodpecker/server/default.nix +++ b/modules/nixos/services/woodpecker/server/default.nix @@ -54,12 +54,10 @@ in my.services.nginx.virtualHosts = { woodpecker = { - subdomain = "woodpecker"; inherit (cfg) port; }; # I might want to be able to RPC from other hosts in the future woodpecker-rpc = { - subdomain = "woodpecker-rpc"; port = cfg.rpcPort; }; }; From 71ee178510edc5d66b07bd53b58ba85a7591bbfe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 25 Dec 2023 19:43:44 +0100 Subject: [PATCH 1152/1588] nixos: services: nginx: fix SSO subdomain --- modules/nixos/services/nginx/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index ae6c0dc..7980ad9 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -403,7 +403,7 @@ in }; my.services.nginx.virtualHosts = { - login = { + ${cfg.sso.subdomain} = { inherit (cfg.sso) port; }; }; From 932717b7548ae5f7a7fdec3e7e2d78d0fca6ef68 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 26 Dec 2023 15:17:03 +0100 Subject: [PATCH 1153/1588] nixos: services: jellyfin: loosen umask I just noticed that all the metadata files Jellyfin stores have very restrictive ACLs. The whole point of the `media` group is to make my HTPC eco-system work together. In particular this should allow Sonarr and friends to delete folders without manual intervention. --- modules/nixos/services/jellyfin/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/nixos/services/jellyfin/default.nix b/modules/nixos/services/jellyfin/default.nix index 9efe11e..f5aaa99 100644 --- a/modules/nixos/services/jellyfin/default.nix +++ b/modules/nixos/services/jellyfin/default.nix @@ -17,6 +17,13 @@ in # Set-up media group users.groups.media = { }; + systemd.services.jellyfin = { + serviceConfig = { + # Loose umask to make Jellyfin metadata more broadly readable + UMask = lib.mkForce "0002"; + }; + }; + my.services.nginx.virtualHosts = { jellyfin = { port = 8096; From 39eba647acacdf2bb2aafb00be694fa5c2e0726f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 3 Jan 2024 14:15:42 +0000 Subject: [PATCH 1154/1588] hosts: nixos: aramis: home: use 'pinentry-qt' The GTK2 variant has been removed [1]. I may revise this in the future if [2] is merged (I'd like to try `pinentry-rofi` [3]). [1]: https://github.com/NixOS/nixpkgs/pull/270266 [2]: https://github.com/NixOS/nixpkgs/pull/277221 [3]: https://github.com/plattfot/pinentry-rofi --- hosts/nixos/aramis/home.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index 66a0892..dfe9dbe 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -2,7 +2,7 @@ { my.home = { # Use graphical pinentry - bitwarden.pinentry = "gtk2"; + bitwarden.pinentry = "qt"; # Ebook library calibre.enable = true; # Some amount of social life @@ -14,7 +14,7 @@ # Blue light filter gammastep.enable = true; # Use a small popup to enter passwords - gpg.pinentry = "gtk2"; + gpg.pinentry = "qt"; # Machine specific packages packages.additionalPackages = with pkgs; [ element-desktop # Matrix client From a93dc2935bd81f3583182c34e74231b4a1fb960f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 3 Jan 2024 14:00:58 +0000 Subject: [PATCH 1155/1588] flake: add explicit 'systems' input --- flake.lock | 8 ++++++-- flake.nix | 10 ++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/flake.lock b/flake.lock index adff398..ef07b15 100644 --- a/flake.lock +++ b/flake.lock @@ -86,7 +86,9 @@ }, "futils": { "inputs": { - "systems": "systems" + "systems": [ + "systems" + ] }, "locked": { "lastModified": 1701680307, @@ -214,7 +216,8 @@ "home-manager": "home-manager", "nixpkgs": "nixpkgs", "nur": "nur", - "pre-commit-hooks": "pre-commit-hooks" + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems" } }, "systems": { @@ -228,6 +231,7 @@ }, "original": { "owner": "nix-systems", + "ref": "main", "repo": "default", "type": "github" } diff --git a/flake.nix b/flake.nix index 8e46ea3..85fafbb 100644 --- a/flake.nix +++ b/flake.nix @@ -27,6 +27,9 @@ owner = "numtide"; repo = "flake-utils"; ref = "main"; + inputs = { + systems.follows = "systems"; + }; }; home-manager = { @@ -64,6 +67,13 @@ nixpkgs-stable.follows = "nixpkgs"; }; }; + + systems = { + type = "github"; + owner = "nix-systems"; + repo = "default"; + ref = "main"; + }; }; # Can't eta-reduce a flake outputs... From e02da7ec693b1a5f9e0119fed1f564ec01025c50 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 3 Jan 2024 14:05:46 +0000 Subject: [PATCH 1156/1588] flake: bump inputs --- flake.lock | 45 ++++++++++++++++++++++++--------------------- flake.nix | 1 + 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index ef07b15..5e4a413 100644 --- a/flake.lock +++ b/flake.lock @@ -8,14 +8,17 @@ ], "nixpkgs": [ "nixpkgs" + ], + "systems": [ + "systems" ] }, "locked": { - "lastModified": 1701216516, - "narHash": "sha256-jKSeJn+7hZ1dZdiH1L+NWUGT2i/BGomKAJ54B9kT06Q=", + "lastModified": 1703433843, + "narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=", "owner": "ryantm", "repo": "agenix", - "rev": "13ac9ac6d68b9a0896e3d43a082947233189e247", + "rev": "417caa847f9383e111d1397039c9d4337d024bf0", "type": "github" }, "original": { @@ -33,11 +36,11 @@ ] }, "locked": { - "lastModified": 1673295039, - "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=", + "lastModified": 1700795494, + "narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "87b9d090ad39b25b2400029c64825fc2a8868943", + "rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d", "type": "github" }, "original": { @@ -70,11 +73,11 @@ ] }, "locked": { - "lastModified": 1701473968, - "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "lastModified": 1704152458, + "narHash": "sha256-DS+dGw7SKygIWf9w4eNBUZsK+4Ug27NwEWmn2tnbycg=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "rev": "88a2cd8166694ba0b6cb374700799cec53aef527", "type": "github" }, "original": { @@ -133,11 +136,11 @@ ] }, "locked": { - "lastModified": 1702538064, - "narHash": "sha256-At5GwJPu2tzvS9dllhBoZmqK6lkkh/sOp2YefWRlaL8=", + "lastModified": 1704276313, + "narHash": "sha256-4eD4RaAKHLj0ztw5pQcNFs3hGpxrsYb0e9Qir+Ute+w=", "owner": "nix-community", "repo": "home-manager", - "rev": "0e2e443ff24f9d75925e91b89d1da44b863734af", + "rev": "4d8f90205c6c90be2e81d94d0e5eedf71c1ba34e", "type": "github" }, "original": { @@ -149,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1702312524, - "narHash": "sha256-gkZJRDBUCpTPBvQk25G0B7vfbpEYM5s5OZqghkjZsnE=", + "lastModified": 1703961334, + "narHash": "sha256-M1mV/Cq+pgjk0rt6VxoyyD+O8cOUiai8t9Q6Yyq4noY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a9bf124c46ef298113270b1f84a164865987a91c", + "rev": "b0d36bd0a420ecee3bc916c91886caca87c894e9", "type": "github" }, "original": { @@ -165,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1702558663, - "narHash": "sha256-MHq/DdwsBwsTRqwFg1JuFtcoGArgvaH/XwbxgWQ4Zn0=", + "lastModified": 1704289500, + "narHash": "sha256-SMoojjdEMgf6GtPh5vzofdeev4nyM+vBi2J6Z/Sufco=", "owner": "nix-community", "repo": "NUR", - "rev": "b839a2bae27c0c14dd99dcc1f6d18f83b0af59bd", + "rev": "a18213c74e43dd6e941c41d77382377938c77caf", "type": "github" }, "original": { @@ -194,11 +197,11 @@ ] }, "locked": { - "lastModified": 1702456155, - "narHash": "sha256-I2XhXGAecdGlqi6hPWYT83AQtMgL+aa3ulA85RAEgOk=", + "lastModified": 1703939133, + "narHash": "sha256-Gxe+mfOT6bL7wLC/tuT2F+V+Sb44jNr8YsJ3cyIl4Mo=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "007a45d064c1c32d04e1b8a0de5ef00984c419bc", + "rev": "9d3d7e18c6bc4473d7520200d4ddab12f8402d38", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 85fafbb..9c29183 100644 --- a/flake.nix +++ b/flake.nix @@ -9,6 +9,7 @@ inputs = { home-manager.follows = "home-manager"; nixpkgs.follows = "nixpkgs"; + systems.follows = "systems"; }; }; From bddcab110d2e85679b10ba6f7b058ac18e79bced Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 3 Jan 2024 15:58:34 +0000 Subject: [PATCH 1157/1588] pkgs: matrix-notifier: 0.3.0 -> 0.4.0 --- pkgs/matrix-notifier/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix index a96cb61..aba093f 100644 --- a/pkgs/matrix-notifier/default.nix +++ b/pkgs/matrix-notifier/default.nix @@ -1,13 +1,13 @@ { lib, curl, jq, fetchFromGitHub, makeWrapper, pandoc, stdenvNoCC }: stdenvNoCC.mkDerivation rec { pname = "matrix-notifier"; - version = "0.3.0"; + version = "0.4.0"; src = fetchFromGitHub { owner = "ambroisie"; repo = "matrix-notifier"; rev = "v${version}"; - hash = "sha256-NE9RO0ep2ibrT9EUPGTnUE3ofdNTCHwelxnX9tCflg0="; + hash = "sha256-6KHteQx0bHodpNp7cuUIGM7uBRPaj386n2t5yz6umpY="; }; nativeBuildInputs = [ From 9546c00124edd4723ab1188d16c53ed3097b2d43 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 5 Jan 2024 10:59:45 +0000 Subject: [PATCH 1158/1588] home: vim: ftdetect: fix obsolete comment --- modules/home/vim/ftdetect/automake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/vim/ftdetect/automake.lua b/modules/home/vim/ftdetect/automake.lua index cfa15d2..68a30ed 100644 --- a/modules/home/vim/ftdetect/automake.lua +++ b/modules/home/vim/ftdetect/automake.lua @@ -1,4 +1,4 @@ --- Use Automake filetype for `local.am` files, explicit `set` to force override +-- Use Automake filetype for `local.am` files vim.filetype.add({ filename = { ["local.am"] = "automake", From b8b64bed8e4b3d8d109e7dcf38f69a4242142ec3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 5 Jan 2024 10:59:58 +0000 Subject: [PATCH 1159/1588] home: vim: ftdetect: add glsl --- modules/home/vim/ftdetect/glsl.lua | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 modules/home/vim/ftdetect/glsl.lua diff --git a/modules/home/vim/ftdetect/glsl.lua b/modules/home/vim/ftdetect/glsl.lua new file mode 100644 index 0000000..2f4f1dd --- /dev/null +++ b/modules/home/vim/ftdetect/glsl.lua @@ -0,0 +1,7 @@ +-- Use GLSL filetype for common shader file extensions +vim.filetype.add({ + extension = { + frag = "glsl", + vert = "glsl", + }, +}) From e4f8214cb2edcb7edc188550bc1242ae79c377e6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 3 Jan 2024 23:36:14 +0100 Subject: [PATCH 1160/1588] modules: services: nextcloud: bump to 28 --- modules/nixos/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index 65b7234..4c0e6a8 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -31,7 +31,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud27; + package = pkgs.nextcloud28; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From 10a30551361cc81dfe7bc20590897713f053eff6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 3 Jan 2024 23:36:59 +0100 Subject: [PATCH 1161/1588] nixos: services: nextcloud: fix deprecated option --- modules/nixos/services/nextcloud/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index 4c0e6a8..a962d12 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -41,6 +41,9 @@ in adminpassFile = cfg.passwordFile; dbtype = "pgsql"; dbhost = "/run/postgresql"; + }; + + extraOptions = { overwriteProtocol = "https"; # Nginx only allows SSL }; From 136bd342ff03526eccab877809087b249b0f339b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 3 Jan 2024 23:37:27 +0100 Subject: [PATCH 1162/1588] nixos: services: matrix: fix deprecated option --- modules/nixos/services/matrix/default.nix | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index bd2a017..b958f76 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -104,17 +104,17 @@ in extraConfigFiles = [ cfg.mailConfigFile ] ++ lib.optional (cfg.secretFile != null) cfg.secretFile; + }; - sliding-sync = { - enable = true; + services.matrix-sliding-sync = { + enable = true; - settings = { - SYNCV3_SERVER = "https://${matrixDomain}"; - SYNCV3_BINDADDR = "127.0.0.1:${toString cfg.slidingSync.port}"; - }; - - environmentFile = cfg.slidingSync.secretFile; + settings = { + SYNCV3_SERVER = "https://${matrixDomain}"; + SYNCV3_BINDADDR = "127.0.0.1:${toString cfg.slidingSync.port}"; }; + + environmentFile = cfg.slidingSync.secretFile; }; my.services.nginx.virtualHosts = { @@ -181,7 +181,7 @@ in # Sliding sync "~ ^/(client/|_matrix/client/unstable/org.matrix.msc3575/sync)" = { - proxyPass = "http://${config.services.matrix-synapse.sliding-sync.settings.SYNCV3_BINDADDR}"; + proxyPass = "http://${config.services.matrix-sliding-sync.settings.SYNCV3_BINDADDR}"; }; }; From a5c57333cf2c26c2746d4f109d72f484fd873e5e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 15 Jan 2024 10:14:35 +0000 Subject: [PATCH 1163/1588] hosts: homes: bazin: fix typo --- hosts/homes/ambroisie@bazin/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix index 4490c51..a969d8a 100644 --- a/hosts/homes/ambroisie@bazin/default.nix +++ b/hosts/homes/ambroisie@bazin/default.nix @@ -1,4 +1,4 @@ -# Google Cloudtop configuration +# Google Laptop configuration { lib, pkgs, ... }: { services.gpg-agent.enable = lib.mkForce false; From 629ec539c912bb3a35d7e90e8cbbdf8390338ccc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 15 Jan 2024 16:50:38 +0000 Subject: [PATCH 1164/1588] nixos: services: nextcloud: fix typo --- modules/nixos/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index a962d12..f2ac8e3 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -44,7 +44,7 @@ in }; extraOptions = { - overwriteProtocol = "https"; # Nginx only allows SSL + overwriteprotocol = "https"; # Nginx only allows SSL }; notify_push = { From dca6a9018bd0007426d3f95bda3ebd5b0a55880b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 16 Jan 2024 17:17:43 +0000 Subject: [PATCH 1165/1588] home: vim: ftdetect: add gn --- modules/home/vim/ftdetect/gn.lua | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 modules/home/vim/ftdetect/gn.lua diff --git a/modules/home/vim/ftdetect/gn.lua b/modules/home/vim/ftdetect/gn.lua new file mode 100644 index 0000000..37d772e --- /dev/null +++ b/modules/home/vim/ftdetect/gn.lua @@ -0,0 +1,7 @@ +-- Use GN filetype for Chromium Generate Ninja files +vim.filetype.add({ + extension = { + gn = "gn", + gni = "gn", + }, +}) From 13f20a28eb765b0daef11ec5af5ac3dffb46885e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 16 Jan 2024 17:25:41 +0000 Subject: [PATCH 1166/1588] home: vim: add gn ftplugin --- modules/home/vim/after/ftplugin/gn.vim | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 modules/home/vim/after/ftplugin/gn.vim diff --git a/modules/home/vim/after/ftplugin/gn.vim b/modules/home/vim/after/ftplugin/gn.vim new file mode 100644 index 0000000..0cec9df --- /dev/null +++ b/modules/home/vim/after/ftplugin/gn.vim @@ -0,0 +1,6 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Set comment string, as it seems that no official GN support exists upstream +setlocal commentstring=#\ %s +let b:undo_ftplugin.='|setlocal commentstring<' From 309c344a3431d710e73ca6fc92890c46afc48591 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 22 Jan 2024 17:50:38 +0100 Subject: [PATCH 1167/1588] flake: bump inputs --- flake.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 5e4a413..acf6c48 100644 --- a/flake.lock +++ b/flake.lock @@ -53,11 +53,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1704152458, - "narHash": "sha256-DS+dGw7SKygIWf9w4eNBUZsK+4Ug27NwEWmn2tnbycg=", + "lastModified": 1704982712, + "narHash": "sha256-2Ptt+9h8dczgle2Oo6z5ni5rt/uLMG47UFTR1ry/wgg=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "88a2cd8166694ba0b6cb374700799cec53aef527", + "rev": "07f6395285469419cf9d078f59b5b49993198c00", "type": "github" }, "original": { @@ -94,11 +94,11 @@ ] }, "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "lastModified": 1705309234, + "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", "owner": "numtide", "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", "type": "github" }, "original": { @@ -116,11 +116,11 @@ ] }, "locked": { - "lastModified": 1660459072, - "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1704276313, - "narHash": "sha256-4eD4RaAKHLj0ztw5pQcNFs3hGpxrsYb0e9Qir+Ute+w=", + "lastModified": 1705879479, + "narHash": "sha256-ZIohbyly1KOe+8I3gdyNKgVN/oifKdmeI0DzMfytbtg=", "owner": "nix-community", "repo": "home-manager", - "rev": "4d8f90205c6c90be2e81d94d0e5eedf71c1ba34e", + "rev": "2d47379ad591bcb14ca95a90b6964b8305f6c913", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1703961334, - "narHash": "sha256-M1mV/Cq+pgjk0rt6VxoyyD+O8cOUiai8t9Q6Yyq4noY=", + "lastModified": 1705856552, + "narHash": "sha256-JXfnuEf5Yd6bhMs/uvM67/joxYKoysyE3M2k6T3eWbg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b0d36bd0a420ecee3bc916c91886caca87c894e9", + "rev": "612f97239e2cc474c13c9dafa0df378058c5ad8d", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1704289500, - "narHash": "sha256-SMoojjdEMgf6GtPh5vzofdeev4nyM+vBi2J6Z/Sufco=", + "lastModified": 1705927265, + "narHash": "sha256-eUUIBb3qYMrQB0ONGEj2kzKN8yzqwDmR4+Ct5/dvJcs=", "owner": "nix-community", "repo": "NUR", - "rev": "a18213c74e43dd6e941c41d77382377938c77caf", + "rev": "a29c6f71063d0ce903e927fa7885651c00abd33b", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1703939133, - "narHash": "sha256-Gxe+mfOT6bL7wLC/tuT2F+V+Sb44jNr8YsJ3cyIl4Mo=", + "lastModified": 1705757126, + "narHash": "sha256-Eksr+n4Q8EYZKAN0Scef5JK4H6FcHc+TKNHb95CWm+c=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "9d3d7e18c6bc4473d7520200d4ddab12f8402d38", + "rev": "f56597d53fd174f796b5a7d3ee0b494f9e2285cc", "type": "github" }, "original": { From b33938e8251a17e298ea5fb36c575dcf0eb0df6c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 22 Jan 2024 16:57:18 +0000 Subject: [PATCH 1168/1588] nixos: services: paperless: rename settings option --- modules/nixos/services/paperless/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index c40e895..f528ad7 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -52,7 +52,7 @@ in mediaDir = lib.mkIf (cfg.documentPath != null) cfg.documentPath; - extraConfig = + settings = let paperlessDomain = "paperless.${config.networking.domain}"; in From 5cb67cf040c8defbbbc03daf57f89a741c828ce5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 26 Jan 2024 23:25:59 +0100 Subject: [PATCH 1169/1588] hosts: nixos: porthos: secrets: rekey secrets Some of the secrets were using an invalid format due to (probably?) being encrypted with a beta version of `age`. I didn't need to rekey *all* the secrets, but I might as well --- hosts/nixos/porthos/secrets/acme/dns-key.age | 16 +++++++--------- .../porthos/secrets/backup/credentials.age | Bin 453 -> 409 bytes .../nixos/porthos/secrets/backup/password.age | 13 ++++++------- hosts/nixos/porthos/secrets/drone/gitea.age | Bin 575 -> 494 bytes hosts/nixos/porthos/secrets/drone/secret.age | 14 ++++++-------- .../porthos/secrets/drone/ssh/private-key.age | Bin 3799 -> 3703 bytes .../porthos/secrets/gitea/mail-password.age | 14 ++++++-------- hosts/nixos/porthos/secrets/lohr/secret.age | Bin 438 -> 367 bytes hosts/nixos/porthos/secrets/lohr/ssh-key.age | Bin 839 -> 733 bytes hosts/nixos/porthos/secrets/matrix/mail.age | 16 ++++++++-------- hosts/nixos/porthos/secrets/matrix/secret.age | Bin 478 -> 417 bytes .../secrets/matrix/sliding-sync-secret.age | 15 +++++++-------- .../porthos/secrets/miniflux/credentials.age | Bin 477 -> 395 bytes .../porthos/secrets/monitoring/password.age | 17 ++++++++--------- .../porthos/secrets/monitoring/secret-key.age | Bin 507 -> 355 bytes .../porthos/secrets/nextcloud/password.age | Bin 440 -> 355 bytes .../porthos/secrets/nix-cache/cache-key.age | Bin 501 -> 428 bytes .../porthos/secrets/paperless/password.age | 16 +++++++--------- .../porthos/secrets/paperless/secret-key.age | 15 ++++++--------- .../porthos/secrets/podgrab/password.age | 14 ++++++-------- .../secrets/sso/ambroisie/password-hash.age | Bin 459 -> 383 bytes .../secrets/sso/ambroisie/totp-secret.age | Bin 442 -> 375 bytes hosts/nixos/porthos/secrets/sso/auth-key.age | Bin 483 -> 451 bytes .../secrets/tandoor-recipes/secret-key.age | Bin 496 -> 398 bytes .../secrets/transmission/credentials.age | 16 +++++++--------- hosts/nixos/porthos/secrets/vikunja/mail.age | Bin 740 -> 579 bytes .../porthos/secrets/wireguard/private-key.age | 16 +++++++--------- .../porthos/secrets/woodpecker/gitea.age | Bin 543 -> 464 bytes .../porthos/secrets/woodpecker/secret.age | 15 ++++++--------- .../secrets/woodpecker/ssh/private-key.age | Bin 3799 -> 3703 bytes 30 files changed, 87 insertions(+), 110 deletions(-) diff --git a/hosts/nixos/porthos/secrets/acme/dns-key.age b/hosts/nixos/porthos/secrets/acme/dns-key.age index 97d397c..fce2a84 100644 --- a/hosts/nixos/porthos/secrets/acme/dns-key.age +++ b/hosts/nixos/porthos/secrets/acme/dns-key.age @@ -1,10 +1,8 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg 0bz3W8QcGaulxy+kDmM717jTthQpFOCwV9HkenFJEyo -NKeh1/JkX4WAWbOjUeKLMbsyCevnDf3a70FfYUav26c --> ssh-ed25519 jPowng Q59ybJMMteOSB6hZ5m6UPP0N2p8jrDSu5vBYwPgGcRw -j420on2jSsfMsv4MDtiOTMIFjaXV7sIsrS+g4iab+68 --> z}.q-grease s2W<qM_Z t -n1Yfs/gmNsl/n9HtuKBIIT8iwIjYca2yxlh7Q1XAT1B+RZ8oGjW8yCPj1unbDGZL -e5BfLO3zgkEZnQ ---- FSgNKEdDeeTjCx9jN9UtOFl58mC/Lbu1PAYRGK0CZW4 -U+j{g`GˆRQk]d6y5T$ñs~hģԝF%vm \ No newline at end of file +-> ssh-ed25519 cKojmg bQFr9oAnbo1rI/MpUV8wQz/Xj7iZY4ZU+Swf0nSIQFw +zama2XJ0gdvUlD2GHMhmZqHSxHe+dKSfXnHoWDcSw7Y +-> ssh-ed25519 jPowng gitUwSKTNKWLSxnwa185O7x/u0ul93g8wPESdZaKRk8 +uvBIfAUkZp5sg6rfeEGvL5ZDV8m2uSEotW02kjPN3Hw +--- SZxe5f/CUZBvPQa2Sz/UBY3L68rMkIGGRuZPk7YE+Vg +r&{~v?}= +}+ SQM[]k MAtmM/Ls|ޅmCiYC}x \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/backup/credentials.age b/hosts/nixos/porthos/secrets/backup/credentials.age index b8ea008eda49f6750b99423cfb329a69e2012b89..63f0d32c783d7ab230a0a3f156d80a92a69d5621 100644 GIT binary patch delta 374 zcmX@gJd=5XPQ7Pnp;?Z;yJ3jAONNW1pK*ASTbOoIL{3CeQd*_Cub+Xoe}s2Zj=5Ks zBUf5PsY_m^L9S<_e_@45s<ByWdRe8Dwr6UXw!f#PQB+=Kc%G9{p0Sf_IhU@TLUD11 zZfc5=si~o*LRLV2d0x7LN1%~&sk5<5o=Hkll5a(-OTB+eL9nG;iMNSqKuLvLURkDZ zP?}+2aGFslSAnmmn^C%vpKGCSRECdtQj}vzWtqO8ccqbYYOqCMc6xbEu(!6WS9ysq zm#(g^LXu}#m~pvLZkfMts*#&>Kv`*ck#j|%c~O?LTZD6}c6vmjfn#}Cs8gr~ms7x# z=c%tYOXM3YPZV4~d27+C6?L26Jz67RmDlxl!nsA~rZAfqGQ1ABk?9^K(#gC~XMxr< zjeOzhjkDP-_opxW_ABYXb+gm&LppaklEgO}RyrCubr*bR&(P3#Xjh?N_WpSm2W!@X XufN+AGps__uzBhkEfnRl*nJ%U8{LQ& delta 419 zcmbQqe3W^DPJLvKOKFy6dAXB!u!l!kpnpbMNv2_9hNWp)g-e)ml8>vlyK9b9c4df@ z0hf2NZ)J+HkBNI?V4^{)OJG5<c9K^_mUePMr9oAwUzuA(sD+<nZb?XnCzr0BLUD11 zZfc5=si~o*LRLV2d0x7Lmy=0oiC<+@Vv<Q>l1V^nLA`Nea;0xpxpPuZX{l>Ksi#?_ zf1tjBiK$yYSAb<<UQvLHdx3|Sk6}oqUtwg5Us_>yijiStR-V3TZcct#eo=U(nL(Bb z$hvs5oSI_Y^rF<n;#37+g;=9P-{M5|a)p3cg)9SCSFUhl=aBr+kaR9xU0nr>#PG<_ zOk?BvTvtzTw`8}Zf{YxOsM6d#r&7y^q%7?$LyMHaB-fk@!!iplW0hQuAB|5Ag?LMD zlzg{+N~&YjBX+x#JbrO2-L;qAHZ7ItIGUk1TcdwlsMIFKqBj+sF2-NlO>S5k*PYm% zR?YXPd6v(PbKL)qEk1n1?%w^lve`M)7oO9#ZF#$1=E>p-CqvaA?beXj*(#=N&9r2d P$H!w1e7>qRr<MT#6vvth diff --git a/hosts/nixos/porthos/secrets/backup/password.age b/hosts/nixos/porthos/secrets/backup/password.age index 3af9fbe..db3c2fa 100644 --- a/hosts/nixos/porthos/secrets/backup/password.age +++ b/hosts/nixos/porthos/secrets/backup/password.age @@ -1,8 +1,7 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg dgS4bezgtDi44R1A8am+J6zh80kUVYTo1heaxJCtzX4 -F3w/62xwtqYa40NU7OvF9pnZzYz/5hACAGJfMA4e2zw --> ssh-ed25519 jPowng lx81CK3yeNp9RjHCUFJeKYZlRzxBmXuADVBvRc13zCI -P7e75t8xU+ZkYmeQ8mmMfyZZsRdG1J8yrvSUkiWzkFQ --> *z4/`-grease S/)a{e sFd";= ---- 15FVhqRTkoPFEeETRRyFQhsv4Fn19Ozlax0u8Zy9mNA -#+vS4}R%ίF4fnDJZA,_ \ No newline at end of file +-> ssh-ed25519 cKojmg O3DMSSPQP9/ehXmzs0xcCGllu7VSzhd6b4Pii8t2vWQ +Ys1nMv2384elWWGW9C8HabvwUeWu52VsQpxx9L/4/dM +-> ssh-ed25519 jPowng ft/9SX5fpG7+7gHMubaFtb+50/gfNgmaofOVq5UjRUE +xMwdFjFdkH0Li+PikaFt0WAZbFUu5daHgkfN8aQQumo +--- 7DVINvXIXdE1MRwIkeajonYsy1cp4HugCxfTeub5SXU +<<{V?fk/I"/5K"(i \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/drone/gitea.age b/hosts/nixos/porthos/secrets/drone/gitea.age index 90ff83b15b50479b8c0c7a0c174ef6410a8907cb..6b68503af75d0ecf3778dac866e0b86258b1fbea 100644 GIT binary patch delta 467 zcmdnb@{W0eYJIYIepYU}La;@kfu);oikU~2wr6>Ec|?SPNxrGSk#T6HkF#HSS%`Z| zUR7yHW`vV3muXJ6w{fC(UbaO*rcarhQDj(lqGM{ReqM=rzE`22c9x@=bBcM6V@09~ zm#&>cadC!jYKoDmsiCDpRzQAvUb=!|U`Dn<h@o>pQGI@4cDY|to_C;!fp3nJvxQMa zQIeBWsHb6(Q<P(xQBWk8wn<S@golZ*ub*~AN_kqYOKEOprAKPExnp8faFth@N3MaT zV_HyhrD-ykuCA^^QGtI%Vxo72TT-ZNcuH7?d#Xi+Q(jSCX@H4qR$6v$N?MX(mXU8# zMs_h*VST55@1>5;`h_2-t<H&B>~SPs`SEGS1^mV(GbL`O#@9bS;>5coMSsJ53Gcnz zgR5#cbleUO+IV;VUKx?=*0+A_)emI8X<)x<eQuh|N@tc0E$_nL)D?;`Y;avZ;iK^^ zw-2uc&x8y858=|UnCau^-TLa;mm?1Ai<bVLm#Mn){1(1>K9(zYi=-d?c;x}#irJ>h z5vzjd==HArds}RO$MWe*^w&)Z&pdqho}#%({n<waPb@M{oYGh~!RUrgz411)N3Wg; TUfTL$)6^Ns#~#*)nR);KN$bCN delta 549 zcmaFIyq{%)YJFBfetBNHg0V+diKkzvfl*~zWm!RDen^S4yS}?|a(ZR1TbXxwnsH&8 zetJ>4zP6DGm%Fxio<~VhiK(M;sG+BGNI`INYQC$sn^$m_S%zbhNp4nwkxO=(OL&n1 zm#&>cadC!jYKoDmsiCDpvUh$~Zn}bVL{YJGg;zzmU%h8WSy_2xR+M2;QE+5PxsRW3 zka2c+N<g-$YlVkvnwuk+zgMPliCc1BL5h1>MY4r!NV0p0NlucRS7vCac21D7W1*i( zq(y*diAy%fx&qzwqSVCVR0VSd$3XvT7muneg)9{(HEo5IWUfH-s*Fmr4F9xj*9^0W z^hm#YkH8`i<Eq?5Lnoh#JXdd*{DJ^S|2(Js0JosDO!H(eU0q#;sA3<}sx))`EHAUl zfczrMEW<E^%rO0=h>CQ_;)<Mz;tH3@a_7P#pWtjRM}M_PRShim-PSRNOVhM$)n9K` z)cYLvcKZ~;umg8&&+T0G<NI96vZ~vWN&%d`o9a(lZ{Yc)x$l#=puy{Vf=>0twHduZ zB2u>B{JZu%w<-Us(Uaxy{206BXT2S!4^EbBTh#yJ_`efXIjbjUc5iff@ZPh!)Us7$ z#kXZSksh4osje}bWV=M&;-_pj{JU5ByXOa!ofoYy{;OQcY&nB*{vB13psOhh)xK^j tSTG^;n1Pg(-0a-P`!`>3Vr}2WamMHj*J3+S5jiPgt#`ivjq>OG1puG-(}n;5 diff --git a/hosts/nixos/porthos/secrets/drone/secret.age b/hosts/nixos/porthos/secrets/drone/secret.age index c529200..d6e7330 100644 --- a/hosts/nixos/porthos/secrets/drone/secret.age +++ b/hosts/nixos/porthos/secrets/drone/secret.age @@ -1,9 +1,7 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg 1+cLlzctgcM0FnVDwMPOAqBkvMcDBRg8SvCw4djI93Y -oV2XI4f1AvM9P591kZZ6NgJXa+SDtqGzCSgc4psOmxM --> ssh-ed25519 jPowng Ufjfh1p350XxRPg95+/DHdmnl4lC0bbzUUlaxd1Bmxc -/RHwFDSn2ov+60r1uHUigrsn99+GmmKmlk4h4T2gbA0 --> *Lc$@-grease -pzVJAHy1qRq3jUrnFV0DDO7/hwV1US4Ogf0RsrVfX0xzbr73uJ003YjieVB25LqN ---- ME7/iVevyiguyhXugbkVFGzJV0yDccyKNlWbEZa/FmY -YXjb2und;i0X]0jLPT~^kc$DrufreOո+p&wϨ \ No newline at end of file +-> ssh-ed25519 cKojmg 0J8FMcVRf78LYG+dTOFzu3luXwhOjdOg0sx4Jxdccj4 +tdrCcfcYbTZYhL18RG3goiqtyhu3NTn+fJhdIAnU5uA +-> ssh-ed25519 jPowng qlF8nkSEg5fZgai0VP5eTSlZOHyj5IcalTf+QNWITVo +O5aiZX0AJD76ixsu6i9xnnFBQANdsu3h6XzdTQ6KtKU +--- ByMQt9bnbzd8YO0Y93FIYF/lmdbYcOydkYdKxpRQujM ++ܢ6JNmq[ Eb1p)vDPL9̀z!߇'Tad5U: [dύRMpzj \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/drone/ssh/private-key.age b/hosts/nixos/porthos/secrets/drone/ssh/private-key.age index 0211701ba0ee3d8ef341b6d69d70ccaa25b8379b..737777dfa116dbe553768de3ade7df9d423661ec 100644 GIT binary patch literal 3703 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;<3qFz_-> z^6@MWG&IRA2?%y~$xq5iH+4@6H%W>JNz2I!Dm5zeaxx6ah~&!jOQ|rAaJ0xXGRiJX z4fYC5iwY|94l>UO^fYiuHqrM9)Xz@$PD=_;^hCEUD<Ho-FI~Yu$tgX@FFn!F+*dm| zBPq%#Rlm@+%+fi%#N5%?KP=J9AkR6xs5~+v#Dc5XJU=p{)VR{p#LV5L(lE2a&9F@0 zqsS#E%Phn&CpV+QqcSL8-z%@wG@DCTS69IzsKBfu)IG{DJ=x2@!otrmF{&s$Kflze zq^Q!vGO{W;y(-f!v&t+YES>9so89*#`RNbVKRg!Xla^@sJi&rHl6fO{(|V3Wp0kB+ z3#8=xhUj+JyKP{}`5l?DJUeagy%pUlKOKTMP5b$_MVQ}Md)=A3MhmyurYsGa{@TvF zpY9jFKil`tb@%WEJ9~eJ9H>0`-0S2c7VW9`AL~fAyg!o0_g<p^)$$FYjV*<DRrY4y zZjdT|Yq<7x-x=FTAwKoF4_@82-x@x7L$JKV5l6+t((CTVx&2vQJb8(tjoVD4?a^T& z+Y9xzAK7{(2uZR`R^Ky0dgqh$d1AKzLW;l1u9#&vWBXDS*Hu$j?#^NTskqPk*4@P! zhpbG#H6Gh9=e_Szs^E^!-Q5N2|Gk;1Xuz~oaeoHa!Pn1Ui2ThfJ6baHl=uhf_bVCC zeO>v7^`4LNs@4k5WgPrmcf|W5UMOu@b0WIFpoKC2&8B@?ec3y!p4Z<NxcK9R?CZ;4 zYL$xr`K!M9tZL={KzG@+^Cf>K%PlerdDr{O)BmK7!i%D~wLQufI(xcHZkgZPS5cQV z-S5t^s2vq5)BUxU%!$a`cWj-r;I+bsJ65#)-1AkxzqBPY_I9mEKRf#*zar^ty$ZMP zmz?_co}poacA0q4w2d5c6IY+Jy;=TcT72LdZk3DIGcp&pn22ZhDi>_{Hgi{h)QZaJ zRon&hGbYVEddTzv@7*~sqLx>?bw#{5c2+R3AxJ+=Ju}E`@%pNN8^crI9^q}<lkKBk zxxme!>-x`!h7R+MMZAyBb$+OPb-~&4fV_wh+uifL+%;u*=AQmBDaUU6QMtHzlFBQt zCv!aZH%qr%I%kpf<@0hvkE@dAd^27xmEwNzis9@9@6R#+wq5?>^300FUtLEcO>)-G z54ofuR%CX6nbB-}-hV7==2hN>H>N5-Qc^0*UuC3vE1cobjrltxKiD4LKljG6CuXbn zwXLgCH7R7Z4VAv47V9x%<EEl}b@z0yu2b%RfAH8e&zX|uoNZmtCGO>YH*AnIi`<x= zvSZ@D*DuT1nkQAyue{ZnI77Ux?A7m?o_4{X<i9_8Jg?7pf0DEG4F|(^|JBOYFOEg> zEsD^~<&KXPartxZRQ1;h=@WK7EST`YNhwHAI+OF}l}#7l?w*+NVDF#D)4AV9Nllu6 zZtvoNA19to=nwU_kd5U1p0@8Eqff{A#es{~ZDek3S?Hb0+7$5j@qUSe?woSLiywWu zvUU0IYr+%X844e`)qA5vaf$x17Yn&-RS(})Pj%(J;CN-?vFb1Bw}l>CSWEjnFj~<5 zN;Ov{Q&KvH?VIUr{WX(%jW;}5T|GBeiM4W;c;1Y2?^#XwmMBg6l)B_#=H<xssXvsQ zr)GN0OmSJ>|G}-qfAyX}m$gql-1S~Mt5K$Fk@0tyM=MxgEoG>^l|29Ws;up)lC0f2 zKOIYV3)Pu%tTaf8@OmP2ZT{pd2cp-R^ow6z%zvo%b6M<+(~i}A*5%*Rr36kUFFFt$ zdf=AHrOT(+@B2`CZQbU7j?H^oPWu-{L^<5L?VA;!p|bh+{(JA%`*(K~1v-W{&1!V` zG^HW$jLhm2hKs#FsQUexRM(v1{VKL%)ts&R^16Y+=H3OyB0KM$m1nd_sbRhE5Sn(M zfBvFNA^Ufko#OcKn5lR%P}{VUzc}FCvvXBH^XhX}8pN=(oa(HeB~v2*`O4mxFQdLM zdOhuZr{`Qf>s?hhelOSK_;hDYjN+-Iou7qPE$6x*m-@&#^QFbvKgX2$WA2=}XS6WM zn7c~a>7>`p%6D6&c-(8&ox8O%WhwtA9)*Rsj!m^Y#>=s-%wlt|f@<!atv}jCHEg_B z)Ytxvdh%L!>gzIp{|-6EWA}G|krYYRDh%lFv$l&7Hh%0}ns8WZ$v$ttE|Dj3d&@6; zc(wQ6&2Kw6B1Ga=*?tn<7;HAp(&t2$o_}5NHh~{=BfQN_XFaa@y~{aD{HFHZQvHgM z)om^JRHru<?8%EaE9z8}-1zbS^fOLf8o#fdUD)vc*|}*eDmh!sS6VJnp0j3B^{;<D zJAV{BJR5rFq|?N=`!4+}T7KSdLZm)RQ<9tAriOF3B2!n$n)rt^uQ|`}aMt(U)@AQj ztZJR`<jwrmPh&o?EwAW*awq(cWsudS&09Ij3gWV>qdxR>ForK(ec`iNZfak`@)t!F zn_qu;C^oe$Ve6+_@j#{DZ@aACKNB)l5dKssyl0{yNAK=~LTzy!`+m<i;4=9VdtJP$ z;mnKRH?C!Tad)2XzOreSkoK294@(!n)I5=IBUYTw^^4KyfgkhD$=weAS&ZR6^Ht`* z_||5y_CJG`WEz9>6e-Kk-#*RU&?Gpw&|pcI(N&9-huh{&JaLHo^a?-k?dQTw1$HG# zGJ9Y1RLcuBIJ+YG?PHFU@h@sGMf~<&qov-&7QLWuX@HX2?=71*%w>3||K!}M4Aq46 zd5yo=&n>g&xG!n=TC?jy^dZAr&vH0Kaw9AS+g_dZH2k;ybJB|S@rNs`;-s~G76?2z zc;?ox?N6SnEOJmz5V-kgOYFLD;(H!FZT{kSnYU$XMpmr3+_G$w{eS*xKC|DsWX;r< z+I8=>8#K@7s~-*CBQb0D``cS3`2T4AI=0AtKS%u3KWW#d?KgI0X;zgjeRg>h*Oixo z4a+4aEUNu)a{Kq^pVnrxWwoT$r$`1GduU3}(n~d4*dRVtMV-mMyj5tz(|JDLg6(~_ zX?3O-AM!2gb@!NdRlsRka%DyB$~_Cy>!zE(xVB!2KeP2$O7pb$Z`GehO)L`f+_!wi z&jouzcHi7wl;r&=X#d2+<u!>?Nh)_&-zeFjbM?ypvZz&4^Z#Dg)l@M$z_+z*f#x>x zAnA-7mv>%SnIh{{lA>OF<ygp@r0`c>pOUxkFuLmU&Hc8h;%@J{)5#IHnK$OWQeyh9 zWw+|s*@~BEQ#xjyxVL_K+q<tmB}t)OdU0=?&M(ipe17fMuM#Y$s$Q`BB<6n$VCgf> zZ#|OuK6vZuFLhInxRkJL+bNi?f5-J~uW5nt%q{9`-L?J(Eh&_~^0m01qf5))Ou$Yu z(D|v_B!S~6o6pX%{iC8Ktk^&MYI5(Kn~y$Rxo^j_W!p>s%eTw7*gZ4azTnmTtnd2+ z^G?<`$jK{sP1vwzKU3T!h7wh+?Txq2&wl@V`=do!dv%R1UVN+gt-ODC+iIP?E0pI4 zEvTK9l6Gvy>2t~XyR5eUnw@m@#dRj*cFl|NdnO+c;5K%gw!}(_x$(*4P@#tt-ZZS5 z%)8#~<#OhneCdM93Eve2E=fL6UOIzqQM7@~!lQEU-L|GxmcL#UaoHo~a@q5v5^n0O zVaGRYTQcwe!eSAZuNsqdmwi8H^25j4aAJMn@>5d&k6%og_P6iRo>g0`<Y#^r<k<e8 z@8m^JLAkisogWTf_}Nt5{kW%pi{G6q31TPKsk+}=!F0;J$SwZnn#7B7l@p9w&b0h` zxslV%J?LxC@vz$sJ!=*8D}}BepS0nUK`-B%kX_9Y&&-P-6ff$$koa#~$Mu4`cJ6Gq zY3?x-{LI|SU7uFpu-o%tj^)|qs#8y&XMc0aQ|G_f4$)+}>(&fDTVF^2+@Nm#$X<Mn z(4-~rW>)Wbm9pjaegB>~5wV*lI}JYs9GEQT8nAuh*7D-2w;VG&H=bU7)I-rza-Z;r za+b1${YDp`*mz|-Z8O_+Xq$QYt;@p7CzKq|t=Yl7?!%&hOW#6HTL~6y4`j7*>|CpA zbJDM4vh%e5Z#&js{*qVoE?;oJ>x04smAf?_K}zoWjwM?-kFasQ-u&yKheE-OV_7fP zY@NFPO3bVa?S^@)9Jb8#EIG<x{wrjujeyh-Z`SNI$JJZ;es2A_^xyRdSznk`Jq7Ny zl>M49^X+EI>n$!hIdh+~T;sOse4)2`?n?7)-xvQDy)RdpV>P)aYq^OFqlE#pQH$z> zS=ZTR;urfLW?OJ<_S>|BbD2^kzv|!9NbJy?-aB3DmP*B1&JUI*SKOXBTm2}Cn|!x= zcgB~GwZb#fBh<6F|6flk)2cHmTy%=}sNpP`kIz3G`d}Wj$3!8Khq;;6D>Q@K>*}Lf zvWEH{C3R<Px{s#+e)C!=h0&A0@!taeIs@K!osYCi;tX@U7oIDWUC+e#@{_1vi)vVw zp!X-$*t6zGRklRryxer+y^!;f%Uaxj=6FhY9+umxnW(!~?6vgU0`8lBCwPCYV|9;W z5s8U;D5adf%T<#-?`Yzq_Lq@gVlxwU|Ae{Tm)@qfQm1j+?*&DgN=NtdPFOvOpZE2Z z6XHIncYL3-Wbd^%?)(l+E9U5>NPJs(N_EbX`@1buzOOg0W?jOyi{HS&+#`724CBMI zXCCj+nlGg#ckewn@BHwm@}IT+;u>Ct9$7VGhM1;PW}Iwyc%ik;vuhJp@m~J5yl*>K z=~1~W%agvDIL+vM-(UQ|OHp$3?OC@B{XAK+mE1nPd+749lvAneugo<@o6^nlcWx|_ znR4>fnwE?IRTbv{(mJwn_j6l!^SV1<996n*ul_t`gMIS4^rV-8XJ5~hyL3j<yT8t) zuGIW@;}&=SlKW}rK4nMfG|DabkiEP5Oz+=75w>XVum1(|>U{njHhk8pvtYf=G$Dhw z?#+b>7cQ6N-Pb)HzCGdkZl*~$*`1a4wB)^UVhj{r8C3td<>kR8C28zE>Fif}C(JiL n#{NMvHgj&i<NG~{d-^1qFEa0_TDg0{1qVNF$FCYp_e$#kUz`!o literal 3799 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;@NW2`?`+ zPsvL6@G|jp@hZ%UO3L;q%Zo4!s&bAj3-wF$O?S>MaP@c3%;t(nPc}*Rbj)*&2-45? zt<rYO^YyDV%`&JcHz=@($o0zb3iht5bkDT(GeEa3D<Ho-FI}P7#nM^7Ft5znBc&oS z$u!Y5C_ErJ*~r5nIJ2PCFC#qEq#(Vtz}GCm*^?_GJF6_QD$PQ>$}K!Jt=vC5xwJIW zA|k`2FfTVh!ptQ@Kg1<FqogduHy>nMm~MJeYGQG!LVTr>LU~SJgonL}f|{R~t%47i zuTO=UkCS(1s;R4!M{bIDZc2V+MpAKpl!u|CpIMcUaam5TV^ErRS&nbENkv*vWk5<; zepp^|kcE-AYd}>lm#(g^LXd?~nR`)WzGJ3&MqX;Fe@I1;WkF!6nY&M+ziEzJc$sUk zn`LpaftPt8*MVa{E@+%JKU2KHS^m_5%||zQ+rRbaOg>X{_QmSIrWLO5UFA-5ewp!) zOSUxdeO!O3NZE|HhgF(a%uR4S^y^miX_>(81G^Qr{f;d;`E1?RdpiFwWGnh7Ik?^b zA7v8hwmQ0f%F*Rsd=ghVa?P9$OxSnP;KuPCEw3#;>xx?5SikVx7T*ekph=ADtS4~Z zm@#RKQbNz+i-%r*opJY{hDwJ`(}tv~n+*aL7cVq=<XPUh_9RF|?}F7tv7YT}?q?Y$ zzC3BSZwKFngI}eLc{~`7U1WJNfhi%x!aD8TTK>nU-)u;2o$>Y^_xHqCU%njTxvV#L z$-CKi&g%5PmY){KuuP$l<EH5YJ7%_WUV~V^Kieh?w1nvRC?4Iq<I&N3*Y1XXn6dR@ zK+=bL*+|82+=c=xB(+$7tl#i8)uC+qw^Pz-vTa^(^Aj657c#fsXnb9l^LDpt<cgYO z3Lk`G)mc1l|LUyG2wwAA>0hj~oKM@6Ir&!WrZZ=xDL&ccq58q`$HUlI`4vV{jc3Ca zyFc#{-0;lLuHcDJmf^wGXH3E^j@|5>E_i1(ukpb^VX1%}0`K4T-&_3t+(n*~Z=)ht z-l*kS<EZ6l6Q-S1m2ufOc-d@=6-zW7*FHG4S>>QsK-T%UQ}#VHy0ABRbwMY4{ulX| zDG9711~R9oZsXgc_O+HjIrz|a=QfMm-<Op}^UJ6o(*I!dalx!$0nVnKlHt}TJ$|z< z+j(iR`Cb3wHF>oi_j~>BZT__>%&v0J^c(V(dQ(}JtXUYoZV4kVd#>D!z_qN~1i5}1 zCa}!d!Lf+lFwt6(FWP>4{-=9qR&8_<_cXJd=$N)M{)@j#WkY<R>-;~-%VQlvpG}G9 z%oYqkb^rde_D{3=QY}-I7%bPDZiu|MC1B|lwWYT2rmxz$t0i+s{F3jk(V4T2qE4Q? zS-=`SeYRqO_SeXJ7x)%P3!JF?xaTCd{yGiUzBghMV}8B+zbZqn$oRtAyM|J;I$o)* zWi`kQoI5q<&duZNPO$~v<Cp3;5f6QxdxvAS&863={sF;BM<>T03$dSm^7+q~PbXQs zglQ~w`}5iP;+-QMPqxYhBuudPdiN+;f!`=^p2^C0o4%gcvDl_Kjm>0f2kSDHNw*{Q zzr0tre-$>%{)pi3z&+(@%%QU4*7mG69~GGs8|Kg7{wVnPtOduKCU4%bO3H8T@8Fc{ z@`qkskKty$QTBABk%e1`$#>?G+Vbh|zVP;*{~T%}ulitu)C!iSna>>`<Q;$2Z|-BU z)gW`@M#stTROdWWU^pdOVDSC)_f;0hMDo<POzfR>u<qzCza?!?H^$tbuJ_&0eEBP{ zb@r7nD-~{=TOPP+{m^)e_riG>cF0{jn)F{jQ&(xL;JY1+n?LzDPm-}q`26+29KlTv z+iJ27d(2v~b}rY4KgL19M+}{F;y&b<nNRaP<Y9BYezrQBzfs9bep!)ZiEqwl9Syeb zXq6Y*%vR14qq%AJx{RciiEbC#KXPtkS+-~C-DP5~`(;i(D}A}Bf7*qHq#ebn1t;Ct z>%4yZJ+Juj!;(il|Lj@c32ezbZ(e@-YEI3kd-Y-S_eFbgSq4tnFIL&{J?dlL*8R4z zWs4&Y1sT;Uv^f8jHQmG-=#(7YxcU@pr|`*s-lDA^&VLZ86XGrSDXOpWc%_P^-@B;^ z@>NV`*X>_g|7)4L{@(OFVY^vHrvztqd~$Jp_|`Im?Y&lSgWTfq|2tL*Z&>;G(yyzU zk-7^EX2+>b<=FJ`e1@QHU;DqD9V%6}Dy|uK?k1f1cX`RCh_;o!KWkR#Zq><<x$gdQ z^V4m@0xn0Na?AK-)a-JYDbKO|en7xcrgG=_ch3*yXBD<72F#mblo_!1EsOUv=i0Yj zH8;OiDX$RG=zG7aqAu`~%6*ZajkDGm#|NkdxfH*bnQ+ym{imh^WA*1bPc7&8=SOH| zAFmYH$Nuo!>YC%-|0chgCFCW)chikSi&s@CWj?kNZ762H_}nSsUiqA?t38|A^tGED zX1%hhnpAad?X!rJsSi$BhhN@y_uzW_Sw6a%52Y_eKMQvj-oVqWY@ws6bn+%&F6-y- zJLXudoPGMg56?Y6jf*}vB+r<ih~k&CU!iNZcvkdX2c^=9g;DYk<*xYGFirZrzson` z=(<N8%{`(!4*lXv<g8xEY4<NqFsJ*^x6hmNpIE6bS<L%J;Ig68J^eR*U6%VA#7<4l z-`Mih`TPD;p~<lwIq{FDypk2Ic=skhlx=rs+kq^vgNcHYB@8uhW=1|r3hoT9{B^y2 zMN-G#rhe(j)}+f?TNE?&O<z?O#V((16_K>wK5Xj0;HLHOm#%RCeR93@>%8zIt?7NX zdAF*qcI>KNdTOJ}*6Vx^8dg`XogTHo-!D;p*_?CA39d@7XZI8bKCks_UnLe}+VFJF z<?xP43)Z&pzddP1L}Wt!tG^RoeXKUr<epJociU#gHpgYLcb-V_Yt2ki3ERam;mem9 zwo>byuKKUow{pwXSqqutuZYP!y{pru+@kb2nQhPfh)u04KZaRv+tXt6#eh$lu`BY5 z+H&4W3Z6UcdXA+&@^t<!xidSDMS$&d|4Fu@S9%B6*Sa?>o^Z^lM=*HZ{s`MmH4|Bu zEqU*%{7Gu&nN;5I{U>6+O;p^vZP(<$OQ-Trtuy@3)GBJ6aH_DUeaDuJ`TO5A_uUZ| z^Z8gcQDfK7qmEyn-L+QmGS6QoyudoOwQ%0<8NFR|`}u9#ORvXy{!Gb_4!&T=byGxp z#pMaMbJj*YT)28m%+f!yH#wA35+g&r8QlJrZ<<l^u72G?cFx}kj~?b7?mH%@*?!gh zzRIUgk+!17L&g(s)qlCR|KPHjXHRHpa9&dT<sH5wy7gUqV9581e`j85t&>#h=#EwT z{4P(QujkSWzFFGt{dY?K+J0oVx_;GpM?rj~xu!;l?H})Askg2FPCK+F75mw8FqW~i zdCPc|Zk%iR{{`ov5BJTMWkkKsGj+6Y{IS7Tq<VYhZMLk`^54f}e&l$*k8zNgTDds$ zQ~ZW0pZU*AJ6~e{A9H%of$MW4o|{)lG9_j?3dv9Dim9EI?6`{KTF~#1)=Bf7UYWD8 z&hTQJlI<yK*VHh7=e^#O?K~<=)pjZ@=DwA)d;YF<UFx40Hzj>9*vawA`e5MOYZWXr zimX?k2{lyR!9TC^$<M@`z0DU@<@)uD*6ZD!`uAsgA@iv(n-yOPD&3j9Bg*EBK)Y}H z{QnKhes2ERr@S#zdQ(VMgs!~o_59X3k!c&kJs0=h<2$o0CAhV$r8{m8$H}f)5eMh7 zE>>K>f@6hNrt(_5>&F7*^s{&5oH<su=(V6x=if(fD|DBqT#(DYEd0ak&CP;Kt8Y$U z(0=O9MJ1l&Yb-_QZ+cTN$Y`IeKSg1}jywMSvlp*&@{tZ+pl$DBbMmi}+Jkyg=CHLk z!KU5?-&bkJ*axQk)~tN@J;7uyPl$A1-rvU4K0Q|rjA!V~pVguIeM)%AshPj|7AEfT z_?-S|!bizhGrH?%q=!9@-Z!Iq#<N`Mh|(6mEscxIB5%2RSl2C0?*7iaN&kCM+9SUm zYx>0ceA4gRW~Z{w<bR%a_1VdFH$5&zZInOe6%t}@S?<Pl<}06Ju9vB2-%Z2CPSYpM z?74m{<-=V5itq*Xc`c87%3VXJyyi?={$J5Te%k-)zjklURLwMV<mSJhIN@H_r7Me$ z+>4s#wkN0SaJBrpb!9J<c^I}|l$Ki&^Qdft-m3lCtMm<*htK=1pe?0yJTPAH@VQre z-CK9F-Ds&O<=$sF$(Y56|A(^jKh-6F+XAh+ny3C@oD#Ea0(bwF_cx#I^)PWdcbmJH zr$Sc#`oFDjCf?X2_k8OC>E!ul;pMLGZktQz=Sjam{-E_rO={(K_Z$1Zd}v#B;isfd z_0jZqPH#WyYc4<27T5E?Yn7a>(>j&+<=mbTGd)E07aB?J^Im#<Qbc^boYq~HMYSg@ z9>1-RJr<er<Z(iCTyITo(}zp`k*3|L9=~3v_m?^*@4n{H$^I(g)zbJ=-)|(`SSPYK zZJ+Lz<b~p9lFPLEpG=Bo`JAxGx!n0??xD`YU9;0AW!|zW|5&r&_S7?_*EtM2)-UpF zS+`aHckV~oMf;C#n7dQ^^^Hxhbfml=9-P3U*#5qjH@fZdwK}IAv*%h>zcl2Ycle|9 zs#n`57i7QAUU+FC<5N3}vsVS~owWXuy4cw4_;l+=`9+t-?yvD?nJKpR+kvxR%IC&( zRo+`#KX3Q3r(dqW5&5PS<FD{v`((MfagXDQWsd@PKjll`|M+O<?|(=9cs`#{U3TS& z-U;_upIs_-js-8i9Gj+Gu_N9`@p+<lRFbGmGw<<dGxgu^E$n#xRc66yi-KkC_wpKE zi)V=}o56apyt<(0+w&z4o$tPv(hEu~4!CkQLh_45#-HU$-7eEwRQdl&KHa)P@X@N% z0p8oUT%V`LWq#z*<>U>AGfhI4PWHFk;;Yqk-Egks>qE8v-Ul*&M6+!d5WDH0C-7p{ zqED@F&#l^X?s*mSOYRv>9l5pK;ft2O@D2F(_w9wnoEgcj)6YD;I@5D&(%i~h!E@iA zDZamFs&mQw#gCdly47-v9S_fPOyIm9J^kzvuf0-h93+cBpLr*Jc6sj7&86CAHIJ?* dKeP;5bk>p0qW`T_@y>laN{U{!uw>4i0{~1wH){X@ diff --git a/hosts/nixos/porthos/secrets/gitea/mail-password.age b/hosts/nixos/porthos/secrets/gitea/mail-password.age index 915f8e9..e2e70ac 100644 --- a/hosts/nixos/porthos/secrets/gitea/mail-password.age +++ b/hosts/nixos/porthos/secrets/gitea/mail-password.age @@ -1,9 +1,7 @@ age-encryption.org/v1 --> ssh-ed25519 jPowng BkIjie2KrwDLaZYYIguCs7TPA/wQy+YPguikuhfye0M -7viTA/EGYB/jRKQm6fFd86DMd4j+Jxsaw/xQ1T8ZKNo --> ssh-ed25519 cKojmg t1Y8bZvPccNAX8vWQLTfCyOJIBXN515vyfFrEI2EVww -bJEjpIWrKeQrA/JfY7FRdB6hpHwR/aG4Vya1ChFNBKs --> jK/-grease Oz.R ?;)G ], -AuHk9TcC9kl0dg8/L6UfHIk3e9fgGwSTJAJpVgInhok ---- 47z9lol5MtpX0IsO/0ggLDMcNVfl4lNNvoHUSwOU/18 -)gЪeu! - TYAM+GbMe@|A,&E!܆p=P=9P!Q|r \ No newline at end of file +-> ssh-ed25519 cKojmg 46BI3ItrXRWMivmd/K8bmkKlrYFSr8cbehAkmwCskig +gTjYquH1hDEZ2zWD5P7gN/ejTCH8JJb8bC/VLZ3koeg +-> ssh-ed25519 jPowng 5MqfJlasDbbqlI0dX98NZzHxmYmnnpveyBxa4z48V0o +r7Yiv4+SZiDncD0Xzp5eFSP4f2yjGBOILKxEO1iT3Os +--- l43+JtT28i1YDhNX3hE3Qb7swskOBc5ghDqiyh3rU2s ++)PnWT,.eNW YƱkF4#=)6mȵJ# \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/lohr/secret.age b/hosts/nixos/porthos/secrets/lohr/secret.age index fa310b481b361a28d6cfef8a3a387796460ed1f4..1d9c5ba21388406d6991ba35f31c99325ee29e6b 100644 GIT binary patch delta 332 zcmdnS{GMroPQ6n~o_j!4QBhimhp%U_XHbPxg^O=hRbWP0gjczXwn<2-vzbd^a<-p~ z1($b{ua{Y&yJL86im9=aSD=?kUQ%{MnsJ_EW<_vVR;pi!MN+V#sc}HQFPE;JLUD11 zZfc5=si~o*LRLV2d0x7LwwHfJSiWh9QMN&Zqk)S>UcITSwuh&ox2KC=c0{hBL6~J) zsCQ{tqMt!ImuF~kLAp<drGbaDvv<CSVYz#7RAEZ0e?&xZwugnAzF|gWUZh)~frpbL zm#(g^f`M6~UqPv}uX%WZV{vIkV5qyZUx}x4g+Ziws%J=|cc@o*VSuxnX^K}lSK_*B zeJ*!;SG(SNsB>s#Rp-{}jADJOzpp+0vFvjR`?^gtYiB2%ey4wh#Y6C$<-T7xxF$4S gn3>wA`TO~aPBx*w$@(hW`0le#KEm+WU2CZo0G{x8>Hq)$ delta 404 zcmaFQw2gU!PQ8b7SW>p9k(pOkwo`hpp^s5=L1|uCX{JFynum{HT3&@&SaOwXk(;rj z372t}t4CUhS$SxopPyTlTVhyhrk_)2MzD8OZmD;2PC#yHl8bL~N}{R11(&X!LUD11 zZfc5=si~o*LRLV2d0x6gaHVrjnPs+nNmh_|a70RGdcBc(NoHYznOV7uVTeUwu}7-E zi;-7gj!B>+mqk@dNm{U%Ylf+QQd+5LNs^hbg;#o|sdH37X1I$*h)<wPK~;fSa!8Q@ z$U5U9Bi;0()WqUcE}wLLcS}RV)Tpe~sE~5gij2anR3o!8mo%^J<lv%w?R4)z)8Npg z{0g6X-@L@kB)?3<!jRM;pCB$>U0sDhQ~k8e?2NF0d~a<(x6-VT;(XIE^W>6BlWhHz zz?>?#oGQ~QOPB1b$ZRg2A0_%d;oXkDr5#F=_oQEa*djcA?q^*^76+c$D_jlNPwAIX xcoGzy+BYfV+HYgt*F7gM1SjX;<#Q@A4EcK_X$9|-1ID@E0<MQ7FG))c0079akIeu8 diff --git a/hosts/nixos/porthos/secrets/lohr/ssh-key.age b/hosts/nixos/porthos/secrets/lohr/ssh-key.age index 30a5e254eb0031110173e2d83b1ad9fba44a8255..477a4d107fcf2627646628c9ea9b06d6fff8c500 100644 GIT binary patch delta 701 zcmX@kc9(U6PQ6EPkzt}`Qf@(Rrm3rQPMUr}o|Ct>n|W4wetxM_W{{a>Mrv?om1#w$ z0asK}T9ucvX=SB<X<&q3Ze><gx^qyHhjC(_nNy`jc37}skV}!7iEEB!GMBEMLUD11 zZfc5=si~o*LRLV2d0x7LNw#)rvT0~=W{{J!Q+QNTd3~sNNJc@naiUXcm}5weaY&JA zdQe)qwog?kmr1s3S!t5LX=P+Vm8o}0S&EBgNN#GTQBr8Kk*jlXrG-;aPDFWmrfEPZ zm#(g^f^&dnMYvOdg@2HHfWLD^fVqWVYDuMMUYNO~d$~crtD|$6VTiL+qGOdS*QLol z-zJtGNw3$>II%qFD9gK;UmAsfjDF7YvA2&@TYBI9N5jpcB<Z<Xry|q1ye>Vw*!g?$ zA=f!~%66wb2#V4RD%bGZBDVaw$(zGZ6eY|SKiRQH;L2MSA-0EsIyN^<7T@f7Gj&z# z@%sWQ>Bo}$zM0-mRBO4uWcIuMl3gzx6!boKRwccc$UIymTi-0vIQ8D5DXgALg|Ek~ z61&^5aicr8r0B~xflnE~R|tIXUms!9qZD>>b64^X&l8-@28m7ImWb!aWEvm(dO>qr z`X>F*)YEtOZdWnq4R>VWdA~M-D{klRTn2f`uq8_$#e__pW;*N2^l#?=U9a2%(pZaD z_cY$^PT-f?Xu0rc$8Ed%m{ZJUR;T85YE2bc@NJu*^S-}&b^iGY_D{U`OIa;0{9kZS z_MecXi@L^{lwDb~Ex#|mx#(#|$etO7dAbcj0V)OGZz{fwWvxDz)!y0ibnm9?f!zAb z<L=+O>gTn4X3G>wL%-XTkK~+rr&_g4ApVKs)?!Z0CNF_y0Y@YceehpnAY^7P=l|&9 zg8RMcwud7w2z@o1S7@^Q*{_?YOVdvr=qOm>$^7`atyBqbT<_k{gdLl{aDQ2T&f=0g E0N^<?9smFU delta 808 zcmcc1dYo;7PJNbpN<>(BNN7+<YDiUPiCeyYSwV7MVw9y*W^iU%nQ>I2tD|X@c78#Y z37183e!h8jk+W-%iMK~^lwXE>afx4+xo@(8NmPNWPkL@iXilJaREVQnF_*5LLUD11 zZfc5=si~o*LRLV2d0x6gii@eKX+W@(i@A?>Qc+@<Z+%68VYX3Kh)bDIfRS;aN0gay zh*5e<K)F#eSFul+OIB)jzEg@@X_1pxx|>r<Mu|zHXK`p?WV%nNabB6PTSQ4prFT_6 z$T|bv^rF<n;#36<_afyqPXn%WbHhv{zpS*JD(wuTtOCdEM8{Gii;}W*rxf>;lJL|L z)9}1{b7PNCSI4BP5>pH9<cQSrpyVQNM{Os^<irSlE>Dw+iX6kj(6XGQ)U-&)$k3F` zJT6^bU4>#(?_`&NKzGkVlSCgsmk0wB?_dv)s7fRK^qkDhU`Nm5EK@h%&=f=Ca;`fK z{+Db|+*xsKQa7vI^>aMae;+Eo7j<l1vB8~R&h_hrbJoAUsAYURhuii{=oxvgu2(jb zZ~2+|Mr%3EaCkcNQ)2Czx$Bw#&6jz2Eb8CGPOjvyyWeFn>sdbJ*tB+fPsx+>JHkKS zTQ=|Wto9qh#V=}N<=h%<T`qoCJ$7(iedgv5U!&H&{PnolQQ+J43LEhnyPkNbc!${* z@%9%33~Xm9)Ss8Tld-a^K!2zIbwTeYuf*?tahmUEPgr7|&sD3h@9DkrckEVSPZ>eM z@B>yJM*eOaZ?~N}DUj0ifxqGz@1rwLG7YkO<ZRDvQ-1!=A}w~mUH#WjS?<yvJKL;y z&hE_p?%no?SI%VCYx8@5R%!(-k<@Ov%GJy(U?r@nSs}z|w7uT$wd!`i8w!z;86E!5 zs?82;m=Zo~!=~?<x-R_&E1%!(6V=^*!_I#BXEv>{y`R~1MDvc$RVdc0IAf^zCs|D4 zfPqw?U`or{^Gc=)S)wlt`Z*rHdz&|b<w}{IPL7E2woAba{;plUZ<XYEJ%0vUooD_I zViN1T&bkLIxUVw1C~aS@Vw{0Nfoo7eMwj8E$S>AgloU66=k4QO-`ZU3eBF9VRT>`v DuWd<K diff --git a/hosts/nixos/porthos/secrets/matrix/mail.age b/hosts/nixos/porthos/secrets/matrix/mail.age index 1fe3a71..94ddf8c 100644 --- a/hosts/nixos/porthos/secrets/matrix/mail.age +++ b/hosts/nixos/porthos/secrets/matrix/mail.age @@ -1,9 +1,9 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg lmu3MinmydRHD0A/YVRRtopermfoBC8M8cTHfVanY1s -ygrtpZZJ7aeQTblNazpoP7DdifmDxHsE3DFJsIrWX5M --> ssh-ed25519 jPowng X0cihOc+fBtmtrkEivIHQngdYIobezXEF1x+pHqNzAw -/+sw9x1NWY0anZhDMpAywBPrR0F4XCHaF9e8j/Yo/kI --> 32;%1s-grease -JafjuSZty6a4NSO/y4y5wHWL8Mw ---- dwCl66vdpsL0MR5NWWvg3JUnQ2QZQBeW0Dj0l5tvOKY -oi,`#uwW%Poubڭcy8 ><FqKÂk0k/h5势F+u eb>1Q2wnWb֖Bi^xur- /ll-=7;j0I%FiA;YUd]KI0( Ag^uG:pkJ:qWSaLw!M4L/ZD-XUbvbP0f9 J`XO!s{QAcc;4Mچݹ lxH&{}zZ9ûXܓg]V0gtw \ No newline at end of file +-> ssh-ed25519 cKojmg u+5VWUy7eFq4boAIOhuKXZYD4mhczaUAcjz4+coVggA +QlBHHgz7uY3TVgex59yZA0XgsIeHi2WN2S+UleC7bMg +-> ssh-ed25519 jPowng IyeI6WUjF8wxe92xD3xY++4ZqXtY8divB39eLWfAtm8 +eGj8w5X2ydS1LJvNSmo56xzRVoUB0iAKKs2NHX968Yc +--- hsYH9lUl3wIErJmBKzlWV+gIR5v6vgPIcNDgd0hiRGc +@lQsȄףD}^{X)nYJhXhg8wӨǂwy(a.0>|PSlO|E鰀BW_)|x4\_F +Zo0=dtsj[0O+R8id8j +g$x òb흭Xg^G$UB*鲡)[tHav7jD.z+[~ 9z`s,_!^Yʯ2HSŏ*@jZ^v~غ@ \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/matrix/secret.age b/hosts/nixos/porthos/secrets/matrix/secret.age index 539c33e136a17f9caf49f42d65bbb528d78d7158..2c8852de12162394b78cd99ba47006d8a6cc4c0b 100644 GIT binary patch delta 389 zcmcb|ypVZ<YJIYIepYU}f~8}TyP>0xQNBr7KyaZ?nNz-LUSe)yVwsbdTUJnzNk&Ri zvW35Qu69N_SFS<1Yni3HXL^!fzDJ;sMP!zHWlDLTsk?cYc}RwjOK^^5MP^8nxkXVn zm#&>cadC!jYKoDmsiCDpRzQAvUb=#IexSdHzDKFQQ+<__fpbAsu3?#}pI?4Sd6lV| zMV_mvMV_H!o`-2lpob@yOR=$Km5WiZOSyr5kbZtypmUj9NLWCbZ;qK^X`YXxWrcIT zXGKbtOIReAuCA^^Zc?dRTA-1mzJ7{9aB*%_UPwuhUz%gSscA}uYf*7>seZ6`cBpfT zb5=Ij=ekL`OdlS;{Bead<Iz>`eT!c8-#!0*iBx#YiK&Kx5{0wBCiz);@$5U?K1cE4 zy~UR{F<$=kJdxwG%VCx~jvwzt9;!K3*?Y(O?P&plq>eik@rRnVs#@J9YikO2orvE* oYk#1U<A(XBrxtR|dA2L&{luWRQSC003ZAb__LOC&hAyiC0Jlh(MF0Q* delta 451 zcmZ3;e2;m8YJFBfetBNHLQ-N{sHs6ng`=ranNhK)X-H_ekyEi@h`Fg#N?JyGh?`?X zZhmr-nR9MBmy4yNYngjwQI2U@Zc%=Lk*85WkxQ0weqvN`p`(|+kEwTArJufqkG^vt zm#&>cadC!jYKoDmsiCDpvUh$~Zn{Exrn{MWVvw_Ae!XE<UWQw)i)mSbUsa)xpIef< zTS20`pHa4}n}wl%RIUk^Yhs~An5njZu~BNOX+>UYNqM@5M|OsPnPX|FwpUefa%re} zQki2_Rb)QMy4;K!KV9AQqSVCVR0Y-QI^*IT{dg|R2*Z3+SI=Z;gFwq-{VZQEKSxVn zU&Eq$0}tm=ePhc+!;DZaU0q#;0)qmxB1aSLutcMD{lFYg567s~f}kv?${b7oB%@N3 zl5+nLS6A(dBJ+H%Z0Fdc^8#Aa7CicsZ6<JX-JCx;&$;)#PhYTI$GAH{AopQeUAn_T zR&Tv8wHBY9-@bX&lCq4`%(mtC4UYBVwcGN&p9$Oic3o;x|28e`$eX&`o9?7NYK%C$ vizoin-x-EU+H*O=k}@R(pKO@&jiKtx&GUuwS6?J?U4DF!=e8hcsls~zbG@i4 diff --git a/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age b/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age index d375a35..e938cfa 100644 --- a/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age +++ b/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age @@ -1,9 +1,8 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg N182xey8TWRVUWTRP16rT0zlhYZNr/pOZVR7YRnlIkk -HVqAag55z1cKLgjR3WsUj2wvaVjxm169JcDRJGRvCVU --> ssh-ed25519 jPowng Dc+aaUTxDsMTY+oOst0SC3ldq1e6zX8F5A5uBL5RHhc -JWZou6+VaFc5f2OLRIrmFFWg3Er6WSY+TloXU0mP1K8 --> |9_9Aqh%-grease $ X8Mn|5 aKnl' fl<D{T- -+fAc0cajqxhYWu55HCY ---- SrmtWXQXGYxNTabSrb5tBRXHnK1F22Qoiy7hKYrrF+0 -D: ,n0i^Ɗ`2#y'9Ҏr]؛xS=uJEclH~ ełKtvo'v+ \ No newline at end of file +-> ssh-ed25519 cKojmg xRtF3XVc7yPicAV/E4U7mn0itvD0h1BWBTjwunuoe2E +OkB9sjGB3ulH4Feuyj3Ed0DBG4+mghW/Qpum9oXL/8c +-> ssh-ed25519 jPowng 1r8drqhz1yZdTq0Kvqya+ArU1C2fkN7Gg9LiWWfeUFg +cjbxntVwHvqLaJpiKs/Y8ojeb6e3/cLFcsoeuoobfFg +--- B1qA2PylJBrdZxZtCzlU2kRPvxLM+IrXTvR+ERxVtTY +"W9bg~/b4ՆI +} -NC7vWb?8=wB UpJClOșnO\ \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/miniflux/credentials.age b/hosts/nixos/porthos/secrets/miniflux/credentials.age index 979015965f433e63c6451fefcfa5511c614dc814..00d89a4b03c4b440ba1e77750fc8ab10cbe7b03a 100644 GIT binary patch delta 360 zcmcc1+|4{er`|o&GcYgEJ;Wq1%O%s>G%D9KCCo9kFvlPys4yiwFU>1YJJZWGztS_b zoXa<?GS@xPEU&`9%-OQiyvQUZB&;emGA%FJ+rY>#wZN&=-^|yqQa>}?fJ@g-p}06h zH#Nn`)YQ;YAuAxiJTF}#ygb;zz`&?9*drw*B01I2x!$PCJlM-9#XCPUDkH?l)GakV zHP<U5r_?Q(E88zA#3v;z!zCpz)yyd}DnPp;KReR0Ft9LOKfuf+qR`LHJT<(y#3<Q> zOIKG{!BsolGt;yzI6EVv%rVN>!{6N7G&m(aIN7oy+cem-+{3`a(m%xABR$WTE8u$F z!^uzhc@qUoeyR$aR$E`6xZrm1H;1)9;-BTICwnWYE<FDIPC%I)2j44>P4x-o?`wW+ z-!SQ$MxX8qoA0SNW<9zeY4QKtZ7+vTNAs8!Lb{p1v;*%5L^Q_bebAbc^Y_?dd5$^G JwnqQ=0sz;4hcEyD delta 443 zcmeBXzRNs8r{35s$;HX3pwQ5>*et5Rq{P5CCAlohGPg9O(ydrOz05rz+tMsK(K(~s zm&+*4JHRU~*xS|HH?=s?r!vRK&$YnY-#w=y%rUYuza+}tBGJ?$z$3@kmrK`9p}06h zH#Nn`)YQ;YAuAxiJTF}#DA+5?)Fa2y)H5h5DZ@3<sov3`BG@UrJm1}-BEr}w*wimE zH&NTEA|=9rOFzRiA}h4epggFmB-q(CD$v-|&{I3Y*d;7IAlWp+Bh}5%vcfPVL)$zZ zWSw(HN<_7#ZhBE_VsWZMsC`wfQJtcKlV4u7f{8tsabciguv4*bn7OH2qQ7=(Vo;e` znNN6qxPEzJgo&fOX{beZl97IdMR0gzW~ha8B$uwPu7W|itB1B_Rz*m;VX>iadT2&f zS#qU?t3hgUZkbPkQCe_TNU(WIR#v2k0oTqAPBzI21<zfk`l!CI{}<&|65kYZnDMUv z`dd?!trP0EGKBOm&AFwMv4VH`>6{s?H|Ld{+-<VMLt8l7D1T<o%q_LXciqz;H|Lq3 l^Rj&Z^}<c-mzuR{L6g>qnpKzY@;PN%{gpHLZ|nS@e*q?7pI!g} diff --git a/hosts/nixos/porthos/secrets/monitoring/password.age b/hosts/nixos/porthos/secrets/monitoring/password.age index 410536f..67c75e6 100644 --- a/hosts/nixos/porthos/secrets/monitoring/password.age +++ b/hosts/nixos/porthos/secrets/monitoring/password.age @@ -1,10 +1,9 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg OdLtFHbHbc28rUn47vgsVvXxFNg9nF+9y9R6XOK390Y -yQQYUPQGjN2+xrSqqBYa7/zS618KrVjX5Amw2MFuSLg --> ssh-ed25519 jPowng NwUjiLtiXVi6XFmht5l1CxEs3gm0oN4vHYwDZyda7Q4 -di6znVjNRO6QdqteVNkeot5Ko2NwWLe6v+zVR3f+o10 --> 4Vx%\(-grease ^^Z>EC91 R 2BJ d48Wip*s -yPiBgChRF31XgxccQFLO3MzRL7+5s29sfRoF3W1yUX6Bu59MpxD4D+n/jhLcxSH/ -CxW7KaiOctNmPm5tWh6qjmgQ+V4bcAji5vo4FKs40l56cfyueEJj+Q ---- WUGF28zqK9E1AlOeeCtSHxFg6ikRy85gOoLtBd4m0y0 -.|rr>12Sɞ.hww q%i *U^)'qO2ӜmQ7m` \ No newline at end of file +-> ssh-ed25519 cKojmg l5lOlGnbvQ4D2kaSj1dd8Xr+btlNbTkT0SxSz02Vr1E +Cjy73yKL1N8LnjRXXLpxX+wIOFCa8wrG44VjXUND1lI +-> ssh-ed25519 jPowng nYHfkP9dRkxu4Fqh8MgrbdZAc8gk+VGDyxIV6RsSeEM +rKKi1NDoKMMzQ+kUs5ZX4zMqRBI0QwGY7q6K/L9+dLI +--- Umv3UCtXlApug7uuqmwbQN38i8Lx9/b0uhLgbc3OdZM +BLs?sӓs2y +R0!<f9txB7dڊ^ɇLJ&W <e] +/$$ \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/monitoring/secret-key.age b/hosts/nixos/porthos/secrets/monitoring/secret-key.age index 4cef94fa385ae398c60f78536f661c35edf04631..6ea8c5442a7cda00d8eff218c06933826b82b42e 100644 GIT binary patch delta 320 zcmey({FrHiPJL;WepH%KX_<DRd780vm}|aEX-I}gN};!_p;1n{hp$Vbe^6FbkbaPn zFPBGQabZ+`X;4Lea;b-ZX0m}rvQd6$P`Qz(rKyvzrE^ufYni!QKyi4vFPE;JLUD11 zZfc5=si~o*LRLV2d0x7LpMi(FL7J1HrEh4WQJTMJN_~NMg@2TPcvebix@)etf0k!} zNk(>sp_f}em#<@bNO*>2ifM|uX=Z6vnxj!_plN_bPDyY?l$VK7ierd{QKXN1r9nn9 zm#(g^Lb|1QVnkACNv@NDsb6@uyGw9oc!g_KzGZoSV4{adl6FW*L0Lpva)GZ2SMueE z>k2|AmRrs+<xDb?TR3%%ZbSD)C4RoCvx9;!c`j2sb2jit$t96!?!c%OZp*U2=mq${ S;GAUd^JhtL$>VFf-dO;eVQ?n^ delta 473 zcmaFN^qYBtPQ8DKVS#Z#wx70>cZHutuBW?ip;3@on2U2#RdJQMg=d9ldT5w_Sw+4_ zHdjWnS!Jq4n45ovWrjyaWuQ}uzoVsPnzma-v3F2@UO-|+hEGzlV^*1aAeXM4LUD11 zZfc5=si~o*LRLV2d0x7Lw}rn)WJ<o7f2vnfXs%awVZBLkrAbtxyGgK{i%FJig@2lP zgimFKuc1LCS7D)XgsZW3MT(hOL5R10Rb`~UTY0Weu)ls#kcVYtNKU15L14a5K$xW? z$U1HFTpiu?qSVCVR0ZW)1=C=K%uri(b4PmvF3-aJ;G$9!17p9?^1|W>L+w;=C$mhy z%CN$EOUH`r6jQ?zPdD!*_b>x(Hw#0<+)@)qw@g1@V}r!>2<OPW>>{p2<G=z(*Ah!# z^MGQnh$_Rh;B2?Z0JGA_0AFV#mr!SSm#C_|MD3Kk{0J{Y(-M;iOQYP9#G))NU0q!T zpF}^4^pqT<)DS0qcZ+bRtP=eSSJx0P^WxH=lJdfc@PgdZ)C$*#{8FEEuKhamr^Uxi zW=M?M@AZbYQ%T~&&Dbjc3oIsEPX_1S6n%G0W_P3Zk{2S9?{*iym_B{&b)QDTYrMwc O?^gVtnv(g2=K%mZ`=crV diff --git a/hosts/nixos/porthos/secrets/nextcloud/password.age b/hosts/nixos/porthos/secrets/nextcloud/password.age index 9fd3c53f866f5e1785e63ec681d2c37ca7762d10..9039eea5eb2d4050f05969a0339f232864189856 100644 GIT binary patch delta 320 zcmdnN{FrHiPJLpat6`v}msg>Oi@TR!c79Hvn_*^dMVL!Tgm#K)L|9;?laYmCV2*Z% z0hgs|Xqs7Bh;y)uhmUtfl)jmxwzH9Qpiip5cD8<GQn_(PM7d){WvO|AFPE;JLUD11 zZfc5=si~o*LRLV2d0x7LiBCwWQC65iq=`#uq=8?4Nxe^Kah|h&xo38;sfnq3rG-IA zQe{<@r)Om`SBY<azGsqYnO9V%W1gQ^ZhAn3lTnqYcS@*xW`wD8W?q?DsiStde|CN( zm#(g^LX=yCc3NOWYCyPSScZv5ahiE$khW)_V_ueNak*DiK&hpZzPC$8rBiA#S6;(Y zyO+m4%(P6O9j!a>K+2}eo6d-(RQG7*&QP`Ew^_Kh)-vksm02?{RobyH{24Yuc*CjN TtSw*pXGQX#o5*qErrQ?)a<6iJ delta 406 zcmaFNw1atqPQ9x~WtF~JrDvjrQJ96fwtsM7T4G74i&H>SUS(EtP;qKTfmw;ZsbNr< zFPBe1afqpVR&ipei+@47zEOU0l0|q}MX67jnMXxxl%;o=c}hsWk*Rk^B$uw8LUD11 zZfc5=si~o*LRLV2d0x6gmS3WCmA1P@PDQSTahQ2nT77<Ar9p+Er-_%ZTWFD!xw*D~ zQd*FUp?{DGSEW}_xS4)rfr*o0d0A3sxNlank-xX8e{h~(c|dkmzNe!_g`swZm#>8h z$hyQ3TWu@H2;KCe)WqUc1=V<c?eKz1LxqfR1ueBe=aljou53%~AdlpT9Q|;Uq@vu6 zoFI$(97FerLbucsH^-8a0CSg;Fq5FFYy*$HD&y>OE?r$+g_1<Kic)PKM{N(U$f(k+ ze8-Y9f3q@e3#amw3J*h1uP~>4m$0a+v=oz2u6OtM>h6#0F4mY;dARhUPmRXx&A)2; z=ej*={?X)beJz<Y;HRC-MXw6CEn67AJqYBPvXOtv<=)e~UmkMSV>Ou`A<+Q<^+k=o diff --git a/hosts/nixos/porthos/secrets/nix-cache/cache-key.age b/hosts/nixos/porthos/secrets/nix-cache/cache-key.age index e0fb5be786d9814da7c81edeea1e47b67a45c4c5..17732edf1ed61d9a02ad41eaefe29cb50634c4e6 100644 GIT binary patch delta 394 zcmey$yoPy#PQ67&n6{Inw@-1Qg@=A}MR9gcRjId8pn<+~VR=@#S)oORudkPZYof1< zCznrXmZOn=VU(j|YGhWpSx8A)Zf2TOXuf{9duF<Kd1{JTfq77#dsa}TBbTn7LUD11 zZfc5=si~o*LRLV2d0x6gd6Acsdq7&GQKE&1Pky1lVZD)lq-T}0lZin|RBn=Ej$24r zkxNlUk#n9am!)HnW3azTRDf$`V7`-QQL%ohg<F1Ec2#M5ph=o%QIvmDXqZ!!cBo@9 zm#(g^Lb$hYn3qXPMv!A@YEDH&vU!r1nRck3e{hjUg{O&6MnJxCra@4mN4B{mSI3#t z>(^NZir3FK<@IXMT)a<n8GlId+-(+LwSTP>HvZVhQ!`oZxl*B<n|ABlH4Dm4Hcbl8 zI)8fFlS97#68FQdtM7|h{h-WSrNz`}#=E7r_Py1~`K@zir~mTw`?uEkm|G~m3;Yno trm{Noo5+#&vl}ezHpqNrWpui*B<W(y)H8?ET$1$*!(EQ5GtW-91OO@nmRA4( delta 467 zcmZ3({FQlvPJM7hgps9xMPiacs&{FLYoJL)WLki>yGN3#WvGRDQdmijfp3t9Z$(sI zBv(XfZjp&aTAFu&TegdNX_#43ZiQ!_QE7g$p=oe#aixD`a718KVT68eGMBEMLUD11 zZfc5=si~o*LRLV2d0x7LyLU#GnSN%KpJP>Un4^KSQ+<TLt6y?%RZ@U+m|;kWg-M{9 zhgn#PNq$x~S9y+^i=}UgfoYCOj)`e{ijS*BK)ywxN4`&TxuKt5q?vbNfJcRiWnMuf z$hvYhzig!{-Snc=#Nt%0lmg#~(6TV|;xO-!B44k<<SKuc(4aCiL(3|C14F-@;z)xa zgNpF_9RI4qs6h7$KeyEU&_d6AE?r$+g$iF!uL$pA1HZDI(26K?AOED#fUweJ_w=L! z{c^vcjL2k9->AsqbbT{Nu1o*#Yc#nR7;}a=ES6tl)Np3uyMN+Qx4+u|*by&ZHGN*T z+)1_XXA}0UD3_hT?r7+n-uoN&1PGiL`gNJ%U}T?9KgSF6KN)wtGELK&J};;~>b1}M zRb*_>Z?}c%VudV0)3bKZzaY83--mtu>$BgJlQz^o6gnp%vv=p)tcPb0t_zC`bbMWB M{UJ2#_Wv((06ti>3;+NC diff --git a/hosts/nixos/porthos/secrets/paperless/password.age b/hosts/nixos/porthos/secrets/paperless/password.age index 3fe76cb..8d545fd 100644 --- a/hosts/nixos/porthos/secrets/paperless/password.age +++ b/hosts/nixos/porthos/secrets/paperless/password.age @@ -1,10 +1,8 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg zhpo89xef68JoeOFWzhdFshrj2BXXUCFPMLVJzv6EyE -fmJxJi5rmyai9qGwDo7iHg4BrObGre96KCpl+g91O6I --> ssh-ed25519 jPowng INA6EZdy4J1p3QY5mfVOQXiLdOjIDaZR+CZMP+GfkXM -8Nf5soaxY5SEzeJca5kaJkx7ByOvc4NkJVetB7wpEmo --> xjK'w-grease -f5v0cvlt4JbHlAwDOob86qOInWdlN/oohTg ---- NTGv4rr+MhJ/YeZhVHOjoS1V+zCHFf2itJYfK36R+wE -חJ d o'YFU@ -r7_N$>]hq-F۰qX?| ? \ No newline at end of file +-> ssh-ed25519 cKojmg 1hbRAuAGrTy6nmkAq+UWua8weywphZsTIGF68YQEOlQ +92Q7uIKv1EiO73wMh53jrTuEkzP6ziBmX9SWXCl4d3w +-> ssh-ed25519 jPowng aPb9v/S/mLW95Qom+swvasqY878RxpxxOkMJA2wb6nY +qu/dzcqciqKzNc28HqFMHA1XnrJy+/wWgbfM1+BrlkE +--- 8PXOozvZzNZQD2OT4a+0XuIQauzUGSvovdfDugmp+bc +x>禩_C9dT5KzЄqcZɾpใv +) \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/paperless/secret-key.age b/hosts/nixos/porthos/secrets/paperless/secret-key.age index eae5c56..70cb898 100644 --- a/hosts/nixos/porthos/secrets/paperless/secret-key.age +++ b/hosts/nixos/porthos/secrets/paperless/secret-key.age @@ -1,10 +1,7 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg tZwn2usN6K62oS4vBa6boh9zEp/+cS4chP8boXG6SH4 -Fr3kV8gUDoiDqMxPYWsHyww8umYhQEKhqbVBiVw5NeI --> ssh-ed25519 jPowng wRbJl4G85obH/GluQBBsXE7MOvooEui65eqHfurvuQs -KqVZMBSyHhkayEdwI6ocmA4qhHY9zYJvg1CEKM1SOa0 --> 2E"/OFW-grease o Qp3HFe^ -bGhCNicPqt7txqxUiEWXCFs1OuQLqOqHmjHSqYQv919dqYep/xBXzi/aRf3dsdvh -TCJCTvZG31Qxvikp ---- xKJGbdVp+Z5h0vCBleSF2zYYYd2S5i0y4szNqjRwrDY -T /Ni7m4#MhiPޛ-gI%@E(i7Ygk"+㸠(]o@bާ+[Y"BCR[ >-.4db9v \ No newline at end of file +-> ssh-ed25519 cKojmg r3ZUTfSNcHc1TS2fVtk99Y2xJMMunkwkcR0dQIdiCi4 +LICSnzAaooGy6x4wt0vNM6YtQ4S17QohZNt7lfVrD6Q +-> ssh-ed25519 jPowng KLU68ws4lemr0wWHxm8H8pf1SQAoUZTN4QSPzk2PyHk +6pjH1pI956oaf9ZIHPPq8p3g/mZC5GxWhWkT54Wohf0 +--- cAQbniTwwtTftfXU/dGtA69yF/hh8iB97vHxvkIZMMo +c#=^~?5-wNT̡+!z " Z"2M!p5VjΡѡLyŹ nĊ8zQ+ة9WS0u}YÚ \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/podgrab/password.age b/hosts/nixos/porthos/secrets/podgrab/password.age index 90e2501..d50dc28 100644 --- a/hosts/nixos/porthos/secrets/podgrab/password.age +++ b/hosts/nixos/porthos/secrets/podgrab/password.age @@ -1,9 +1,7 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg 8rcBI7fYHuA3jO6EzJNFaAj2niIApKDt1HQEv61AKTs -ANxkIX/CeI7t7Zqp6wmjt/D194Z+xpeiidb+qvYzoQU --> ssh-ed25519 jPowng oruewwTM9X/HjjcmOPcQVdp02rQBlgJPdzvlAffs3T0 -MrO0kaNhjgOkNHuz3NrIMWXNrXOHH9dT/Fk6hoQNKyY --> COK%H7-grease -6yfI90QurOKlM+kgpW8KZ/iBzDYD9yhNmjG1LQ ---- uArz8eHg8sLO0sdlkM6cELFh+FHiI5BrM0+iXJxxiDo -vvNb@FMMY&/%mt֓dh|ߩ8 ڽ9C/ \ No newline at end of file +-> ssh-ed25519 cKojmg bICZUDqk/C2divEZu2lxUDsrtS1inSbDbS8hxJSJfHc +FsfueyP6WCesAu5EcXIxxtvbb8RX09qNTN9GvuhYuTw +-> ssh-ed25519 jPowng Uujsu6c+QTXqCNi6c+zxk5tf0UQcG+Qm/SZF4dzSKCY +RPVNNNauz73A8kWA0VSQiMWCerUkxPoXG2MUrFly3Bc +--- 8h4hGasOwZxk+i5aQfg6AzdA1G4wROhxz2rmM9u41b8 +{Rh=42 yЙjMWQ%X ]JK]F?QK \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/sso/ambroisie/password-hash.age b/hosts/nixos/porthos/secrets/sso/ambroisie/password-hash.age index 10d9eaa37c8cc1c8795083db6f5b34d20a30b9db..efbd945037f705059145bbc665e1be54856efb6d 100644 GIT binary patch delta 348 zcmX@j{GVxpPJLjBn_r?uMV_~LNS3EbSb2m~wokdIlaG6%YgtBeMt)&lpkt-KlW%gc zBUf%gV3|vHVn9Vmct%;4ewtT$q=##`QAC)zMRBNirdxndM7T+KVz#G|FPE;JLUD11 zZfc5=si~o*LRLV2d0x6gu~Al~sYy~`MwxzMo>y>=X?<cuXoRVUc2Rbkdq{Cnc1DS} zshdw#nOV3emuF>0SaG67iMwTlS4u&ozd?zGr*E>iK|y%ASz@SHm|0Gmv5~i*d$x8l zm#(g^f{&$nxm#JGhfhv&WSCESXp(W5tFM7mc3_s1ak9H}if6GwglCYCU!t2Ym)hSn z&mB%%7lmpaD*x%ox_ra_B`;1z^~4!Iw!i*m+AD^=YPa51hWzhcw)lr*RDIKJ?dP*^ xS~v2a%{4xs$`^G(?DeA6md~HJUE;3Z6n{Q2>FH+9^Fk^-$Gx384qf703IH<+gn<A6 delta 425 zcmey*beegBPJL9UV_1r-d1+FCscCwMb5wY+i*bdQwzFTbsezA&N0Fz2g=M~3p^u@V z0auo>c2c;7Q*LrbVN^vxltq<6x}&36kZ+-zOG$CQc~XYHc2$yhS+18;D3`9CLUD11 zZfc5=si~o*LRLV2d0x7LX_!fPewm@4fm>#}U$SvQNqu^xnT1c7c1S_0t7(N(Qb@UH zu#vH$evWfGS8}?kc9v^YMtDYXs6}F=XPQr9khZ_6TZLypesW26g=2VRmUC2Mo{?KV z$U5^%uSnhWqSVCVR0VDAs6-u01?xZ+^<V|lf?_q(5H9_o#NgCyvmF1tl%T-SG?&C+ zkJ6y}9P`rf3{SJ*(){EwKiAAc16K<!U0q#;fF#$F5SMh%F!xIDsLEiM9LrMkEJIf( zFR!wIoM4yW>{OquvH<TC3rkn7yGzRFHI&CVEdCL^o}(h^MCB>ll8n~|v2)jKIk>QS z`MI|uTekf6wwH@~H8DZ*(&uBZwi$(N`%v|7%H=moE1d4?CI=h~?PW+>8M;VF%kO&B U*E276<{P~f6P}c?U{=j807|!-kN^Mx diff --git a/hosts/nixos/porthos/secrets/sso/ambroisie/totp-secret.age b/hosts/nixos/porthos/secrets/sso/ambroisie/totp-secret.age index c5ce19b60a266757ce1389831e273adcd6b6abba..211bec374f0773a28906a9d0d52f0a1dbfb6dd92 100644 GIT binary patch delta 340 zcmdnR{GDlnPQ7V>M@V^|W0{w$TZx;WPlZWdWN>D=VM=LLs<W}HzeQ1gv6HD;l2fHe zI#-3iM`}@eU|Lpaxp#3@fO9}tscC9SW|qH8R(@EzXFyrHt7E2Vu5(C$BbTn7LUD11 zZfc5=si~o*LRLV2d0x7Lr)yQZQ&>evj<1JDXkuuhQN5p=QCM0=cvV_KZiK$0VPKk9 zx_e+!nsKl%SBA4&wnvVaVOm~5VR^WdwsB-gK%qyNg;7dcc$K4tUsOe&zel)blu@QD zm#(g^f?t?{Wks5sr=LekZb4*Jq)%|Ld$xsPu)bGvuuD=_W~qg7K|x}+WkrxHmuu7Z z!=g_QeD+<O8#?O^ule`4+ukm3X?Jzd$ysQ_e^%?r?}%3ka;v2Hz3y!G4%-{%bne9C p%q30>Twl%b|9Q1z&XaTLhYqq#&DWjwcbfWnhfjHj8c(?u0su`GfyDp- delta 408 zcmey)w2OIyPQ9CfbF!ODkb7W=OOa)HM1*BVKzLfIZ-IwXctk~3y1Ausj$1)tnwO<> zIhSX;S7~Zdg=v79aj<EqMUk;_sBwv7UWSW{L9k;)glDOXze}ETfm^7DE0?aFLUD11 zZfc5=si~o*LRLV2d0x7LVQNyQM?h|lXJL|QNrt(8S-nTLUus^YN2P&FX@+5mYm`}< zca(o#m~%)rS8{}TS%iCOg<Dp3l&7b5v5`k<K}l$Ouv=bnSWs?dj#qL;QDRkES%|qK z$hw+3-Snc=#Nt#19fe}UavcQ+lK=<p=x8g2f;_IgqVimye6K>U4E>-GBUd-yC^r*x z-}IDv@65zhcc=1D({wIfU0sEgGDn}JQ2!i*RFCXXV_y$nV{^-pOnswDck>GKNMnQW z;FNTiU>~E%(nzk2tr1I7>?>Wrmd6|KmiujbBP8qEK7)P77QgWQHlJbX1ebeJ3cFr+ zUfj{Rb$zw5XU~NnNf`oGb5iZ=#JwUbCLeOVeKuB5s3>@*8`G9@Gn-v!ZXZd{SPTG_ CgOZj2 diff --git a/hosts/nixos/porthos/secrets/sso/auth-key.age b/hosts/nixos/porthos/secrets/sso/auth-key.age index 4e05b15362db0aa4da54df2c747e5d4bd86d001e..1c1247026fd209d9cfaf58b8e786265c72cdc320 100644 GIT binary patch delta 417 zcmaFNe3*HHPQ6h^S)hM-UWl`!o0++HMqoxnp1XcplC!ycL2`+Yc}|31VTQAZQDtaG zAeWzegj<AhqKC0hUbdl&qhVQoM7ep6f2Bc6L1|HVdTNw&N?B-_NqR(-0hg|wLUD11 zZfc5=si~o*LRLV2d0x6gT4hvlVv><dxtYF~PllJLTfLWsi+hTbf1zneUZA$AMT(P? zTVA?RVNgaWS6;eyRkm4PVQ^G{Q);kNmPv|7NLGY-Xo;a)jzvg8L6~QRdy%hcVwh7t zm#(g^g1@VAkg0j1Nmyc#e}<c(w@-vgq`O5_a+0fWn2T$cS43rwe`S?<agbv^m;IZp zg2qrL=Xzzw%|A@-ZHqfw?F|+_X82|69N&KT_S+g6gY!Sz)P5F;-FAPwVezZQ(Qh|T z+J4#gLg<4Zj8|`LpBZJd!YaG(jj+;*758km>O{?a@$ZS@!fj{jJr*aoN%>BA*rPvr zPG5{;%N+YJdqVpk#?Mnu_$0lD_0}Pkb<ZyC&^f32aPdu}gHnf&S+5KcPfT}c(Ov2> Sc{Zcf>|YAJujjI7-vj{L;-y0X delta 449 zcmX@i{Fr%yPQ6KLa-x4)qJF-Aq=CM%r(02)nQu^eSwyZ=SX6L`rMaJnWl5SxaGsyB zBUgT=Ta~AwQHrmTZ&rDtVU>AOK}JrdVOWrBs++s3c5Y;)Yh|umq`R}D374*&LUD11 zZfc5=si~o*LRLV2d0x6grcYt6ws%%exT$Gio|k1&d3{o5c0gfhMunG$cY3&Qc2bU? zzME;HSEQRKmr-F=u!)nuQAmiNdtqKta&bhCpLtHGS4M_Ys;fy^s#{b^W^hWjsi8|K z$T~fz>?D&a-Snc=#Nt%0vVfrM^rQeo3*S=DvT`n6U0sDNAImDANaG-nkgS57Aj^zG zU;Xm>LL*l*H&4TmGMB*O@H`8%vJ}${?ZkYp{g$C;4sOrxSUBmO`=-UdoyIGZE7@9Z zUe7X%2>Lx`=jWVOhUsC~R$sV!^<>g*erXM-^tp`&ZfU<?%sH@cBA?OZ$2%`+n?3!R zvuN+U&$mAZsJ}DcuxVxld+(PouMV$z@obGlQ_d;Hd$+CZA~wyI_@n-PL)M82W>YJ^ xes<)U`r7NKiH;)kwLAA^ZfK`jPDp>(_R{5$@^>rg_>_IWOw4<~GB!`R4gjazwKxC( diff --git a/hosts/nixos/porthos/secrets/tandoor-recipes/secret-key.age b/hosts/nixos/porthos/secrets/tandoor-recipes/secret-key.age index 2ec147d8edff2730442d1ae253609e27bd43bec4..d6db3710f922d6d3d4f9b65cd05c07f0858cccfd 100644 GIT binary patch delta 370 zcmeys+{ZjYwLaN9KPxv~!OYk<H89IKB1=0vGOfrdSidUGI6pKc!aO-6H9R8AEHpRG zHz&d;B)~nHtI|6^CAT6uJ1IXSJ=Z<m*C;B?$4KAQCoMHA$~8E*%plo4#K_yt*fYS9 zOV>`JxHv;MHO0u()X-8PD<Ho-FI~Z@tROicGsh)8xW2&8uq4$tG%>KSDj><-Bs?uI zGG9O4%fhR|z{$hXH=~#<Da0bxw=&$=*|*Hyq%u9qGchS8I4IlSGs(ZGI6bf`FVZzk zKRd&y(4d@4S65ddEj`5BIm{`j)YmPfGCQxx$Voe+GCicK(zwFYQ$MiKJuo~c(Ky4+ z*EEvrN4BWcIW0rYl(p$D8%qp66r70sduh_`AMSrE(ph_c6uy3)v(@xuU(|h{bB$5c zEnP0%WVmpqbos2+#Zxqx)m(Ku*s?1OIb2fAFFsuo`|;xCkQts4(av4vPbOIhDSH(% SExg@2X=g)p&K=<yD{}xm!i+`$ delta 469 zcmeBU{=hszwLU8#zdSEpA;P5G!qO+)*fLGOGR)H>(#XfzD<iwitIRmt$2=#{xWGTe zG$g3NEUB`XOIyDxC9vG2DkUc>)zmR7CEL`g!qU}0(>Xgi#8N*pqcF;&C^^g^%{<bP zOV>`JxHv;MHO0u()X-8P**iZgH(enj$KSOiIo&iPyWTH7FxxF9Ei6gfDKppDxY(yW z$1K+@+uNtetH9aNJt�(8SEyG%_?j+q}HUB_PirJu)~uEZZf;tuQgt(7!NDJJ}%3 zvLq=qz`_J%ovTTXZhBE_VsWZMxV}QIs%wf)rmlj&LS7=5i(83-Sz3WXQl*cZV_HT; zri*KRXrO;!zO#0^Wo}lPVV+x=wxd~&Pl2~*u7|skMM|1eKtQf<se7?^QL15PC0B7e zm#(g^LRF%1O1f)ch`(d9x0iWJQfh9gzOT8dqf=5=Wr|0Nah0RHZ)A=^q<@|Tm(ii- z9r<1!rmq-<_l8IAYdt+zFDhjI);VcYR&z|a=Xb;B&!bhghn#0An13~&t5+K;5R}t( zucU~<pem>_tC7F+0_U6PnO_c6PEwfYHd8~|>*j}ULBIRVg&R|*-+r=fV_jZ7dxC8m Lhh^qsx9}nW?r5cc diff --git a/hosts/nixos/porthos/secrets/transmission/credentials.age b/hosts/nixos/porthos/secrets/transmission/credentials.age index 4f407fa..16f90b6 100644 --- a/hosts/nixos/porthos/secrets/transmission/credentials.age +++ b/hosts/nixos/porthos/secrets/transmission/credentials.age @@ -1,10 +1,8 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg mP2H3PWJN6Pv3q6C2wci3KnXjtFAIiuGy0YH0sGIy2g -f43QqyUQfTYznszub47kgc2Mz95zVScTDkwnG3INi9U --> ssh-ed25519 jPowng fENbu7+FZ1mnQQHQCLm1spLHmsQGlRoJResUJtGzYkY -hX+AqCkLCca6m/aKtGCThi7/mCCz/TZQNJNOlOmlqyA --> J<-grease -n7+CPRr4oazWnE7yzpJN2ZAI4QrGsAerloP4wNeebjQDx8+IxJq1JE0g3Yi0RxzN -chDccuSPLYk45Ov+SD/qqqFZlQ ---- p81HYw3LFj+qz2kiZsDcevM4ZBfvN743P9Jdi7J9XkM -۱S7VBOlEtq</Ǘة9(P$W0h;Jyfe >_D,PVFp\"AM}g?/\;y Ӛ(SK \ No newline at end of file +-> ssh-ed25519 cKojmg Froxrdh4H2Bsj4X2xicyBXHPRlbkRJAOztoTfzxItSM +FnsLS2QYm8mJUO+c152FieLCFkALxxwQLnY4PAj8zsU +-> ssh-ed25519 jPowng pKl4p02M+U5JsiOnM2wXL5bkPwsI3IHjlTutlvez3zM +NSuOFsyV8JqtTq97lNzacJnJ3YZgWp53XxU3mjUlcMQ +--- 2TK2ViFblmDheaYdat/GF0ze1wVsla1EPLaeRdMM4Gs +ըENܞm›2u~Jubt[$T^2ji@xҸ*İg[MHX!6ezDW]<` XPޛ +q*o$< \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/vikunja/mail.age b/hosts/nixos/porthos/secrets/vikunja/mail.age index 4c83acd8586c808c5938889471406eeb283c550a..864e5be1b389dad8408ecef2710b33f6d632a9ce 100644 GIT binary patch delta 546 zcmaFDdYEN`PJO;<Xufl?r%6#+m6wHyV_<P<Zc?RdUV2VWXmW6%lR-{Yxuu&ymA8eF zBUeRGa$%TupnqXmL8@<5rk`_4cvwbeP@=0-Vr80fa+#TFMRJj+cSu^LCzr0BLUD11 zZfc5=si~o*LRLV2d0x6gm0MIua7kfmqFbf5hnKsbalLDpk)?KENt$+kVnm2{ag<+P zMruh}j$f4tmuX6|W2IA7l9#b(nxVJ9Wm#E~ziFsPnOmB7p`ocsMMzm-QmLsyh?{#d zm#(g^g1&E7WKgA9Kty(xV{(YEZ()griN1Dlwzpeyse4k2Ta>X=gh!O2X=PO;mwwEg z(}x4qz3UCQnpT*`23GlRk9n|8<o~^?vwg&P*e3i+o6Hh7{rgIr8QN!@8##XLxmVV# z@TN^usmV<K)^_`sBE|U!zAQg<!K1P3|CQer$0fg;GfUTg-8}6?*^b}8CmE_;P~u#% z%<c5ko2my@uU@Np_e8zrYoGG%l(620d7<w#?Hm4m|3Cfjhx#1_|1KV_U6Y?88+`rX z@|qtzLz@0si=OO`6-eXrow1Img89h?yA0#ox8yEYZx0t^f2+62P*81`&o|Al_cz*R z8(a$xPMTA5Dr{!ACR@mx-z(oc{k7^l`uc<H^!598>viwVDe|10_QK+aV%=%4)aBwf y+l@Kwt*3v=R`J+3>qIuEwDwc8JxdO;t)Ki~K4Fq_*o;g5b9a}#GkCxydKmyF>FIp{ delta 708 zcmX@i@`QDQPQ8&!s;75asj-=Vc$A@2PL+#MWKwcYXryzpNkmFTZbfL4Z-84_NUm9k zBUh%Sca>X7Qe?23pG8@DxS><3fsdt|wrO#mr=drfcA%$IWO9k2rDe8XK9{bYLUD11 zZfc5=si~o*LRLV2d0x7Le`sQ+e`G<SdxT$@V^CFye|@@XRA6zgeuSG@xwA=_SCxx< zaj1Dtx<z(2S9n!OMxH@MWo~(Zv0qM9nO~BLZ$@~PQ+h_8PjFdqSz549W@(tEWom{2 z$hsg!r&`_gqSVCVRE3xjC51d^18XNE1v|ww5BKPrd<9GExYEL4s{$^g?0{keS7YBq zBk$Du<TSr5Q^QE(i14rs=M??Isti9b&!{4=Y&SFQFr(1aiqbOA^fYa!VmCuyr<}s7 z(o%B|uCU_5%8DXSe+%bC6TeDFXFpSSmymET{lKKCq7e6TmpngjqfC#m63>)0(~Oc3 zZEep;E?r$+1;;4Atn7Tl49A?ZM17~yygak|((Fjr@KO^$pJ2zZw4kaq{amNiirkdK zWUkNZ1+0;p>Ib}ojQ;IZdbeZw#r~f=9XTW7lzR7Ed|2&b{4r|Hmi({!tEa7F;<VFh z3jJ7|`{>TmJN;|_@7-8x@VdfxmwBsZ2*>4+LryKP_L++w`d_h=W&76W_b=AUT)Mtw zzRRX1zv?q2+<tgY`{$XH+xDj7-l^F?vwc6+xHsMMws>>p#iqwxTlMxD%U+q!=*4@_ z#B<-aa53o_mtS_;?%ycyG2x1KDZ`_W+#8EyzC99-w@BSC&A!3EQ`aUSqi5&ZlFX|e z&(`}*OX=T}c2qFX$~W*riC|V}tIft0vv*&Ts-J2scHx(y?W9*8FGB++yso`EA;x^Q zkJBn%rJs6Y6(Uz8Pw~oLw`9Aq>SXj)!-xN0h>6XesnnUXhI#I`jqguSa5;5DVJ84Q C^c&{@ diff --git a/hosts/nixos/porthos/secrets/wireguard/private-key.age b/hosts/nixos/porthos/secrets/wireguard/private-key.age index 4abe1e5..d7e292e 100644 --- a/hosts/nixos/porthos/secrets/wireguard/private-key.age +++ b/hosts/nixos/porthos/secrets/wireguard/private-key.age @@ -1,10 +1,8 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg +WwRpd2MzycutQFXyLsr2+GzSgF67Z6UuvyqYZaLd3w -sppt8HzaZP3yxnvnhzjl18Trnz8g3VyXJ6CaVBWd7jA --> ssh-ed25519 jPowng wanoqGB7T8bim/WZ4IAYViFQoGzaIZSgeoTr3YKpeTY -ihDAdGa1XVW/qQz40V1v7a7iK7tu0EHMa7ayIogpcRw --> l-grease |PIcZ NIr >0;* -4o8o0bevQZ6uDSx1WxxlDCURbFCM+yK1XPdrb9aztCSvG2a+ne78E42l5rBcoH7I -m51A8uWS4nSj36N/76v6K4kelxKzWUg ---- O6cGbTAVbDcdmPHf7UzfZiyiRtu1yfL4sBI+CkJA1qw -q$`w'SX]?6/N(BNa.H7Ioz/4:sK",7J \ No newline at end of file +-> ssh-ed25519 cKojmg KslHl4v8yCsKZn5TduLgpTfpTi1uOInC9N2e8Ow83FI +NzcJJr8kw1ykAdWRZOeWdNhx0BTgE7FwTKcge+yLJ/w +-> ssh-ed25519 jPowng YGWcOai0A9l2HDZyV0GtD8kEbY/xTUssODFBcseWAkA +nJaHXkipFSHdyektoKV5y1jQrjkvnU7pwZwAymiQm7M +--- IgWkDulol1jRa+pcx7DbEy5pvC+2nrRJHsdQVPvPur0 +Bb<Ōb!E?:=srJCKz5{4`&N057v+1 ++(d{ Q \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/woodpecker/gitea.age b/hosts/nixos/porthos/secrets/woodpecker/gitea.age index e6ede6cc39553e75fd77dee696e90dd193a3daf0..11817ff5ec8bfb3860c5ef36305a12ecc012e668 100644 GIT binary patch delta 437 zcmbQwa)Eh*YJIYIepYU}f=`IMM}?trVrErPsb7juVxf6hg{y03QF4}Bj%9vOuxp^c zNlK|(RZ+MBSB_Ifie;XDx<N>=nP*zKQHXP~bDo>NL1>akRH>m+NP4MxM1GW4qP~AJ zm#&>cadC!jYKoDmsiCDpRzQAvUb=!sN_L`0a9FxwVtr+>afnx%nTv_Jr(s!8foFMz zc3Eh!rAc~zSaC*9X;3+rXMR|DWsY-6g-L)}ma#!#XpyUXZd9;ePF}J{U{+O`p^veP zeu{Qrs-p#$uCA_vvv-w2j&GE2j$2h(vAaP)l2@{`bE<b`etv<sfn#NnuXea$N?}QI zs*f*MNd51S`Dr|ssZY<A?KJ<d5&kE2?p)u;sZ#L^=G?sLJ*(bNcW>L5GqrOrI^5G? zKbd-W*F;N)qce})x)eLByZ!Zo^m)aX*VM=Sbr0(^3ZF68Hpcl9!@+acTwnh=;<izc zP5G|#tjmkbPo=g`u}oWI`c}tghE>qVy?IY9+MQ1;T`>&I){{FKD)MMviu1F@aneS= m=SB#H8p>Hntu=hu&c<JzBg%j1%iqb3zoyF1zWP;#?G^wdkgekY delta 516 zcmcb>JfCHPYJFBfetBNHLWWmSMOCOvzG11iSB9razF~S%g=L0?d6`?Fzh!DbXpW~x zRiJi-iC3j7SB|e+VUVd~R*<`yWne^QvTt^3R)DupZl;B!Z;-RUS(;CFntq9~i+fTa zm#&>cadC!jYKoDmsiCDpvUh$~Zn}cGpTD<RuA@<rN4-~Igno%(R7ha5TUlb7c6o4$ zg}a$$hN)#mKt)KZg=0QfNr0(GrFNP{RdTvnvRkTANQk?uNko)$fJJsiMvh;xr-^@R zO14Rqmr*guIx~Gk-?Wk(-Snc=#Nt#1Ggtk>a#w{kD+OJJA}-fTf3wnHU&|6Fzv2j! zq=@u-(~_*5qyiKDq9A?!^dJvI;~>l6{7~;=kG!DDKrUTfU4<z3yr4Y8d}oWuERUqh z;3Dtju%t*I(~>}c=j?#IH1n_|uQaEmLbFgOPp+(t`Z<=o&zq(+7@5aM)KAiUa3*)7 z+c#aI)%h<}qyzr$7jD0?H{p%fm294h9U(pwoN7PJe(}}r+iUx@?x!ZA+zRiazVTge zx@4cE_%*+BcI3nI-jf`RLQ;q3p4Ck`tIHM;zwU9J;W>9x#uf6meep9-o@I#2*n8qZ zcI)<s>RY#WeDR9zxIBSN)8({f8ZWz}XW~Cs^{?lSS55i(XAZy2PQCMT(*J9;7Oh;l KFmi{|!;=7;aKaz} diff --git a/hosts/nixos/porthos/secrets/woodpecker/secret.age b/hosts/nixos/porthos/secrets/woodpecker/secret.age index 63a4862..89bcb6b 100644 --- a/hosts/nixos/porthos/secrets/woodpecker/secret.age +++ b/hosts/nixos/porthos/secrets/woodpecker/secret.age @@ -1,10 +1,7 @@ age-encryption.org/v1 --> ssh-ed25519 jPowng yz0I+AazPmamF7NOnwYNrPE/ArarU01jd2mVDJUPSTY -6Y/YQ7gb8cAZf3zT9SKOorvfUnU7kYff+gHh8fG2mY8 --> ssh-ed25519 cKojmg 0FZU9v8eHsVeE+EoX9Y4IgfIj/8+45waPaSnSDb961I -L6SzJoh5xqai45scoVAa6v9zslBGFYNnZY044d470uQ --> I[G-grease p -AMRQY1alSzHi/PLL80kcvnM1Z9YNfoUo9u5alWXYMyzrRsg+vXjMuBvAXg3fmnzr -wdOowTYMRV+jEG8vzkcQTsv+f7JIyo4DvOOaPyGfWMl1 ---- ih3IAFPcN1JP3FP1vcRGnPrfk91yrnIX0m/Szkbcf7Q -mWr_\)Ͱ]QxMs/݃ݪ6kYxMyJG)i2_'֜HF.g_e5#utՠ7jP'Tޥ8\IWUK1ں9 \ No newline at end of file +-> ssh-ed25519 cKojmg tAW2hbBSxsael6cdbN+vI4h1/PMNrWYct8cppCAasn0 +cex/wBTviSIXc8clNm5PGltTYa1Q5PwqlX4BGsNHiyU +-> ssh-ed25519 jPowng YxfhtpytvuhIARQAaJ0w94aOZiGNUOBR0pF+Sp80D2k +nMon/VdYUQTs6LFccDGeIKWeNYib1wwtFmEYZkDZxg0 +--- giL477X0+uZ2Ocvbixt5f5kNc1laj5P79oW8P9XsNP0 +d>cE?nbv_'2յ_6Pu:usE8ϓxuڶ̪x̧C[ .6 qJ5GK)N<yYɥtX=l7T2R \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/woodpecker/ssh/private-key.age b/hosts/nixos/porthos/secrets/woodpecker/ssh/private-key.age index 0211701ba0ee3d8ef341b6d69d70ccaa25b8379b..b0b7b46ea02749ddeed2e60237daf1972b7be672 100644 GIT binary patch literal 3703 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;<3lbd5?k zDD*1LHLx@<sPuF<^iQ&=h%!tGGV(1oFwF}uN{=uM%BnI?59JDVGY!hluQW6cFb?p@ zNDW8}adV6+O;2?<FSK-YbMtibGtMmYPcrg$GeNg4D<Ho-FI^!ZtT;7LJ1Z+U*EKAt z&^SB7sH)t_CpfIo-^i=nygWbGpwzD@G(0pkCz;D6KiJPZ+ao(EH#H;It;##i#M2_f zr^rk{EyN%-*T2L)(L&$N-!MHXIGIaVS689JJS8a4)wMV?%-^`M+|x3=$U8XI)F&w2 z(J?zJFT&Ktyu{1fEz->?EuU*cROc){PW#eVe+?#YjV~<pP@T2f-0S(j?uNV<5_St; z2nycY_2|sCqpJn32yS^A@TKYVq(h2(pCn9rc1`H&@<jzlmVDk_7LqS~;9Bg`)TK{8 zX76`h{cs)cQDgIVjij?{BcF0a?N};WHZ6*wqHj@8NI{>YT+GJCEKy-`5$>Y0vnjLE zZJj%BbaH<x<enCx`(W1INGlb29`&aiqQCdQ+30sj!*0R$k5QZ6eJq?|GH;LU;ee-` zv=z3uN@*VIp4*?e=i3}M`7ho1mqK#?eDl&iyFr36A<?nqV9(@DN9KlTzm2ZrX4%@d z@#+rF+Wh$0Qy+@&j6c`5X5%W^6D}1WYt<$M+tuH<UApAm)HKOevz5LFR89<wJpKRS zp8MJJbTnu0)%!N_OwC5eTSslA=CMRX-BM~!|6*f#^zC{T-96L3uBdtDI_HN^Q^uRw zAH^?j+T(pI*+<dm5O3_gk3Y+je{MPTwf6X}!s5ACOnfff>uY&%C%-!I^3U(SuQOTp z2T%K~y6TSlYRAwSd*(&2Y@IlD!~DPtf73d4*gie6S>^a=U*&b7+k6<@SFDjbtZmtG zE!}q(>z7l4F52ZaS-)*v&g#znP`-9ow`@i0p4(h670qoD4<#u#v<hr5+va}Zl|B2P zRxvTN2P|5@TyxW7-}H1#F>tSMYi{K*Dc`_y@cf0#F{>3HKZ}?)?}6j@=}mg?yuSVW zT=`^j;~{Q)kIRbd^cPOi+_>cF&3A#{6t`B-Tlv$S!>ar08Ot6<dAqq?5>KmcOy9I5 zWM8|9HEaHUAE&c?hmXY_;+8ag$u>Lf&!0^l-M{U>7*5-xJy}5NuX?+X#>&|J^Ikda znh>9G&+Ua=60@D&Tc*v+<rW@GPAU)PT&i<<i~DuIm4CV;pM)}q?tGThd9WyIjmyEJ z{rrwCJ(?_!_lZ7M?OFWcuVZz`>41HiuN$XmvV>lnAF7nQ*C}|eYh+8!`g4(c*NJ?) z9WTtRFMZ^6{6^m%qrF1kigr((?sj;(((E07udn=c=tz3As={J}tXuznBsjG8mfh0+ zc{}lwPQKaerC)k`F8eZV-N=5gK=b_J?KiBRs~yRgQMR?75c+7!gS%`u-`RZ(%$;p? z_v8H4%=u!8Dn47)r|)m`^fdTVdgR>4DeF|H%u?NJ?|a3mb!%GxE`tU&w&v^ioy_$F zt{o4%+kLs=(NPUPofiI$E50?q&AiY2*fikPLw=6j{cp7|dOehIY*I)`w^9*HpDB3h z+t<~J&YN`?yfuifZrrc-a#4kKrJcaam?-V{iaeiAC?tDcmdX^5Z*yZS?OFBv(3k(3 z!kW#gOZX<OshYc#^Sg+_*EZ389}GOA<!tv|SML8Ld5`Ugi~g^(M>dsgTg@+ZpFuZ7 z+uf#h&1OH17xG75M?QLUV(lc>vj?lK+(WOetK?H;JCgN2_perj;Vz9W?e>m;mY!R^ z=l12tCuVxp^Ctz1864GdFJCsXvS{{-tCKty6<&Ux?b!KimY8)@a`-auZS|89&h-Cb z-m6vIy?4!z5}g$`p*A7n`}B0*JYK)>@_oy$o1N-z)h#dNe|K<R;{9Mdd&0C`;ZfUM z1uso*+BK!~&nJtGf6i)pU*bJuSQUS&#p|#39xaok`5FJGUu6HWX!_fj<5kl(?0V>F zZsHJLR-kol_mx_Uqkr4l{6(h8s(-xuB%{mW#i>~1DOFMnrPNoX&c14FsT?F(AaeUh z!okdW2eTyIM7Q<*pC>qRpWDTc8y+`bc8l99sJ+8d%Dlx;xL;!PLNN`4JxlmDEjQeI z&&$DCxny~C)v;&)KQ682HCh*Q?7R4si&MK61&er|?RDhd|6|?K+n>MAY|Cb|y*Blp zT+>%87KZ{sgNB{;zZNDvQw!1hQtlgX{PIOqQte6B=I^gn;$I$iC`o-G;ct0GmBnFc z_@rs2#``j#xrlt3_|%}2$G!W(mB~G?WNzM36z6{|_fja%tM(}i|MGJQ`%+i1^q+AL zh~s#r`D0ZLYo)r|PiMgcyKgW0ZN1ktdTC`0-`cAlrWH(&etbQ-`e(uXO^d=R{={%3 z8vkE9tM=;0J^u>XK0V@pv9s}ux#stOCs+NJH#k}woGVrpx-7?Y^Xan+JD<;qc4ZZD zowDZ8an2VLBe@$KY)U;sZEaNp4jNvsOBVUL=UI@#v)ls)67LtdMri+jQBio|ifygw zB$3kv@|zB5O;tRg=Q8bWqgZ0jx3BZ+CD){Fy6jT(Wz*hO*>jIyPcwX*BVWhZt18B_ zbjH&3vnT(}`yo~OIh%czz0Bb)(;rT#5|)!x+aTk-y<RVJ&AwoXGs6Dm4i~awvl%uA zT<QHD`z1qnt<kg2(l_lXJUM#5X4JDBwQOE;=!C0B%aQw&*bgMUd$RP+!A*~)mOm6Z zm3i>|KDnf>+fr|Tu&y^@KX3ERD9G>a$zRX;E>97R6Di(dBx}+8c!%T)MnmO8l83|} z)jVu^H|dkFDc8XdQw+Dexv%&&UC=Z6$H}(Tv$>zo9Iq-fk>j3ufZ2SP5x@QQ6Nhhz zS;)2>T2t7vYEx0ae}l|@H>0Xc+`ad{G8o?3#PFVx_s=x9MumVW7LQ*aT)50|hwj;j zpA#RZg_S><k<R$n;dR-8=!;sXxjqZ#Z98$0y?@Fk@xAg^5$`uM{uYoD_};s4lchtJ zub*~vUdXRCEr&OkoLhF`j(Yi?O$Rs<J@i($H{SW>6&IJcNm=XJrhwN>?jJ&TDOEq} zpSJL-)4?g`S!{VrB#d6QYi~T?mYTU~)qy^hjfOkA{m#kn@a(8J2)J5pw`7s|AG=9O z2Q`eEZxuaHy5I8Xr*+0j@9&Zx>$!@=Hg9-)LoI3U)lc`=uD_^#^rE*v*G)bvll|LQ z9Fu&*!9IWUQk%?0Yp(_9d{W{#yMp87wnCN#X6~kULocwJURnQ!t#_;U<hduyFHg?@ z{9WF#F>j^nx#Qs`^9;Xw{dyt5<0CqAvVp`)pPTa^zilo5VdVPk-z?wVOU-;Hr1Tw2 zD~wsOZ(T$}^ua7+m1Qmy>g{!ZIOU&`lYHmg@^zxmQPw}!)AlQ!UVP8%!S5Ck<LTTL z7mh?mR343c-Ti-I+k%*{4`)v4n<ZSxB9rH);#alc`nMe`CzpL#_-8}BTAs~Qd$pSB zecOItG&`JoV!pD#q3Scdp7F_Vnic*S*chs-r|eFf`i1pVk~*hHN=C}WFMOV-<}_}P zsZO2mzHG|flG;-Fqsu%Vtdf=OZoacB`Zvq1%Cy$~XB$dp{68R?zizrlv9nW8(#>7} z-V2u-9pcFQ>5+B+++&uF^|5WguAHfeJ@Gbb%HHjNg7>DL-J^Zsl!En%Wi3;<=A1wA z>cHygKp&IO;jIUPCVB|XHZ{s&*Z#X?Yy5{*XY5>UFV@)@ALm_sqSI(Q=WSJu?e7<e z$FjH{P>5G-nvv79_hOilpe9du+tmo8u6N%Koo2~9p10z})Cgmj$hP%U+fGbYcb*@~ zb!ER&*U3M>qpNI|ZfPv3iD9&vbLx$E<n<r^%Uwl2{eL>Qs-H>aon(1(%^}_66+6Dv z_s?i>>f1a;xGKP?Z{-d9Id?w==6|``+<kMu#a*Kdxh|&yHUAum-n-<ba8$#KX>;W{ zp4Fb@t90*JGxN*xBF+67l1tlaxXVl{R$OBau6P`6aLvV<Yx&wM!MctiC6kOLPgpA- z+Pt9r+ku{sE%tGy0-HkT`YSxqH7l|e+YxwVZ`_t!%CcYMu05UHm|`WlNbXE!+Ej^M zI~o$oC(N^4s$?6nGXCyTmHWGHnA%IqndaRxm)c~%qs8{rPv;G{_D48xdVK4In33MS zWk%_JjyrY5b_z<$^4D!m$@*>NbK9+V>&+PpBc&8?8;gInT<W&v`n}N8MI{PWTGnn& zA0F<^<`Yt9)MfeoitC2!qth)hIT5e5R4?=uGJ2|)ew;HyG5ILhi6=ZyLtCaYT?@Xb z{d4nC&*aG!kxN#D9($qs(jsHw(=XHdwH8(Cd%FLP2zrxbVEKHZZS0ig_u@FURywkq zNM3Ddc0abI=?UXe#x>c6GlfI?&dF8wPXERe&C{T$R`+|Kj7IfC!|flr=Ql1b|G&lN ziloVbz!%lK!?(x8r?_QQt<$#JB|k6Y>Vywh&99!^x${CzPM=#z*43R;w)Qh0^gh?D zW3zXi;i)(Ct_m`hXn(6x2zmW_#_rwMIlfJd-BDUUbxT+2qb!}bv*O~TCv>ze(aUE1 zzi`EzY>DVk8T}uG583REXHXPb?^Sb&*X~=mbJ(M$h7r6SQ#G$}l^t86W_)nNkqr}H zWIi}$S8_ts=!<7<dQR-q&{OXMyVq4+J7lr7<i(SD=a1jt8vlFhi~ZB%KPQSFUbSU! zjj2AzgH4$MA<au3?6^Op-gZgbY+*k&mV?Q6OeBR4ddeFZ_dT7<{y}?tmC?g9hG|k) z4=xJJDw_5Cs@DG)mU(h#Uj}>L3^*Xo+$M9~QF3$Wf$OhyqmO?pZF-w7F)@`TKh|ur zqCsiVg*VyGr~W4Pp1!c{PWAokPWSj$XjYf}Z!~$rv+w9J)mO_`{$YLJbxi8B+J+yw z`k%CpCR$eat>T!h!lWL{?loCMd*hoE$I3LW@8@P{o%lWU*u(1)2K%DkoH%fzv+Jv) q<@6&*=M`tpd;46faLUp6xpM`+Upc4nW_kO^D+e9sR2UuoUJC#v#vv#G literal 3799 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;@NW2`?`+ zPsvL6@G|jp@hZ%UO3L;q%Zo4!s&bAj3-wF$O?S>MaP@c3%;t(nPc}*Rbj)*&2-45? zt<rYO^YyDV%`&JcHz=@($o0zb3iht5bkDT(GeEa3D<Ho-FI}P7#nM^7Ft5znBc&oS z$u!Y5C_ErJ*~r5nIJ2PCFC#qEq#(Vtz}GCm*^?_GJF6_QD$PQ>$}K!Jt=vC5xwJIW zA|k`2FfTVh!ptQ@Kg1<FqogduHy>nMm~MJeYGQG!LVTr>LU~SJgonL}f|{R~t%47i zuTO=UkCS(1s;R4!M{bIDZc2V+MpAKpl!u|CpIMcUaam5TV^ErRS&nbENkv*vWk5<; zepp^|kcE-AYd}>lm#(g^LXd?~nR`)WzGJ3&MqX;Fe@I1;WkF!6nY&M+ziEzJc$sUk zn`LpaftPt8*MVa{E@+%JKU2KHS^m_5%||zQ+rRbaOg>X{_QmSIrWLO5UFA-5ewp!) zOSUxdeO!O3NZE|HhgF(a%uR4S^y^miX_>(81G^Qr{f;d;`E1?RdpiFwWGnh7Ik?^b zA7v8hwmQ0f%F*Rsd=ghVa?P9$OxSnP;KuPCEw3#;>xx?5SikVx7T*ekph=ADtS4~Z zm@#RKQbNz+i-%r*opJY{hDwJ`(}tv~n+*aL7cVq=<XPUh_9RF|?}F7tv7YT}?q?Y$ zzC3BSZwKFngI}eLc{~`7U1WJNfhi%x!aD8TTK>nU-)u;2o$>Y^_xHqCU%njTxvV#L z$-CKi&g%5PmY){KuuP$l<EH5YJ7%_WUV~V^Kieh?w1nvRC?4Iq<I&N3*Y1XXn6dR@ zK+=bL*+|82+=c=xB(+$7tl#i8)uC+qw^Pz-vTa^(^Aj657c#fsXnb9l^LDpt<cgYO z3Lk`G)mc1l|LUyG2wwAA>0hj~oKM@6Ir&!WrZZ=xDL&ccq58q`$HUlI`4vV{jc3Ca zyFc#{-0;lLuHcDJmf^wGXH3E^j@|5>E_i1(ukpb^VX1%}0`K4T-&_3t+(n*~Z=)ht z-l*kS<EZ6l6Q-S1m2ufOc-d@=6-zW7*FHG4S>>QsK-T%UQ}#VHy0ABRbwMY4{ulX| zDG9711~R9oZsXgc_O+HjIrz|a=QfMm-<Op}^UJ6o(*I!dalx!$0nVnKlHt}TJ$|z< z+j(iR`Cb3wHF>oi_j~>BZT__>%&v0J^c(V(dQ(}JtXUYoZV4kVd#>D!z_qN~1i5}1 zCa}!d!Lf+lFwt6(FWP>4{-=9qR&8_<_cXJd=$N)M{)@j#WkY<R>-;~-%VQlvpG}G9 z%oYqkb^rde_D{3=QY}-I7%bPDZiu|MC1B|lwWYT2rmxz$t0i+s{F3jk(V4T2qE4Q? zS-=`SeYRqO_SeXJ7x)%P3!JF?xaTCd{yGiUzBghMV}8B+zbZqn$oRtAyM|J;I$o)* zWi`kQoI5q<&duZNPO$~v<Cp3;5f6QxdxvAS&863={sF;BM<>T03$dSm^7+q~PbXQs zglQ~w`}5iP;+-QMPqxYhBuudPdiN+;f!`=^p2^C0o4%gcvDl_Kjm>0f2kSDHNw*{Q zzr0tre-$>%{)pi3z&+(@%%QU4*7mG69~GGs8|Kg7{wVnPtOduKCU4%bO3H8T@8Fc{ z@`qkskKty$QTBABk%e1`$#>?G+Vbh|zVP;*{~T%}ulitu)C!iSna>>`<Q;$2Z|-BU z)gW`@M#stTROdWWU^pdOVDSC)_f;0hMDo<POzfR>u<qzCza?!?H^$tbuJ_&0eEBP{ zb@r7nD-~{=TOPP+{m^)e_riG>cF0{jn)F{jQ&(xL;JY1+n?LzDPm-}q`26+29KlTv z+iJ27d(2v~b}rY4KgL19M+}{F;y&b<nNRaP<Y9BYezrQBzfs9bep!)ZiEqwl9Syeb zXq6Y*%vR14qq%AJx{RciiEbC#KXPtkS+-~C-DP5~`(;i(D}A}Bf7*qHq#ebn1t;Ct z>%4yZJ+Juj!;(il|Lj@c32ezbZ(e@-YEI3kd-Y-S_eFbgSq4tnFIL&{J?dlL*8R4z zWs4&Y1sT;Uv^f8jHQmG-=#(7YxcU@pr|`*s-lDA^&VLZ86XGrSDXOpWc%_P^-@B;^ z@>NV`*X>_g|7)4L{@(OFVY^vHrvztqd~$Jp_|`Im?Y&lSgWTfq|2tL*Z&>;G(yyzU zk-7^EX2+>b<=FJ`e1@QHU;DqD9V%6}Dy|uK?k1f1cX`RCh_;o!KWkR#Zq><<x$gdQ z^V4m@0xn0Na?AK-)a-JYDbKO|en7xcrgG=_ch3*yXBD<72F#mblo_!1EsOUv=i0Yj zH8;OiDX$RG=zG7aqAu`~%6*ZajkDGm#|NkdxfH*bnQ+ym{imh^WA*1bPc7&8=SOH| zAFmYH$Nuo!>YC%-|0chgCFCW)chikSi&s@CWj?kNZ762H_}nSsUiqA?t38|A^tGED zX1%hhnpAad?X!rJsSi$BhhN@y_uzW_Sw6a%52Y_eKMQvj-oVqWY@ws6bn+%&F6-y- zJLXudoPGMg56?Y6jf*}vB+r<ih~k&CU!iNZcvkdX2c^=9g;DYk<*xYGFirZrzson` z=(<N8%{`(!4*lXv<g8xEY4<NqFsJ*^x6hmNpIE6bS<L%J;Ig68J^eR*U6%VA#7<4l z-`Mih`TPD;p~<lwIq{FDypk2Ic=skhlx=rs+kq^vgNcHYB@8uhW=1|r3hoT9{B^y2 zMN-G#rhe(j)}+f?TNE?&O<z?O#V((16_K>wK5Xj0;HLHOm#%RCeR93@>%8zIt?7NX zdAF*qcI>KNdTOJ}*6Vx^8dg`XogTHo-!D;p*_?CA39d@7XZI8bKCks_UnLe}+VFJF z<?xP43)Z&pzddP1L}Wt!tG^RoeXKUr<epJociU#gHpgYLcb-V_Yt2ki3ERam;mem9 zwo>byuKKUow{pwXSqqutuZYP!y{pru+@kb2nQhPfh)u04KZaRv+tXt6#eh$lu`BY5 z+H&4W3Z6UcdXA+&@^t<!xidSDMS$&d|4Fu@S9%B6*Sa?>o^Z^lM=*HZ{s`MmH4|Bu zEqU*%{7Gu&nN;5I{U>6+O;p^vZP(<$OQ-Trtuy@3)GBJ6aH_DUeaDuJ`TO5A_uUZ| z^Z8gcQDfK7qmEyn-L+QmGS6QoyudoOwQ%0<8NFR|`}u9#ORvXy{!Gb_4!&T=byGxp z#pMaMbJj*YT)28m%+f!yH#wA35+g&r8QlJrZ<<l^u72G?cFx}kj~?b7?mH%@*?!gh zzRIUgk+!17L&g(s)qlCR|KPHjXHRHpa9&dT<sH5wy7gUqV9581e`j85t&>#h=#EwT z{4P(QujkSWzFFGt{dY?K+J0oVx_;GpM?rj~xu!;l?H})Askg2FPCK+F75mw8FqW~i zdCPc|Zk%iR{{`ov5BJTMWkkKsGj+6Y{IS7Tq<VYhZMLk`^54f}e&l$*k8zNgTDds$ zQ~ZW0pZU*AJ6~e{A9H%of$MW4o|{)lG9_j?3dv9Dim9EI?6`{KTF~#1)=Bf7UYWD8 z&hTQJlI<yK*VHh7=e^#O?K~<=)pjZ@=DwA)d;YF<UFx40Hzj>9*vawA`e5MOYZWXr zimX?k2{lyR!9TC^$<M@`z0DU@<@)uD*6ZD!`uAsgA@iv(n-yOPD&3j9Bg*EBK)Y}H z{QnKhes2ERr@S#zdQ(VMgs!~o_59X3k!c&kJs0=h<2$o0CAhV$r8{m8$H}f)5eMh7 zE>>K>f@6hNrt(_5>&F7*^s{&5oH<su=(V6x=if(fD|DBqT#(DYEd0ak&CP;Kt8Y$U z(0=O9MJ1l&Yb-_QZ+cTN$Y`IeKSg1}jywMSvlp*&@{tZ+pl$DBbMmi}+Jkyg=CHLk z!KU5?-&bkJ*axQk)~tN@J;7uyPl$A1-rvU4K0Q|rjA!V~pVguIeM)%AshPj|7AEfT z_?-S|!bizhGrH?%q=!9@-Z!Iq#<N`Mh|(6mEscxIB5%2RSl2C0?*7iaN&kCM+9SUm zYx>0ceA4gRW~Z{w<bR%a_1VdFH$5&zZInOe6%t}@S?<Pl<}06Ju9vB2-%Z2CPSYpM z?74m{<-=V5itq*Xc`c87%3VXJyyi?={$J5Te%k-)zjklURLwMV<mSJhIN@H_r7Me$ z+>4s#wkN0SaJBrpb!9J<c^I}|l$Ki&^Qdft-m3lCtMm<*htK=1pe?0yJTPAH@VQre z-CK9F-Ds&O<=$sF$(Y56|A(^jKh-6F+XAh+ny3C@oD#Ea0(bwF_cx#I^)PWdcbmJH zr$Sc#`oFDjCf?X2_k8OC>E!ul;pMLGZktQz=Sjam{-E_rO={(K_Z$1Zd}v#B;isfd z_0jZqPH#WyYc4<27T5E?Yn7a>(>j&+<=mbTGd)E07aB?J^Im#<Qbc^boYq~HMYSg@ z9>1-RJr<er<Z(iCTyITo(}zp`k*3|L9=~3v_m?^*@4n{H$^I(g)zbJ=-)|(`SSPYK zZJ+Lz<b~p9lFPLEpG=Bo`JAxGx!n0??xD`YU9;0AW!|zW|5&r&_S7?_*EtM2)-UpF zS+`aHckV~oMf;C#n7dQ^^^Hxhbfml=9-P3U*#5qjH@fZdwK}IAv*%h>zcl2Ycle|9 zs#n`57i7QAUU+FC<5N3}vsVS~owWXuy4cw4_;l+=`9+t-?yvD?nJKpR+kvxR%IC&( zRo+`#KX3Q3r(dqW5&5PS<FD{v`((MfagXDQWsd@PKjll`|M+O<?|(=9cs`#{U3TS& z-U;_upIs_-js-8i9Gj+Gu_N9`@p+<lRFbGmGw<<dGxgu^E$n#xRc66yi-KkC_wpKE zi)V=}o56apyt<(0+w&z4o$tPv(hEu~4!CkQLh_45#-HU$-7eEwRQdl&KHa)P@X@N% z0p8oUT%V`LWq#z*<>U>AGfhI4PWHFk;;Yqk-Egks>qE8v-Ul*&M6+!d5WDH0C-7p{ zqED@F&#l^X?s*mSOYRv>9l5pK;ft2O@D2F(_w9wnoEgcj)6YD;I@5D&(%i~h!E@iA zDZamFs&mQw#gCdly47-v9S_fPOyIm9J^kzvuf0-h93+cBpLr*Jc6sj7&86CAHIJ?* dKeP;5bk>p0qW`T_@y>laN{U{!uw>4i0{~1wH){X@ From e2091e9e2ec36e602f5a9a47412238951260b146 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 26 Jan 2024 23:35:06 +0100 Subject: [PATCH 1170/1588] nixos: services: nextcloud: use HTTPS This should fix my issue with the sliding sync server. --- modules/nixos/services/nextcloud/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index f2ac8e3..580e9ea 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -43,6 +43,8 @@ in dbhost = "/run/postgresql"; }; + https = true; + extraOptions = { overwriteprotocol = "https"; # Nginx only allows SSL }; From 58b22b7354c59c6b8a0c1e04a2883bf99414117a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 25 Jan 2024 20:27:29 +0000 Subject: [PATCH 1171/1588] home: firefox: tridactyl: remove 'Nitter' rule Turns out it's very annoying when the Nitter instance has been rate limited. This reverts commit e514389a3d3ea25e311b3dd3b24cdd1f7c6eec65. --- modules/home/firefox/tridactyl/tridactylrc | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/home/firefox/tridactyl/tridactylrc b/modules/home/firefox/tridactyl/tridactylrc index 0401292..4dc53cf 100644 --- a/modules/home/firefox/tridactyl/tridactylrc +++ b/modules/home/firefox/tridactyl/tridactylrc @@ -69,8 +69,6 @@ unbind <C-f> " Redirections {{{ " Always redirect Reddit to the old site autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www", "old") -" Use a better Twitter front-end -autocmd DocStart ^http(s?)://twitter.com js tri.excmds.urlmodify("-t", "twitter.com", "nitter.net") " }}} " Disabled websites {{{ From e2ec4d3032ee3d3dc3be935b0e2af9ad7ff0c511 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 30 Jan 2024 12:22:04 +0100 Subject: [PATCH 1172/1588] nixos: services: paperless: fix classifier hangs This is an experimental fix to try and get around an issue with the default BLAS/LAPACK implementation. See [1] for more details. [1]: https://github.com/NixOS/nixpkgs/issues/240591 --- modules/nixos/services/paperless/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index f528ad7..f62879a 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.services.paperless; in @@ -80,6 +80,9 @@ in # Misc PAPERLESS_TIME_ZONE = config.time.timeZone; PAPERLESS_ADMIN_USER = cfg.username; + + # Fix classifier hangs + LD_LIBRARY_PATH = "${lib.getLib pkgs.mkl}/lib"; }; # Admin password From 1655afcedf07197fc1ba25c945a2a4fcfb60cf6a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 30 Jan 2024 12:38:48 +0100 Subject: [PATCH 1173/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index acf6c48..7714038 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1704982712, - "narHash": "sha256-2Ptt+9h8dczgle2Oo6z5ni5rt/uLMG47UFTR1ry/wgg=", + "lastModified": 1706569497, + "narHash": "sha256-oixb0IDb5eZYw6BaVr/R/1pSoMh4rfJHkVnlgeRIeZs=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "07f6395285469419cf9d078f59b5b49993198c00", + "rev": "60c614008eed1d0383d21daac177a3e036192ed8", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1705879479, - "narHash": "sha256-ZIohbyly1KOe+8I3gdyNKgVN/oifKdmeI0DzMfytbtg=", + "lastModified": 1706473109, + "narHash": "sha256-iyuAvpKTsq2u23Cr07RcV5XlfKExrG8gRpF75hf1uVc=", "owner": "nix-community", "repo": "home-manager", - "rev": "2d47379ad591bcb14ca95a90b6964b8305f6c913", + "rev": "d634c3abafa454551f2083b054cd95c3f287be61", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1705856552, - "narHash": "sha256-JXfnuEf5Yd6bhMs/uvM67/joxYKoysyE3M2k6T3eWbg=", + "lastModified": 1706371002, + "narHash": "sha256-dwuorKimqSYgyu8Cw6ncKhyQjUDOyuXoxDTVmAXq88s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "612f97239e2cc474c13c9dafa0df378058c5ad8d", + "rev": "c002c6aa977ad22c60398daaa9be52f2203d0006", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1705927265, - "narHash": "sha256-eUUIBb3qYMrQB0ONGEj2kzKN8yzqwDmR4+Ct5/dvJcs=", + "lastModified": 1706613454, + "narHash": "sha256-oekBAKlWhNgs4MCORSrZnswYTwD5h7HQkDDFf6INAZs=", "owner": "nix-community", "repo": "NUR", - "rev": "a29c6f71063d0ce903e927fa7885651c00abd33b", + "rev": "ce9c09fbd09d8cccb7353fe32bdfbd39ff3cb7be", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1705757126, - "narHash": "sha256-Eksr+n4Q8EYZKAN0Scef5JK4H6FcHc+TKNHb95CWm+c=", + "lastModified": 1706424699, + "narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "f56597d53fd174f796b5a7d3ee0b494f9e2285cc", + "rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf", "type": "github" }, "original": { From 02412f2578eabbc030b9a34d6458d2f42070e84d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 30 Jan 2024 13:21:50 +0100 Subject: [PATCH 1174/1588] nixos: services: nextcloud: fix renamed option --- modules/nixos/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index 580e9ea..51195df 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -45,7 +45,7 @@ in https = true; - extraOptions = { + settings = { overwriteprotocol = "https"; # Nginx only allows SSL }; From cc029f7933b73785c5a64aaed02188498b277fb2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 22 Dec 2023 23:27:04 +0100 Subject: [PATCH 1175/1588] nixos: services: add aria --- modules/nixos/services/aria/default.nix | 76 +++++++++++++++++++++++++ modules/nixos/services/default.nix | 1 + 2 files changed, 77 insertions(+) create mode 100644 modules/nixos/services/aria/default.nix diff --git a/modules/nixos/services/aria/default.nix b/modules/nixos/services/aria/default.nix new file mode 100644 index 0000000..2d1b3e2 --- /dev/null +++ b/modules/nixos/services/aria/default.nix @@ -0,0 +1,76 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.services.aria; +in +{ + options.my.services.aria = with lib; { + enable = mkEnableOption ""; + + rpcSecretFile = mkOption { + type = types.str; + example = "/run/secrets/aria-secret.txt"; + description = '' + File containing the RPC secret. + ''; + }; + + rpcPort = mkOption { + type = types.port; + default = 6800; + example = 8080; + description = "RPC port"; + }; + + downloadDir = mkOption { + type = types.str; + default = "/data/downloads"; + example = "/var/lib/transmission/download"; + description = "Download directory"; + }; + }; + + config = lib.mkIf cfg.enable { + services.aria2 = { + enable = true; + + inherit (cfg) downloadDir rpcSecretFile; + + rpcListenPort = cfg.rpcPort; + openPorts = false; # I don't want to expose the RPC port + }; + + # Expose DHT ports + networking.firewall = { + # FIXME: check for overlap? + allowedUDPPortRanges = config.services.aria2.listenPortRange; + }; + + # Set-up media group + users.groups.media = { }; + + systemd.services.aria2 = { + serviceConfig = { + Group = lib.mkForce "media"; # Use 'media' group + }; + }; + + my.services.nginx.virtualHosts = { + aria = { + root = "${pkgs.ariang}/share/ariang"; + # For paranoia, don't allow anybody to use the UI unauthenticated + sso = { + enable = true; + }; + }; + aria-rpc = { + port = cfg.rpcPort; + # Proxy websockets for RPC + extraConfig = { + locations."/".proxyWebsockets = true; + }; + }; + }; + + # NOTE: unfortunately aria2 does not log connection failures for fail2ban + }; +} diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index b27570d..3e2b3c8 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -3,6 +3,7 @@ { imports = [ ./adblock + ./aria ./backup ./blog ./calibre-web From 16f98f144eaf68b024090d60c1db2e7e29b7aa04 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 30 Jan 2024 13:37:26 +0100 Subject: [PATCH 1176/1588] hosts: nixos: porthos: secrets: add aria RPC token --- hosts/nixos/porthos/secrets/aria/rpc-token.age | 7 +++++++ hosts/nixos/porthos/secrets/secrets.nix | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/aria/rpc-token.age diff --git a/hosts/nixos/porthos/secrets/aria/rpc-token.age b/hosts/nixos/porthos/secrets/aria/rpc-token.age new file mode 100644 index 0000000..e6a42c5 --- /dev/null +++ b/hosts/nixos/porthos/secrets/aria/rpc-token.age @@ -0,0 +1,7 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg fpiyZo1AR5hCfk/KtbgWCTzz+05/VOUnnaHhWgXQRwc +d2w9IX/kq/T6OwQ1zImsCmzIX2yfFD8hQDbs0IW3ZIA +-> ssh-ed25519 jPowng E9R7p9NCubUQrymjnrNfEjSNIIAXrBQLogNkWsOx8xc +MrWEE5LNtOqAjnwA6byfSa1udnbUtqBy4FhdxipuA+g +--- fKgerjgGs+brvNKnrWdpmOadl34LipMT6Msqse2g3E0 +E9flKYRL-Ƿ\EK{7oXGxT)˜6%LOT**8\@G \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index ed6c2fd..7dd34df 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -12,6 +12,8 @@ in { "acme/dns-key.age".publicKeys = all; + "aria/rpc-token.age".publicKeys = all; + "backup/password.age".publicKeys = all; "backup/credentials.age".publicKeys = all; From 3f13b3f03f70e7632096c9b88ef8cb637f072e95 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 31 Jan 2024 11:56:09 +0000 Subject: [PATCH 1177/1588] flake: bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 7714038..43c64b5 100644 --- a/flake.lock +++ b/flake.lock @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1706371002, - "narHash": "sha256-dwuorKimqSYgyu8Cw6ncKhyQjUDOyuXoxDTVmAXq88s=", + "lastModified": 1706550542, + "narHash": "sha256-UcsnCG6wx++23yeER4Hg18CXWbgNpqNXcHIo5/1Y+hc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c002c6aa977ad22c60398daaa9be52f2203d0006", + "rev": "97b17f32362e475016f942bbdfda4a4a72a8a652", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1706613454, - "narHash": "sha256-oekBAKlWhNgs4MCORSrZnswYTwD5h7HQkDDFf6INAZs=", + "lastModified": 1706700467, + "narHash": "sha256-GYdukl4hSsGoHnlYMV6XgmnumuGr1H4vsL7UNnEmhmA=", "owner": "nix-community", "repo": "NUR", - "rev": "ce9c09fbd09d8cccb7353fe32bdfbd39ff3cb7be", + "rev": "e52bfdd7d331dd32f0f0f8eb430488a36d6e6402", "type": "github" }, "original": { From e227ad76b274a866d3a8484fde3531b329407c4b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 31 Jan 2024 21:41:40 +0000 Subject: [PATCH 1178/1588] hosts: nixos: aramis: home: use 'pinentry-gtk2' Now that it's available again, let's use it. This reverts commit 39eba647acacdf2bb2aafb00be694fa5c2e0726f. --- hosts/nixos/aramis/home.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index dfe9dbe..66a0892 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -2,7 +2,7 @@ { my.home = { # Use graphical pinentry - bitwarden.pinentry = "qt"; + bitwarden.pinentry = "gtk2"; # Ebook library calibre.enable = true; # Some amount of social life @@ -14,7 +14,7 @@ # Blue light filter gammastep.enable = true; # Use a small popup to enter passwords - gpg.pinentry = "qt"; + gpg.pinentry = "gtk2"; # Machine specific packages packages.additionalPackages = with pkgs; [ element-desktop # Matrix client From 05cf04a11f47a3688ace1787a6ebb5ef16b41260 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 31 Jan 2024 22:07:03 +0000 Subject: [PATCH 1179/1588] home: mpv: add mpv-cheatsheet --- modules/home/mpv/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/mpv/default.nix b/modules/home/mpv/default.nix index 931c252..8af394c 100644 --- a/modules/home/mpv/default.nix +++ b/modules/home/mpv/default.nix @@ -13,6 +13,7 @@ in scripts = [ pkgs.mpvScripts.mpris # Allow controlling using media keys + pkgs.mpvScripts.mpv-cheatsheet # Show some simple mappings on '?' pkgs.mpvScripts.uosc # Nicer UI ]; }; From 473be47b29843ae6125296bbf2ea7ea36acc110b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 3 Feb 2024 23:54:03 +0100 Subject: [PATCH 1180/1588] overlays: add 'tandoor-recipes-failing-test' Since it's currently broken on the unstable channel, I am pre-emptively fixing it so that I can bump my flake inputs. --- overlays/tandoor-recipes-failing-test/default.nix | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 overlays/tandoor-recipes-failing-test/default.nix diff --git a/overlays/tandoor-recipes-failing-test/default.nix b/overlays/tandoor-recipes-failing-test/default.nix new file mode 100644 index 0000000..43755ac --- /dev/null +++ b/overlays/tandoor-recipes-failing-test/default.nix @@ -0,0 +1,9 @@ +_self: super: +{ + tandoor-recipes = super.tandoor-recipes.overridePythonAttrs (oa: { + disabledTests = (oa.disabledTests or [ ]) ++ [ + "test_search_count" + "test_url_import_regex_replace" + ]; + }); +} From b41f0890b8a1cf2d3653cb0e310bbb64b3bffaad Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 3 Feb 2024 18:37:51 +0100 Subject: [PATCH 1181/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 43c64b5..ae79c1a 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1706569497, - "narHash": "sha256-oixb0IDb5eZYw6BaVr/R/1pSoMh4rfJHkVnlgeRIeZs=", + "lastModified": 1706830856, + "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "60c614008eed1d0383d21daac177a3e036192ed8", + "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1706473109, - "narHash": "sha256-iyuAvpKTsq2u23Cr07RcV5XlfKExrG8gRpF75hf1uVc=", + "lastModified": 1706955260, + "narHash": "sha256-W3y0j77IDVbmbajudHoUr46RpswujUCl+D5Vru53UsI=", "owner": "nix-community", "repo": "home-manager", - "rev": "d634c3abafa454551f2083b054cd95c3f287be61", + "rev": "880d9bc2110f7cae59698f715b8ca42cdc53670c", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1706550542, - "narHash": "sha256-UcsnCG6wx++23yeER4Hg18CXWbgNpqNXcHIo5/1Y+hc=", + "lastModified": 1706732774, + "narHash": "sha256-hqJlyJk4MRpcItGYMF+3uHe8HvxNETWvlGtLuVpqLU0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "97b17f32362e475016f942bbdfda4a4a72a8a652", + "rev": "b8b232ae7b8b144397fdb12d20f592e5e7c1a64d", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1706700467, - "narHash": "sha256-GYdukl4hSsGoHnlYMV6XgmnumuGr1H4vsL7UNnEmhmA=", + "lastModified": 1706978646, + "narHash": "sha256-XEFktO8Ba41zKawf1Uf6FKIR1x0ShuoSddYXU4PQbx8=", "owner": "nix-community", "repo": "NUR", - "rev": "e52bfdd7d331dd32f0f0f8eb430488a36d6e6402", + "rev": "66d6b7b355f3b10ea4140f8b85b2e274c24d442a", "type": "github" }, "original": { From 03dac604e9b8f6925042e7ced1c8f915a842acdb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 24 Dec 2023 22:56:50 +0100 Subject: [PATCH 1182/1588] nixos: services: add pyload --- modules/nixos/services/default.nix | 1 + modules/nixos/services/pyload/default.nix | 77 +++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 modules/nixos/services/pyload/default.nix diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 3e2b3c8..67504da 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -27,6 +27,7 @@ ./podgrab ./postgresql ./postgresql-backup + ./pyload ./quassel ./rss-bridge ./sabnzbd diff --git a/modules/nixos/services/pyload/default.nix b/modules/nixos/services/pyload/default.nix new file mode 100644 index 0000000..40bf12d --- /dev/null +++ b/modules/nixos/services/pyload/default.nix @@ -0,0 +1,77 @@ +{ config, lib, ... }: +let + cfg = config.my.services.pyload; +in +{ + options.my.services.pyload = with lib; { + enable = mkEnableOption "pyload download manager"; + + credentialsFile = mkOption { + type = types.path; + example = "/run/secrets/pyload-credentials.env"; + description = "pyload credentials"; + }; + + downloadDirectory = mkOption { + type = types.str; + default = "/data/downloads/pyload"; + example = "/var/lib/pyload/download"; + description = "Download directory"; + }; + + port = mkOption { + type = types.port; + default = 9093; + example = 8080; + description = "Internal port for webui"; + }; + }; + + config = lib.mkIf cfg.enable { + services.pyload = { + enable = true; + + # Listening on `localhost` leads to 502 with the reverse proxy... + listenAddress = "127.0.0.1"; + + inherit (cfg) + credentialsFile + downloadDirectory + port + ; + }; + + # Use pyload user/media group when downloading files + systemd.services.pyload = { + serviceConfig = { + User = lib.mkForce "pyload"; + Group = lib.mkForce "media"; + DynamicUser = lib.mkForce false; + }; + }; + + # And make sure the download directory has the correct owners + systemd.tmpfiles.settings.pyload = { + ${cfg.downloadDirectory}.d = { + user = "pyload"; + group = "media"; + }; + }; + + # Set-up pyload user and media group + users.users.pyload = { + isSystemUser = true; + group = "media"; + }; + + users.groups.media = { }; + + my.services.nginx.virtualHosts = { + pyload = { + inherit (cfg) port; + }; + }; + + # FIXME: fail2ban + }; +} From df44786c9cc5c12935ecce260a5ac55277eb9bef Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 24 Dec 2023 22:57:37 +0100 Subject: [PATCH 1183/1588] hosts: nixos: porthos: secrets: add pyload creds --- hosts/nixos/porthos/secrets/pyload/credentials.age | 7 +++++++ hosts/nixos/porthos/secrets/secrets.nix | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/pyload/credentials.age diff --git a/hosts/nixos/porthos/secrets/pyload/credentials.age b/hosts/nixos/porthos/secrets/pyload/credentials.age new file mode 100644 index 0000000..089f962 --- /dev/null +++ b/hosts/nixos/porthos/secrets/pyload/credentials.age @@ -0,0 +1,7 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg nJbOfp0/wmFOZLzcWjoGB7wEB8e56aO1NntSmn5KomU +/Vio4Z/t7IPJrdzdwUPidVH3wrouSkwRzNHP0T4z3x0 +-> ssh-ed25519 jPowng QXg/xqs7/VfkYQg3X77w4i53q64bL9oYeTxqb9NVhiQ +sMHIXlmrIxtIr+s0X4lBqev/PPd3AKD5P7AP5K4NeJg +--- gzTn+6+aa4Ptic1lsvSt+r3IEBysHrvMMIyONogMDF0 +ˮUE_</Q+UAГM/kdAL/įo\XEDf\iđpF`#n4x1D5C&fBq${GgAq@Vu!CcR\֨ \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 7dd34df..43a9b35 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -64,6 +64,8 @@ in "podgrab/password.age".publicKeys = all; + "pyload/credentials.age".publicKeys = all; + "sso/auth-key.age".publicKeys = all; "sso/ambroisie/password-hash.age".publicKeys = all; "sso/ambroisie/totp-secret.age".publicKeys = all; From 5ecef0d789ce2fb990f3b5994321cf46c6ad950c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 24 Dec 2023 22:58:03 +0100 Subject: [PATCH 1184/1588] hosts: nixos: porthos: services: enable pyload --- hosts/nixos/porthos/services.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index d73cdc1..2486752 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -134,6 +134,10 @@ in }; # Regular backups postgresql-backup.enable = true; + pyload = { + enable = true; + credentialsFile = secrets."pyload/credentials".path; + }; # RSS provider for websites that do not provide any feeds rss-bridge.enable = true; # Usenet client From f54cee8f70cd569fcc77093e7330f327ee1b3970 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 4 Feb 2024 14:37:31 +0000 Subject: [PATCH 1185/1588] nixos: hardware: add graphics I did not add an Nvidia knob to this module, as I do not foresee *ever* using one of their graphics card. --- modules/nixos/hardware/default.nix | 1 + modules/nixos/hardware/graphics/default.nix | 75 +++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 modules/nixos/hardware/graphics/default.nix diff --git a/modules/nixos/hardware/default.nix b/modules/nixos/hardware/default.nix index 2a686f7..95e6a22 100644 --- a/modules/nixos/hardware/default.nix +++ b/modules/nixos/hardware/default.nix @@ -6,6 +6,7 @@ ./bluetooth ./ergodox ./firmware + ./graphics ./mx-ergo ./networking ./sound diff --git a/modules/nixos/hardware/graphics/default.nix b/modules/nixos/hardware/graphics/default.nix new file mode 100644 index 0000000..3baac02 --- /dev/null +++ b/modules/nixos/hardware/graphics/default.nix @@ -0,0 +1,75 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.my.hardware.graphics; +in +{ + options.my.hardware.graphics = with lib; { + enable = mkEnableOption "graphics configuration"; + + gpuFlavor = mkOption { + type = with types; nullOr (enum [ "amd" "intel" ]); + default = null; + example = "intel"; + description = "Which kind of GPU to install driver for"; + }; + + amd = { + enableKernelModule = lib.my.mkDisableOption "Kernel driver module"; + + amdvlk = lib.mkEnableOption "Use AMDVLK instead of Mesa RADV driver"; + }; + + intel = { + enableKernelModule = lib.my.mkDisableOption "Kernel driver module"; + }; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + hardware.opengl = { + enable = true; + }; + } + + # AMD GPU + (lib.mkIf (cfg.gpuFlavor == "amd") { + boot.initrd.kernelModules = lib.mkIf cfg.amd.enableKernelModule [ "amdgpu" ]; + + hardware.opengl = { + extraPackages = with pkgs; [ + # OpenCL + rocmPackages.clr + rocmPackages.clr.icd + ] + ++ lib.optional cfg.amd.amdvlk amdvlk + ; + + extraPackages32 = with pkgs; [ + ] + ++ lib.optional cfg.amd.amdvlk driversi686Linux.amdvlk + ; + }; + }) + + # Intel GPU + (lib.mkIf (cfg.gpuFlavor == "intel") { + boot.initrd.kernelModules = lib.mkIf cfg.intel.enableKernelModule [ "i915" ]; + + environment.variables = { + VDPAU_DRIVER = "va_gl"; + }; + + hardware.opengl = { + extraPackages = with pkgs; [ + # Open CL + intel-compute-runtime + + # VA API + intel-media-driver + intel-vaapi-driver + libvdpau-va-gl + ]; + }; + }) + ]); +} From 183f3b48c822ddd482bc2609c8053b966f4b1d7a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 4 Feb 2024 14:39:29 +0000 Subject: [PATCH 1186/1588] hosts: nixos: aramis: hardware: enable graphics --- hosts/nixos/aramis/hardware.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hosts/nixos/aramis/hardware.nix b/hosts/nixos/aramis/hardware.nix index c66b426..99bc77e 100644 --- a/hosts/nixos/aramis/hardware.nix +++ b/hosts/nixos/aramis/hardware.nix @@ -26,6 +26,12 @@ firmware = { cpuFlavor = "intel"; }; + + graphics = { + enable = true; + + gpuFlavor = "intel"; + }; }; hardware = { From 7948dc284b0dd7d2cd48932bc52ae64d90a9c01b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 6 Feb 2024 15:08:16 +0000 Subject: [PATCH 1187/1588] nixos: hardware: rename 'trackball' Since I do intend on configuring every trackball I own to use this scheme, not just the MX Ergo. --- modules/nixos/hardware/default.nix | 2 +- modules/nixos/hardware/{mx-ergo => trackball}/default.nix | 7 ++++--- modules/nixos/profiles/devices/default.nix | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) rename modules/nixos/hardware/{mx-ergo => trackball}/default.nix (79%) diff --git a/modules/nixos/hardware/default.nix b/modules/nixos/hardware/default.nix index 95e6a22..8e125ca 100644 --- a/modules/nixos/hardware/default.nix +++ b/modules/nixos/hardware/default.nix @@ -7,9 +7,9 @@ ./ergodox ./firmware ./graphics - ./mx-ergo ./networking ./sound + ./trackball ./upower ]; } diff --git a/modules/nixos/hardware/mx-ergo/default.nix b/modules/nixos/hardware/trackball/default.nix similarity index 79% rename from modules/nixos/hardware/mx-ergo/default.nix rename to modules/nixos/hardware/trackball/default.nix index e4e55a1..7a99247 100644 --- a/modules/nixos/hardware/mx-ergo/default.nix +++ b/modules/nixos/hardware/trackball/default.nix @@ -1,11 +1,11 @@ # Hold down the `next page` button to scroll using the ball { config, lib, ... }: let - cfg = config.my.hardware.mx-ergo; + cfg = config.my.hardware.trackball; in { - options.my.hardware.mx-ergo = with lib; { - enable = mkEnableOption "MX Ergo configuration"; + options.my.hardware.trackball = with lib; { + enable = mkEnableOption "trackball configuration"; }; config = lib.mkIf cfg.enable { @@ -13,6 +13,7 @@ in # This section must be *after* the one configured by `libinput` # for the `ScrollMethod` configuration to not be overriden inputClassSections = lib.mkAfter [ + # MX Ergo '' Identifier "MX Ergo scroll button configuration" MatchProduct "MX Ergo" diff --git a/modules/nixos/profiles/devices/default.nix b/modules/nixos/profiles/devices/default.nix index 7dbd299..7a84bd2 100644 --- a/modules/nixos/profiles/devices/default.nix +++ b/modules/nixos/profiles/devices/default.nix @@ -11,7 +11,7 @@ in my.hardware = { ergodox.enable = true; - mx-ergo.enable = true; + trackball.enable = true; }; # MTP devices auto-mount via file explorers From a5aaf57e63d07666d8b41f8726258ccd88ff8467 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 6 Feb 2024 17:16:43 +0100 Subject: [PATCH 1188/1588] home: mail: accounts: remove himalaya backends Their definition is redundant with the logic of the himalaya module, which does the right thing by default. --- modules/home/mail/accounts/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/home/mail/accounts/default.nix b/modules/home/mail/accounts/default.nix index e7663d8..8886139 100644 --- a/modules/home/mail/accounts/default.nix +++ b/modules/home/mail/accounts/default.nix @@ -18,8 +18,6 @@ let himalaya = { enable = cfg.himalaya.enable; # FIXME: try to actually configure it at some point - backend = "imap"; - sender = "smtp"; }; msmtp = { From 0b74332e9c500967bf748ca4c14e89b322d22096 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 6 Feb 2024 17:16:43 +0100 Subject: [PATCH 1189/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index ae79c1a..4773d30 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1706955260, - "narHash": "sha256-W3y0j77IDVbmbajudHoUr46RpswujUCl+D5Vru53UsI=", + "lastModified": 1707175763, + "narHash": "sha256-0MKHC6tQ4KEuM5rui6DjKZ/VNiSANB4E+DJ/+wPS1PU=", "owner": "nix-community", "repo": "home-manager", - "rev": "880d9bc2110f7cae59698f715b8ca42cdc53670c", + "rev": "f99eace7c167b8a6a0871849493b1c613d0f1b80", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1706732774, - "narHash": "sha256-hqJlyJk4MRpcItGYMF+3uHe8HvxNETWvlGtLuVpqLU0=", + "lastModified": 1707092692, + "narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b8b232ae7b8b144397fdb12d20f592e5e7c1a64d", + "rev": "faf912b086576fd1a15fca610166c98d47bc667e", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1706978646, - "narHash": "sha256-XEFktO8Ba41zKawf1Uf6FKIR1x0ShuoSddYXU4PQbx8=", + "lastModified": 1707234300, + "narHash": "sha256-D+LdA8g0Tq+KE9EmJMmn8EGRO5jZ2nLe/W0Fr5EIsdg=", "owner": "nix-community", "repo": "NUR", - "rev": "66d6b7b355f3b10ea4140f8b85b2e274c24d442a", + "rev": "59fceae769455455ef44c1dfb63bbae1ecddc41d", "type": "github" }, "original": { From 8c03bff1cf8531f2afc5c81556361479ab4391ab Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 6 Feb 2024 17:25:03 +0100 Subject: [PATCH 1190/1588] overlays: remove 'tandoor-recipes-failing-test' This is now redundant, the nixpkgs bump provided an updated package which builds successfully. This reverts commit 473be47b29843ae6125296bbf2ea7ea36acc110b. --- overlays/tandoor-recipes-failing-test/default.nix | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 overlays/tandoor-recipes-failing-test/default.nix diff --git a/overlays/tandoor-recipes-failing-test/default.nix b/overlays/tandoor-recipes-failing-test/default.nix deleted file mode 100644 index 43755ac..0000000 --- a/overlays/tandoor-recipes-failing-test/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -_self: super: -{ - tandoor-recipes = super.tandoor-recipes.overridePythonAttrs (oa: { - disabledTests = (oa.disabledTests or [ ]) ++ [ - "test_search_count" - "test_url_import_regex_replace" - ]; - }); -} From 9e0930aca4fb0ae40c40c5cd932962e832d0ee0a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 Feb 2024 11:49:42 +0000 Subject: [PATCH 1191/1588] overlays: gruvbox-nvim-better-diff: simplify --- .../gruvbox-nvim-better-diff/generated.nix | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/overlays/gruvbox-nvim-better-diff/generated.nix b/overlays/gruvbox-nvim-better-diff/generated.nix index 50ea4ad..82a18c2 100644 --- a/overlays/gruvbox-nvim-better-diff/generated.nix +++ b/overlays/gruvbox-nvim-better-diff/generated.nix @@ -1,24 +1,10 @@ -{ vimUtils, fetchFromGitHub }: +{ ... }: -_final: _prev: { - gruvbox-nvim = vimUtils.buildVimPlugin { - pname = "gruvbox.nvim"; - version = "2023-10-07"; - - src = fetchFromGitHub { - owner = "ellisonleao"; - repo = "gruvbox.nvim"; - rev = "477c62493c82684ed510c4f70eaf83802e398898"; - sha256 = "0250c24c6n6yri48l288irdawhqs16qna3y74rdkgjd2jvh66vdm"; - }; - - patches = [ +_final: prev: { + gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (oa: { + patches = (oa.patches or [ ]) ++ [ # Inspired by https://github.com/ellisonleao/gruvbox.nvim/pull/291 ./colours.patch ]; - - meta = { - homepage = "https://github.com/ellisonleao/gruvbox.nvim/"; - }; - }; + }); } From d6eceea08a12b09ebcf6396402f6f5242242c667 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 Feb 2024 11:50:42 +0000 Subject: [PATCH 1192/1588] overlays: add gruvbox-nvim-treesitter-fix The version in nixpkgs is not up-to-date with regards to the nvim-treesitter breaking changes that were recently introduced. --- overlays/gruvbox-nvim-treesitter-fix/default.nix | 4 ++++ overlays/gruvbox-nvim-treesitter-fix/generated.nix | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 overlays/gruvbox-nvim-treesitter-fix/default.nix create mode 100644 overlays/gruvbox-nvim-treesitter-fix/generated.nix diff --git a/overlays/gruvbox-nvim-treesitter-fix/default.nix b/overlays/gruvbox-nvim-treesitter-fix/default.nix new file mode 100644 index 0000000..832e71d --- /dev/null +++ b/overlays/gruvbox-nvim-treesitter-fix/default.nix @@ -0,0 +1,4 @@ +self: prev: +{ + vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); +} diff --git a/overlays/gruvbox-nvim-treesitter-fix/generated.nix b/overlays/gruvbox-nvim-treesitter-fix/generated.nix new file mode 100644 index 0000000..5a18d62 --- /dev/null +++ b/overlays/gruvbox-nvim-treesitter-fix/generated.nix @@ -0,0 +1,14 @@ +{ fetchFromGitHub }: + +_final: prev: { + gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (_: { + version = "2024-01-29"; + + src = fetchFromGitHub { + owner = "ellisonleao"; + repo = "gruvbox.nvim"; + rev = "6e4027ae957cddf7b193adfaec4a8f9e03b4555f"; + sha256 = "sha256-jWnrRy/PT7D0UcPGL+XTbKHWvS0ixvbyqPtTzG9HY84="; + }; + }); +} From f4c4a485d60fff68a95e423a6888e31b15cb32db Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 Feb 2024 19:44:51 +0000 Subject: [PATCH 1193/1588] home: xdg: fix sort order --- modules/home/xdg/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index 3bba198..3aa43bd 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -48,8 +48,8 @@ in LESSHISTFILE = "${dataHome}/less/history"; LESSKEY = "${configHome}/less/lesskey"; PSQL_HISTORY = "${dataHome}/psql_history"; - REPO_CONFIG_DIR = "${configHome}/repo"; REDISCLI_HISTFILE = "${dataHome}/redis/rediscli_history"; + REPO_CONFIG_DIR = "${configHome}/repo"; XCOMPOSECACHE = "${dataHome}/X11/xcompose"; }; } From cb97b0dbdef8cbeb5a088c5fb373b1c7037371b1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 Feb 2024 19:45:32 +0000 Subject: [PATCH 1194/1588] home: xdg: add python configuration It looks like 3.13 finally brought a way to change the history location through `PYTHON_HISTORY`. --- modules/home/xdg/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index 3aa43bd..6e49aa1 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -48,6 +48,9 @@ in LESSHISTFILE = "${dataHome}/less/history"; LESSKEY = "${configHome}/less/lesskey"; PSQL_HISTORY = "${dataHome}/psql_history"; + PYTHONPYCACHEPREFIX = "${cacheHome}/python/"; + PYTHONUSERBASE = "${dataHome}/python/"; + PYTHON_HISTORY = "${stateHome}/python/history"; REDISCLI_HISTFILE = "${dataHome}/redis/rediscli_history"; REPO_CONFIG_DIR = "${configHome}/repo"; XCOMPOSECACHE = "${dataHome}/X11/xcompose"; From 9d9dba2cc224e39f492d9d9e33bde2fecaf65937 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 Feb 2024 20:17:46 +0000 Subject: [PATCH 1195/1588] home: add wget This is mostly so that I can add the XDG-compliant configuration. --- modules/home/default.nix | 1 + modules/home/wget/default.nix | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 modules/home/wget/default.nix diff --git a/modules/home/default.nix b/modules/home/default.nix index 4dcfc35..c8183cf 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -39,6 +39,7 @@ ./tmux ./udiskie ./vim + ./wget ./wm ./x ./xdg diff --git a/modules/home/wget/default.nix b/modules/home/wget/default.nix new file mode 100644 index 0000000..32c13c0 --- /dev/null +++ b/modules/home/wget/default.nix @@ -0,0 +1,26 @@ +{ config, pkgs, lib, ... }: +let + cfg = config.my.home.wget; +in +{ + options.my.home.wget = with lib; { + enable = my.mkDisableOption "wget configuration"; + + package = mkPackageOption pkgs "wget" { }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ + cfg.package + ]; + + + home.sessionVariables = lib.mkIf cfg.enable { + WGETRC = "${config.xdg.configHome}/wgetrc"; + }; + + xdg.configFile."wgetrc".text = '' + hsts-file = ${config.xdg.dataHome}/wget-hsts + ''; + }; +} From b0aee235cdc2fc7a22aef2ee423a90849336fc5d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 8 Feb 2024 14:40:48 +0000 Subject: [PATCH 1196/1588] home: xdg: add 'GRADLE_USER_HOME' --- modules/home/xdg/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index 6e49aa1..aac5058 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -43,6 +43,7 @@ in CARGO_HOME = "${dataHome}/cargo"; DOCKER_CONFIG = "${configHome}/docker"; GDBHISTFILE = "${dataHome}/gdb/gdb_history"; + GRADLE_USER_HOME = "${dataHome}/gradle"; HISTFILE = "${dataHome}/bash/history"; INPUTRC = "${configHome}/readline/inputrc"; LESSHISTFILE = "${dataHome}/less/history"; From 5e3bc5a8c99968b4c238b824e5013b289b6af30e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 11 Feb 2024 12:38:30 +0100 Subject: [PATCH 1197/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 4773d30..33d3740 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1707175763, - "narHash": "sha256-0MKHC6tQ4KEuM5rui6DjKZ/VNiSANB4E+DJ/+wPS1PU=", + "lastModified": 1707607386, + "narHash": "sha256-hj/RgQMTvCWQVInkZwiMMieumkfOjHXhtWhfuXHop/8=", "owner": "nix-community", "repo": "home-manager", - "rev": "f99eace7c167b8a6a0871849493b1c613d0f1b80", + "rev": "bfd0ae29a86eff4603098683b516c67e22184511", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1707092692, - "narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=", + "lastModified": 1707546158, + "narHash": "sha256-nYYJTpzfPMDxI8mzhQsYjIUX+grorqjKEU9Np6Xwy/0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "faf912b086576fd1a15fca610166c98d47bc667e", + "rev": "d934204a0f8d9198e1e4515dd6fec76a139c87f0", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1707234300, - "narHash": "sha256-D+LdA8g0Tq+KE9EmJMmn8EGRO5jZ2nLe/W0Fr5EIsdg=", + "lastModified": 1707648276, + "narHash": "sha256-KOU9ae22fglOXsOHCGYW25iFXnfnz2fSrUy75qfDyuA=", "owner": "nix-community", "repo": "NUR", - "rev": "59fceae769455455ef44c1dfb63bbae1ecddc41d", + "rev": "c7fa9c6c3becdb8a330bf1202e009494a381ef32", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1706424699, - "narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=", + "lastModified": 1707297608, + "narHash": "sha256-ADjo/5VySGlvtCW3qR+vdFF4xM9kJFlRDqcC9ZGI8EA=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf", + "rev": "0db2e67ee49910adfa13010e7f012149660af7f0", "type": "github" }, "original": { From 7f1706999856e136c65ebf0c4608fc3c65862a1a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 12 Feb 2024 11:39:13 +0000 Subject: [PATCH 1198/1588] home: nix: rename 'inputs' options This mirrors the changes made to the NixOS module. --- modules/home/nix/default.nix | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/modules/home/nix/default.nix b/modules/home/nix/default.nix index 9ccbdc5..d734fbd 100644 --- a/modules/home/nix/default.nix +++ b/modules/home/nix/default.nix @@ -12,7 +12,7 @@ let # Use pinned nixpkgs when using `nix run pkgs#<whatever>` pkgs = inputs.nixpkgs; } - (lib.optionalAttrs cfg.overrideNixpkgs { + (lib.optionalAttrs cfg.inputs.overrideNixpkgs { # ... And with `nix run nixpkgs#<whatever>` nixpkgs = inputs.nixpkgs; }) @@ -22,20 +22,22 @@ in options.my.home.nix = with lib; { enable = my.mkDisableOption "nix configuration"; - linkInputs = my.mkDisableOption "link inputs to `$XDG_CONFIG_HOME/nix/inputs`"; + inputs = { + link = my.mkDisableOption "link inputs to `/etc/nix/inputs/`"; - addToRegistry = my.mkDisableOption "add inputs and self to registry"; + addToRegistry = my.mkDisableOption "add inputs and self to registry"; - addToNixPath = my.mkDisableOption "add inputs and self to nix path"; + addToNixPath = my.mkDisableOption "add inputs and self to nix path"; - overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version"; + overrideNixpkgs = my.mkDisableOption "point nixpkgs to pinned system version"; + }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ { assertions = [ { - assertion = cfg.addToNixPath -> cfg.linkInputs; + assertion = cfg.inputs.addToNixPath -> cfg.inputs.link; message = '' enabling `my.home.nix.addToNixPath` needs to have `my.home.nix.linkInputs = true` @@ -54,7 +56,7 @@ in }; } - (lib.mkIf cfg.addToRegistry { + (lib.mkIf cfg.inputs.addToRegistry { nix.registry = let makeEntry = v: { flake = v; }; @@ -63,7 +65,7 @@ in makeEntries channels; }) - (lib.mkIf cfg.linkInputs { + (lib.mkIf cfg.inputs.link { xdg.configFile = let makeLink = n: v: { @@ -75,7 +77,7 @@ in makeLinks channels; }) - (lib.mkIf cfg.addToNixPath { + (lib.mkIf cfg.inputs.addToNixPath { home.sessionVariables.NIX_PATH = "${config.xdg.configHome}/nix/inputs\${NIX_PATH:+:$NIX_PATH}"; }) ]); From 0bb2be6b87ad84e197b2be03514f59d4bd7b11ed Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 12 Feb 2024 11:40:09 +0000 Subject: [PATCH 1199/1588] home: nix: add 'cache.selfHosted' Once again mirroring the NixOS module changes that I forgot to port over. --- modules/home/nix/default.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/home/nix/default.nix b/modules/home/nix/default.nix index d734fbd..07606bb 100644 --- a/modules/home/nix/default.nix +++ b/modules/home/nix/default.nix @@ -22,6 +22,10 @@ in options.my.home.nix = with lib; { enable = my.mkDisableOption "nix configuration"; + cache = { + selfHosted = my.mkDisableOption "self-hosted cache"; + }; + inputs = { link = my.mkDisableOption "link inputs to `/etc/nix/inputs/`"; @@ -56,6 +60,22 @@ in }; } + (lib.mkIf cfg.cache.selfHosted { + nix = { + settings = { + # The NixOS module adds the official Hydra cache by default + # No need to use `extra-*` options. + substituters = [ + "https://cache.belanyi.fr/" + ]; + + trusted-public-keys = [ + "cache.belanyi.fr:LPhrTqufwfxTceg1nRWueDWf7/2zSVY9K00pq2UI7tw=" + ]; + }; + }; + }) + (lib.mkIf cfg.inputs.addToRegistry { nix.registry = let From c9969775da97b656c5227ec811f51abba52a5550 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 12 Feb 2024 14:18:44 +0000 Subject: [PATCH 1200/1588] nixos: services: backup: add essential files --- modules/nixos/services/backup/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/nixos/services/backup/default.nix b/modules/nixos/services/backup/default.nix index ff0fc7f..8aeeae1 100644 --- a/modules/nixos/services/backup/default.nix +++ b/modules/nixos/services/backup/default.nix @@ -89,6 +89,16 @@ in }; config = lib.mkIf cfg.enable { + # Essential files which should always be backed up + my.services.backup.paths = lib.flatten [ + # Should be unique to a given host, used by some software (e.g: ZFS) + "/etc/machine-id" + # Contains the UID/GID map, and other useful state + "/var/lib/nixos" + # SSH host keys (and public keys for convenience) + (builtins.map (key: [ key.path "${key.path}.pub" ]) config.services.openssh.hostKeys) + ]; + services.restic.backups.backblaze = { # Take care of included and excluded files paths = cfg.paths; From 521522e4e9163d66b5e6b42231d98e39b633a2a3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 13 Aug 2023 15:59:25 +0100 Subject: [PATCH 1201/1588] home: zsh: use 'mkMerge' This will make adding modular configuration easier. --- modules/home/zsh/default.nix | 138 ++++++++++++++++++----------------- 1 file changed, 70 insertions(+), 68 deletions(-) diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index 4cadb57..2821f28 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -17,79 +17,81 @@ in launchTmux = mkEnableOption "auto launch tmux at shell start"; }; - config = lib.mkIf cfg.enable { - home.packages = with pkgs; [ - zsh-completions - ]; - - programs.zsh = { - enable = true; - dotDir = "${relativeXdgConfig}/zsh"; # Don't clutter $HOME - enableCompletion = true; - - history = { - size = 500000; - save = 500000; - extended = true; - expireDuplicatesFirst = true; - ignoreSpace = true; - ignoreDups = true; - share = false; - path = "${config.xdg.dataHome}/zsh/zsh_history"; - }; - - plugins = [ - { - name = "fast-syntax-highlighting"; - file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh"; - src = pkgs.zsh-fast-syntax-highlighting; - } - { - name = "agkozak-zsh-prompt"; - file = "share/zsh/site-functions/agkozak-zsh-prompt.plugin.zsh"; - src = pkgs.agkozak-zsh-prompt; - } + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + home.packages = with pkgs; [ + zsh-completions ]; - # Modal editing is life, but CLI benefits from emacs gymnastics - defaultKeymap = "emacs"; + programs.zsh = { + enable = true; + dotDir = "${relativeXdgConfig}/zsh"; # Don't clutter $HOME + enableCompletion = true; - # Make those happen early to avoid doing double the work - initExtraFirst = '' - ${ - lib.optionalString cfg.launchTmux '' - # Launch tmux unless already inside one - if [ -z "$TMUX" ]; then - exec tmux new-session - fi - '' - } - ''; + history = { + size = 500000; + save = 500000; + extended = true; + expireDuplicatesFirst = true; + ignoreSpace = true; + ignoreDups = true; + share = false; + path = "${config.xdg.dataHome}/zsh/zsh_history"; + }; - initExtra = '' - source ${./completion-styles.zsh} - source ${./extra-mappings.zsh} - source ${./options.zsh} + plugins = [ + { + name = "fast-syntax-highlighting"; + file = "share/zsh/site-functions/fast-syntax-highlighting.plugin.zsh"; + src = pkgs.zsh-fast-syntax-highlighting; + } + { + name = "agkozak-zsh-prompt"; + file = "share/zsh/site-functions/agkozak-zsh-prompt.plugin.zsh"; + src = pkgs.agkozak-zsh-prompt; + } + ]; - # Source local configuration - if [ -f "$ZDOTDIR/zshrc.local" ]; then - source "$ZDOTDIR/zshrc.local" - fi - ''; + # Modal editing is life, but CLI benefits from emacs gymnastics + defaultKeymap = "emacs"; - localVariables = { - # I like having the full path - AGKOZAK_PROMPT_DIRTRIM = 0; - # Because I *am* from EPITA - AGKOZAK_PROMPT_CHAR = [ "42sh$" "42sh#" ":" ]; - # Easy on the eyes - AGKOZAK_COLORS_BRANCH_STATUS = "magenta"; - # I don't like moving my eyes - AGKOZAK_LEFT_PROMPT_ONLY = 1; + # Make those happen early to avoid doing double the work + initExtraFirst = '' + ${ + lib.optionalString cfg.launchTmux '' + # Launch tmux unless already inside one + if [ -z "$TMUX" ]; then + exec tmux new-session + fi + '' + } + ''; + + initExtra = '' + source ${./completion-styles.zsh} + source ${./extra-mappings.zsh} + source ${./options.zsh} + + # Source local configuration + if [ -f "$ZDOTDIR/zshrc.local" ]; then + source "$ZDOTDIR/zshrc.local" + fi + ''; + + localVariables = { + # I like having the full path + AGKOZAK_PROMPT_DIRTRIM = 0; + # Because I *am* from EPITA + AGKOZAK_PROMPT_CHAR = [ "42sh$" "42sh#" ":" ]; + # Easy on the eyes + AGKOZAK_COLORS_BRANCH_STATUS = "magenta"; + # I don't like moving my eyes + AGKOZAK_LEFT_PROMPT_ONLY = 1; + }; + + # Enable VTE integration + enableVteIntegration = true; }; - - # Enable VTE integration - enableVteIntegration = true; - }; - }; + } + ]); } From c89dec2a38f403cc2b27997493034d05258b3e0f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 13 Aug 2023 16:05:27 +0100 Subject: [PATCH 1202/1588] home: zsh: enforce order of 'initExtra{First,}' In case I want to add more values to those options, I still want the _main_ values to be ordered before/after. --- modules/home/zsh/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index 2821f28..987f3b8 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -56,7 +56,7 @@ in defaultKeymap = "emacs"; # Make those happen early to avoid doing double the work - initExtraFirst = '' + initExtraFirst = lib.mkBefore '' ${ lib.optionalString cfg.launchTmux '' # Launch tmux unless already inside one @@ -67,7 +67,7 @@ in } ''; - initExtra = '' + initExtra = lib.mkAfter '' source ${./completion-styles.zsh} source ${./extra-mappings.zsh} source ${./options.zsh} From d6c29481351d6e1de30055c8b50ea5abbe3f310c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 13 Aug 2023 16:19:47 +0100 Subject: [PATCH 1203/1588] home: zsh: add 'zsh-done' --- modules/home/zsh/default.nix | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index 987f3b8..d983116 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -15,6 +15,16 @@ in enable = my.mkDisableOption "zsh configuration"; launchTmux = mkEnableOption "auto launch tmux at shell start"; + + notify = { + enable = mkEnableOption "zsh-done notification"; + + ssh = { + enable = mkEnableOption "notify through SSH/non-graphical connections"; + + useOsc777 = lib.my.mkDisableOption "use OSC-777 for notifications"; + }; + }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ @@ -93,5 +103,35 @@ in enableVteIntegration = true; }; } + + (lib.mkIf cfg.notify.enable { + programs.zsh = { + plugins = [ + { + name = "zsh-done"; + file = "share/zsh/site-functions/done.plugin.zsh"; + src = pkgs.ambroisie.zsh-done; + } + ]; + + # `localVariables` values don't get merged correctly due to their type, + # don't use `mkIf` + localVariables = { } + # Enable `zsh-done` through SSH, if configured + // lib.optionalAttrs cfg.notify.ssh.enable { DONE_ALLOW_NONGRAPHICAL = 1; } + ; + + # Use OSC-777 to send the notification through SSH + initExtra = lib.mkIf cfg.notify.ssh.useOsc777 '' + done_send_notification() { + local exit_status="$1" + local title="$2" + local message="$3" + + ${lib.getExe pkgs.ambroisie.osc777} "$title" "$message" + } + ''; + }; + }) ]); } From 8b07ff5bbe6bf4078ff8e4a1d356e8de735d505d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 12 Feb 2024 21:22:19 +0000 Subject: [PATCH 1204/1588] homes: bazin: enable zsh notifications --- hosts/homes/ambroisie@bazin/default.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix index a969d8a..c71e07c 100644 --- a/hosts/homes/ambroisie@bazin/default.nix +++ b/hosts/homes/ambroisie@bazin/default.nix @@ -21,5 +21,17 @@ package = pkgs.emptyDirectory; }; }; + + zsh = { + notify = { + enable = true; + + ssh = { + enable = true; + # `notify-send` is proxied to the ChromeOS layer + useOsc777 = false; + }; + }; + }; }; } From 08f31c088ba2b2682210a1e2de4aa7f412858fc8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 13 Feb 2024 14:34:12 +0000 Subject: [PATCH 1205/1588] home: atuin: explicitly set 'enter_accept' --- modules/home/atuin/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/home/atuin/default.nix b/modules/home/atuin/default.nix index 19a6fb9..b8973cc 100644 --- a/modules/home/atuin/default.nix +++ b/modules/home/atuin/default.nix @@ -25,6 +25,8 @@ in search_mode = "skim"; # Show long command lines at the bottom show_preview = true; + # I like being able to edit my commands + enter_accept = false; }; }; }; From 3c79a373e4744fc57497fedc9990efac6a0ae53b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 15 Feb 2024 16:32:37 +0000 Subject: [PATCH 1206/1588] pkgs: zsh-done: 0.1.0 -> 0.1.1 --- pkgs/zsh-done/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/zsh-done/default.nix b/pkgs/zsh-done/default.nix index bddc6c1..bdb6af3 100644 --- a/pkgs/zsh-done/default.nix +++ b/pkgs/zsh-done/default.nix @@ -2,13 +2,13 @@ stdenvNoCC.mkDerivation rec { pname = "zsh-done"; - version = "0.1.0"; + version = "0.1.1"; src = fetchFromGitHub { owner = "ambroisie"; repo = "zsh-done"; rev = "v${version}"; - hash = "sha256-DC7urJDXPP9vBYABrJF5KZ4HfMbrpHIVogSmEB8PWLA="; + hash = "sha256-dyhPhoMrAfDWtrBX5TA+B3G7QZ7gBhoDGNOEqGsCBQU="; }; dontConfigure = true; From a0dde6f27437c8e52c4f72187d8d3899cd90e30f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 15 Feb 2024 16:33:27 +0000 Subject: [PATCH 1207/1588] home: zsh: add notification exclusion list --- modules/home/zsh/default.nix | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index d983116..5bfeaee 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -19,6 +19,27 @@ in notify = { enable = mkEnableOption "zsh-done notification"; + exclude = mkOption { + type = with types; listOf str; + default = [ + "direnv reload" + "fg" + "git (?!push|pull|fetch)" + "htop" + "less" + "man" + "nvim" + "tail -f" + "tmux" + "vim" + ]; + example = [ "command --long-running-option" ]; + description = '' + List of exclusions which should not be create a notification. Accepts + Perl regexes (implicitly anchored with `^\s*`). + ''; + }; + ssh = { enable = mkEnableOption "notify through SSH/non-graphical connections"; @@ -116,10 +137,17 @@ in # `localVariables` values don't get merged correctly due to their type, # don't use `mkIf` - localVariables = { } - # Enable `zsh-done` through SSH, if configured - // lib.optionalAttrs cfg.notify.ssh.enable { DONE_ALLOW_NONGRAPHICAL = 1; } - ; + localVariables = { + DONE_EXCLUDE = + let + joined = lib.concatMapStringsSep "|" (c: "(${c})") cfg.notify.exclude; + in + ''^\s*(${joined})''; + } + # Enable `zsh-done` through SSH, if configured + // lib.optionalAttrs cfg.notify.ssh.enable { + DONE_ALLOW_NONGRAPHICAL = 1; + }; # Use OSC-777 to send the notification through SSH initExtra = lib.mkIf cfg.notify.ssh.useOsc777 '' From b2a199c9a02c164f93ecf50e41077dbc3744c2bc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 15 Feb 2024 16:58:54 +0000 Subject: [PATCH 1208/1588] home: nix: fix cache configuration Copy-paste is bad kids, the home-manager module does *not* do the same as NixOS. I was rebuilding the world, since this was overriding the official Hydra cache... --- modules/home/nix/default.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/home/nix/default.nix b/modules/home/nix/default.nix index 07606bb..0934189 100644 --- a/modules/home/nix/default.nix +++ b/modules/home/nix/default.nix @@ -63,13 +63,11 @@ in (lib.mkIf cfg.cache.selfHosted { nix = { settings = { - # The NixOS module adds the official Hydra cache by default - # No need to use `extra-*` options. - substituters = [ + extra-substituters = [ "https://cache.belanyi.fr/" ]; - trusted-public-keys = [ + extra-trusted-public-keys = [ "cache.belanyi.fr:LPhrTqufwfxTceg1nRWueDWf7/2zSVY9K00pq2UI7tw=" ]; }; From c5e5bee206097db2046496fabff009f9673a99c0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 16 Feb 2024 19:04:49 +0000 Subject: [PATCH 1209/1588] home: git: enable 'rerere' How did I not already have it enabled? --- modules/home/git/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix index 9c10257..1bb2215 100644 --- a/modules/home/git/default.nix +++ b/modules/home/git/default.nix @@ -148,6 +148,10 @@ in autoStash = true; }; + rerere = { + enabled = true; + }; + url = { "git@git.belanyi.fr:" = { insteadOf = "https://git.belanyi.fr/"; From 7e361aff9dd40ea4a9b3cae63c58390d2b6a9c31 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 16 Feb 2024 22:44:24 +0000 Subject: [PATCH 1210/1588] templates: c++-cmake: fix formatting --- templates/c++-cmake/tests/unit/CMakeLists.txt | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/templates/c++-cmake/tests/unit/CMakeLists.txt b/templates/c++-cmake/tests/unit/CMakeLists.txt index bb94448..266e3e3 100644 --- a/templates/c++-cmake/tests/unit/CMakeLists.txt +++ b/templates/c++-cmake/tests/unit/CMakeLists.txt @@ -1,15 +1,15 @@ find_package(GTest) -if (${GTest_FOUND}) -include(GoogleTest) +if(${GTest_FOUND}) + include(GoogleTest) -add_executable(dummy_test dummy_test.cc) -target_link_libraries(dummy_test PRIVATE common_options) + add_executable(dummy_test dummy_test.cc) + target_link_libraries(dummy_test PRIVATE common_options) -target_link_libraries(dummy_test PRIVATE - GTest::gtest - GTest::gtest_main -) + target_link_libraries(dummy_test PRIVATE + GTest::gtest + GTest::gtest_main + ) -gtest_discover_tests(dummy_test) -endif (${GTest_FOUND}) + gtest_discover_tests(dummy_test) +endif() From 5d38d94da6768c8fd0f3a4ab1263f10cdb2bde48 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 16 Feb 2024 22:56:44 +0000 Subject: [PATCH 1211/1588] templates: use 'backend' CI label --- templates/c++-cmake/.woodpecker/check.yml | 2 +- templates/c++-meson/.woodpecker/check.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/c++-cmake/.woodpecker/check.yml b/templates/c++-cmake/.woodpecker/check.yml index 628e491..aff6e84 100644 --- a/templates/c++-cmake/.woodpecker/check.yml +++ b/templates/c++-cmake/.woodpecker/check.yml @@ -1,5 +1,5 @@ labels: - type: exec + backend: local steps: - name: nix flake check diff --git a/templates/c++-meson/.woodpecker/check.yml b/templates/c++-meson/.woodpecker/check.yml index 628e491..aff6e84 100644 --- a/templates/c++-meson/.woodpecker/check.yml +++ b/templates/c++-meson/.woodpecker/check.yml @@ -1,5 +1,5 @@ labels: - type: exec + backend: local steps: - name: nix flake check From 65394711863dd75bbd5167ac4455787b05fe435f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 16 Feb 2024 23:00:57 +0000 Subject: [PATCH 1212/1588] templates: use explicit 'pre-commit check' CI step --- templates/c++-cmake/.woodpecker/check.yml | 5 +++++ templates/c++-meson/.woodpecker/check.yml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/templates/c++-cmake/.woodpecker/check.yml b/templates/c++-cmake/.woodpecker/check.yml index aff6e84..9135f7b 100644 --- a/templates/c++-cmake/.woodpecker/check.yml +++ b/templates/c++-cmake/.woodpecker/check.yml @@ -2,6 +2,11 @@ labels: backend: local steps: +- name: pre-commit check + image: bash + commands: + - nix develop --command pre-commit run --all + - name: nix flake check image: bash commands: diff --git a/templates/c++-meson/.woodpecker/check.yml b/templates/c++-meson/.woodpecker/check.yml index aff6e84..9135f7b 100644 --- a/templates/c++-meson/.woodpecker/check.yml +++ b/templates/c++-meson/.woodpecker/check.yml @@ -2,6 +2,11 @@ labels: backend: local steps: +- name: pre-commit check + image: bash + commands: + - nix develop --command pre-commit run --all + - name: nix flake check image: bash commands: From eb668525f8e977dd972af075ab8801921d914ffc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 23 Feb 2024 13:14:09 +0000 Subject: [PATCH 1213/1588] home: zsh: ignore more commands for notification --- modules/home/zsh/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index 5bfeaee..a277366 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -22,6 +22,7 @@ in exclude = mkOption { type = with types; listOf str; default = [ + "delta" "direnv reload" "fg" "git (?!push|pull|fetch)" From f9cdff8c138e941720850487f90c6aa06878bbaa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 23 Feb 2024 13:28:48 +0000 Subject: [PATCH 1214/1588] hosts: homes: bazin: ignore interactive adb shells --- hosts/homes/ambroisie@bazin/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix index c71e07c..a65a626 100644 --- a/hosts/homes/ambroisie@bazin/default.nix +++ b/hosts/homes/ambroisie@bazin/default.nix @@ -1,5 +1,5 @@ # Google Laptop configuration -{ lib, pkgs, ... }: +{ lib, options, pkgs, ... }: { services.gpg-agent.enable = lib.mkForce false; @@ -26,6 +26,10 @@ notify = { enable = true; + exclude = options.my.home.zsh.notify.exclude.default ++ [ + "adb shell$" # Only interactive shell sessions + ]; + ssh = { enable = true; # `notify-send` is proxied to the ChromeOS layer From b9b47fffd6cab923fd37bad5fddacfad8f7a1a74 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 29 Feb 2024 12:06:58 +0000 Subject: [PATCH 1215/1588] flake: bump inputs Fix the pyLoad user/group option that I added upstream [1]. Fix an evaluation error due to Pipewire changes [2]. [1]: https://github.com/NixOS/nixpkgs/pull/287304 [2]: https://github.com/NixOS/nixpkgs/pull/282377 --- flake.lock | 36 ++++++++++---------- modules/nixos/hardware/bluetooth/default.nix | 8 ++--- modules/nixos/services/pyload/default.nix | 23 ++----------- 3 files changed, 24 insertions(+), 43 deletions(-) diff --git a/flake.lock b/flake.lock index 33d3740..cd0b2de 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1703433843, - "narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=", + "lastModified": 1707830867, + "narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=", "owner": "ryantm", "repo": "agenix", - "rev": "417caa847f9383e111d1397039c9d4337d024bf0", + "rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6", "type": "github" }, "original": { @@ -94,11 +94,11 @@ ] }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1709126324, + "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "d465f4819400de7c8d874d50b982301f28a84605", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1707607386, - "narHash": "sha256-hj/RgQMTvCWQVInkZwiMMieumkfOjHXhtWhfuXHop/8=", + "lastModified": 1709204054, + "narHash": "sha256-U1idK0JHs1XOfSI1APYuXi4AEADf+B+ZU4Wifc0pBHk=", "owner": "nix-community", "repo": "home-manager", - "rev": "bfd0ae29a86eff4603098683b516c67e22184511", + "rev": "2f3367769a93b226c467551315e9e270c3f78b15", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1707546158, - "narHash": "sha256-nYYJTpzfPMDxI8mzhQsYjIUX+grorqjKEU9Np6Xwy/0=", + "lastModified": 1709150264, + "narHash": "sha256-HofykKuisObPUfj0E9CJVfaMhawXkYx3G8UIFR/XQ38=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d934204a0f8d9198e1e4515dd6fec76a139c87f0", + "rev": "9099616b93301d5cf84274b184a3a5ec69e94e08", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1707648276, - "narHash": "sha256-KOU9ae22fglOXsOHCGYW25iFXnfnz2fSrUy75qfDyuA=", + "lastModified": 1709206595, + "narHash": "sha256-lBU/gE7DiJCNkJGPVUms0zA0hxzDVgENIXfebj1oeLc=", "owner": "nix-community", "repo": "NUR", - "rev": "c7fa9c6c3becdb8a330bf1202e009494a381ef32", + "rev": "fbe8df1c13fd8e63e35c2c4654104661eb1fbbed", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1707297608, - "narHash": "sha256-ADjo/5VySGlvtCW3qR+vdFF4xM9kJFlRDqcC9ZGI8EA=", + "lastModified": 1708018599, + "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "0db2e67ee49910adfa13010e7f012149660af7f0", + "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", "type": "github" }, "original": { diff --git a/modules/nixos/hardware/bluetooth/default.nix b/modules/nixos/hardware/bluetooth/default.nix index 2d840f9..c019b31 100644 --- a/modules/nixos/hardware/bluetooth/default.nix +++ b/modules/nixos/hardware/bluetooth/default.nix @@ -25,8 +25,8 @@ in package = pkgs.pulseaudioFull; }; - environment.etc = { - "wireplumber/bluetooth.lua.d/51-bluez-config.lua".text = '' + services.pipewire.wireplumber.configPackages = [ + (pkgs.writeTextDir "share/wireplumber/bluetooth.lua.d/51-bluez-config.lua" '' bluez_monitor.properties = { -- SBC XQ provides better audio ["bluez5.enable-sbc-xq"] = true, @@ -40,8 +40,8 @@ in -- FIXME: Some devices may now support both hsp_ag and hfp_ag ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" } - ''; - }; + '') + ]; }) # Support for A2DP audio profile diff --git a/modules/nixos/services/pyload/default.nix b/modules/nixos/services/pyload/default.nix index 40bf12d..88889bf 100644 --- a/modules/nixos/services/pyload/default.nix +++ b/modules/nixos/services/pyload/default.nix @@ -39,31 +39,12 @@ in downloadDirectory port ; - }; - # Use pyload user/media group when downloading files - systemd.services.pyload = { - serviceConfig = { - User = lib.mkForce "pyload"; - Group = lib.mkForce "media"; - DynamicUser = lib.mkForce false; - }; - }; - - # And make sure the download directory has the correct owners - systemd.tmpfiles.settings.pyload = { - ${cfg.downloadDirectory}.d = { - user = "pyload"; - group = "media"; - }; - }; - - # Set-up pyload user and media group - users.users.pyload = { - isSystemUser = true; + # Use media group when downloading files group = "media"; }; + # Set-up media group users.groups.media = { }; my.services.nginx.virtualHosts = { From 56c0c28b02acc493ae028ebca5d77cc3a455ba81 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 1 Mar 2024 17:20:44 +0000 Subject: [PATCH 1216/1588] hosts: nixos: porthos: home: disable cache Same reason as the system-wide configuration... --- hosts/nixos/porthos/home.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hosts/nixos/porthos/home.nix b/hosts/nixos/porthos/home.nix index 90aa0ec..1de3565 100644 --- a/hosts/nixos/porthos/home.nix +++ b/hosts/nixos/porthos/home.nix @@ -1,6 +1,13 @@ { ... }: { my.home = { + nix = { + cache = { + # This server is the one serving the cache, don't try to query it + selfHosted = false; + }; + }; + # Allow using 24bit color when SSH-ing from various clients tmux.trueColorTerminals = [ # My usual terminal, e.g: on laptop From 4d25609b26633b6ccf3994162ca74cc179d6fbc6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 1 Mar 2024 20:48:44 +0000 Subject: [PATCH 1217/1588] nixos: system: nix: expand trusted users --- modules/nixos/system/nix/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/system/nix/default.nix b/modules/nixos/system/nix/default.nix index 47d6499..ad13539 100644 --- a/modules/nixos/system/nix/default.nix +++ b/modules/nixos/system/nix/default.nix @@ -56,6 +56,8 @@ in settings = { experimental-features = [ "nix-command" "flakes" ]; + # Trusted users are equivalent to root, and might as well allow wheel + trusted-users = [ "root" "@wheel" ]; }; }; } From a3afafd9e05958f6cf6368d10a36717562d3d99c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 2 Mar 2024 12:48:08 +0100 Subject: [PATCH 1218/1588] nixos: services: add mealie --- modules/nixos/services/default.nix | 1 + modules/nixos/services/mealie/default.nix | 72 +++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 modules/nixos/services/mealie/default.nix diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 67504da..90dd3e1 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -16,6 +16,7 @@ ./jellyfin ./lohr ./matrix + ./mealie ./miniflux ./monitoring ./navidrome diff --git a/modules/nixos/services/mealie/default.nix b/modules/nixos/services/mealie/default.nix new file mode 100644 index 0000000..ebbebb2 --- /dev/null +++ b/modules/nixos/services/mealie/default.nix @@ -0,0 +1,72 @@ +{ config, lib, ... }: +let + cfg = config.my.services.mealie; +in +{ + options.my.services.mealie = with lib; { + enable = mkEnableOption "Mealie service"; + + port = mkOption { + type = types.port; + default = 4537; + example = 8080; + description = "Internal port for webui"; + }; + + credentialsFile = mkOption { + type = types.str; + example = "/var/lib/mealie/credentials.env"; + description = '' + Configuration file for secrets. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.mealie = { + enable = true; + inherit (cfg) port credentialsFile; + + settings = { + # Basic settings + BASE_URL = "https://mealie.${config.networking.domain}"; + TZ = config.time.timeZone; + ALLOw_SIGNUP = "false"; + + # Use PostgreSQL + DB_ENGINE = "postgres"; + POSTGRES_USER = "mealie"; + POSTGRES_PASSWORD = ""; + POSTGRES_SERVER = "/run/postgresql"; + # Pydantic and/or mealie doesn't handle the URI correctly, hijack it + # with query parameters... + POSTGRES_DB = "mealie?host=/run/postgresql&dbname=mealie"; + }; + }; + + systemd.services = { + mealie = { + after = [ "postgresql.service" ]; + requires = [ "postgresql.service" ]; + }; + }; + + # Set-up database + services.postgresql = { + enable = true; + ensureDatabases = [ "mealie" ]; + ensureUsers = [ + { + name = "mealie"; + ensureDBOwnership = true; + } + ]; + }; + + my.services.nginx.virtualHosts = { + mealie = { + inherit (cfg) port; + }; + }; + }; +} From 380933e69b83c7662ec97510e6ab52eef5aad159 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 2 Mar 2024 12:48:42 +0100 Subject: [PATCH 1219/1588] hosts: nixos: porthos: secrets: add mealie mail --- hosts/nixos/porthos/secrets/mealie/mail.age | Bin 0 -> 516 bytes hosts/nixos/porthos/secrets/secrets.nix | 4 ++++ 2 files changed, 4 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/mealie/mail.age diff --git a/hosts/nixos/porthos/secrets/mealie/mail.age b/hosts/nixos/porthos/secrets/mealie/mail.age new file mode 100644 index 0000000000000000000000000000000000000000..b7348ae2a09fbf001f2354936f2df7112ed29c5d GIT binary patch literal 516 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;-r;FpNkx zarH6C4=*q_$PdV^^3Mw|@riKHk4g%!N(}Th2nj4s%`D4z_vA|Vjm#?Yc6Kawb16$J zHgpMbuQV?X$qdP?NH(nUEHMiz3v|v%EG_k{Oh&gYD<Ho-FI^!&yF4hxyTBkfImjtI zAUVg#BgiDzC&Rg*(m$=pt<p8uz$7dz+cP)I-GVE$O5Zmk*efU_$RxzCDl6A5GQ-$0 z&(u)cGP%kvJWAiE!rk1}$)lpu-Iq&OS63lFE4;MQFw`)^Ez{gJC^90aJS4y|u_CG} zFDEoKAjKlXFw(-O+{nelt(+^(>dN{xo*F+wSMJ%o+)34Qd+m$Y#mNF2nAzMs+zmCZ z&HkO;SFQHv_}4?xM|;~Qq<<+mA+_rmgEqgD?OD!_Kj9&@^Z#_{x_13#%22y&^)Az0 zYmp+WBU25pX>QpU{}mgV3oV+S%QPoCC#oAvx+|#8!d`zx;7Rp8zG&tf!rQZWpU(F6 z*?IH(%8v^^9AYf7@Y(wF|K9|0riHO=+L2#*-Y>sV+qFDQonOmAkHPHSX2-s*GY_7d zy}Kc*<3{?G)01B=%sMEVsJ$zXk89V>r5C0>cJT~bmUFSQxxVDqmm3`kZ;j%20{|t3 B%@+Uw literal 0 HcmV?d00001 diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 43a9b35..3545e3a 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -41,6 +41,10 @@ in publicKeys = all; }; + "mealie/mail.age" = { + publicKeys = all; + }; + "miniflux/credentials.age".publicKeys = all; "monitoring/password.age" = { From 7f0a889ccd1cf1139fe7c9327dd1821ed884b116 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 2 Mar 2024 12:48:59 +0100 Subject: [PATCH 1220/1588] hosts: nixos: porthos: services: enable mealie --- hosts/nixos/porthos/services.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 2486752..c3ffa39 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -68,6 +68,10 @@ in secretFile = secrets."matrix/sliding-sync-secret".path; }; }; + mealie = { + enable = true; + credentialsFile = secrets."mealie/mail".path; + }; miniflux = { enable = true; credentialsFiles = secrets."miniflux/credentials".path; From 6bef924513a1e72243808ab4d8277cb65aa68047 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 4 Mar 2024 11:44:49 +0000 Subject: [PATCH 1221/1588] overlays: remove gruvbox-nvim-treesitter-fix Not needed anymore. This reverts commit d6eceea08a12b09ebcf6396402f6f5242242c667. --- overlays/gruvbox-nvim-treesitter-fix/default.nix | 4 ---- overlays/gruvbox-nvim-treesitter-fix/generated.nix | 14 -------------- 2 files changed, 18 deletions(-) delete mode 100644 overlays/gruvbox-nvim-treesitter-fix/default.nix delete mode 100644 overlays/gruvbox-nvim-treesitter-fix/generated.nix diff --git a/overlays/gruvbox-nvim-treesitter-fix/default.nix b/overlays/gruvbox-nvim-treesitter-fix/default.nix deleted file mode 100644 index 832e71d..0000000 --- a/overlays/gruvbox-nvim-treesitter-fix/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -self: prev: -{ - vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); -} diff --git a/overlays/gruvbox-nvim-treesitter-fix/generated.nix b/overlays/gruvbox-nvim-treesitter-fix/generated.nix deleted file mode 100644 index 5a18d62..0000000 --- a/overlays/gruvbox-nvim-treesitter-fix/generated.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ fetchFromGitHub }: - -_final: prev: { - gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (_: { - version = "2024-01-29"; - - src = fetchFromGitHub { - owner = "ellisonleao"; - repo = "gruvbox.nvim"; - rev = "6e4027ae957cddf7b193adfaec4a8f9e03b4555f"; - sha256 = "sha256-jWnrRy/PT7D0UcPGL+XTbKHWvS0ixvbyqPtTzG9HY84="; - }; - }); -} From ed15e62e1d390d46f18565a02266c9021ec09075 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 12:44:08 +0000 Subject: [PATCH 1222/1588] nixos: services: gitea: use 'git' group --- modules/nixos/services/gitea/default.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/nixos/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix index 4a8a3bb..e7f39a5 100644 --- a/modules/nixos/services/gitea/default.nix +++ b/modules/nixos/services/gitea/default.nix @@ -58,6 +58,8 @@ in appName = "Ambroisie's forge"; user = "git"; + group = "git"; + lfs.enable = true; useWizard = false; @@ -107,11 +109,6 @@ in home = config.services.gitea.stateDir; useDefaultShell = true; group = "git"; - - # The service for gitea seems to hardcode the group as - # gitea, so, uh, just in case? - extraGroups = [ "gitea" ]; - isSystemUser = true; }; users.groups.git = { }; From 40d1b3983700b1b1fa1899679e94dc9bc80fc65b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 14:16:22 +0000 Subject: [PATCH 1223/1588] nixos: services: gitea: update mail configuration --- hosts/nixos/porthos/services.nix | 2 +- modules/nixos/services/gitea/default.nix | 26 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index c3ffa39..c872160 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -41,7 +41,7 @@ in enable = true; mail = { enable = true; - host = "smtp.migadu.com:465"; + host = "smtp.migadu.com"; user = lib.my.mkMailAddress "gitea" "belanyi.fr"; passwordFile = secrets."gitea/mail-password".path; }; diff --git a/modules/nixos/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix index e7f39a5..6185a22 100644 --- a/modules/nixos/services/gitea/default.nix +++ b/modules/nixos/services/gitea/default.nix @@ -18,9 +18,15 @@ in }; host = mkOption { type = types.str; - example = "smtp.example.com:465"; + example = "smtp.example.com"; description = "Host for the mail account"; }; + port = mkOption { + type = types.port; + default = 465; + example = 587; + description = "Port for the mail account"; + }; user = mkOption { type = types.str; example = "gitea@example.com"; @@ -31,17 +37,11 @@ in example = "/run/secrets/gitea-mail-password.txt"; description = "Password for the mail account"; }; - type = mkOption { + protocol = mkOption { type = types.str; - default = "smtp"; + default = "smtps"; example = "smtp"; - description = "Password for the mail account"; - }; - tls = mkOption { - type = types.bool; - default = true; - example = false; - description = "Use TLS for connection"; + description = "Protocol for connection"; }; }; }; @@ -86,11 +86,11 @@ in mailer = lib.mkIf cfg.mail.enable { ENABLED = true; - HOST = cfg.mail.host; + SMTP_ADDR = cfg.mail.host; + SMTP_PORT = cfg.mail.port; FROM = cfg.mail.user; USER = cfg.mail.user; - MAILER_TYPE = cfg.mail.type; - IS_TLS_ENABLED = cfg.mail.tls; + PROTOCOL = cfg.mail.protocol; }; service = { From d423a03663ccabde691f2b59b34ed1be756c0eed Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 14:20:57 +0000 Subject: [PATCH 1224/1588] nixos: services: gitea: fix mail 'FROM' address --- modules/nixos/services/gitea/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix index 6185a22..212f59c 100644 --- a/modules/nixos/services/gitea/default.nix +++ b/modules/nixos/services/gitea/default.nix @@ -88,7 +88,7 @@ in ENABLED = true; SMTP_ADDR = cfg.mail.host; SMTP_PORT = cfg.mail.port; - FROM = cfg.mail.user; + FROM = "Gitea <${cfg.mail.user}>"; USER = cfg.mail.user; PROTOCOL = cfg.mail.protocol; }; From 6a47703c08ebeed4b3f62f5db9844f87eb955ded Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 21:15:57 +0000 Subject: [PATCH 1225/1588] pkgs: add digestpp --- pkgs/default.nix | 2 ++ pkgs/digestpp/default.nix | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 pkgs/digestpp/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 6b7fce1..94f3440 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -10,6 +10,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { diff-flake = pkgs.callPackage ./diff-flake { }; + digestpp = pkgs.callPackage ./digestpp { }; + dragger = pkgs.callPackage ./dragger { }; drone-rsync = pkgs.callPackage ./drone-rsync { }; diff --git a/pkgs/digestpp/default.nix b/pkgs/digestpp/default.nix new file mode 100644 index 0000000..2fd90db --- /dev/null +++ b/pkgs/digestpp/default.nix @@ -0,0 +1,31 @@ +{ lib +, fetchFromGitHub +, stdenv +}: +stdenv.mkDerivation { + pname = "digestpp"; + version = "0-unstable-2023-11-07"; + + src = fetchFromGitHub { + owner = "kerukuro"; + repo = "digestpp"; + rev = "ebb699402c244e22c3aff61d2239bcb2e87b8ef8"; + hash = "sha256-9X/P7DgZB6bSYjQWRli4iAXEFjhmACOVv3EYQrXuH5c="; + }; + + installPhase = '' + runHook preInstall + + mkdir -p $out/include/digestpp + cp -r *.hpp algorithm/ detail/ $out/include/digestpp + + runHook postInstall + ''; + + meta = with lib; { + description = "C++11 header-only message digest library"; + homepage = "https://github.com/kerukuro/digestpp"; + license = licenses.unlicense; + maintainers = with maintainers; [ ambroisie ]; + }; +} From ef882a52673bf3b7a7c4f4658624183c760e8b18 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 21:16:10 +0000 Subject: [PATCH 1226/1588] pkgs: add sqlite_orm --- pkgs/default.nix | 2 ++ pkgs/sqlite_orm/default.nix | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 pkgs/sqlite_orm/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 94f3440..ddd0b02 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -28,6 +28,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { rbw-pass = pkgs.callPackage ./rbw-pass { }; + sqlite_orm = pkgs.callPackage ./sqlite_orm { }; + unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; zsh-done = pkgs.callPackage ./zsh-done { }; diff --git a/pkgs/sqlite_orm/default.nix b/pkgs/sqlite_orm/default.nix new file mode 100644 index 0000000..3891eee --- /dev/null +++ b/pkgs/sqlite_orm/default.nix @@ -0,0 +1,32 @@ +{ lib +, cmake +, fetchFromGitHub +, sqlite +, stdenv +}: +stdenv.mkDerivation (finalAttrs: { + pname = "sqlite_orm"; + version = "1.8.2"; + + src = fetchFromGitHub { + owner = "fnc12"; + repo = "sqlite_orm"; + rev = "v${finalAttrs.version}"; + hash = "sha256-KqphGFcnR1Y11KqL7sxODSv7lEvcURdF6kLd3cg84kc="; + }; + + nativeBuildInputs = [ + cmake + ]; + + propagatedBuildInputs = [ + sqlite + ]; + + meta = with lib; { + description = "Light header only SQLite ORM"; + homepage = "https://sqliteorm.com/"; + license = licenses.agpl3Only; # MIT license is commercial + maintainers = with maintainers; [ ambroisie ]; + }; +}) From 84fea2f6771907a7b84cee07030fc3645a3c5dd3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 21:16:34 +0000 Subject: [PATCH 1227/1588] pkgs: add bt-migrate --- pkgs/bt-migrate/default.nix | 61 +++++++++++++++++++++++++++++++++++++ pkgs/default.nix | 2 ++ 2 files changed, 63 insertions(+) create mode 100644 pkgs/bt-migrate/default.nix diff --git a/pkgs/bt-migrate/default.nix b/pkgs/bt-migrate/default.nix new file mode 100644 index 0000000..df99c55 --- /dev/null +++ b/pkgs/bt-migrate/default.nix @@ -0,0 +1,61 @@ +{ lib +, boost +, cmake +, cxxopts +, digestpp +, fetchFromGitHub +, fmt +, jsoncons +, pugixml +, sqlite_orm +, stdenv +}: +stdenv.mkDerivation { + pname = "bt-migrate"; + version = "0-unstable-2023-08-17"; + + src = fetchFromGitHub { + owner = "mikedld"; + repo = "bt-migrate"; + rev = "e15a489c0c76f98355586ebbee08223af4e9bf50"; + hash = "sha256-kA6yxhbIh3ThmgF8Zyoe3I79giLVmdNr9IIrw5Xx4s0="; + }; + + nativeBuildInputs = [ + cmake + ]; + + buildInputs = [ + boost + cxxopts + fmt + jsoncons + pugixml + sqlite_orm + ]; + + cmakeFlags = [ + (lib.strings.cmakeBool "USE_VCPKG" false) + # NOTE: digestpp does not have proper CMake packaging (yet?) + (lib.strings.cmakeBool "USE_FETCHCONTENT" true) + (lib.strings.cmakeFeature "FETCHCONTENT_SOURCE_DIR_DIGESTPP" "${digestpp}/include/digestpp") + ]; + + # NOTE: no install target in CMake... + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp BtMigrate $out/bin + + runHook postInstall + ''; + + meta = with lib; { + description = "Torrent state migration tool"; + homepage = "https://github.com/mikedld/bt-migrate"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ ambroisie ]; + mainProgram = "BtMigrate"; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index ddd0b02..e82a90c 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,5 +1,7 @@ { pkgs }: pkgs.lib.makeScope pkgs.newScope (pkgs: { + bt-migrate = pkgs.callPackage ./bt-migrate { }; + bw-pass = pkgs.callPackage ./bw-pass { }; change-audio = pkgs.callPackage ./change-audio { }; From a4e742bf5541967ee08954ab12f02a29633f8eb8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 21:45:18 +0000 Subject: [PATCH 1228/1588] nixos: services: blog: fix catch-all redirection Don't use a hard-coded address... --- modules/nixos/services/blog/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/blog/default.nix b/modules/nixos/services/blog/default.nix index 3e68df2..e4d2d42 100644 --- a/modules/nixos/services/blog/default.nix +++ b/modules/nixos/services/blog/default.nix @@ -35,7 +35,7 @@ in useACMEHost = domain; default = true; - locations."/".return = "302 https://belanyi.fr$request_uri"; + locations."/".return = "302 https://${domain}$request_uri"; }; }; From 97cc08d199977b5dca863c6c3963a9f3f1708be1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Mar 2024 11:32:28 +0000 Subject: [PATCH 1229/1588] flake: use explicit 'systems' input --- flake/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flake/default.nix b/flake/default.nix index 65102e1..5e52025 100644 --- a/flake/default.nix +++ b/flake/default.nix @@ -1,9 +1,9 @@ { flake-parts -, futils +, systems , ... } @ inputs: let - mySystems = futils.lib.defaultSystems; + mySystems = import systems; in flake-parts.lib.mkFlake { inherit inputs; } { systems = mySystems; From 742b4c39a277b32d5f8afd0150457c953d09842a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Mar 2024 15:42:58 +0000 Subject: [PATCH 1230/1588] home: tmux: migrate to 'terminalFeatures' There are other terminal capabilities I want to override in tmux, so let's make this type more extensible. --- hosts/homes/ambroisie@bazin/default.nix | 6 ++-- hosts/homes/ambroisie@mousqueton/default.nix | 6 ++-- hosts/nixos/porthos/home.nix | 8 ++--- modules/home/tmux/default.nix | 35 ++++++++++++-------- 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix index a65a626..f52fbce 100644 --- a/hosts/homes/ambroisie@bazin/default.nix +++ b/hosts/homes/ambroisie@bazin/default.nix @@ -12,8 +12,10 @@ # I use scripts that use the passthrough sequence often on this host enablePassthrough = true; - # HTerm uses `xterm-256color` as its `$TERM`, so use that here - trueColorTerminals = [ "xterm-256color" ]; + terminalFeatures = { + # HTerm uses `xterm-256color` as its `$TERM`, so use that here + xterm-256color = { }; + }; }; ssh = { diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 5c0a963..44e62e6 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -15,8 +15,10 @@ # I use scripts that use the passthrough sequence often on this host enablePassthrough = true; - # HTerm uses `xterm-256color` as its `$TERM`, so use that here - trueColorTerminals = [ "xterm-256color" ]; + terminalFeatures = { + # HTerm uses `xterm-256color` as its `$TERM`, so use that here + xterm-256color = { }; + }; }; }; } diff --git a/hosts/nixos/porthos/home.nix b/hosts/nixos/porthos/home.nix index 1de3565..c2c858b 100644 --- a/hosts/nixos/porthos/home.nix +++ b/hosts/nixos/porthos/home.nix @@ -8,11 +8,11 @@ }; }; - # Allow using 24bit color when SSH-ing from various clients - tmux.trueColorTerminals = [ + # Allow using extended features when SSH-ing from various clients + tmux.terminalFeatures = { # My usual terminal, e.g: on laptop - "alacritty" - ]; + alacritty = { }; + }; # Always start a tmux session when opening a shell session zsh.launchTmux = true; diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 08aeb55..76e18ca 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -5,6 +5,14 @@ let config.my.home.x.enable (config.my.home.wm.windowManager != null) ]; + + mkTerminalFlags = opt: flag: + let + mkFlag = term: ''set -as terminal-features ",${term}:${flag}"''; + enabledTerminals = lib.filterAttrs (_: v: v.${opt}) cfg.terminalFeatures; + terminals = lib.attrNames enabledTerminals; + in + lib.concatMapStringsSep "\n" mkFlag terminals; in { options.my.home.tmux = with lib; { @@ -12,16 +20,20 @@ in enablePassthrough = mkEnableOption "tmux DCS passthrough sequence"; - trueColorTerminals = mkOption { - type = with types; listOf str; - default = lib.my.nullableToList config.my.home.terminal.program; - defaultText = '' - `[ config.my.home.terminal.program ]` if it is non-null, otherwise an - empty list. + terminalFeatures = mkOption { + type = with types; attrsOf (submodule { + options = { + trueColor = my.mkDisableOption "24-bit (RGB) color support"; + }; + }); + + default = { ${config.my.home.terminal.program} = { }; }; + defaultText = litteralExpression '' + { ''${config.my.home.terminal.program} = { }; }; ''; - example = [ "xterm-256color" ]; + example = { xterm-256color = { }; }; description = '' - $TERM values which should be considered to always support 24-bit color. + $TERM values which should be considered to have additional features. ''; }; }; @@ -90,12 +102,7 @@ in } # Force 24-bit color for each relevant $TERM - ${ - let - mkTcFlag = term: ''set -as terminal-features ",${term}:RGB"''; - in - lib.concatMapStringsSep "\n" mkTcFlag cfg.trueColorTerminals - } + ${mkTerminalFlags "trueColor" "RGB"} ''; }; } From 22139bd69f20911fb83aa7ab26ed6afd4974e771 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 7 Mar 2024 15:44:17 +0000 Subject: [PATCH 1231/1588] home: tmux: add hyperlinks support Somewhat unfortunate that those have to be enabled by force, but easy enough to support. --- modules/home/tmux/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 76e18ca..61cf2ec 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -23,6 +23,8 @@ in terminalFeatures = mkOption { type = with types; attrsOf (submodule { options = { + hyperlinks = my.mkDisableOption "hyperlinks through OSC8"; + trueColor = my.mkDisableOption "24-bit (RGB) color support"; }; }); @@ -101,6 +103,8 @@ in '' } + # Force OSC8 hyperlinks for each relevant $TERM + ${mkTerminalFlags "hyperlinks" "hyperlinks"} # Force 24-bit color for each relevant $TERM ${mkTerminalFlags "trueColor" "RGB"} ''; From 8591fb8b3571899efcb4a850216a0b8bc5942435 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 8 Mar 2024 12:56:19 +0000 Subject: [PATCH 1232/1588] home: tmux: expand history limit --- modules/home/tmux/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 61cf2ec..501b954 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -46,7 +46,7 @@ in keyMode = "vi"; # Home-row keys and other niceties clock24 = true; # I'm one of those heathens escapeTime = 0; # Let vim do its thing instead - historyLimit = 50000; # Bigger buffer + historyLimit = 100000; # Bigger buffer terminal = "tmux-256color"; # I want accurate termcap info plugins = with pkgs.tmuxPlugins; [ From c1ffe096312ca96aca76b07fa0db465d44331778 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 12:32:40 +0000 Subject: [PATCH 1233/1588] nixos: services: add forgejo --- modules/nixos/services/default.nix | 1 + modules/nixos/services/forgejo/default.nix | 162 +++++++++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 modules/nixos/services/forgejo/default.nix diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 90dd3e1..3b32d06 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -10,6 +10,7 @@ ./drone ./fail2ban ./flood + ./forgejo ./gitea ./grocy ./indexers diff --git a/modules/nixos/services/forgejo/default.nix b/modules/nixos/services/forgejo/default.nix new file mode 100644 index 0000000..0f3dfc5 --- /dev/null +++ b/modules/nixos/services/forgejo/default.nix @@ -0,0 +1,162 @@ +# A low-ressource, full-featured git forge. +{ config, lib, ... }: +let + cfg = config.my.services.forgejo; +in +{ + options.my.services.forgejo = with lib; { + enable = mkEnableOption "Forgejo"; + port = mkOption { + type = types.port; + default = 3042; + example = 8080; + description = "Internal port"; + }; + mail = { + enable = mkEnableOption { + description = "mailer configuration"; + }; + host = mkOption { + type = types.str; + example = "smtp.example.com"; + description = "Host for the mail account"; + }; + port = mkOption { + type = types.port; + default = 465; + example = 587; + description = "Port for the mail account"; + }; + user = mkOption { + type = types.str; + example = "forgejo@example.com"; + description = "User for the mail account"; + }; + passwordFile = mkOption { + type = types.str; + example = "/run/secrets/forgejo-mail-password.txt"; + description = "Password for the mail account"; + }; + protocol = mkOption { + type = types.str; + default = "smtps"; + example = "smtp"; + description = "Protocol for connection"; + }; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + { + assertion = cfg.enable -> !config.my.services.gitea.enable; + message = '' + `config.my.services.forgejo` is incompatible with + `config.my.services.gitea`. + ''; + } + ]; + + services.forgejo = + let + inherit (config.networking) domain; + forgejoDomain = "git.${domain}"; + in + { + enable = true; + + user = "git"; + group = "git"; + + lfs.enable = true; + + useWizard = false; + + database = { + type = "postgres"; # Automatic setup + user = "git"; # User needs to be the same as forgejo user + name = "git"; # Name must be the same as user for `ensureDBOwnership` + }; + + # NixOS module uses `forgejo dump` to backup repositories and the database, + # but it produces a single .zip file that's not very backup friendly. + # I configure my backup system manually below. + dump.enable = false; + + mailerPasswordFile = lib.mkIf cfg.mail.enable cfg.mail.passwordFile; + + settings = { + DEFAULT = { + APP_NAME = "Ambroisie's forge"; + }; + + server = { + HTTP_PORT = cfg.port; + DOMAIN = forgejoDomain; + ROOT_URL = "https://${forgejoDomain}"; + }; + + mailer = lib.mkIf cfg.mail.enable { + ENABLED = true; + SMTP_ADDR = cfg.mail.host; + SMTP_PORT = cfg.mail.port; + FROM = "Forgejo <${cfg.mail.user}>"; + USER = cfg.mail.user; + PROTOCOL = cfg.mail.protocol; + }; + + service = { + DISABLE_REGISTRATION = true; + }; + + session = { + # only send cookies via HTTPS + COOKIE_SECURE = true; + }; + }; + }; + + users.users.git = { + description = "Forgejo Service"; + home = config.services.forgejo.stateDir; + useDefaultShell = true; + group = "git"; + isSystemUser = true; + }; + users.groups.git = { }; + + my.services.nginx.virtualHosts = { + # Proxy to Forgejo + git = { + inherit (cfg) port; + }; + # Redirect `forgejo.` to actual forge subdomain + forgejo = { + redirect = config.services.forgejo.settings.server.ROOT_URL; + }; + }; + + my.services.backup = { + paths = [ + config.services.forgejo.lfs.contentDir + config.services.forgejo.repositoryRoot + ]; + }; + + services.fail2ban.jails = { + forgejo = '' + enabled = true + filter = forgejo + action = iptables-allports + ''; + }; + + environment.etc = { + "fail2ban/filter.d/forgejo.conf".text = '' + [Definition] + failregex = ^.*(Failed authentication attempt|invalid credentials|Attempted access of unknown user).* from <HOST>$ + journalmatch = _SYSTEMD_UNIT=forgejo.service + ''; + }; + }; +} From b41fd9e48ecc27f79757f014272c2c190e0c7d9b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 12:32:40 +0000 Subject: [PATCH 1234/1588] hosts: nixos: porthos: secrets: add forgejo mail --- hosts/nixos/porthos/secrets/forgejo/mail-password.age | 10 ++++++++++ hosts/nixos/porthos/secrets/secrets.nix | 5 +++++ 2 files changed, 15 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/forgejo/mail-password.age diff --git a/hosts/nixos/porthos/secrets/forgejo/mail-password.age b/hosts/nixos/porthos/secrets/forgejo/mail-password.age new file mode 100644 index 0000000..67ef695 --- /dev/null +++ b/hosts/nixos/porthos/secrets/forgejo/mail-password.age @@ -0,0 +1,10 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg Lhgx43wR8PtAMf5v1eJxKlUBSAoOLdOOn/QaQrwF8zA +jfUCpgNzkHCNTWCqtErDaLMmg1Oy+s9zUra1JLCi+J4 +-> ssh-ed25519 jPowng kSeQ/SmMrzd8ByVu3YHWeZyKmqFZvQSBnDunkB8e6wc +WRmnfrV5xcRXA9t0ZXx6YvbRl0sX4PTrw63VVKX4Ei4 +--- a+LLM1gP9g1AbUapbeeKaS4cEcRBmPo3MHU2DSWTAds +,F6⬘ ix̏e| + +Ϝ,{ v!z$P;TKW + qG \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 3545e3a..bea380c 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -21,6 +21,11 @@ in "drone/secret.age".publicKeys = all; "drone/ssh/private-key.age".publicKeys = all; + "forgejo/mail-password.age" = { + owner = "git"; + publicKeys = all; + }; + "gitea/mail-password.age" = { owner = "git"; publicKeys = all; From f3207468f979d5bffc42e131152d33bff6d8548c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 9 Mar 2024 13:34:38 +0100 Subject: [PATCH 1235/1588] nixos: services: woodpecker: configurable forge --- modules/nixos/services/woodpecker/default.nix | 6 ++++++ modules/nixos/services/woodpecker/server/default.nix | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/nixos/services/woodpecker/default.nix b/modules/nixos/services/woodpecker/default.nix index 34ffca6..8fa692e 100644 --- a/modules/nixos/services/woodpecker/default.nix +++ b/modules/nixos/services/woodpecker/default.nix @@ -8,6 +8,12 @@ options.my.services.woodpecker = with lib; { enable = mkEnableOption "Woodpecker CI"; + forge = mkOption { + type = types.enum [ "gitea" "forgejo" ]; + default = "gitea"; + example = "forgejo"; + description = "Which Forge to connect to"; + }; runners = mkOption { type = with types; listOf (enum [ "exec" "docker" ]); default = [ ]; diff --git a/modules/nixos/services/woodpecker/server/default.nix b/modules/nixos/services/woodpecker/server/default.nix index f02a5c5..adf533e 100644 --- a/modules/nixos/services/woodpecker/server/default.nix +++ b/modules/nixos/services/woodpecker/server/default.nix @@ -17,7 +17,7 @@ in WOODPECKER_GRPC_ADDR = ":${toString cfg.rpcPort}"; WOODPECKER_GITEA = "true"; - WOODPECKER_GITEA_URL = config.services.gitea.settings.server.ROOT_URL; + WOODPECKER_GITEA_URL = config.services.${cfg.forge}.settings.server.ROOT_URL; WOODPECKER_LOG_LEVEL = "debug"; }; From 0f33dbd5c24440fd243725fd96f8081ad66750d8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 12:32:40 +0000 Subject: [PATCH 1236/1588] hosts: nixos: porthos: switch to forgejo This required a quick rename to migrate from one to the other. --- hosts/nixos/porthos/services.nix | 8 ++++---- modules/nixos/services/woodpecker/default.nix | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index c872160..a67ae3b 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -36,14 +36,14 @@ in flood = { enable = true; }; - # Gitea forge - gitea = { + # Forgejo forge + forgejo = { enable = true; mail = { enable = true; host = "smtp.migadu.com"; - user = lib.my.mkMailAddress "gitea" "belanyi.fr"; - passwordFile = secrets."gitea/mail-password".path; + user = lib.my.mkMailAddress "forgejo" "belanyi.fr"; + passwordFile = secrets."forgejo/mail-password".path; }; }; # Meta-indexers diff --git a/modules/nixos/services/woodpecker/default.nix b/modules/nixos/services/woodpecker/default.nix index 8fa692e..012eaae 100644 --- a/modules/nixos/services/woodpecker/default.nix +++ b/modules/nixos/services/woodpecker/default.nix @@ -10,8 +10,8 @@ enable = mkEnableOption "Woodpecker CI"; forge = mkOption { type = types.enum [ "gitea" "forgejo" ]; - default = "gitea"; - example = "forgejo"; + default = "forgejo"; + example = "gitea"; description = "Which Forge to connect to"; }; runners = mkOption { From 5d3160fb0de293fbc100f511be6d1034fdd91877 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 5 Mar 2024 00:45:31 +0100 Subject: [PATCH 1237/1588] hosts: nixos: porthos: migrate to new host OVH/Kimsufi are deprecating my current server by the end of the year. So let's migrate to a new host. This was more painful than initially planned, OVH introduced a change to their rescue system which messes with the NixOS installation [1]. In the end I used a kexec image [2] to run the installation. [1]: https://github.com/NixOS/nix/issues/7790 [2]: https://github.com/nix-community/nixos-images --- hosts/nixos/porthos/boot.nix | 11 ++++---- hosts/nixos/porthos/default.nix | 8 +----- hosts/nixos/porthos/hardware.nix | 13 +++++++-- hosts/nixos/porthos/install.sh | 29 ++++++++++++++------ hosts/nixos/porthos/networking.nix | 29 ++++++-------------- modules/home/ssh/default.nix | 2 +- modules/nixos/services/wireguard/default.nix | 2 +- 7 files changed, 48 insertions(+), 46 deletions(-) diff --git a/hosts/nixos/porthos/boot.nix b/hosts/nixos/porthos/boot.nix index fbc5db7..461e969 100644 --- a/hosts/nixos/porthos/boot.nix +++ b/hosts/nixos/porthos/boot.nix @@ -3,15 +3,14 @@ { boot = { - # Use the GRUB 2 boot loader. - loader.grub = { - enable = true; - # Define on which hard drive you want to install Grub. - device = "/dev/disk/by-id/ata-HGST_HUS724020ALA640_PN2181P6J58M1P"; + # Use the systemd-boot EFI boot loader. + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; }; initrd = { - availableKernelModules = [ "uhci_hcd" "ahci" "usbhid" ]; + availableKernelModules = [ "ahci" "xhci_pci" "ehci_pci" "usbhid" "sd_mod" ]; kernelModules = [ "dm-snapshot" ]; }; diff --git a/hosts/nixos/porthos/default.nix b/hosts/nixos/porthos/default.nix index 2dea899..bd1bdb1 100644 --- a/hosts/nixos/porthos/default.nix +++ b/hosts/nixos/porthos/default.nix @@ -16,11 +16,5 @@ # Set your time zone. time.timeZone = "Europe/Paris"; - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "20.09"; # Did you read the comment? + system.stateVersion = "24.05"; # Did you read the comment? } diff --git a/hosts/nixos/porthos/hardware.nix b/hosts/nixos/porthos/hardware.nix index 5a6e0d7..2172c5c 100644 --- a/hosts/nixos/porthos/hardware.nix +++ b/hosts/nixos/porthos/hardware.nix @@ -1,5 +1,5 @@ # Hardware configuration -{ lib, modulesPath, ... }: +{ modulesPath, ... }: { imports = [ @@ -11,9 +11,18 @@ fsType = "ext4"; }; + fileSystems."/boot" = { + device = "/dev/disk/by-label/boot"; + fsType = "vfat"; + }; + swapDevices = [ { device = "/dev/disk/by-label/swap"; } ]; - powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand"; + my.hardware = { + firmware = { + cpuFlavor = "intel"; + }; + }; } diff --git a/hosts/nixos/porthos/install.sh b/hosts/nixos/porthos/install.sh index 8edc175..e6ba0aa 100644 --- a/hosts/nixos/porthos/install.sh +++ b/hosts/nixos/porthos/install.sh @@ -3,7 +3,7 @@ SWAP_SIZE=16GiB parted /dev/sda --script -- \ - mklabel msdos \ + mklabel gpt \ mkpart primary 512MiB -$SWAP_SIZE \ mkpart primary linux-swap -$SWAP_SIZE 100% \ mkpart ESP fat32 1MiB 512MiB \ @@ -11,14 +11,24 @@ parted /dev/sda --script -- \ parted /dev/sdb --script -- \ mklabel gpt \ - mkpart primary 0MiB 100% + mkpart primary 0% 100% +parted /dev/sdc --script -- \ + mklabel gpt \ + mkpart primary 0% 100% +parted /dev/sdd --script -- \ + mklabel gpt \ + mkpart primary 0% 100% mkfs.ext4 -L media1 /dev/sda1 mkfs.ext4 -L media2 /dev/sdb1 +mkfs.ext4 -L media3 /dev/sdc1 +mkfs.ext4 -L media4 /dev/sdd1 pvcreate /dev/sda1 pvcreate /dev/sdb1 -vgcreate lvm /dev/sda1 /dev/sdb1 +pvcreate /dev/sdc1 +pvcreate /dev/sdd1 +vgcreate lvm /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 lvcreate -l 100%FREE -n media lvm mkfs.ext4 -L nixos /dev/mapper/lvm-media @@ -27,17 +37,17 @@ mkfs.fat -F 32 -n boot /dev/sda3 mount /dev/disk/by-label/nixos /mnt swapon /dev/sda2 +mkdir -p /mnt/boot +mount /dev/disk/by-label/boot /mnt/boot apt install sudo useradd -m -G sudo setupuser -# shellcheck disable=2117 -su setupuser cat << EOF # Run the following commands as setup user -curl -L https://nixos.org/nix/install | sh -. $HOME/.nix-profile/etc/profile.d/nix.sh -nix-channel --add https://nixos.org/channels/nixos-20.09 nixpkgs +curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install +. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh +nix profile install nixpkgs#nixos-install-tools sudo "$(which nixos-generate-config)" --root /mnt # Change uuids to labels @@ -54,3 +64,6 @@ git crypt unlock nixos-install --root /mnt --flake '.#<hostname>' EOF + +# shellcheck disable=2117 +su setupuser diff --git a/hosts/nixos/porthos/networking.nix b/hosts/nixos/porthos/networking.nix index 1e2c9cd..717652b 100644 --- a/hosts/nixos/porthos/networking.nix +++ b/hosts/nixos/porthos/networking.nix @@ -6,30 +6,17 @@ hostName = "porthos"; # Define your hostname. domain = "belanyi.fr"; # Define your domain. - - # The global useDHCP flag is deprecated, therefore explicitly set to false here. - # Per-interface useDHCP will be mandatory in the future, so this generated config - # replicates the default behaviour. - useDHCP = false; - + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. + useDHCP = true; interfaces = { - bond0.useDHCP = true; - bonding_masters.useDHCP = true; - dummy0.useDHCP = true; - erspan0.useDHCP = true; - eth0.useDHCP = true; - eth1.useDHCP = true; - gre0.useDHCP = true; - gretap0.useDHCP = true; - ifb0.useDHCP = true; - ifb1.useDHCP = true; - ip6tnl0.useDHCP = true; - sit0.useDHCP = true; - teql0.useDHCP = true; - tunl0.useDHCP = true; + eno1.useDHCP = true; + eno2.useDHCP = true; }; }; # Which interface is used to connect to the internet - my.hardware.networking.externalInterface = "eth0"; + my.hardware.networking.externalInterface = "eno1"; } diff --git a/modules/home/ssh/default.nix b/modules/home/ssh/default.nix index 674cf6a..748b195 100644 --- a/modules/home/ssh/default.nix +++ b/modules/home/ssh/default.nix @@ -49,7 +49,7 @@ in }; porthos = { - hostname = "91.121.177.163"; + hostname = "37.187.146.15"; identityFile = "~/.ssh/shared_rsa"; user = "ambroisie"; }; diff --git a/modules/nixos/services/wireguard/default.nix b/modules/nixos/services/wireguard/default.nix index 26e54e0..a76e424 100644 --- a/modules/nixos/services/wireguard/default.nix +++ b/modules/nixos/services/wireguard/default.nix @@ -13,7 +13,7 @@ let porthos = { clientNum = 1; publicKey = "PLdgsizztddri0LYtjuNHr5r2E8D+yI+gM8cm5WDfHQ="; - externalIp = "91.121.177.163"; + externalIp = "37.187.146.15"; }; # "Clients" From 6140e1c8f926eced8867c71b18cdefa0f8a22f7a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 9 Mar 2024 22:00:17 +0100 Subject: [PATCH 1238/1588] nixos: services: lohr: migrate to tmpfiles This is better than a custom script. --- modules/nixos/services/lohr/default.nix | 34 ++++++++++++++----------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/modules/nixos/services/lohr/default.nix b/modules/nixos/services/lohr/default.nix index dd4eea8..21aadba 100644 --- a/modules/nixos/services/lohr/default.nix +++ b/modules/nixos/services/lohr/default.nix @@ -59,21 +59,6 @@ in "LOHR_HOME=${lohrHome}" "LOHR_CONFIG=" ]; - ExecStartPre = lib.mkIf (cfg.sshKeyFile != null) ''+${ - pkgs.writeScript "copy-ssh-key" '' - #!${pkgs.bash}/bin/bash - # Ensure the key is not there - mkdir -p '${lohrHome}/.ssh' - rm -f '${lohrHome}/.ssh/id_ed25519' - - # Move the key into place - cp ${cfg.sshKeyFile} '${lohrHome}/.ssh/id_ed25519' - - # Fix permissions - chown -R lohr:lohr '${lohrHome}/.ssh' - chmod -R 0700 '${lohrHome}/.ssh' - '' - }''; ExecStart = let configFile = settingsFormat.generate "lohr-config.yaml" cfg.setting; @@ -103,5 +88,24 @@ in inherit (cfg) port; }; }; + + # SSH key provisioning + systemd.tmpfiles.settings."10-lohr" = lib.mkIf (cfg.sshKeyFile != null) { + "${lohrHome}/.ssh" = { + d = { + user = "lohr"; + group = "lohr"; + mode = "0700"; + }; + }; + "${lohrHome}/.ssh/id_ed25519" = { + "f+" = { + user = "lohr"; + group = "lohr"; + mode = "0700"; + argument = cfg.sshKeyFile; + }; + }; + }; }; } From 08f4175412cc2257f3a30db51e310f4208009560 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 11:52:42 +0000 Subject: [PATCH 1239/1588] overlays: add none-ls-shellcheck-nvim --- overlays/none-ls-shellcheck-nvim/default.nix | 4 ++++ overlays/none-ls-shellcheck-nvim/generated.nix | 15 +++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 overlays/none-ls-shellcheck-nvim/default.nix create mode 100644 overlays/none-ls-shellcheck-nvim/generated.nix diff --git a/overlays/none-ls-shellcheck-nvim/default.nix b/overlays/none-ls-shellcheck-nvim/default.nix new file mode 100644 index 0000000..832e71d --- /dev/null +++ b/overlays/none-ls-shellcheck-nvim/default.nix @@ -0,0 +1,4 @@ +self: prev: +{ + vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); +} diff --git a/overlays/none-ls-shellcheck-nvim/generated.nix b/overlays/none-ls-shellcheck-nvim/generated.nix new file mode 100644 index 0000000..ee93a88 --- /dev/null +++ b/overlays/none-ls-shellcheck-nvim/generated.nix @@ -0,0 +1,15 @@ +{ vimUtils, fetchFromGitHub }: +_final: _prev: +{ + none-ls-shellcheck-nvim = vimUtils.buildVimPlugin { + pname = "none-ls-shellcheck.nvim"; + version = "2024-02-28"; + src = fetchFromGitHub { + owner = "gbprod"; + repo = "none-ls-shellcheck.nvim"; + rev = "1eed283a7ede771b522a0a9f30bb604f02f51d64"; + sha256 = "1hs0q9a0xwyqml0bfmplk89f1dk4nyg6aapfarnx44zqiw1183kn"; + }; + meta.homepage = "https://github.com/gbprod/none-ls-shellcheck.nvim/"; + }; +} From 30247ce3a07a8d804fa471dc69f4c1186a40421e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 11:53:19 +0000 Subject: [PATCH 1240/1588] home: vim: null-ls: fix deprecated builtins `none-ls` deprecated a lot of unmaintained builtins, or ones that they find has been replaced by a compete LSP server. This removes those deprecated builtins, or uses a shim until I migrate to the relevant LSP configuration (for `bash-language-server`). --- modules/home/vim/default.nix | 1 + modules/home/vim/plugin/settings/null-ls.lua | 26 +++----------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index 871bf40..3e1aee4 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -68,6 +68,7 @@ in lsp-format-nvim # Simplified formatting configuration lsp_lines-nvim # Show diagnostics *over* regions none-ls-nvim # LSP integration for linters and formatters + none-ls-shellcheck-nvim # shellcheck shim for none-ls nvim-treesitter.withAllGrammars # Better highlighting nvim-treesitter-textobjects # More textobjects nvim-ts-context-commentstring # Comment string in nested language blocks diff --git a/modules/home/vim/plugin/settings/null-ls.lua b/modules/home/vim/plugin/settings/null-ls.lua index 0eaa55c..9915194 100644 --- a/modules/home/vim/plugin/settings/null-ls.lua +++ b/modules/home/vim/plugin/settings/null-ls.lua @@ -28,14 +28,6 @@ null_ls.register({ }), }) --- Haskell -null_ls.register({ - null_ls.builtins.formatting.brittany.with({ - -- Only used if available - condition = utils.is_executable_condition("brittany"), - }), -}) - -- Nix null_ls.register({ null_ls.builtins.formatting.nixpkgs_fmt.with({ @@ -50,16 +42,6 @@ null_ls.register({ -- Python null_ls.register({ - null_ls.builtins.diagnostics.flake8.with({ - -- Only used if available, but prefer pflake8 if available - condition = function() - return utils.is_executable("flake8") and not utils.is_executable("pflake8") - end, - }), - null_ls.builtins.diagnostics.pyproject_flake8.with({ - -- Only used if available - condition = utils.is_executable_condition("pflake8"), - }), null_ls.builtins.diagnostics.mypy.with({ -- Only used if available condition = utils.is_executable_condition("mypy"), @@ -81,13 +63,13 @@ null_ls.register({ -- Shell (non-POSIX) null_ls.register({ - null_ls.builtins.code_actions.shellcheck.with({ + require("none-ls-shellcheck.diagnostics").with({ -- Restrict to bash and zsh filetypes = { "bash", "zsh" }, -- Only used if available condition = utils.is_executable_condition("shellcheck"), }), - null_ls.builtins.diagnostics.shellcheck.with({ + require("none-ls-shellcheck.code_actions").with({ -- Show error code in message diagnostics_format = "[#{c}] #{m}", -- Require explicit empty string test, use bash dialect @@ -110,13 +92,13 @@ null_ls.register({ -- Shell (POSIX) null_ls.register({ - null_ls.builtins.code_actions.shellcheck.with({ + require("none-ls-shellcheck.diagnostics").with({ -- Restrict to POSIX sh filetypes = { "sh" }, -- Only used if available condition = utils.is_executable_condition("shellcheck"), }), - null_ls.builtins.diagnostics.shellcheck.with({ + require("none-ls-shellcheck.code_actions").with({ -- Show error code in message diagnostics_format = "[#{c}] #{m}", -- Require explicit empty string test From f13a6fb023bf16954531e27aea752a2d24a18fbd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 12:01:15 +0000 Subject: [PATCH 1241/1588] home: vim: lspconfig: add 'ruff-lsp' Since everybody is moving towards using it instead of other linters... --- modules/home/vim/plugin/settings/lspconfig.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index 794a765..7b2d95f 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -52,6 +52,13 @@ if utils.is_executable("pyright") then }) end +if utils.is_executable("ruff-lsp") then + lspconfig.ruff_lsp.setup({ + capabilities = capabilities, + on_attach = lsp.on_attach, + }) +end + -- Rust if utils.is_executable("rust-analyzer") then lspconfig.rust_analyzer.setup({ From 7a3e64f814c9be720eb5e638c5a7d63cd9b5537d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 12:04:38 +0000 Subject: [PATCH 1242/1588] home: vim: lspconfig: add 'hls' If I ever end up actually learning it... --- modules/home/vim/plugin/settings/lspconfig.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index 7b2d95f..178898a 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -29,6 +29,14 @@ if utils.is_executable("clangd") then }) end +-- Haskell +if utils.is_executable("haskell-language-server-wrapper") then + lspconfig.hls.setup({ + capabilities = capabilities, + on_attach = lsp.on_attach, + }) +end + -- Nix if utils.is_executable("nil") then lspconfig.nil_ls.setup({ From dc27b5991220a1d019c339686af484f396660025 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 12:20:53 +0000 Subject: [PATCH 1243/1588] home: vim: lspconfig: migrate to 'bashls' Since `none-ls` has removed their `shellcheck` built-in. This actually makes the diagnostics more robust to POSIX/non-POSIX scripts (the LSP server detects it at runtime, which is more robust than the `ftdetect` scripts). Nice bonus: the shellcheck code is shown in the diagnostics message without any configuration! I'm not sure if I can configure `avoid-nullary-conditions` -- though it seems like this check is broken at the moment (I couldn't get it to trigger during my tests). --- modules/home/vim/default.nix | 3 +- .../home/vim/plugin/settings/lspconfig.lua | 9 ++++++ modules/home/vim/plugin/settings/null-ls.lua | 32 ------------------- 3 files changed, 10 insertions(+), 34 deletions(-) diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index 3e1aee4..07711cc 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -68,7 +68,6 @@ in lsp-format-nvim # Simplified formatting configuration lsp_lines-nvim # Show diagnostics *over* regions none-ls-nvim # LSP integration for linters and formatters - none-ls-shellcheck-nvim # shellcheck shim for none-ls nvim-treesitter.withAllGrammars # Better highlighting nvim-treesitter-textobjects # More textobjects nvim-ts-context-commentstring # Comment string in nested language blocks @@ -106,7 +105,7 @@ in nixpkgs-fmt # Shell - shellcheck + nodePackages.bash-language-server shfmt ]; }; diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index 178898a..c2de2ea 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -74,3 +74,12 @@ if utils.is_executable("rust-analyzer") then on_attach = lsp.on_attach, }) end + +-- Shell +if utils.is_executable("bash-language-server") then + lspconfig.bashls.setup({ + filetypes = { "bash", "sh", "zsh" }, + capabilities = capabilities, + on_attach = lsp.on_attach, + }) +end diff --git a/modules/home/vim/plugin/settings/null-ls.lua b/modules/home/vim/plugin/settings/null-ls.lua index 9915194..c372751 100644 --- a/modules/home/vim/plugin/settings/null-ls.lua +++ b/modules/home/vim/plugin/settings/null-ls.lua @@ -63,22 +63,6 @@ null_ls.register({ -- Shell (non-POSIX) null_ls.register({ - require("none-ls-shellcheck.diagnostics").with({ - -- Restrict to bash and zsh - filetypes = { "bash", "zsh" }, - -- Only used if available - condition = utils.is_executable_condition("shellcheck"), - }), - require("none-ls-shellcheck.code_actions").with({ - -- Show error code in message - diagnostics_format = "[#{c}] #{m}", - -- Require explicit empty string test, use bash dialect - extra_args = { "-s", "bash", "-o", "avoid-nullary-conditions" }, - -- Restrict to bash and zsh - filetypes = { "bash", "zsh" }, - -- Only used if available - condition = utils.is_executable_condition("shellcheck"), - }), null_ls.builtins.formatting.shfmt.with({ -- Indent with 4 spaces, simplify the code, indent switch cases, -- add space after redirection, use bash dialect @@ -92,22 +76,6 @@ null_ls.register({ -- Shell (POSIX) null_ls.register({ - require("none-ls-shellcheck.diagnostics").with({ - -- Restrict to POSIX sh - filetypes = { "sh" }, - -- Only used if available - condition = utils.is_executable_condition("shellcheck"), - }), - require("none-ls-shellcheck.code_actions").with({ - -- Show error code in message - diagnostics_format = "[#{c}] #{m}", - -- Require explicit empty string test - extra_args = { "-o", "avoid-nullary-conditions" }, - -- Restrict to POSIX sh - filetypes = { "sh" }, - -- Only used if available - condition = utils.is_executable_condition("shellcheck"), - }), null_ls.builtins.formatting.shfmt.with({ -- Indent with 4 spaces, simplify the code, indent switch cases, -- add space after redirection, use POSIX From 9749f0aa28dc945125066aaf47cb6066237ce6f6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 12:29:34 +0000 Subject: [PATCH 1244/1588] overlays: remove none-ls-shellcheck-nvim --- overlays/none-ls-shellcheck-nvim/default.nix | 4 ---- overlays/none-ls-shellcheck-nvim/generated.nix | 15 --------------- 2 files changed, 19 deletions(-) delete mode 100644 overlays/none-ls-shellcheck-nvim/default.nix delete mode 100644 overlays/none-ls-shellcheck-nvim/generated.nix diff --git a/overlays/none-ls-shellcheck-nvim/default.nix b/overlays/none-ls-shellcheck-nvim/default.nix deleted file mode 100644 index 832e71d..0000000 --- a/overlays/none-ls-shellcheck-nvim/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -self: prev: -{ - vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); -} diff --git a/overlays/none-ls-shellcheck-nvim/generated.nix b/overlays/none-ls-shellcheck-nvim/generated.nix deleted file mode 100644 index ee93a88..0000000 --- a/overlays/none-ls-shellcheck-nvim/generated.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ vimUtils, fetchFromGitHub }: -_final: _prev: -{ - none-ls-shellcheck-nvim = vimUtils.buildVimPlugin { - pname = "none-ls-shellcheck.nvim"; - version = "2024-02-28"; - src = fetchFromGitHub { - owner = "gbprod"; - repo = "none-ls-shellcheck.nvim"; - rev = "1eed283a7ede771b522a0a9f30bb604f02f51d64"; - sha256 = "1hs0q9a0xwyqml0bfmplk89f1dk4nyg6aapfarnx44zqiw1183kn"; - }; - meta.homepage = "https://github.com/gbprod/none-ls-shellcheck.nvim/"; - }; -} From b2dc051e6ad854c26784174c5b7823ebc9dbaec0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 9 Mar 2024 21:49:12 +0100 Subject: [PATCH 1245/1588] flake: bump inputs And fix the breaking changes in Vikunja (which actually make my configuration simpler). --- flake.lock | 24 +++++++++++----------- modules/nixos/services/vikunja/default.nix | 23 ++------------------- 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/flake.lock b/flake.lock index cd0b2de..ce8318f 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1706830856, - "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1709204054, - "narHash": "sha256-U1idK0JHs1XOfSI1APYuXi4AEADf+B+ZU4Wifc0pBHk=", + "lastModified": 1709988192, + "narHash": "sha256-qxwIkl85P0I1/EyTT+NJwzbXdOv86vgZxcv4UKicjK8=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f3367769a93b226c467551315e9e270c3f78b15", + "rev": "b0b0c3d94345050a7f86d1ebc6c56eea4389d030", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709150264, - "narHash": "sha256-HofykKuisObPUfj0E9CJVfaMhawXkYx3G8UIFR/XQ38=", + "lastModified": 1709703039, + "narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9099616b93301d5cf84274b184a3a5ec69e94e08", + "rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1709206595, - "narHash": "sha256-lBU/gE7DiJCNkJGPVUms0zA0hxzDVgENIXfebj1oeLc=", + "lastModified": 1710013455, + "narHash": "sha256-qzOpU4APTso6JLA+/F4zlO/yL8++n/CsUpmxbQAsy/4=", "owner": "nix-community", "repo": "NUR", - "rev": "fbe8df1c13fd8e63e35c2c4654104661eb1fbbed", + "rev": "cf1e9b0e085368cc489c765f285f1d07c2ec8d36", "type": "github" }, "original": { diff --git a/modules/nixos/services/vikunja/default.nix b/modules/nixos/services/vikunja/default.nix index 9767d00..6e7700f 100644 --- a/modules/nixos/services/vikunja/default.nix +++ b/modules/nixos/services/vikunja/default.nix @@ -30,8 +30,6 @@ in frontendScheme = "https"; frontendHostname = vikunjaDomain; - setupNginx = false; - database = { type = "postgres"; user = "vikunja"; @@ -61,28 +59,11 @@ in # This is a weird setup my.services.nginx.virtualHosts = { ${subdomain} = { - # Serve the root for the web-ui - root = config.services.vikunja.package-frontend; - - extraConfig = { - locations = { - "/" = { - tryFiles = "try_files $uri $uri/ /"; - }; - - # Serve the API through a UNIX socket - "~* ^/(api|dav|\\.well-known)/" = { - proxyPass = "http://unix:${socketPath}"; - extraConfig = '' - client_max_body_size 20M; - ''; - }; - }; - }; + socket = socketPath; }; }; - systemd.services.vikunja-api = { + systemd.services.vikunja = { serviceConfig = { # Use a system user to simplify using the CLI DynamicUser = lib.mkForce false; From 276cc7e5f2dcdfe2929128323501b261bcb5b455 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 13:53:11 +0000 Subject: [PATCH 1246/1588] home: xdg: add '_JAVA_OPTIONS' --- modules/home/xdg/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index aac5058..b7ba32b 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -55,5 +55,6 @@ in REDISCLI_HISTFILE = "${dataHome}/redis/rediscli_history"; REPO_CONFIG_DIR = "${configHome}/repo"; XCOMPOSECACHE = "${dataHome}/X11/xcompose"; + _JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${configHome}/java"; }; } From 3fb758028ca02108451e9cad3fb00d6ced482215 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 14:48:14 +0000 Subject: [PATCH 1247/1588] home: vim: lspconfig: remove 'rnix-lsp' It's been abandoned, `nil` is a better language server nowadays. --- modules/home/vim/plugin/settings/lspconfig.lua | 7 ------- modules/home/vim/plugin/settings/null-ls.lua | 6 ++---- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index c2de2ea..628eab9 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -45,13 +45,6 @@ if utils.is_executable("nil") then }) end -if utils.is_executable("rnix-lsp") then - lspconfig.rnix.setup({ - capabilities = capabilities, - on_attach = lsp.on_attach, - }) -end - -- Python if utils.is_executable("pyright") then lspconfig.pyright.setup({ diff --git a/modules/home/vim/plugin/settings/null-ls.lua b/modules/home/vim/plugin/settings/null-ls.lua index c372751..50d12e0 100644 --- a/modules/home/vim/plugin/settings/null-ls.lua +++ b/modules/home/vim/plugin/settings/null-ls.lua @@ -31,11 +31,9 @@ null_ls.register({ -- Nix null_ls.register({ null_ls.builtins.formatting.nixpkgs_fmt.with({ - -- Only used if available, but prefer rnix if available + -- Only used if available, but prefer LSP if available condition = function() - return utils.is_executable("nixpkgs-fmt") - and not utils.is_executable("rnix-lsp") - and not utils.is_executable("nil") + return utils.is_executable("nixpkgs-fmt") and not utils.is_executable("nil") end, }), }) From f06e99d95b3ddce679c7569f580d6d2d433ce27f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 18:10:13 +0000 Subject: [PATCH 1248/1588] home: xdg: move 'less' variables to their module --- modules/home/pager/default.nix | 1 + modules/home/xdg/default.nix | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/home/pager/default.nix b/modules/home/pager/default.nix index aa72587..e304097 100644 --- a/modules/home/pager/default.nix +++ b/modules/home/pager/default.nix @@ -16,6 +16,7 @@ in LESS = "-R -+X -c"; # Better XDG compliance LESSHISTFILE = "${config.xdg.dataHome}/less/history"; + LESSKEY = "${config.xdg.configHome}/less/lesskey"; }; }; } diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index b7ba32b..8b01696 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -46,8 +46,6 @@ in GRADLE_USER_HOME = "${dataHome}/gradle"; HISTFILE = "${dataHome}/bash/history"; INPUTRC = "${configHome}/readline/inputrc"; - LESSHISTFILE = "${dataHome}/less/history"; - LESSKEY = "${configHome}/less/lesskey"; PSQL_HISTORY = "${dataHome}/psql_history"; PYTHONPYCACHEPREFIX = "${cacheHome}/python/"; PYTHONUSERBASE = "${dataHome}/python/"; From b24d299f7090348053e7b79307bc501b2d54a0e9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Mar 2024 18:13:41 +0000 Subject: [PATCH 1249/1588] home: xdg: move 'gdb' variables to their module --- modules/home/gdb/default.nix | 9 ++++++++- modules/home/xdg/default.nix | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/home/gdb/default.nix b/modules/home/gdb/default.nix index ab51938..fe8eb69 100644 --- a/modules/home/gdb/default.nix +++ b/modules/home/gdb/default.nix @@ -26,7 +26,14 @@ in gdb ]; - xdg.configFile."gdb/gdbinit".source = ./gdbinit; + xdg = { + configFile."gdb/gdbinit".source = ./gdbinit; + dataFile. "gdb/.keep".text = ""; + }; + + home.sessionVariables = { + GDBHISTFILE = "${config.xdg.dataHome}/gdb/gdb_history"; + }; } (lib.mkIf cfg.rr.enable { diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index 8b01696..fb2668c 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -42,7 +42,6 @@ in ANDROID_USER_HOME = "${configHome}/android"; CARGO_HOME = "${dataHome}/cargo"; DOCKER_CONFIG = "${configHome}/docker"; - GDBHISTFILE = "${dataHome}/gdb/gdb_history"; GRADLE_USER_HOME = "${dataHome}/gradle"; HISTFILE = "${dataHome}/bash/history"; INPUTRC = "${configHome}/readline/inputrc"; From 07eca729f58e244702f953dcd98e0544d36a0bb1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 12 Mar 2024 11:31:16 +0000 Subject: [PATCH 1250/1588] home: vim: null-ls: fix 'nixpkgs-fmt' condition I haven't configured `nil` to format anything. And I don't really care to, this is good enough for me. --- modules/home/vim/plugin/settings/null-ls.lua | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/home/vim/plugin/settings/null-ls.lua b/modules/home/vim/plugin/settings/null-ls.lua index 50d12e0..e7265c7 100644 --- a/modules/home/vim/plugin/settings/null-ls.lua +++ b/modules/home/vim/plugin/settings/null-ls.lua @@ -31,10 +31,8 @@ null_ls.register({ -- Nix null_ls.register({ null_ls.builtins.formatting.nixpkgs_fmt.with({ - -- Only used if available, but prefer LSP if available - condition = function() - return utils.is_executable("nixpkgs-fmt") and not utils.is_executable("nil") - end, + -- Only used if available + condition = utils.is_executable_condition("nixpkgs-fmt"), }), }) From 4a8981c7b493ad49878c1b6606dccc99244a0a6f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 12 Mar 2024 12:30:36 +0000 Subject: [PATCH 1251/1588] home: vim: lua: utils: fix documentation --- modules/home/vim/lua/ambroisie/utils.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/vim/lua/ambroisie/utils.lua b/modules/home/vim/lua/ambroisie/utils.lua index 418e0d1..7807e71 100644 --- a/modules/home/vim/lua/ambroisie/utils.lua +++ b/modules/home/vim/lua/ambroisie/utils.lua @@ -15,7 +15,7 @@ end --- return a function that checks if a given command is executable --- @param cmd string? command to check ---- @return fun(cmd: string): boolean executable +--- @return fun(): boolean executable M.is_executable_condition = function(cmd) return function() return M.is_executable(cmd) From 56e158f5c52d4333e7c1a3ddc3e2a34dc0aa40ae Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 12 Mar 2024 12:30:36 +0000 Subject: [PATCH 1252/1588] home: vim: lua: utils: fix deprecated function --- modules/home/vim/lua/ambroisie/utils.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/vim/lua/ambroisie/utils.lua b/modules/home/vim/lua/ambroisie/utils.lua index 7807e71..fcb86e9 100644 --- a/modules/home/vim/lua/ambroisie/utils.lua +++ b/modules/home/vim/lua/ambroisie/utils.lua @@ -44,7 +44,7 @@ end --- @param bufnr int? buffer number --- @return table all active LSP client names M.list_lsp_clients = function(bufnr) - local clients = vim.lsp.buf_get_clients(bufnr) + local clients = vim.lsp.get_active_clients({ bufnr = bufnr or 0 }) local names = {} for _, client in ipairs(clients) do From 0108b06a02cef330ba71fbca975a9907ea8274c9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 12 Mar 2024 12:40:49 +0000 Subject: [PATCH 1253/1588] home: vim: lualine: use explicit buffer number I want to tighten the API of this function a little bit, so let's be more specific. --- modules/home/vim/plugin/settings/lualine.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/vim/plugin/settings/lualine.lua b/modules/home/vim/plugin/settings/lualine.lua index fdaccda..5219a95 100644 --- a/modules/home/vim/plugin/settings/lualine.lua +++ b/modules/home/vim/plugin/settings/lualine.lua @@ -10,7 +10,7 @@ local function list_spell_languages() end local function list_lsp_clients() - local client_names = utils.list_lsp_clients() + local client_names = utils.list_lsp_clients(0) if #client_names == 0 then return "" From 070df03b7e4d81ae75c298379fbd9279be11e903 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 12 Mar 2024 12:42:21 +0000 Subject: [PATCH 1254/1588] home: vim: lua: utils: allow querying all clients --- modules/home/vim/lua/ambroisie/utils.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/vim/lua/ambroisie/utils.lua b/modules/home/vim/lua/ambroisie/utils.lua index fcb86e9..a84ea7b 100644 --- a/modules/home/vim/lua/ambroisie/utils.lua +++ b/modules/home/vim/lua/ambroisie/utils.lua @@ -40,11 +40,11 @@ M.is_ssh = function() return false end ---- list all active LSP clients for current buffer +--- list all active LSP clients for specific buffer, or all buffers --- @param bufnr int? buffer number --- @return table all active LSP client names M.list_lsp_clients = function(bufnr) - local clients = vim.lsp.get_active_clients({ bufnr = bufnr or 0 }) + local clients = vim.lsp.get_active_clients({ bufnr = bufnr }) local names = {} for _, client in ipairs(clients) do From b16b6a534bd55ba67ecbb5bc0c9ed6befbb18f64 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 12 Mar 2024 15:11:11 +0000 Subject: [PATCH 1255/1588] home: vim: lua: lsp: use 'vim.print' --- modules/home/vim/lua/ambroisie/lsp.lua | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua index 99d8dab..31a5bd1 100644 --- a/modules/home/vim/lua/ambroisie/lsp.lua +++ b/modules/home/vim/lua/ambroisie/lsp.lua @@ -51,8 +51,7 @@ M.on_attach = function(client, bufnr) local wk = require("which-key") local function list_workspace_folders() - local utils = require("ambroisie.utils") - utils.dump(vim.lsp.buf.list_workspace_folders()) + vim.print(vim.lsp.buf.list_workspace_folders()) end local function cycle_diagnostics_display() From d365aba3c0d91a0b1db91a420c2cddacf032a340 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 12 Mar 2024 15:13:20 +0000 Subject: [PATCH 1256/1588] home: vim: lua: utils: remove 'dump' It's now available as 'vim.print'. --- modules/home/vim/lua/ambroisie/utils.lua | 6 ------ 1 file changed, 6 deletions(-) diff --git a/modules/home/vim/lua/ambroisie/utils.lua b/modules/home/vim/lua/ambroisie/utils.lua index a84ea7b..3d2dd3b 100644 --- a/modules/home/vim/lua/ambroisie/utils.lua +++ b/modules/home/vim/lua/ambroisie/utils.lua @@ -1,11 +1,5 @@ local M = {} ---- pretty print lua object ---- @param obj any object to pretty print -M.dump = function(obj) - print(vim.inspect(obj)) -end - --- checks if a given command is executable --- @param cmd string? command to check --- @return boolean executable From 0ff8366105ab0ba6d8da2571c58c9a69bc97b2e5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 13 Mar 2024 13:08:57 +0000 Subject: [PATCH 1257/1588] home: vim: fix path high-lighting It was previously linked to `Underlined`, which just looks plain wrong IMO. This links it back to `GruvboxOrange`, as it used to be. --- modules/home/vim/init.vim | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index bd63d25..0650014 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -88,6 +88,17 @@ set background=dark " 24 bit colors set termguicolors +" Setup some overrides for gruvbox +lua << EOF +local gruvbox = require("gruvbox") + +gruvbox.setup({ + overrides = { + -- Only URLs should be underlined + ["@string.special.path"] = { link = "GruvboxOrange" }, + } +}) +EOF " Use my preferred colorscheme colorscheme gruvbox " }}} From c0ef5c9275217ba76493cc496be441575ea2d09a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 13 Mar 2024 11:54:50 +0000 Subject: [PATCH 1258/1588] overlays: add gruvbox-nvin-expose-palette --- overlays/gruvbox-nvin-expose-palette/default.nix | 4 ++++ overlays/gruvbox-nvin-expose-palette/generated.nix | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 overlays/gruvbox-nvin-expose-palette/default.nix create mode 100644 overlays/gruvbox-nvin-expose-palette/generated.nix diff --git a/overlays/gruvbox-nvin-expose-palette/default.nix b/overlays/gruvbox-nvin-expose-palette/default.nix new file mode 100644 index 0000000..832e71d --- /dev/null +++ b/overlays/gruvbox-nvin-expose-palette/default.nix @@ -0,0 +1,4 @@ +self: prev: +{ + vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); +} diff --git a/overlays/gruvbox-nvin-expose-palette/generated.nix b/overlays/gruvbox-nvin-expose-palette/generated.nix new file mode 100644 index 0000000..c52ad04 --- /dev/null +++ b/overlays/gruvbox-nvin-expose-palette/generated.nix @@ -0,0 +1,14 @@ +{ fetchpatch, ... }: + +_final: prev: { + gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (oa: { + patches = (oa.patches or [ ]) ++ [ + # https://github.com/ellisonleao/gruvbox.nvim/pull/319 + (fetchpatch { + name = "expose-color-palette.patch"; + url = "https://github.com/ellisonleao/gruvbox.nvim/commit/07a493ba4f8b650aab9ed9e486caa89822be0996.patch"; + hash = "sha256-iGwt8qIHe2vaiAUcpaUxyGlM472F89vobTdQ7CF/H70="; + }) + ]; + }); +} From 10b4e6ce2dffdf829a8e13d056273a2767dafec3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Mar 2024 10:56:08 +0000 Subject: [PATCH 1259/1588] home: vim: explicitly revert diff highlighting --- modules/home/vim/init.vim | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index 0650014..c94fc53 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -91,11 +91,17 @@ set termguicolors " Setup some overrides for gruvbox lua << EOF local gruvbox = require("gruvbox") +local colors = gruvbox.palette gruvbox.setup({ overrides = { -- Only URLs should be underlined ["@string.special.path"] = { link = "GruvboxOrange" }, + -- Revert back to the better diff highlighting + DiffAdd = { fg = colors.green, bg = "NONE" }, + DiffChange = { fg = colors.aqua, bg = "NONE" }, + DiffDelete = { fg = colors.red, bg = "NONE" }, + DiffText = { fg = colors.yellow, bg = colors.bg0 }, } }) EOF From 41e1ad326569d65120103748f562d3f72caf6562 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Mar 2024 10:57:21 +0000 Subject: [PATCH 1260/1588] overlays: remove 'gruvbox-nvim-better-diff' Now that I have the explicit override for it, this overlay is not necessary. This reverts commit 9e0930aca4fb0ae40c40c5cd932962e832d0ee0a. This reverts commit 28187c3b8f34c0912d9f8ce5f74f415a6b77a1c2. --- .../gruvbox-nvim-better-diff/colours.patch | 28 ------------------- overlays/gruvbox-nvim-better-diff/default.nix | 4 --- .../gruvbox-nvim-better-diff/generated.nix | 10 ------- 3 files changed, 42 deletions(-) delete mode 100644 overlays/gruvbox-nvim-better-diff/colours.patch delete mode 100644 overlays/gruvbox-nvim-better-diff/default.nix delete mode 100644 overlays/gruvbox-nvim-better-diff/generated.nix diff --git a/overlays/gruvbox-nvim-better-diff/colours.patch b/overlays/gruvbox-nvim-better-diff/colours.patch deleted file mode 100644 index 5b0d61a..0000000 --- a/overlays/gruvbox-nvim-better-diff/colours.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 416b3c9c5e783d173ac0fd5310a76c1b144b92c1 Mon Sep 17 00:00:00 2001 -From: eeeXun <sdes96303@gmail.com> -Date: Thu, 19 Oct 2023 02:34:12 +0800 -Subject: Use better diff colours - ---- - README.md | 3 ++- - lua/gruvbox.lua | 7 ++++--- - 2 files changed, 6 insertions(+), 4 deletions(-) - -diff --git a/lua/gruvbox.lua b/lua/gruvbox.lua -index ceba0735..a319fc6a 100644 ---- a/lua/gruvbox.lua -+++ b/lua/gruvbox.lua -@@ -360,9 +361,9 @@ local function get_groups() - PmenuSel = { fg = colors.bg2, bg = colors.blue, bold = config.bold }, - PmenuSbar = { bg = colors.bg2 }, - PmenuThumb = { bg = colors.bg4 }, -- DiffDelete = { bg = colors.dark_red }, -- DiffAdd = { bg = colors.dark_green }, -- DiffChange = { bg = colors.dark_aqua }, -- DiffText = { bg = colors.yellow, fg = colors.bg0 }, -+ DiffDelete = { fg = colors.red }, -+ DiffAdd = { fg = colors.green }, -+ DiffChange = { fg = colors.aqua }, -+ DiffText = { fg = colors.yellow, bg = colors.bg0 }, - SpellCap = { link = "GruvboxBlueUnderline" }, - SpellBad = { link = "GruvboxRedUnderline" }, diff --git a/overlays/gruvbox-nvim-better-diff/default.nix b/overlays/gruvbox-nvim-better-diff/default.nix deleted file mode 100644 index 832e71d..0000000 --- a/overlays/gruvbox-nvim-better-diff/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -self: prev: -{ - vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); -} diff --git a/overlays/gruvbox-nvim-better-diff/generated.nix b/overlays/gruvbox-nvim-better-diff/generated.nix deleted file mode 100644 index 82a18c2..0000000 --- a/overlays/gruvbox-nvim-better-diff/generated.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ ... }: - -_final: prev: { - gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (oa: { - patches = (oa.patches or [ ]) ++ [ - # Inspired by https://github.com/ellisonleao/gruvbox.nvim/pull/291 - ./colours.patch - ]; - }); -} From 4a01a5053262c45bbeefd5ca4fd8ccff87440f5f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 16 Mar 2024 19:49:00 +0100 Subject: [PATCH 1261/1588] flake: bump inputs And fix the update `pinentry` options in home-manager. --- flake.lock | 24 ++++++++++++------------ hosts/nixos/aramis/home.nix | 4 ++-- modules/home/bitwarden/default.nix | 9 ++------- modules/home/gpg/default.nix | 11 +++-------- 4 files changed, 19 insertions(+), 29 deletions(-) diff --git a/flake.lock b/flake.lock index ce8318f..a42d5dd 100644 --- a/flake.lock +++ b/flake.lock @@ -94,11 +94,11 @@ ] }, "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1709988192, - "narHash": "sha256-qxwIkl85P0I1/EyTT+NJwzbXdOv86vgZxcv4UKicjK8=", + "lastModified": 1710532761, + "narHash": "sha256-SUXGZNrXX05YA9G6EmgupxhOr3swI1gcxLUeDMUhrEY=", "owner": "nix-community", "repo": "home-manager", - "rev": "b0b0c3d94345050a7f86d1ebc6c56eea4389d030", + "rev": "206f457fffdb9a73596a4cb2211a471bd305243d", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1709703039, - "narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=", + "lastModified": 1710451336, + "narHash": "sha256-pP86Pcfu3BrAvRO7R64x7hs+GaQrjFes+mEPowCfkxY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d", + "rev": "d691274a972b3165335d261cc4671335f5c67de9", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1710013455, - "narHash": "sha256-qzOpU4APTso6JLA+/F4zlO/yL8++n/CsUpmxbQAsy/4=", + "lastModified": 1710607749, + "narHash": "sha256-TRgxM7sOiWF8cea73OzDnmfhyYnN8+vDHUUJlkDDZ/U=", "owner": "nix-community", "repo": "NUR", - "rev": "cf1e9b0e085368cc489c765f285f1d07c2ec8d36", + "rev": "b870db4117d587a8c5c2c8c9e2d311d7fa4befe2", "type": "github" }, "original": { diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index 66a0892..64b63ce 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -2,7 +2,7 @@ { my.home = { # Use graphical pinentry - bitwarden.pinentry = "gtk2"; + bitwarden.pinentry = pkgs.pinentry-gtk2; # Ebook library calibre.enable = true; # Some amount of social life @@ -14,7 +14,7 @@ # Blue light filter gammastep.enable = true; # Use a small popup to enter passwords - gpg.pinentry = "gtk2"; + gpg.pinentry = pkgs.pinentry-gtk2; # Machine specific packages packages.additionalPackages = with pkgs; [ element-desktop # Matrix client diff --git a/modules/home/bitwarden/default.nix b/modules/home/bitwarden/default.nix index c709f7b..0c0dfab 100644 --- a/modules/home/bitwarden/default.nix +++ b/modules/home/bitwarden/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.home.bitwarden; in @@ -6,12 +6,7 @@ in options.my.home.bitwarden = with lib; { enable = my.mkDisableOption "bitwarden configuration"; - pinentry = mkOption { - type = types.str; - default = "tty"; - example = "gtk2"; - description = "Which pinentry interface to use"; - }; + pinentry = mkPackageOption pkgs "pinentry" { default = [ "pinentry-tty" ]; }; }; config = lib.mkIf cfg.enable { diff --git a/modules/home/gpg/default.nix b/modules/home/gpg/default.nix index 7eadf48..51c865a 100644 --- a/modules/home/gpg/default.nix +++ b/modules/home/gpg/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.home.gpg; in @@ -6,12 +6,7 @@ in options.my.home.gpg = with lib; { enable = my.mkDisableOption "gpg configuration"; - pinentry = mkOption { - type = types.str; - default = "tty"; - example = "gtk2"; - description = "Which pinentry interface to use"; - }; + pinentry = mkPackageOption pkgs "pinentry" { default = [ "pinentry-tty" ]; }; }; config = lib.mkIf cfg.enable { @@ -22,7 +17,7 @@ in services.gpg-agent = { enable = true; enableSshSupport = true; # One agent to rule them all - pinentryFlavor = cfg.pinentry; + pinentryPackage = cfg.pinentry; extraConfig = '' allow-loopback-pinentry ''; From 61fa35093ce3eb7f3cbcc9ca97dcdb2af471eba5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 22 Mar 2024 22:03:32 +0100 Subject: [PATCH 1262/1588] nixos: services: mealie: fix bulk upload --- modules/nixos/services/mealie/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/nixos/services/mealie/default.nix b/modules/nixos/services/mealie/default.nix index ebbebb2..55ac376 100644 --- a/modules/nixos/services/mealie/default.nix +++ b/modules/nixos/services/mealie/default.nix @@ -66,6 +66,13 @@ in my.services.nginx.virtualHosts = { mealie = { inherit (cfg) port; + + extraConfig = { + # Allow bulk upload of recipes for import/export + locations."/".extraConfig = '' + client_max_body_size 0; + ''; + }; }; }; }; From 607aa5351c94bb52308cc83efc8f0f8f7acaf332 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 22 Mar 2024 22:03:32 +0100 Subject: [PATCH 1263/1588] nixos: services: tandoor-recipes: fix bulk upload --- modules/nixos/services/tandoor-recipes/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix index f5dc2db..48ad7a8 100644 --- a/modules/nixos/services/tandoor-recipes/default.nix +++ b/modules/nixos/services/tandoor-recipes/default.nix @@ -73,6 +73,13 @@ in my.services.nginx.virtualHosts = { recipes = { inherit (cfg) port; + + extraConfig = { + # Allow bulk upload of recipes for import/export + locations."/".extraConfig = '' + client_max_body_size 0; + ''; + }; }; }; }; From 15d0e6bb38b86cd9693dd9c43ee1da4a98744974 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Mar 2024 11:19:33 +0000 Subject: [PATCH 1264/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index a42d5dd..4308e9c 100644 --- a/flake.lock +++ b/flake.lock @@ -116,11 +116,11 @@ ] }, "locked": { - "lastModified": 1703887061, - "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1710532761, - "narHash": "sha256-SUXGZNrXX05YA9G6EmgupxhOr3swI1gcxLUeDMUhrEY=", + "lastModified": 1711604890, + "narHash": "sha256-vbI/gxRTq/gHW1Q8z6D/7JG/qGNl3JTimUDX+MwnC3A=", "owner": "nix-community", "repo": "home-manager", - "rev": "206f457fffdb9a73596a4cb2211a471bd305243d", + "rev": "3142bdcc470e1e291e1fbe942fd69e06bd00c5df", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1710451336, - "narHash": "sha256-pP86Pcfu3BrAvRO7R64x7hs+GaQrjFes+mEPowCfkxY=", + "lastModified": 1711523803, + "narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d691274a972b3165335d261cc4671335f5c67de9", + "rev": "2726f127c15a4cc9810843b96cad73c7eb39e443", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1710607749, - "narHash": "sha256-TRgxM7sOiWF8cea73OzDnmfhyYnN8+vDHUUJlkDDZ/U=", + "lastModified": 1711622043, + "narHash": "sha256-nCNcHYlmmPPIDRkDCvNoEog+AuG7jdmkhkU0fqoS82A=", "owner": "nix-community", "repo": "NUR", - "rev": "b870db4117d587a8c5c2c8c9e2d311d7fa4befe2", + "rev": "b7ff69e152caedbe4d0e40173d61732ac139a09c", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1708018599, - "narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=", + "lastModified": 1711519547, + "narHash": "sha256-Q7YmSCUJmDl71fJv/zD9lrOCJ1/SE/okZ2DsrmRjzhY=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431", + "rev": "7d47a32e5cd1ea481fab33c516356ce27c8cef4a", "type": "github" }, "original": { From 06c64c1a782c2677edbc55a5bebf3332c3fb7d36 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 1 Apr 2024 22:25:37 +0100 Subject: [PATCH 1265/1588] templates: fix 'matrix-notifier' CI step --- templates/c++-cmake/.woodpecker/check.yml | 2 +- templates/c++-meson/.woodpecker/check.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/c++-cmake/.woodpecker/check.yml b/templates/c++-cmake/.woodpecker/check.yml index 9135f7b..8e71643 100644 --- a/templates/c++-cmake/.woodpecker/check.yml +++ b/templates/c++-cmake/.woodpecker/check.yml @@ -24,7 +24,7 @@ steps: - source: matrix_password target: pass commands: - - nix run '.#matrix-notifier' + - nix run github:ambroisie/matrix-notifier when: status: - failure diff --git a/templates/c++-meson/.woodpecker/check.yml b/templates/c++-meson/.woodpecker/check.yml index 9135f7b..8e71643 100644 --- a/templates/c++-meson/.woodpecker/check.yml +++ b/templates/c++-meson/.woodpecker/check.yml @@ -24,7 +24,7 @@ steps: - source: matrix_password target: pass commands: - - nix run '.#matrix-notifier' + - nix run github:ambroisie/matrix-notifier when: status: - failure From 4b5a19a8faade3a5dda68dab7046fb413de31277 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 1 Apr 2024 22:26:21 +0100 Subject: [PATCH 1266/1588] templates: fix deprecated CI syntax --- .woodpecker/check.yml | 18 +++++++++--------- templates/c++-cmake/.woodpecker/check.yml | 18 +++++++++--------- templates/c++-meson/.woodpecker/check.yml | 18 +++++++++--------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.woodpecker/check.yml b/.woodpecker/check.yml index aff6e84..e04cd46 100644 --- a/.woodpecker/check.yml +++ b/.woodpecker/check.yml @@ -9,15 +9,15 @@ steps: - name: notifiy image: bash - secrets: - - source: matrix_homeserver - target: address - - source: matrix_roomid - target: room - - source: matrix_username - target: user - - source: matrix_password - target: pass + environment: + ADDRESS: + from_secret: matrix_homeserver + ROOM: + from_secret: matrix_roomid + USER: + from_secret: matrix_username + PASS: + from_secret: matrix_password commands: - nix run '.#matrix-notifier' when: diff --git a/templates/c++-cmake/.woodpecker/check.yml b/templates/c++-cmake/.woodpecker/check.yml index 8e71643..4ff7dba 100644 --- a/templates/c++-cmake/.woodpecker/check.yml +++ b/templates/c++-cmake/.woodpecker/check.yml @@ -14,15 +14,15 @@ steps: - name: notifiy image: bash - secrets: - - source: matrix_homeserver - target: address - - source: matrix_roomid - target: room - - source: matrix_username - target: user - - source: matrix_password - target: pass + environment: + ADDRESS: + from_secret: matrix_homeserver + ROOM: + from_secret: matrix_roomid + USER: + from_secret: matrix_username + PASS: + from_secret: matrix_password commands: - nix run github:ambroisie/matrix-notifier when: diff --git a/templates/c++-meson/.woodpecker/check.yml b/templates/c++-meson/.woodpecker/check.yml index 8e71643..4ff7dba 100644 --- a/templates/c++-meson/.woodpecker/check.yml +++ b/templates/c++-meson/.woodpecker/check.yml @@ -14,15 +14,15 @@ steps: - name: notifiy image: bash - secrets: - - source: matrix_homeserver - target: address - - source: matrix_roomid - target: room - - source: matrix_username - target: user - - source: matrix_password - target: pass + environment: + ADDRESS: + from_secret: matrix_homeserver + ROOM: + from_secret: matrix_roomid + USER: + from_secret: matrix_username + PASS: + from_secret: matrix_password commands: - nix run github:ambroisie/matrix-notifier when: From 96aa934bec78ee047ba999c25b9d6836c3d576b6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Mar 2024 20:20:41 +0000 Subject: [PATCH 1267/1588] pkgs: zsh-done: fix homepage link --- pkgs/zsh-done/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/zsh-done/default.nix b/pkgs/zsh-done/default.nix index bdb6af3..8fac813 100644 --- a/pkgs/zsh-done/default.nix +++ b/pkgs/zsh-done/default.nix @@ -26,7 +26,7 @@ stdenvNoCC.mkDerivation rec { description = '' A zsh plug-in to receive notifications when long processes finish ''; - homepage = "https://gitea.belanyi.fr/ambroisie/zsh-done"; + homepage = "https://git.belanyi.fr/ambroisie/zsh-done"; license = licenses.mit; platforms = platforms.unix; maintainers = with maintainers; [ ambroisie ]; From d97da124ee39432b20ae3ebeba218f5ed6577589 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Mar 2024 20:20:41 +0000 Subject: [PATCH 1268/1588] templates: fix homepage links --- templates/c++-cmake/flake.nix | 2 +- templates/c++-meson/flake.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/c++-cmake/flake.nix b/templates/c++-cmake/flake.nix index cb468e7..db3b35c 100644 --- a/templates/c++-cmake/flake.nix +++ b/templates/c++-cmake/flake.nix @@ -52,7 +52,7 @@ meta = with lib; { description = "A C++ project"; - homepage = "https://gitea.belanyi.fr/ambroisie/project"; + homepage = "https://git.belanyi.fr/ambroisie/project"; license = licenses.mit; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.unix; diff --git a/templates/c++-meson/flake.nix b/templates/c++-meson/flake.nix index 9cfed0d..5957c62 100644 --- a/templates/c++-meson/flake.nix +++ b/templates/c++-meson/flake.nix @@ -52,7 +52,7 @@ meta = with lib; { description = "A C++ project"; - homepage = "https://gitea.belanyi.fr/ambroisie/project"; + homepage = "https://git.belanyi.fr/ambroisie/project"; license = licenses.mit; maintainers = with maintainers; [ ambroisie ]; platforms = platforms.unix; From 8a4fdf6a56f69e9dbf6852a520ab43257c7731b1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Mar 2024 20:21:41 +0000 Subject: [PATCH 1269/1588] templates: fix description typo --- templates/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/default.nix b/templates/default.nix index f58fd72..31c3a81 100644 --- a/templates/default.nix +++ b/templates/default.nix @@ -5,6 +5,6 @@ }; "c++-meson" = { path = ./c++-meson; - description = "A C++ project using CMake"; + description = "A C++ project using Meson"; }; } From f729f6a0980b439ed3d8143f2af82860c27bd5bd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 2 Apr 2024 12:25:05 +0200 Subject: [PATCH 1270/1588] hosts: nixos: porthos: secrets: add 'lohr' owner --- hosts/nixos/porthos/secrets/secrets.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index bea380c..c43376b 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -31,8 +31,14 @@ in publicKeys = all; }; - "lohr/secret.age".publicKeys = all; - "lohr/ssh-key.age".publicKeys = all; + "lohr/secret.age" = { + owner = "lohr"; + publicKeys = all; + }; + "lohr/ssh-key.age" = { + owner = "lohr"; + publicKeys = all; + }; "matrix/mail.age" = { owner = "matrix-synapse"; From 8f120e2129ceb2e32945cb5eecaaf43968d8f9cf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 2 Apr 2024 12:25:34 +0200 Subject: [PATCH 1271/1588] nixos: services: lohr: fix SSH key creation In the migration to `tmpfiles.d(5)`, I used the wrong type of file. Using `f` would write the path to the file as its content, rather than copy it. Unfortunately `C` and `C+` do not overwrite an existing file, so using a symlink it the correct solution here. This means the SSH key file must have `lohr` as an owner... Perhaps I should make it so the service can read the file itself, rather than rely on the filesystem location, so that I don't have to contort myself quite so much to make it work. --- modules/nixos/services/lohr/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/lohr/default.nix b/modules/nixos/services/lohr/default.nix index 21aadba..21ed93b 100644 --- a/modules/nixos/services/lohr/default.nix +++ b/modules/nixos/services/lohr/default.nix @@ -99,7 +99,7 @@ in }; }; "${lohrHome}/.ssh/id_ed25519" = { - "f+" = { + "L+" = { user = "lohr"; group = "lohr"; mode = "0700"; From 10a3e684c8fa837958210610c920e3dd83bfcf55 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 7 Apr 2024 13:28:26 +0200 Subject: [PATCH 1272/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 4308e9c..808a777 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1707830867, - "narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=", + "lastModified": 1712079060, + "narHash": "sha256-/JdiT9t+zzjChc5qQiF+jhrVhRt8figYH29rZO7pFe4=", "owner": "ryantm", "repo": "agenix", - "rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6", + "rev": "1381a759b205dff7a6818733118d02253340fd5e", "type": "github" }, "original": { @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1709336216, - "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1711604890, - "narHash": "sha256-vbI/gxRTq/gHW1Q8z6D/7JG/qGNl3JTimUDX+MwnC3A=", + "lastModified": 1712390667, + "narHash": "sha256-ebq+fJZfobqpsAdGDGpxNWSySbQejRwW9cdiil6krCo=", "owner": "nix-community", "repo": "home-manager", - "rev": "3142bdcc470e1e291e1fbe942fd69e06bd00c5df", + "rev": "b787726a8413e11b074cde42704b4af32d95545c", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1711523803, - "narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=", + "lastModified": 1712439257, + "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2726f127c15a4cc9810843b96cad73c7eb39e443", + "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1711622043, - "narHash": "sha256-nCNcHYlmmPPIDRkDCvNoEog+AuG7jdmkhkU0fqoS82A=", + "lastModified": 1712485930, + "narHash": "sha256-Gx1kXJYnYENoJKWdZpTSDj9fAbnhSzp/cTpFFIXre/M=", "owner": "nix-community", "repo": "NUR", - "rev": "b7ff69e152caedbe4d0e40173d61732ac139a09c", + "rev": "e4dfbd7eb86b3ac1bf5b7d5c4ca200dba5cbb5a9", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1711519547, - "narHash": "sha256-Q7YmSCUJmDl71fJv/zD9lrOCJ1/SE/okZ2DsrmRjzhY=", + "lastModified": 1712055707, + "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "7d47a32e5cd1ea481fab33c516356ce27c8cef4a", + "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", "type": "github" }, "original": { From 6b51b4e2ab49dfe4a853ad5873e9d4741eafaefa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 7 Apr 2024 13:30:40 +0200 Subject: [PATCH 1273/1588] nixos: services: rss-bridge: fix deprecated option --- modules/nixos/services/rss-bridge/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/nixos/services/rss-bridge/default.nix b/modules/nixos/services/rss-bridge/default.nix index 85e37c2..52b1030 100644 --- a/modules/nixos/services/rss-bridge/default.nix +++ b/modules/nixos/services/rss-bridge/default.nix @@ -11,7 +11,9 @@ in config = lib.mkIf cfg.enable { services.rss-bridge = { enable = true; - whitelist = [ "*" ]; # Whitelist all + config = { + system.enabled_bridges = [ "*" ]; # Whitelist all + }; virtualHost = "rss-bridge.${config.networking.domain}"; }; From 6efe2c12ba7e580418ca8a17b14185422defa67e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 8 Apr 2024 21:19:54 +0200 Subject: [PATCH 1274/1588] nixos: services: woodpecker: exec: fix NodeJS I need it for Tree Sitter support... --- modules/nixos/services/woodpecker/agent-exec/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/woodpecker/agent-exec/default.nix b/modules/nixos/services/woodpecker/agent-exec/default.nix index 7ae21c8..24161b0 100644 --- a/modules/nixos/services/woodpecker/agent-exec/default.nix +++ b/modules/nixos/services/woodpecker/agent-exec/default.nix @@ -44,6 +44,8 @@ in serviceConfig = { # Same option as upstream, without @setuid SystemCallFilter = lib.mkForce "~@clock @privileged @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @reboot @swap"; + # NodeJS requires RWX memory... + MemoryDenyWriteExecute = lib.mkForce false; BindPaths = [ "/nix/var/nix/daemon-socket/socket" From 3e6b9f716167eef4c6a030f4c6570f4ea28a7c44 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Apr 2024 10:01:17 +0000 Subject: [PATCH 1275/1588] home: vim: ftdetect: add bp Unfortunately, the `blueprint` filetype name is already taken... --- modules/home/vim/ftdetect/blueprint.lua | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 modules/home/vim/ftdetect/blueprint.lua diff --git a/modules/home/vim/ftdetect/blueprint.lua b/modules/home/vim/ftdetect/blueprint.lua new file mode 100644 index 0000000..d3fb395 --- /dev/null +++ b/modules/home/vim/ftdetect/blueprint.lua @@ -0,0 +1,6 @@ +-- Use `bp` filetype for Blueprint files +vim.filetype.add({ + extension = { + bp = "bp", + }, +}) From 95c688766f7af1bd06e22ce150aa4628167455d8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Apr 2024 10:01:17 +0000 Subject: [PATCH 1276/1588] home: vim: ftplugin: add bp --- modules/home/vim/after/ftplugin/bp.vim | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 modules/home/vim/after/ftplugin/bp.vim diff --git a/modules/home/vim/after/ftplugin/bp.vim b/modules/home/vim/after/ftplugin/bp.vim new file mode 100644 index 0000000..1224e7a --- /dev/null +++ b/modules/home/vim/after/ftplugin/bp.vim @@ -0,0 +1,7 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Add comment format +setlocal comments=b://,s1:/*,mb:*,ex:*/ +setlocal commentstring=//\ %s +let b:undo_ftplugin.='|setlocal comments< commentstring<' From a4ede5f6f403a6f73d8ac34ee56892be2e1a4f4f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 10 May 2023 13:04:06 +0000 Subject: [PATCH 1277/1588] templates: add rust-cargo --- templates/default.nix | 4 + templates/rust-cargo/.envrc | 5 + templates/rust-cargo/.gitignore | 6 ++ templates/rust-cargo/.woodpecker/check.yml | 31 ++++++ templates/rust-cargo/Cargo.lock | 7 ++ templates/rust-cargo/Cargo.toml | 8 ++ templates/rust-cargo/flake.nix | 112 +++++++++++++++++++++ templates/rust-cargo/rustfmt.toml | 0 templates/rust-cargo/src/main.rs | 3 + 9 files changed, 176 insertions(+) create mode 100644 templates/rust-cargo/.envrc create mode 100644 templates/rust-cargo/.gitignore create mode 100644 templates/rust-cargo/.woodpecker/check.yml create mode 100644 templates/rust-cargo/Cargo.lock create mode 100644 templates/rust-cargo/Cargo.toml create mode 100644 templates/rust-cargo/flake.nix create mode 100644 templates/rust-cargo/rustfmt.toml create mode 100644 templates/rust-cargo/src/main.rs diff --git a/templates/default.nix b/templates/default.nix index 31c3a81..44db753 100644 --- a/templates/default.nix +++ b/templates/default.nix @@ -7,4 +7,8 @@ path = ./c++-meson; description = "A C++ project using Meson"; }; + "rust-cargo" = { + path = ./rust-cargo; + description = "A Rust project using Cargo"; + }; } diff --git a/templates/rust-cargo/.envrc b/templates/rust-cargo/.envrc new file mode 100644 index 0000000..de77fcb --- /dev/null +++ b/templates/rust-cargo/.envrc @@ -0,0 +1,5 @@ +if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" +fi + +use flake diff --git a/templates/rust-cargo/.gitignore b/templates/rust-cargo/.gitignore new file mode 100644 index 0000000..5f360ff --- /dev/null +++ b/templates/rust-cargo/.gitignore @@ -0,0 +1,6 @@ +# Rust build directory +/target + +# Nix generated files +/.pre-commit-config.yaml +/result diff --git a/templates/rust-cargo/.woodpecker/check.yml b/templates/rust-cargo/.woodpecker/check.yml new file mode 100644 index 0000000..4ff7dba --- /dev/null +++ b/templates/rust-cargo/.woodpecker/check.yml @@ -0,0 +1,31 @@ +labels: + backend: local + +steps: +- name: pre-commit check + image: bash + commands: + - nix develop --command pre-commit run --all + +- name: nix flake check + image: bash + commands: + - nix flake check + +- name: notifiy + image: bash + environment: + ADDRESS: + from_secret: matrix_homeserver + ROOM: + from_secret: matrix_roomid + USER: + from_secret: matrix_username + PASS: + from_secret: matrix_password + commands: + - nix run github:ambroisie/matrix-notifier + when: + status: + - failure + - success diff --git a/templates/rust-cargo/Cargo.lock b/templates/rust-cargo/Cargo.lock new file mode 100644 index 0000000..4f9c86e --- /dev/null +++ b/templates/rust-cargo/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "project" +version = "0.0.0" diff --git a/templates/rust-cargo/Cargo.toml b/templates/rust-cargo/Cargo.toml new file mode 100644 index 0000000..4dfdc0b --- /dev/null +++ b/templates/rust-cargo/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "project" +version = "0.0.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/templates/rust-cargo/flake.nix b/templates/rust-cargo/flake.nix new file mode 100644 index 0000000..6d50369 --- /dev/null +++ b/templates/rust-cargo/flake.nix @@ -0,0 +1,112 @@ +{ + description = "A Rust project"; + + inputs = { + futils = { + type = "github"; + owner = "numtide"; + repo = "flake-utils"; + ref = "main"; + }; + + nixpkgs = { + type = "github"; + owner = "NixOS"; + repo = "nixpkgs"; + ref = "nixos-unstable"; + }; + + pre-commit-hooks = { + type = "github"; + owner = "cachix"; + repo = "pre-commit-hooks.nix"; + ref = "master"; + inputs = { + flake-utils.follows = "futils"; + nixpkgs.follows = "nixpkgs"; + }; + }; + }; + + outputs = { self, futils, nixpkgs, pre-commit-hooks }: + { + overlays = { + default = final: _prev: { + project = with final; rustPlatform.buildRustPackage { + pname = "project"; + version = (final.lib.importTOML ./Cargo.toml).package.version; + + src = self; + + cargoLock = { + lockFile = "${self}/Cargo.lock"; + }; + + meta = with lib; { + description = "A Rust project"; + homepage = "https://git.belanyi.fr/ambroisie/project"; + license = licenses.mit; + maintainers = with maintainers; [ ambroisie ]; + }; + }; + }; + }; + } // futils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ + self.overlays.default + ]; + }; + + pre-commit = pre-commit-hooks.lib.${system}.run { + src = self; + + hooks = { + clippy = { + enable = true; + settings = { + denyWarnings = true; + }; + }; + + nixpkgs-fmt = { + enable = true; + }; + + rustfmt = { + enable = true; + }; + }; + }; + in + { + checks = { + inherit (self.packages.${system}) project; + }; + + devShells = { + default = pkgs.mkShell { + inputsFrom = with self.packages.${system}; [ + project + ]; + + packages = with pkgs; [ + clippy + rust-analyzer + rustfmt + ]; + + RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + + inherit (pre-commit) shellHook; + }; + }; + + packages = futils.lib.flattenTree { + default = pkgs.project; + inherit (pkgs) project; + }; + }); +} diff --git a/templates/rust-cargo/rustfmt.toml b/templates/rust-cargo/rustfmt.toml new file mode 100644 index 0000000..e69de29 diff --git a/templates/rust-cargo/src/main.rs b/templates/rust-cargo/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/templates/rust-cargo/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} From 7e0cb867deb17d2f5b23670510147bb6dc59470f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Apr 2024 15:19:29 +0000 Subject: [PATCH 1278/1588] pkgs: remove 'digestpp' I have packaged it upstream. --- pkgs/default.nix | 2 -- pkgs/digestpp/default.nix | 31 ------------------------------- 2 files changed, 33 deletions(-) delete mode 100644 pkgs/digestpp/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index e82a90c..a45bd7f 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -12,8 +12,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { diff-flake = pkgs.callPackage ./diff-flake { }; - digestpp = pkgs.callPackage ./digestpp { }; - dragger = pkgs.callPackage ./dragger { }; drone-rsync = pkgs.callPackage ./drone-rsync { }; diff --git a/pkgs/digestpp/default.nix b/pkgs/digestpp/default.nix deleted file mode 100644 index 2fd90db..0000000 --- a/pkgs/digestpp/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ lib -, fetchFromGitHub -, stdenv -}: -stdenv.mkDerivation { - pname = "digestpp"; - version = "0-unstable-2023-11-07"; - - src = fetchFromGitHub { - owner = "kerukuro"; - repo = "digestpp"; - rev = "ebb699402c244e22c3aff61d2239bcb2e87b8ef8"; - hash = "sha256-9X/P7DgZB6bSYjQWRli4iAXEFjhmACOVv3EYQrXuH5c="; - }; - - installPhase = '' - runHook preInstall - - mkdir -p $out/include/digestpp - cp -r *.hpp algorithm/ detail/ $out/include/digestpp - - runHook postInstall - ''; - - meta = with lib; { - description = "C++11 header-only message digest library"; - homepage = "https://github.com/kerukuro/digestpp"; - license = licenses.unlicense; - maintainers = with maintainers; [ ambroisie ]; - }; -} From e43cdbfa6519753cb5fb6d674d88eeecbd03e9ab Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Apr 2024 15:19:56 +0000 Subject: [PATCH 1279/1588] pkgs: remove 'sqlite_orm' I have packaged it upstream. --- pkgs/default.nix | 2 -- pkgs/sqlite_orm/default.nix | 32 -------------------------------- 2 files changed, 34 deletions(-) delete mode 100644 pkgs/sqlite_orm/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index a45bd7f..0212887 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -28,8 +28,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { rbw-pass = pkgs.callPackage ./rbw-pass { }; - sqlite_orm = pkgs.callPackage ./sqlite_orm { }; - unbound-zones-adblock = pkgs.callPackage ./unbound-zones-adblock { }; zsh-done = pkgs.callPackage ./zsh-done { }; diff --git a/pkgs/sqlite_orm/default.nix b/pkgs/sqlite_orm/default.nix deleted file mode 100644 index 3891eee..0000000 --- a/pkgs/sqlite_orm/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ lib -, cmake -, fetchFromGitHub -, sqlite -, stdenv -}: -stdenv.mkDerivation (finalAttrs: { - pname = "sqlite_orm"; - version = "1.8.2"; - - src = fetchFromGitHub { - owner = "fnc12"; - repo = "sqlite_orm"; - rev = "v${finalAttrs.version}"; - hash = "sha256-KqphGFcnR1Y11KqL7sxODSv7lEvcURdF6kLd3cg84kc="; - }; - - nativeBuildInputs = [ - cmake - ]; - - propagatedBuildInputs = [ - sqlite - ]; - - meta = with lib; { - description = "Light header only SQLite ORM"; - homepage = "https://sqliteorm.com/"; - license = licenses.agpl3Only; # MIT license is commercial - maintainers = with maintainers; [ ambroisie ]; - }; -}) From 06b760e3ee7ffe73a78753295a6d4e10ef6fe98a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Apr 2024 15:20:09 +0000 Subject: [PATCH 1280/1588] pkgs: remove 'bt-migrate' I have packaged it upstream. --- pkgs/bt-migrate/default.nix | 61 ------------------------------------- pkgs/default.nix | 2 -- 2 files changed, 63 deletions(-) delete mode 100644 pkgs/bt-migrate/default.nix diff --git a/pkgs/bt-migrate/default.nix b/pkgs/bt-migrate/default.nix deleted file mode 100644 index df99c55..0000000 --- a/pkgs/bt-migrate/default.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ lib -, boost -, cmake -, cxxopts -, digestpp -, fetchFromGitHub -, fmt -, jsoncons -, pugixml -, sqlite_orm -, stdenv -}: -stdenv.mkDerivation { - pname = "bt-migrate"; - version = "0-unstable-2023-08-17"; - - src = fetchFromGitHub { - owner = "mikedld"; - repo = "bt-migrate"; - rev = "e15a489c0c76f98355586ebbee08223af4e9bf50"; - hash = "sha256-kA6yxhbIh3ThmgF8Zyoe3I79giLVmdNr9IIrw5Xx4s0="; - }; - - nativeBuildInputs = [ - cmake - ]; - - buildInputs = [ - boost - cxxopts - fmt - jsoncons - pugixml - sqlite_orm - ]; - - cmakeFlags = [ - (lib.strings.cmakeBool "USE_VCPKG" false) - # NOTE: digestpp does not have proper CMake packaging (yet?) - (lib.strings.cmakeBool "USE_FETCHCONTENT" true) - (lib.strings.cmakeFeature "FETCHCONTENT_SOURCE_DIR_DIGESTPP" "${digestpp}/include/digestpp") - ]; - - # NOTE: no install target in CMake... - installPhase = '' - runHook preInstall - - mkdir -p $out/bin - cp BtMigrate $out/bin - - runHook postInstall - ''; - - meta = with lib; { - description = "Torrent state migration tool"; - homepage = "https://github.com/mikedld/bt-migrate"; - license = licenses.gpl3Only; - maintainers = with maintainers; [ ambroisie ]; - mainProgram = "BtMigrate"; - }; -} diff --git a/pkgs/default.nix b/pkgs/default.nix index 0212887..6b7fce1 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,7 +1,5 @@ { pkgs }: pkgs.lib.makeScope pkgs.newScope (pkgs: { - bt-migrate = pkgs.callPackage ./bt-migrate { }; - bw-pass = pkgs.callPackage ./bw-pass { }; change-audio = pkgs.callPackage ./change-audio { }; From 6a22a80d4203111dd77bcd4ae7594f2ae194403b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 15 Apr 2024 14:06:21 +0000 Subject: [PATCH 1281/1588] home: direnv: update default flake Now that I (usually?) override `nixpkgs` in the registry, there's not much use in defaulting to `pkgs`. --- modules/home/direnv/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/direnv/default.nix b/modules/home/direnv/default.nix index 93a1f3b..4f1f4b6 100644 --- a/modules/home/direnv/default.nix +++ b/modules/home/direnv/default.nix @@ -8,8 +8,8 @@ in defaultFlake = mkOption { type = types.str; - default = "pkgs"; - example = "nixpkgs"; + default = "nixpkgs"; + example = "pkgs"; description = '' Which flake from the registry should be used for <command>use pkgs</command> by default. From b735eb4b98fd60f3e3f3bcdca33aec1eedc4719e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 15 Apr 2024 14:08:00 +0000 Subject: [PATCH 1282/1588] home: direnv: set 'DIRENV_DEFAULT_FLAKE' as needed --- modules/home/direnv/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/home/direnv/default.nix b/modules/home/direnv/default.nix index 4f1f4b6..67beb62 100644 --- a/modules/home/direnv/default.nix +++ b/modules/home/direnv/default.nix @@ -7,8 +7,8 @@ in enable = my.mkDisableOption "direnv configuration"; defaultFlake = mkOption { - type = types.str; - default = "nixpkgs"; + type = with types; nullOr str; + default = null; example = "pkgs"; description = '' Which flake from the registry should be used for @@ -39,7 +39,7 @@ in in lib.my.genAttrs' files linkLibFile; - home.sessionVariables = { + home.sessionVariables = lib.mkIf (cfg.defaultFlake != null) { DIRENV_DEFAULT_FLAKE = cfg.defaultFlake; }; }; From f9db06a6d43d4fdce7595c6a5b5acfe7af84b971 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 22 Apr 2024 20:58:45 +0200 Subject: [PATCH 1283/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 808a777..8ee39d7 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1712390667, - "narHash": "sha256-ebq+fJZfobqpsAdGDGpxNWSySbQejRwW9cdiil6krCo=", + "lastModified": 1713809191, + "narHash": "sha256-9Tb5JKcacjxNF1f7gsu/4l4Gxa2qflq9x1hhdl10iwM=", "owner": "nix-community", "repo": "home-manager", - "rev": "b787726a8413e11b074cde42704b4af32d95545c", + "rev": "e866aae5bbbcfe6798ca05d3004a4e62f1828954", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712439257, - "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1712485930, - "narHash": "sha256-Gx1kXJYnYENoJKWdZpTSDj9fAbnhSzp/cTpFFIXre/M=", + "lastModified": 1713810384, + "narHash": "sha256-ze9APypWwgcNXvtc+Y/In/PCGmIzm/VefrwQKG7ge7E=", "owner": "nix-community", "repo": "NUR", - "rev": "e4dfbd7eb86b3ac1bf5b7d5c4ca200dba5cbb5a9", + "rev": "5d454967f1d978fe45956d25ed7ee15b9910da18", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1712055707, - "narHash": "sha256-4XLvuSIDZJGS17xEwSrNuJLL7UjDYKGJSbK1WWX2AK8=", + "lastModified": 1713775815, + "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e35aed5fda3cc79f88ed7f1795021e559582093a", + "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", "type": "github" }, "original": { From c18054cad72c92a347a87ddaa63bf1b0ffa2a023 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 21 Mar 2024 20:30:25 +0100 Subject: [PATCH 1284/1588] nixos: services: podgrab: use 'media' group --- modules/nixos/services/podgrab/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/nixos/services/podgrab/default.nix b/modules/nixos/services/podgrab/default.nix index 5ceebb6..f1a8eb2 100644 --- a/modules/nixos/services/podgrab/default.nix +++ b/modules/nixos/services/podgrab/default.nix @@ -29,8 +29,13 @@ in services.podgrab = { enable = true; inherit (cfg) passwordFile port; + + group = "media"; }; + # Set-up media group + users.groups.media = { }; + my.services.nginx.virtualHosts = { podgrab = { inherit (cfg) port; From 5df0574f41017e67462fcc7809fd117f2f7944be Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 21 Mar 2024 20:30:25 +0100 Subject: [PATCH 1285/1588] nixos: services: podgrab: add 'dataDir' --- modules/nixos/services/podgrab/default.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/nixos/services/podgrab/default.nix b/modules/nixos/services/podgrab/default.nix index f1a8eb2..ea89e4e 100644 --- a/modules/nixos/services/podgrab/default.nix +++ b/modules/nixos/services/podgrab/default.nix @@ -17,6 +17,15 @@ in ''; }; + dataDir = mkOption { + type = with types; nullOr str; + default = null; + example = "/mnt/podgrab"; + description = '' + Path to the directory to store the podcasts. Use default if null + ''; + }; + port = mkOption { type = types.port; default = 8080; @@ -31,6 +40,7 @@ in inherit (cfg) passwordFile port; group = "media"; + dataDirectory = lib.mkIf (cfg.dataDir != null) cfg.dataDir; }; # Set-up media group From 7ebbb10568f12929b54308d6aa96defad93c9d82 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 21 Mar 2024 20:32:05 +0100 Subject: [PATCH 1286/1588] hosts: nixos: porthos: migrate podgrab 'dataDir' I want to share it with `audiobookshelf`, so putting it in `/data/media` makes it easier. --- hosts/nixos/porthos/services.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index a67ae3b..d84c2fa 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -134,6 +134,7 @@ in podgrab = { enable = true; passwordFile = secrets."podgrab/password".path; + dataDir = "/data/media/podcasts"; port = 9598; }; # Regular backups From 2dedb41a47e83aa3a86b4ad8062d7348fa7a35c9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 21 Mar 2024 19:59:34 +0100 Subject: [PATCH 1287/1588] nixos: services: add audiobookshelf --- .../nixos/services/audiobookshelf/default.nix | 39 +++++++++++++++++++ modules/nixos/services/default.nix | 1 + 2 files changed, 40 insertions(+) create mode 100644 modules/nixos/services/audiobookshelf/default.nix diff --git a/modules/nixos/services/audiobookshelf/default.nix b/modules/nixos/services/audiobookshelf/default.nix new file mode 100644 index 0000000..8c9719d --- /dev/null +++ b/modules/nixos/services/audiobookshelf/default.nix @@ -0,0 +1,39 @@ +# Audiobook and podcast library +{ config, lib, ... }: +let + cfg = config.my.services.audiobookshelf; +in +{ + options.my.services.audiobookshelf = with lib; { + enable = mkEnableOption "Audiobookshelf, a self-hosted podcast manager"; + + port = mkOption { + type = types.port; + default = 8000; + example = 4242; + description = "The port on which Audiobookshelf will listen for incoming HTTP traffic."; + }; + }; + + config = lib.mkIf cfg.enable { + services.audiobookshelf = { + enable = true; + inherit (cfg) port; + + group = "media"; + }; + + # Set-up media group + users.groups.media = { }; + + my.services.nginx.virtualHosts = { + audiobookshelf = { + inherit (cfg) port; + # Proxy websockets for RPC + extraConfig = { + locations."/".proxyWebsockets = true; + }; + }; + }; + }; +} diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 3b32d06..60b2478 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -4,6 +4,7 @@ imports = [ ./adblock ./aria + ./audiobookshelf ./backup ./blog ./calibre-web From 929c8ea9b0322339429113318440336e2931fbe2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 21 Mar 2024 20:00:17 +0100 Subject: [PATCH 1288/1588] hosts: nixos: porthos: services: audiobookshelf --- hosts/nixos/porthos/services.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index d84c2fa..23901f7 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -10,6 +10,11 @@ in adblock = { enable = true; }; + # Audiobook and podcast library + audiobookshelf = { + enable = true; + port = 9599; + }; # Backblaze B2 backup backup = { enable = true; From df79f36c873d08fabe18ec8bfcb87ff6f5eb4edd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 4 May 2024 16:06:14 +0200 Subject: [PATCH 1289/1588] flake: bump inputs --- flake.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/flake.lock b/flake.lock index 8ee39d7..c1084e9 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1712079060, - "narHash": "sha256-/JdiT9t+zzjChc5qQiF+jhrVhRt8figYH29rZO7pFe4=", + "lastModified": 1714136352, + "narHash": "sha256-BtWQ2Th/jamO1SlD+2ASSW5Jaf7JhA/JLpQHk0Goqpg=", "owner": "ryantm", "repo": "agenix", - "rev": "1381a759b205dff7a6818733118d02253340fd5e", + "rev": "24a7ea390564ccd5b39b7884f597cfc8d7f6f44e", "type": "github" }, "original": { @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "lastModified": 1714641030, + "narHash": "sha256-yzcRNDoyVP7+SCNX0wmuDju1NUCt8Dz9+lyUXEI0dbI=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "rev": "e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1713809191, - "narHash": "sha256-9Tb5JKcacjxNF1f7gsu/4l4Gxa2qflq9x1hhdl10iwM=", + "lastModified": 1714679908, + "narHash": "sha256-KzcXzDvDJjX34en8f3Zimm396x6idbt+cu4tWDVS2FI=", "owner": "nix-community", "repo": "home-manager", - "rev": "e866aae5bbbcfe6798ca05d3004a4e62f1828954", + "rev": "9036fe9ef8e15a819fa76f47a8b1f287903fb848", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1714635257, + "narHash": "sha256-4cPymbty65RvF1DWQfc+Bc8B233A1BWxJnNULJKQ1EY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "63c3a29ca82437c87573e4c6919b09a24ea61b0f", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1713810384, - "narHash": "sha256-ze9APypWwgcNXvtc+Y/In/PCGmIzm/VefrwQKG7ge7E=", + "lastModified": 1714825428, + "narHash": "sha256-6U4cppyR0u6sqSSVr3GMrnIXhP2YGR0knfgrUGtr/1Y=", "owner": "nix-community", "repo": "NUR", - "rev": "5d454967f1d978fe45956d25ed7ee15b9910da18", + "rev": "5847f3365c16afafc10c56994beadd4cdc8552ee", "type": "github" }, "original": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "lastModified": 1714478972, + "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "rev": "2849da033884f54822af194400f8dff435ada242", "type": "github" }, "original": { From 8d2cf7f2c0a133e718f147222db9ae04d68c1155 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 4 May 2024 16:06:24 +0200 Subject: [PATCH 1290/1588] nixos: profiles: laptop: fix renamed option --- modules/nixos/profiles/laptop/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/profiles/laptop/default.nix b/modules/nixos/profiles/laptop/default.nix index 20a29d7..68c65b8 100644 --- a/modules/nixos/profiles/laptop/default.nix +++ b/modules/nixos/profiles/laptop/default.nix @@ -9,7 +9,7 @@ in config = lib.mkIf cfg.enable { # Enable touchpad support - services.xserver.libinput.enable = true; + services.libinput.enable = true; # Enable TLP power management my.services.tlp.enable = true; From 6162f4f4d52fc3bd2bcac2659ce6fc836a959345 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 4 May 2024 22:51:11 +0200 Subject: [PATCH 1291/1588] modules: services: nextcloud: bump to 29 --- modules/nixos/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index 51195df..bb3169a 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -31,7 +31,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud28; + package = pkgs.nextcloud29; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From 48beb9f1fe7cba2554da18727a2c0a2b34393d17 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 7 May 2024 11:10:29 +0000 Subject: [PATCH 1292/1588] nixos: services: postgres: simplify update script --- modules/nixos/services/postgresql/default.nix | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/modules/nixos/services/postgresql/default.nix b/modules/nixos/services/postgresql/default.nix index 6f51f3e..1c06736 100644 --- a/modules/nixos/services/postgresql/default.nix +++ b/modules/nixos/services/postgresql/default.nix @@ -27,17 +27,26 @@ in environment.systemPackages = let - newpg = config.containers.temp-pg.config.services.postgresql; + pgCfg = config.services.postgresql; + newPackage' = pkgs.postgresql_13; + + oldPackage = if pgCfg.enableJIT then pgCfg.package.withJIT else pgCfg.package; + oldData = pgCfg.dataDir; + oldBin = "${if pgCfg.extraPlugins == [] then oldPackage else oldPackage.withPackages pgCfg.extraPlugins}/bin"; + + newPackage = if pgCfg.enableJIT then newPackage'.withJIT else newPackage'; + newData = "/var/lib/postgresql/${newPackage.psqlSchema}"; + newBin = "${if pgCfg.extraPlugins == [] then newPackage else newPackage.withPackages pgCfg.extraPlugins}/bin"; in [ (pkgs.writeScriptBin "upgrade-pg-cluster" '' #!/usr/bin/env bash - set -x - export OLDDATA="${config.services.postgresql.dataDir}" - export NEWDATA="${newpg.dataDir}" - export OLDBIN="${config.services.postgresql.package}/bin" - export NEWBIN="${newpg.package}/bin" + set -eux + export OLDDATA="${oldData}" + export NEWDATA="${newData}" + export OLDBIN="${oldBin}" + export NEWBIN="${newBin}" if [ "$OLDDATA" -ef "$NEWDATA" ]; then echo "Cannot migrate to same data directory" >&2 @@ -46,13 +55,13 @@ in install -d -m 0700 -o postgres -g postgres "$NEWDATA" cd "$NEWDATA" - sudo -u postgres $NEWBIN/initdb -D "$NEWDATA" + sudo -u postgres "$NEWBIN/initdb" -D "$NEWDATA" systemctl stop postgresql # old one - sudo -u postgres $NEWBIN/pg_upgrade \ + sudo -u postgres "$NEWBIN/pg_upgrade" \ --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ - --old-bindir $OLDBIN --new-bindir $NEWBIN \ + --old-bindir "$OLDBIN" --new-bindir "$NEWBIN" \ "$@" '') ]; From 0745e450b9a28041b875012eb935b224b3a05862 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 7 May 2024 11:40:03 +0000 Subject: [PATCH 1293/1588] nixos: services: postgres: remove unused container --- modules/nixos/services/postgresql/default.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/nixos/services/postgresql/default.nix b/modules/nixos/services/postgresql/default.nix index 1c06736..7559bb6 100644 --- a/modules/nixos/services/postgresql/default.nix +++ b/modules/nixos/services/postgresql/default.nix @@ -20,11 +20,6 @@ in # Taken from the manual (lib.mkIf cfg.upgradeScript { - containers.temp-pg.config.services.postgresql = { - enable = true; - package = pkgs.postgresql_13; - }; - environment.systemPackages = let pgCfg = config.services.postgresql; From f6c476a07f2e7d1e8671cfe01a749d7ca5a0e4a2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 7 May 2024 11:20:40 +0000 Subject: [PATCH 1294/1588] nixos: services: postgres: add post-upgrade advice --- modules/nixos/services/postgresql/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/nixos/services/postgresql/default.nix b/modules/nixos/services/postgresql/default.nix index 7559bb6..bbe46d4 100644 --- a/modules/nixos/services/postgresql/default.nix +++ b/modules/nixos/services/postgresql/default.nix @@ -58,6 +58,13 @@ in --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ --old-bindir "$OLDBIN" --new-bindir "$NEWBIN" \ "$@" + + cat << EOF + Run the following commands after setting: + services.postgresql.package = pkgs.postgresql_${lib.versions.major newPackage.version} + sudo -u postgres vacuumdb --all --analyze-in-stages + ${newData}/delete_old_cluster.sh + EOF '') ]; }) From 811a9f44c59545ca6944328e54138dca9ead2896 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 10 May 2024 09:35:47 +0000 Subject: [PATCH 1295/1588] home: vim: ftplugin: add json --- modules/home/vim/after/ftplugin/json.vim | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 modules/home/vim/after/ftplugin/json.vim diff --git a/modules/home/vim/after/ftplugin/json.vim b/modules/home/vim/after/ftplugin/json.vim new file mode 100644 index 0000000..3f7b09d --- /dev/null +++ b/modules/home/vim/after/ftplugin/json.vim @@ -0,0 +1,6 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Use a small indentation value on JSON files +setlocal shiftwidth=2 +let b:undo_ftplugin.='|setlocal shiftwidth<' From 1cba7b609daacf7ef6c5c3ff0f8b3f3c865c92dc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 13 May 2024 14:28:45 +0000 Subject: [PATCH 1296/1588] home: vim: null-ls: remove 'clang-format' I should be relying on `clangd` instead, which should always be available whenever `clang-format` was. --- modules/home/vim/plugin/settings/null-ls.lua | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/modules/home/vim/plugin/settings/null-ls.lua b/modules/home/vim/plugin/settings/null-ls.lua index e7265c7..eadf16a 100644 --- a/modules/home/vim/plugin/settings/null-ls.lua +++ b/modules/home/vim/plugin/settings/null-ls.lua @@ -18,16 +18,6 @@ null_ls.register({ }), }) --- C, C++ -null_ls.register({ - null_ls.builtins.formatting.clang_format.with({ - -- Only used if available, but prefer clangd formatting if available - condition = function() - return utils.is_executable("clang-format") and not utils.is_executable("clangd") - end, - }), -}) - -- Nix null_ls.register({ null_ls.builtins.formatting.nixpkgs_fmt.with({ From 9e89b4dd36b3b98430a8460e7c53f1e6185f116d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 19 May 2024 22:32:54 +0200 Subject: [PATCH 1297/1588] flake: bump inputs --- flake.lock | 39 ++++++++++++++++++--------------------- flake.nix | 1 - 2 files changed, 18 insertions(+), 22 deletions(-) diff --git a/flake.lock b/flake.lock index c1084e9..5fa4910 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1714136352, - "narHash": "sha256-BtWQ2Th/jamO1SlD+2ASSW5Jaf7JhA/JLpQHk0Goqpg=", + "lastModified": 1715290355, + "narHash": "sha256-2T7CHTqBXJJ3ZC6R/4TXTcKoXWHcvubKNj9SfomURnw=", "owner": "ryantm", "repo": "agenix", - "rev": "24a7ea390564ccd5b39b7884f597cfc8d7f6f44e", + "rev": "8d37c5bdeade12b6479c85acd133063ab53187a0", "type": "github" }, "original": { @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1714641030, - "narHash": "sha256-yzcRNDoyVP7+SCNX0wmuDju1NUCt8Dz9+lyUXEI0dbI=", + "lastModified": 1715865404, + "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e", + "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1714679908, - "narHash": "sha256-KzcXzDvDJjX34en8f3Zimm396x6idbt+cu4tWDVS2FI=", + "lastModified": 1715930644, + "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", "owner": "nix-community", "repo": "home-manager", - "rev": "9036fe9ef8e15a819fa76f47a8b1f287903fb848", + "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1714635257, - "narHash": "sha256-4cPymbty65RvF1DWQfc+Bc8B233A1BWxJnNULJKQ1EY=", + "lastModified": 1715961556, + "narHash": "sha256-+NpbZRCRisUHKQJZF3CT+xn14ZZQO+KjxIIanH3Pvn4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "63c3a29ca82437c87573e4c6919b09a24ea61b0f", + "rev": "4a6b83b05df1a8bd7d99095ec4b4d271f2956b64", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1714825428, - "narHash": "sha256-6U4cppyR0u6sqSSVr3GMrnIXhP2YGR0knfgrUGtr/1Y=", + "lastModified": 1716149933, + "narHash": "sha256-0Ui2HmmKvSqxXfT5kCzTu2EO+kqYxavPZHROxQLsI14=", "owner": "nix-community", "repo": "NUR", - "rev": "5847f3365c16afafc10c56994beadd4cdc8552ee", + "rev": "0d0e224fe23a49977d871ae2fe2f14c84b03322a", "type": "github" }, "original": { @@ -185,9 +185,6 @@ "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", - "flake-utils": [ - "futils" - ], "gitignore": "gitignore", "nixpkgs": [ "nixpkgs" @@ -197,11 +194,11 @@ ] }, "locked": { - "lastModified": 1714478972, - "narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=", + "lastModified": 1715870890, + "narHash": "sha256-nacSOeXtUEM77Gn0G4bTdEOeFIrkCBXiyyFZtdGwuH0=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "2849da033884f54822af194400f8dff435ada242", + "rev": "fa606cccd7b0ccebe2880051208e4a0f61bfc8c1", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 9c29183..a07ee15 100644 --- a/flake.nix +++ b/flake.nix @@ -63,7 +63,6 @@ repo = "pre-commit-hooks.nix"; ref = "master"; inputs = { - flake-utils.follows = "futils"; nixpkgs.follows = "nixpkgs"; nixpkgs-stable.follows = "nixpkgs"; }; From ccab4d09528edc84a5759a4106b18c3d3fef556d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 20 May 2024 15:12:45 +0000 Subject: [PATCH 1298/1588] overlays: add 'gruvbox-nvim-delimiters' To fix [1] and [2] until the plug-in gets bumped. [1]: https://github.com/ellisonleao/gruvbox.nvim/issues/335 [2]: https://github.com/ellisonleao/gruvbox.nvim/issues/340 --- overlays/gruvbox-nvim-delimiters/default.nix | 4 ++++ overlays/gruvbox-nvim-delimiters/generated.nix | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 overlays/gruvbox-nvim-delimiters/default.nix create mode 100644 overlays/gruvbox-nvim-delimiters/generated.nix diff --git a/overlays/gruvbox-nvim-delimiters/default.nix b/overlays/gruvbox-nvim-delimiters/default.nix new file mode 100644 index 0000000..832e71d --- /dev/null +++ b/overlays/gruvbox-nvim-delimiters/default.nix @@ -0,0 +1,4 @@ +self: prev: +{ + vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); +} diff --git a/overlays/gruvbox-nvim-delimiters/generated.nix b/overlays/gruvbox-nvim-delimiters/generated.nix new file mode 100644 index 0000000..7a27a3d --- /dev/null +++ b/overlays/gruvbox-nvim-delimiters/generated.nix @@ -0,0 +1,14 @@ +{ fetchpatch, ... }: + +_final: prev: { + gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (oa: { + patches = (oa.patches or [ ]) ++ [ + # https://github.com/ellisonleao/gruvbox.nvim/pull/319 + (fetchpatch { + name = "add-Delimiter-highlight-group.patch"; + url = "https://github.com/ellisonleao/gruvbox.nvim/commit/20f90039564b293330bf97acc36dda8dd9e721a0.patch"; + hash = "sha256-it4SbgK/2iDVyvtXBfVW2YN9DqELfKsMkuCaunERGcE="; + }) + ]; + }); +} From 89056e3d5d7b5be3ee630430e36c919d4ef3cb0f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 23 May 2024 11:27:48 +0000 Subject: [PATCH 1299/1588] home: vim: lspconfig: migrate to 'ruff' This replaces and enhances the experience from the old `ruff-lsp` wrapper. --- modules/home/vim/plugin/settings/lspconfig.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index 628eab9..b3f8954 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -53,8 +53,8 @@ if utils.is_executable("pyright") then }) end -if utils.is_executable("ruff-lsp") then - lspconfig.ruff_lsp.setup({ +if utils.is_executable("ruff") then + lspconfig.ruff.setup({ capabilities = capabilities, on_attach = lsp.on_attach, }) From 201fabbc147e59ba49f8743ceef3fe0ce84e5056 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 20 May 2024 20:18:05 +0100 Subject: [PATCH 1300/1588] home: vim: remove redundant ftdetect files These have been added upstream and made redundant as part of the update to v0.10. --- modules/home/vim/ftdetect/blueprint.lua | 6 ------ modules/home/vim/ftdetect/gn.lua | 7 ------- modules/home/vim/ftdetect/kbuild.lua | 6 ------ modules/home/vim/ftdetect/tikz.lua | 6 ------ 4 files changed, 25 deletions(-) delete mode 100644 modules/home/vim/ftdetect/blueprint.lua delete mode 100644 modules/home/vim/ftdetect/gn.lua delete mode 100644 modules/home/vim/ftdetect/kbuild.lua delete mode 100644 modules/home/vim/ftdetect/tikz.lua diff --git a/modules/home/vim/ftdetect/blueprint.lua b/modules/home/vim/ftdetect/blueprint.lua deleted file mode 100644 index d3fb395..0000000 --- a/modules/home/vim/ftdetect/blueprint.lua +++ /dev/null @@ -1,6 +0,0 @@ --- Use `bp` filetype for Blueprint files -vim.filetype.add({ - extension = { - bp = "bp", - }, -}) diff --git a/modules/home/vim/ftdetect/gn.lua b/modules/home/vim/ftdetect/gn.lua deleted file mode 100644 index 37d772e..0000000 --- a/modules/home/vim/ftdetect/gn.lua +++ /dev/null @@ -1,7 +0,0 @@ --- Use GN filetype for Chromium Generate Ninja files -vim.filetype.add({ - extension = { - gn = "gn", - gni = "gn", - }, -}) diff --git a/modules/home/vim/ftdetect/kbuild.lua b/modules/home/vim/ftdetect/kbuild.lua deleted file mode 100644 index 799570e..0000000 --- a/modules/home/vim/ftdetect/kbuild.lua +++ /dev/null @@ -1,6 +0,0 @@ --- Kbuild is just a Makefile under a different name -vim.filetype.add({ - filename = { - ["Kbuild"] = "make", - }, -}) diff --git a/modules/home/vim/ftdetect/tikz.lua b/modules/home/vim/ftdetect/tikz.lua deleted file mode 100644 index 93b7db0..0000000 --- a/modules/home/vim/ftdetect/tikz.lua +++ /dev/null @@ -1,6 +0,0 @@ --- Use LaTeX filetype for TikZ files -vim.filetype.add({ - extension = { - tikz = "tex", - }, -}) From a60287f8cf85e1f0bc0ddf40b110b4744244dee0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 20 May 2024 20:26:12 +0100 Subject: [PATCH 1301/1588] home: vim: remove 'nvim-osc52' OSC52 supports has been added upstream, and is set up automatically when `SSH_TTY` is set (and a few other conditions) in v0.10. --- modules/home/vim/default.nix | 1 - modules/home/vim/plugin/settings/ssh.lua | 17 ----------------- 2 files changed, 18 deletions(-) delete mode 100644 modules/home/vim/plugin/settings/ssh.lua diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index 07711cc..2e85ba3 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -58,7 +58,6 @@ in # General enhancements vim-qf # Better quick-fix list - nvim-osc52 # Send clipboard data through terminal escape for SSH # Other wrappers git-messenger-vim # A simple blame window diff --git a/modules/home/vim/plugin/settings/ssh.lua b/modules/home/vim/plugin/settings/ssh.lua deleted file mode 100644 index 992a707..0000000 --- a/modules/home/vim/plugin/settings/ssh.lua +++ /dev/null @@ -1,17 +0,0 @@ -if not require("ambroisie.utils").is_ssh() then - return -end - -local function copy(lines, _) - require("osc52").copy(table.concat(lines, "\n")) -end - -local function paste() - return { vim.fn.split(vim.fn.getreg(""), "\n"), vim.fn.getregtype("") } -end - -vim.g.clipboard = { - name = "osc52", - copy = { ["+"] = copy, ["*"] = copy }, - paste = { ["+"] = paste, ["*"] = paste }, -} From cc82d7575f370f44d4ab0f12b339bee8869fc894 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 20 May 2024 20:27:39 +0100 Subject: [PATCH 1302/1588] home: vim: do not set 'termguicolors' explicitly Rely on the new behaviour from v0.10 which detects it more intelligently. --- modules/home/vim/init.vim | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index c94fc53..3a74c4f 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -86,8 +86,6 @@ set mouse= " Set dark mode by default set background=dark -" 24 bit colors -set termguicolors " Setup some overrides for gruvbox lua << EOF local gruvbox = require("gruvbox") From 212f280d921e035b5f9c015be50564240eddb074 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 20 May 2024 20:33:02 +0100 Subject: [PATCH 1303/1588] home: vim: remove commenting plug-ins Rely on the new built-in support which was added upstream as part of v0.10. Crucially, upstream supports using tree-sitter aware comment strings by default. --- modules/home/vim/after/plugin/mappings/commentary.lua | 10 ---------- modules/home/vim/default.nix | 2 -- 2 files changed, 12 deletions(-) delete mode 100644 modules/home/vim/after/plugin/mappings/commentary.lua diff --git a/modules/home/vim/after/plugin/mappings/commentary.lua b/modules/home/vim/after/plugin/mappings/commentary.lua deleted file mode 100644 index 6ed3b89..0000000 --- a/modules/home/vim/after/plugin/mappings/commentary.lua +++ /dev/null @@ -1,10 +0,0 @@ -local wk = require("which-key") - -local keys = { - name = "Comment/uncomment", - c = "Current line", - u = "Uncomment the current and adjacent commented lines", - ["gc"] = "Uncomment the current and adjacent commented lines", -} - -wk.register(keys, { prefix = "gc" }) diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index 2e85ba3..509ae58 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -40,7 +40,6 @@ in lualine-lsp-progress # Show progress for LSP servers # tpope essentials - vim-commentary # Easy comments vim-eunuch # UNIX integrations vim-fugitive # A 'git' wrapper vim-git # Sane git syntax files @@ -69,7 +68,6 @@ in none-ls-nvim # LSP integration for linters and formatters nvim-treesitter.withAllGrammars # Better highlighting nvim-treesitter-textobjects # More textobjects - nvim-ts-context-commentstring # Comment string in nested language blocks plenary-nvim # 'null-ls', 'telescope' dependency # Completion From e0b66e89f9cd85abccad9307b4d3863955cd4818 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 20 May 2024 20:39:08 +0100 Subject: [PATCH 1304/1588] home: vim: ftplugin: remove bp It's now part of the upstream runtime as of v0.10, so this file is redundant and can be removed. --- modules/home/vim/after/ftplugin/bp.vim | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 modules/home/vim/after/ftplugin/bp.vim diff --git a/modules/home/vim/after/ftplugin/bp.vim b/modules/home/vim/after/ftplugin/bp.vim deleted file mode 100644 index 1224e7a..0000000 --- a/modules/home/vim/after/ftplugin/bp.vim +++ /dev/null @@ -1,7 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Add comment format -setlocal comments=b://,s1:/*,mb:*,ex:*/ -setlocal commentstring=//\ %s -let b:undo_ftplugin.='|setlocal comments< commentstring<' From b90da603b1a67ebaa01b9b8ebcffc0f64ab452fe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 24 May 2024 14:08:10 +0000 Subject: [PATCH 1305/1588] home: nix: fix typo --- modules/home/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/nix/default.nix b/modules/home/nix/default.nix index 0934189..f8d65ce 100644 --- a/modules/home/nix/default.nix +++ b/modules/home/nix/default.nix @@ -27,7 +27,7 @@ in }; inputs = { - link = my.mkDisableOption "link inputs to `/etc/nix/inputs/`"; + link = my.mkDisableOption "link inputs to `$XDG_CONFIG_HOME/nix/inputs/`"; addToRegistry = my.mkDisableOption "add inputs and self to registry"; From 442d267ca244dc92b6177fa795e308c361eb73f5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 28 May 2024 13:48:54 +0000 Subject: [PATCH 1306/1588] home: vim: lsp: add missing type hint --- modules/home/vim/lua/ambroisie/lsp.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua index 31a5bd1..dc47366 100644 --- a/modules/home/vim/lua/ambroisie/lsp.lua +++ b/modules/home/vim/lua/ambroisie/lsp.lua @@ -5,7 +5,7 @@ local lsp_format = require("lsp-format") --- Move to the next/previous diagnostic, automatically showing the diagnostics --- float if necessary. ---- @param forward whether to go forward or backwards +--- @param forward bool whether to go forward or backwards local function goto_diagnostic(forward) vim.validate({ forward = { forward, "boolean" }, From 5af0230c5883000d5c1570dc958e42320e8bc517 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 29 May 2024 11:13:30 +0000 Subject: [PATCH 1307/1588] flake: bump inputs And undo the overlay for `gruvbox-nvim`. This reverts commit ccab4d09528edc84a5759a4106b18c3d3fef556d. --- flake.lock | 30 +++++++++---------- overlays/gruvbox-nvim-delimiters/default.nix | 4 --- .../gruvbox-nvim-delimiters/generated.nix | 14 --------- 3 files changed, 15 insertions(+), 33 deletions(-) delete mode 100644 overlays/gruvbox-nvim-delimiters/default.nix delete mode 100644 overlays/gruvbox-nvim-delimiters/generated.nix diff --git a/flake.lock b/flake.lock index 5fa4910..5191e9f 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1715290355, - "narHash": "sha256-2T7CHTqBXJJ3ZC6R/4TXTcKoXWHcvubKNj9SfomURnw=", + "lastModified": 1716561646, + "narHash": "sha256-UIGtLO89RxKt7RF2iEgPikSdU53r6v/6WYB0RW3k89I=", "owner": "ryantm", "repo": "agenix", - "rev": "8d37c5bdeade12b6479c85acd133063ab53187a0", + "rev": "c2fc0762bbe8feb06a2e59a364fa81b3a57671c9", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1715930644, - "narHash": "sha256-W9pyM3/vePxrffHtzlJI6lDS3seANQ+Nqp+i58O46LI=", + "lastModified": 1716930911, + "narHash": "sha256-t4HT5j3Jy7skRB5PINnxcEBCkgE89rGBpwTI7YS4Ffo=", "owner": "nix-community", "repo": "home-manager", - "rev": "e3ad5108f54177e6520535768ddbf1e6af54b59d", + "rev": "a9b36cbe9292a649222b89fdb9ae9907e9c74086", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1715961556, - "narHash": "sha256-+NpbZRCRisUHKQJZF3CT+xn14ZZQO+KjxIIanH3Pvn4=", + "lastModified": 1716769173, + "narHash": "sha256-7EXDb5WBw+d004Agt+JHC/Oyh/KTUglOaQ4MNjBbo5w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4a6b83b05df1a8bd7d99095ec4b4d271f2956b64", + "rev": "9ca3f649614213b2aaf5f1e16ec06952fe4c2632", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1716149933, - "narHash": "sha256-0Ui2HmmKvSqxXfT5kCzTu2EO+kqYxavPZHROxQLsI14=", + "lastModified": 1716972321, + "narHash": "sha256-iB8kNkc+p/9NwmrXgnChB6JFcUtSBSdGESRVliiTCMI=", "owner": "nix-community", "repo": "NUR", - "rev": "0d0e224fe23a49977d871ae2fe2f14c84b03322a", + "rev": "3ced449a2fdd845ffde002790691bedf6958f00c", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1715870890, - "narHash": "sha256-nacSOeXtUEM77Gn0G4bTdEOeFIrkCBXiyyFZtdGwuH0=", + "lastModified": 1716213921, + "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "fa606cccd7b0ccebe2880051208e4a0f61bfc8c1", + "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", "type": "github" }, "original": { diff --git a/overlays/gruvbox-nvim-delimiters/default.nix b/overlays/gruvbox-nvim-delimiters/default.nix deleted file mode 100644 index 832e71d..0000000 --- a/overlays/gruvbox-nvim-delimiters/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -self: prev: -{ - vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); -} diff --git a/overlays/gruvbox-nvim-delimiters/generated.nix b/overlays/gruvbox-nvim-delimiters/generated.nix deleted file mode 100644 index 7a27a3d..0000000 --- a/overlays/gruvbox-nvim-delimiters/generated.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ fetchpatch, ... }: - -_final: prev: { - gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (oa: { - patches = (oa.patches or [ ]) ++ [ - # https://github.com/ellisonleao/gruvbox.nvim/pull/319 - (fetchpatch { - name = "add-Delimiter-highlight-group.patch"; - url = "https://github.com/ellisonleao/gruvbox.nvim/commit/20f90039564b293330bf97acc36dda8dd9e721a0.patch"; - hash = "sha256-it4SbgK/2iDVyvtXBfVW2YN9DqELfKsMkuCaunERGcE="; - }) - ]; - }); -} From 82a0c65901f3209c47359db9bcdd1bc32e68e3a2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 4 Jun 2024 22:49:10 +0100 Subject: [PATCH 1308/1588] home: firefox: tridactyl: add LWN comment toggle Ideally, I would instead be targeting the `::before` pseudo-element, which is the _actual_ button, but it doesn't work... --- modules/home/firefox/tridactyl/tridactylrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/firefox/tridactyl/tridactylrc b/modules/home/firefox/tridactyl/tridactylrc index 4dc53cf..5a8ef06 100644 --- a/modules/home/firefox/tridactyl/tridactylrc +++ b/modules/home/firefox/tridactyl/tridactylrc @@ -15,8 +15,8 @@ bind --mode=input <C-i> editor_rm " Binds {{{ " Reddit et al. {{{ -" Toggle comments on Reddit, Hacker News, Lobste.rs -bind ;c hint -Jc [class*="expand"],[class*="togg"],[class="comment_folder"] +" Toggle comments on Reddit, Hacker News, Lobste.rs, LWN +bind ;c hint -Jc [class*="expand"],[class*="togg"],[class="comment_folder"],[class="CommentTitle"] " Make `gu` take me back to subreddit from comments bindurl reddit.com gu urlparent 3 From c08c8c79d38b36270140b43a2885abe11318bf04 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 10 Jun 2024 12:53:13 +0000 Subject: [PATCH 1309/1588] home: firefox: tridactyl: fix DDG mapping --- modules/home/firefox/tridactyl/tridactylrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/firefox/tridactyl/tridactylrc b/modules/home/firefox/tridactyl/tridactylrc index 5a8ef06..36bd59d 100644 --- a/modules/home/firefox/tridactyl/tridactylrc +++ b/modules/home/firefox/tridactyl/tridactylrc @@ -26,8 +26,8 @@ bindurl www.google.com f hint -Jc #search a bindurl www.google.com F hint -Jbc #search a " Only hint search results on DuckDuckGo -bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result-title-a"] -bindurl ^https://duckduckgo.com F hint -Jbc [data-testid="result-title-a"] +bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result"] +bindurl ^https://duckduckgo.com F hint -Jbc [data-testid="result"] " Only hint item pages on Hacker News bindurl news.ycombinator.com ;f hint -Jc .age > a From 7ea10f7823c3e8d5a66fb7bec6df4c2fd2c8055c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 12 Jun 2024 10:06:31 +0000 Subject: [PATCH 1310/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 5191e9f..8ad503c 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1715865404, - "narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=", + "lastModified": 1717285511, + "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9", + "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1716930911, - "narHash": "sha256-t4HT5j3Jy7skRB5PINnxcEBCkgE89rGBpwTI7YS4Ffo=", + "lastModified": 1718141734, + "narHash": "sha256-cA+6l8ZCZ7MXGijVuY/1f55+wF/RT4PlTR9+g4bx86w=", "owner": "nix-community", "repo": "home-manager", - "rev": "a9b36cbe9292a649222b89fdb9ae9907e9c74086", + "rev": "892f76bd0aa09a0f7f73eb41834b8a904b6d0fad", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1716769173, - "narHash": "sha256-7EXDb5WBw+d004Agt+JHC/Oyh/KTUglOaQ4MNjBbo5w=", + "lastModified": 1717974879, + "narHash": "sha256-GTO3C88+5DX171F/gVS3Qga/hOs/eRMxPFpiHq2t+D8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9ca3f649614213b2aaf5f1e16ec06952fe4c2632", + "rev": "c7b821ba2e1e635ba5a76d299af62821cbcb09f3", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1716972321, - "narHash": "sha256-iB8kNkc+p/9NwmrXgnChB6JFcUtSBSdGESRVliiTCMI=", + "lastModified": 1718184302, + "narHash": "sha256-opRL7+wsIxy+r0zP4BkrKUEiljIXhXdboIylH04ggOg=", "owner": "nix-community", "repo": "NUR", - "rev": "3ced449a2fdd845ffde002790691bedf6958f00c", + "rev": "4b71c3c633d0a1784960a2350012dbb809bb4dac", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1716213921, - "narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=", + "lastModified": 1717664902, + "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0", + "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", "type": "github" }, "original": { From 10a7111f1c8a0857f9ce06869e1b9f8923025da7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 12 Jun 2024 21:26:57 +0200 Subject: [PATCH 1311/1588] nixos: services: mealie: fix DB auth Turns out the package update [1] was because someone couldn't make it work on the previous version, and added a new setting to configure it more easily :-). [1]: https://github.com/NixOS/nixpkgs/pull/314294 --- modules/nixos/services/mealie/default.nix | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/modules/nixos/services/mealie/default.nix b/modules/nixos/services/mealie/default.nix index 55ac376..96b9e14 100644 --- a/modules/nixos/services/mealie/default.nix +++ b/modules/nixos/services/mealie/default.nix @@ -35,12 +35,8 @@ in # Use PostgreSQL DB_ENGINE = "postgres"; - POSTGRES_USER = "mealie"; - POSTGRES_PASSWORD = ""; - POSTGRES_SERVER = "/run/postgresql"; - # Pydantic and/or mealie doesn't handle the URI correctly, hijack it - # with query parameters... - POSTGRES_DB = "mealie?host=/run/postgresql&dbname=mealie"; + # Make it work with socket auth + POSTGRES_URL_OVERRIDE = "postgresql://mealie:@/mealie?host=/run/postgresql"; }; }; From d37c767a2f0999fbe10e7c2b6a969c1bf39137f3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 12 Jun 2024 21:29:19 +0200 Subject: [PATCH 1312/1588] nixos: services: forgejo: fix deprecated config --- modules/nixos/services/forgejo/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/nixos/services/forgejo/default.nix b/modules/nixos/services/forgejo/default.nix index 0f3dfc5..18538be 100644 --- a/modules/nixos/services/forgejo/default.nix +++ b/modules/nixos/services/forgejo/default.nix @@ -83,7 +83,11 @@ in # I configure my backup system manually below. dump.enable = false; - mailerPasswordFile = lib.mkIf cfg.mail.enable cfg.mail.passwordFile; + secrets = { + mailer = lib.mkIf cfg.mail.enable { + PASSWD = cfg.mail.passwordFile; + }; + }; settings = { DEFAULT = { From 6a9ac77b0c366819a9f10110850c56a311a03cab Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 14 Jun 2024 21:17:21 +0100 Subject: [PATCH 1313/1588] nixos: hardware: bluetooth: remove pipewire conf Turns out the wireplumber configuration I was setting up is redundant with the upstream default (which work better, becomes they use a quirks database...). It was also out-of-date due to the update to v0.5, which changed the configuration format... --- modules/nixos/hardware/bluetooth/default.nix | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/modules/nixos/hardware/bluetooth/default.nix b/modules/nixos/hardware/bluetooth/default.nix index c019b31..e9b1991 100644 --- a/modules/nixos/hardware/bluetooth/default.nix +++ b/modules/nixos/hardware/bluetooth/default.nix @@ -24,24 +24,6 @@ in extraModules = [ pkgs.pulseaudio-modules-bt ]; package = pkgs.pulseaudioFull; }; - - services.pipewire.wireplumber.configPackages = [ - (pkgs.writeTextDir "share/wireplumber/bluetooth.lua.d/51-bluez-config.lua" '' - bluez_monitor.properties = { - -- SBC XQ provides better audio - ["bluez5.enable-sbc-xq"] = true, - - -- mSBC provides better audio + microphone - ["bluez5.enable-msbc"] = true, - - -- Synchronize volume with bluetooth device - ["bluez5.enable-hw-volume"] = true, - - -- FIXME: Some devices may now support both hsp_ag and hfp_ag - ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" - } - '') - ]; }) # Support for A2DP audio profile From 64331981d0015e04c45267fcff5087092f1db9fa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 17 Jun 2024 10:11:50 +0000 Subject: [PATCH 1314/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 8ad503c..084af23 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1716561646, - "narHash": "sha256-UIGtLO89RxKt7RF2iEgPikSdU53r6v/6WYB0RW3k89I=", + "lastModified": 1718371084, + "narHash": "sha256-abpBi61mg0g+lFFU0zY4C6oP6fBwPzbHPKBGw676xsA=", "owner": "ryantm", "repo": "agenix", - "rev": "c2fc0762bbe8feb06a2e59a364fa81b3a57671c9", + "rev": "3a56735779db467538fb2e577eda28a9daacaca6", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1718141734, - "narHash": "sha256-cA+6l8ZCZ7MXGijVuY/1f55+wF/RT4PlTR9+g4bx86w=", + "lastModified": 1718526747, + "narHash": "sha256-sKrD/utGvmtQALvuDj4j0CT3AJXP1idOAq2p+27TpeE=", "owner": "nix-community", "repo": "home-manager", - "rev": "892f76bd0aa09a0f7f73eb41834b8a904b6d0fad", + "rev": "0a7ffb28e5df5844d0e8039c9833d7075cdee792", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1717974879, - "narHash": "sha256-GTO3C88+5DX171F/gVS3Qga/hOs/eRMxPFpiHq2t+D8=", + "lastModified": 1718318537, + "narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c7b821ba2e1e635ba5a76d299af62821cbcb09f3", + "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1718184302, - "narHash": "sha256-opRL7+wsIxy+r0zP4BkrKUEiljIXhXdboIylH04ggOg=", + "lastModified": 1718606072, + "narHash": "sha256-+BKOI7p2YoNwNQgfdIldS0hmihEjBBLWPOek624sgeg=", "owner": "nix-community", "repo": "NUR", - "rev": "4b71c3c633d0a1784960a2350012dbb809bb4dac", + "rev": "6af362f6660ce325faacb9e180e3c2e8d2af3fdd", "type": "github" }, "original": { From 7c61d6dffc119069db44361dedc075ffc036f87d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 13 Jun 2024 11:17:22 +0000 Subject: [PATCH 1315/1588] nixos: hardware: graphics: use AMDVLK options --- modules/nixos/hardware/graphics/default.nix | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/modules/nixos/hardware/graphics/default.nix b/modules/nixos/hardware/graphics/default.nix index 3baac02..51ac445 100644 --- a/modules/nixos/hardware/graphics/default.nix +++ b/modules/nixos/hardware/graphics/default.nix @@ -35,19 +35,22 @@ in (lib.mkIf (cfg.gpuFlavor == "amd") { boot.initrd.kernelModules = lib.mkIf cfg.amd.enableKernelModule [ "amdgpu" ]; + hardware.amdgpu = { + # Vulkan + amdvlk = lib.mkIf cfg.amd.amdvlk { + enable = true; + support32Bit = { + enable = true; + }; + }; + }; + hardware.opengl = { extraPackages = with pkgs; [ # OpenCL rocmPackages.clr rocmPackages.clr.icd - ] - ++ lib.optional cfg.amd.amdvlk amdvlk - ; - - extraPackages32 = with pkgs; [ - ] - ++ lib.optional cfg.amd.amdvlk driversi686Linux.amdvlk - ; + ]; }; }) From 9ab49e06f9abf377b34c86a3e52ea1ba0225f189 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 13 Jun 2024 12:15:41 +0000 Subject: [PATCH 1316/1588] nixos: hardware: graphics: add 32bit Intel drivers --- modules/nixos/hardware/graphics/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/nixos/hardware/graphics/default.nix b/modules/nixos/hardware/graphics/default.nix index 51ac445..65f1056 100644 --- a/modules/nixos/hardware/graphics/default.nix +++ b/modules/nixos/hardware/graphics/default.nix @@ -72,6 +72,13 @@ in intel-vaapi-driver libvdpau-va-gl ]; + + extraPackages32 = with pkgs.driversi686Linux; [ + # VA API + intel-media-driver + intel-vaapi-driver + libvdpau-va-gl + ]; }; }) ]); From eb94fca939189fb8f761ffda549d6fc6c4ff3943 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 18 Jun 2024 09:21:42 +0000 Subject: [PATCH 1317/1588] home: nix: use 'nix.nixPath' Freshly merged upstream, I've only been waiting ~1 year for it. --- modules/home/nix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/nix/default.nix b/modules/home/nix/default.nix index f8d65ce..c0bbcc8 100644 --- a/modules/home/nix/default.nix +++ b/modules/home/nix/default.nix @@ -96,7 +96,7 @@ in }) (lib.mkIf cfg.inputs.addToNixPath { - home.sessionVariables.NIX_PATH = "${config.xdg.configHome}/nix/inputs\${NIX_PATH:+:$NIX_PATH}"; + nix.nixPath = [ "${config.xdg.configHome}/nix/inputs" ]; }) ]); } From 468eaa9ed47f3c5077a1e176d3a53e7dc3087fcc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 18 Jun 2024 13:13:42 +0000 Subject: [PATCH 1318/1588] home: nixpkgs: use 'escapeShellArg' --- modules/home/nixpkgs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/nixpkgs/default.nix b/modules/home/nixpkgs/default.nix index 720fc9b..a4946db 100644 --- a/modules/home/nixpkgs/default.nix +++ b/modules/home/nixpkgs/default.nix @@ -13,8 +13,8 @@ in ]; home.sessionVariables = { - GITHUB_TOKEN = ''$(cat "${config.age.secrets."github/token".path}")''; - GITHUB_API_TOKEN = ''$(cat "${config.age.secrets."github/token".path}")''; + GITHUB_TOKEN = ''$(cat ${lib.escapeShellArg config.age.secrets."github/token".path})''; + GITHUB_API_TOKEN = ''$(cat ${lib.escapeShellArg config.age.secrets."github/token".path})''; }; }; } From c2362795d80946805f613a9351ab934a4b33d38d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 21 Jun 2024 15:38:12 +0000 Subject: [PATCH 1319/1588] flake: bump inputs Fixup `bash-language-server` which has been migrated out of `nodePackages`. --- flake.lock | 24 ++++++++++++------------ modules/home/vim/default.nix | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/flake.lock b/flake.lock index 084af23..9a9275f 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1718526747, - "narHash": "sha256-sKrD/utGvmtQALvuDj4j0CT3AJXP1idOAq2p+27TpeE=", + "lastModified": 1718788307, + "narHash": "sha256-SqiOz0sljM0GjyQEVinPXQxaGcbOXw5OgpCWGPgh/vo=", "owner": "nix-community", "repo": "home-manager", - "rev": "0a7ffb28e5df5844d0e8039c9833d7075cdee792", + "rev": "d7830d05421d0ced83a0f007900898bdcaf2a2ca", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718318537, - "narHash": "sha256-4Zu0RYRcAY/VWuu6awwq4opuiD//ahpc2aFHg2CWqFY=", + "lastModified": 1718895438, + "narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e9ee548d90ff586a6471b4ae80ae9cfcbceb3420", + "rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1718606072, - "narHash": "sha256-+BKOI7p2YoNwNQgfdIldS0hmihEjBBLWPOek624sgeg=", + "lastModified": 1718980488, + "narHash": "sha256-cULCoFNaBcyB9TUMmL6oDKu2FygaZbfn6I5mYwRC4G8=", "owner": "nix-community", "repo": "NUR", - "rev": "6af362f6660ce325faacb9e180e3c2e8d2af3fdd", + "rev": "ef74ae1e19df0d2118a4f27d6127f1153469a25e", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1717664902, - "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", + "lastModified": 1718879355, + "narHash": "sha256-RTyqP4fBX2MdhNuMP+fnR3lIwbdtXhyj7w7fwtvgspc=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", + "rev": "8cd35b9496d21a6c55164d8547d9d5280162b07a", "type": "github" }, "original": { diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index 509ae58..d7280fb 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -102,7 +102,7 @@ in nixpkgs-fmt # Shell - nodePackages.bash-language-server + bash-language-server shfmt ]; }; From b73f6af5e018a337aceb72295aa0d3c7b74bbea7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 21 Jun 2024 15:38:32 +0000 Subject: [PATCH 1320/1588] nixos: services: flood: use upstream module --- modules/nixos/services/flood/default.nix | 26 ++++-------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/modules/nixos/services/flood/default.nix b/modules/nixos/services/flood/default.nix index 155e73d..b95bac5 100644 --- a/modules/nixos/services/flood/default.nix +++ b/modules/nixos/services/flood/default.nix @@ -1,5 +1,5 @@ # A nice UI for various torrent clients -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.services.flood; in @@ -13,31 +13,13 @@ in example = 3000; description = "Internal port for Flood UI"; }; - - stateDir = mkOption { - type = types.str; - default = "flood"; - example = "floodUI"; - description = "Directory under `/var/run` for storing Flood's files"; - }; }; config = lib.mkIf cfg.enable { - systemd.services.flood = { - description = "Flood torrent UI"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; + services.flood = { + enable = true; - serviceConfig = { - ExecStart = lib.concatStringsSep " " [ - (lib.getExe pkgs.flood) - "--port ${builtins.toString cfg.port}" - "--rundir /var/lib/${cfg.stateDir}" - ]; - DynamicUser = true; - StateDirectory = cfg.stateDir; - ReadWritePaths = ""; - }; + inherit (cfg) port; }; my.services.nginx.virtualHosts = { From 105e0fbfd0c5d6177490486468098c5634508b5b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 19 Jun 2024 19:51:53 +0100 Subject: [PATCH 1321/1588] ci: fix typo --- .woodpecker/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.woodpecker/check.yml b/.woodpecker/check.yml index e04cd46..9e885aa 100644 --- a/.woodpecker/check.yml +++ b/.woodpecker/check.yml @@ -7,7 +7,7 @@ steps: commands: - nix flake check -- name: notifiy +- name: notify image: bash environment: ADDRESS: From a15f7ec270ed7b2da17f1d7fc8ccf148f5a0cfe4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 19 Jun 2024 19:52:10 +0100 Subject: [PATCH 1322/1588] templates: fix typo --- templates/c++-cmake/.woodpecker/check.yml | 2 +- templates/c++-meson/.woodpecker/check.yml | 2 +- templates/rust-cargo/.woodpecker/check.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/c++-cmake/.woodpecker/check.yml b/templates/c++-cmake/.woodpecker/check.yml index 4ff7dba..272c0e4 100644 --- a/templates/c++-cmake/.woodpecker/check.yml +++ b/templates/c++-cmake/.woodpecker/check.yml @@ -12,7 +12,7 @@ steps: commands: - nix flake check -- name: notifiy +- name: notify image: bash environment: ADDRESS: diff --git a/templates/c++-meson/.woodpecker/check.yml b/templates/c++-meson/.woodpecker/check.yml index 4ff7dba..272c0e4 100644 --- a/templates/c++-meson/.woodpecker/check.yml +++ b/templates/c++-meson/.woodpecker/check.yml @@ -12,7 +12,7 @@ steps: commands: - nix flake check -- name: notifiy +- name: notify image: bash environment: ADDRESS: diff --git a/templates/rust-cargo/.woodpecker/check.yml b/templates/rust-cargo/.woodpecker/check.yml index 4ff7dba..272c0e4 100644 --- a/templates/rust-cargo/.woodpecker/check.yml +++ b/templates/rust-cargo/.woodpecker/check.yml @@ -12,7 +12,7 @@ steps: commands: - nix flake check -- name: notifiy +- name: notify image: bash environment: ADDRESS: From fc5cb1a47d2a7046dd0d9eef5b5b8cf21c5736bf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 28 Jun 2024 09:54:50 +0000 Subject: [PATCH 1323/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 9a9275f..83ccfd7 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1718788307, - "narHash": "sha256-SqiOz0sljM0GjyQEVinPXQxaGcbOXw5OgpCWGPgh/vo=", + "lastModified": 1719438532, + "narHash": "sha256-/Vmso2ZMoFE3M7d1MRsQ2K5sR8CVKnrM6t1ys9Xjpz4=", "owner": "nix-community", "repo": "home-manager", - "rev": "d7830d05421d0ced83a0f007900898bdcaf2a2ca", + "rev": "1a4f12ae0bda877ec4099b429cf439aad897d7e9", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1718895438, - "narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=", + "lastModified": 1719254875, + "narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3", + "rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1718980488, - "narHash": "sha256-cULCoFNaBcyB9TUMmL6oDKu2FygaZbfn6I5mYwRC4G8=", + "lastModified": 1719564461, + "narHash": "sha256-wCFs1sf1tPoV3nCG5N5KaakAKm88FyzN6pRdOsOqNZg=", "owner": "nix-community", "repo": "NUR", - "rev": "ef74ae1e19df0d2118a4f27d6127f1153469a25e", + "rev": "7369862c4a8f293f6fde79044369dad7dfc04798", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1718879355, - "narHash": "sha256-RTyqP4fBX2MdhNuMP+fnR3lIwbdtXhyj7w7fwtvgspc=", + "lastModified": 1719259945, + "narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "8cd35b9496d21a6c55164d8547d9d5280162b07a", + "rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", "type": "github" }, "original": { From b8952655378f033a484b98f6c748c7beef8740ae Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 28 Jun 2024 18:10:26 +0100 Subject: [PATCH 1324/1588] nixos: hardware: graphics: fix renamed option --- modules/nixos/hardware/graphics/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/nixos/hardware/graphics/default.nix b/modules/nixos/hardware/graphics/default.nix index 65f1056..89bb1cd 100644 --- a/modules/nixos/hardware/graphics/default.nix +++ b/modules/nixos/hardware/graphics/default.nix @@ -26,7 +26,7 @@ in config = lib.mkIf cfg.enable (lib.mkMerge [ { - hardware.opengl = { + hardware.graphics = { enable = true; }; } @@ -45,7 +45,7 @@ in }; }; - hardware.opengl = { + hardware.graphics = { extraPackages = with pkgs; [ # OpenCL rocmPackages.clr @@ -62,7 +62,7 @@ in VDPAU_DRIVER = "va_gl"; }; - hardware.opengl = { + hardware.graphics = { extraPackages = with pkgs; [ # Open CL intel-compute-runtime From dc90e14e60f755cbe5d0b2ccdceed92221b53ffa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 1 Jul 2024 09:59:14 +0000 Subject: [PATCH 1325/1588] home: vim: lspconfig: add 'starpls' --- modules/home/vim/plugin/settings/lspconfig.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index b3f8954..2f355f4 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -76,3 +76,11 @@ if utils.is_executable("bash-language-server") then on_attach = lsp.on_attach, }) end + +-- Starlark +if utils.is_executable("starpls") then + lspconfig.starpls.setup({ + capabilities = capabilities, + on_attach = lsp.on_attach, + }) +end From f11cdb367514db86063f9c2342a7e29d21dac473 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 8 Jul 2024 13:10:07 +0000 Subject: [PATCH 1326/1588] home: gdb: use 'mkPackageOption' --- modules/home/gdb/default.nix | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/modules/home/gdb/default.nix b/modules/home/gdb/default.nix index fe8eb69..9e7d81f 100644 --- a/modules/home/gdb/default.nix +++ b/modules/home/gdb/default.nix @@ -9,14 +9,7 @@ in rr = { enable = my.mkDisableOption "rr configuration"; - package = mkOption { - type = types.package; - default = pkgs.rr; - defaultText = literalExample "pkgs.rr"; - description = '' - Package providing rr - ''; - }; + package = mkPackageOption pkgs "rr" { }; }; }; From 4943df69ef8015ee0f36ef3997fb60a52d6e7903 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 8 Jul 2024 13:12:21 +0000 Subject: [PATCH 1327/1588] home: gdb: add 'package' option --- modules/home/gdb/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/home/gdb/default.nix b/modules/home/gdb/default.nix index 9e7d81f..efb49e2 100644 --- a/modules/home/gdb/default.nix +++ b/modules/home/gdb/default.nix @@ -6,6 +6,8 @@ in options.my.home.gdb = with lib; { enable = my.mkDisableOption "gdb configuration"; + package = mkPackageOption pkgs "gdb" { }; + rr = { enable = my.mkDisableOption "rr configuration"; @@ -16,7 +18,7 @@ in config = lib.mkIf cfg.enable (lib.mkMerge [ { home.packages = with pkgs; [ - gdb + cfg.package ]; xdg = { From abb78d63e24dadbe6c76af753a9433b44d62d323 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 8 Jul 2024 13:10:28 +0000 Subject: [PATCH 1328/1588] home: calibre: add 'package' option --- modules/home/calibre/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/home/calibre/default.nix b/modules/home/calibre/default.nix index 6edf654..de7c126 100644 --- a/modules/home/calibre/default.nix +++ b/modules/home/calibre/default.nix @@ -5,11 +5,13 @@ in { options.my.home.calibre = with lib; { enable = mkEnableOption "calibre configuration"; + + package = mkPackageOption pkgs "calibre" { }; }; config = lib.mkIf cfg.enable { home.packages = with pkgs; [ - calibre + cfg.package ]; }; } From 1644e952435590c2f263624c7e649e91248eae63 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 8 Jul 2024 13:11:30 +0000 Subject: [PATCH 1329/1588] home: discord: add 'package' option --- modules/home/discord/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/home/discord/default.nix b/modules/home/discord/default.nix index 7348bb4..bfa5d40 100644 --- a/modules/home/discord/default.nix +++ b/modules/home/discord/default.nix @@ -7,11 +7,13 @@ in { options.my.home.discord = with lib; { enable = mkEnableOption "discord configuration"; + + package = mkPackageOption pkgs "discord" { }; }; config = lib.mkIf cfg.enable { home.packages = with pkgs; [ - discord + cfg.package ]; xdg.configFile."discord/settings.json".source = From 04de570926161cf47201322fae92168a7f07aa34 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 8 Jul 2024 13:27:30 +0000 Subject: [PATCH 1330/1588] home: atuin: add 'package' option --- modules/home/atuin/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/home/atuin/default.nix b/modules/home/atuin/default.nix index b8973cc..3f06263 100644 --- a/modules/home/atuin/default.nix +++ b/modules/home/atuin/default.nix @@ -1,15 +1,19 @@ -{ config, lib, ... }: +{ config, lib, pkgs, ... }: let cfg = config.my.home.atuin; in { options.my.home.atuin = with lib; { enable = my.mkDisableOption "atuin configuration"; + + # I want the full experience by default + package = mkPackageOption pkgs "atuin" { }; }; config = lib.mkIf cfg.enable { programs.atuin = { enable = true; + inherit (cfg) package; flags = [ # I *despise* this hijacking of the up key, even though I use Ctrl-p From 6a6f3aed63cb2cf04f42a17d5329bfeed3c4f62f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 10 Jul 2024 21:40:36 +0100 Subject: [PATCH 1331/1588] home: vim: migrate to 'oil.nvim' --- modules/home/vim/after/ftplugin/netrw.vim | 6 ------ modules/home/vim/default.nix | 2 +- modules/home/vim/plugin/settings/oil.lua | 19 +++++++++++++++++++ 3 files changed, 20 insertions(+), 7 deletions(-) delete mode 100644 modules/home/vim/after/ftplugin/netrw.vim create mode 100644 modules/home/vim/plugin/settings/oil.lua diff --git a/modules/home/vim/after/ftplugin/netrw.vim b/modules/home/vim/after/ftplugin/netrw.vim deleted file mode 100644 index e3689f8..0000000 --- a/modules/home/vim/after/ftplugin/netrw.vim +++ /dev/null @@ -1,6 +0,0 @@ -" Create the `b:undo_ftplugin` variable if it doesn't exist -call ftplugined#check_undo_ft() - -" Don't show Netrw in buffer list -setlocal bufhidden=delete -let b:undo_ftplugin='|setlocal bufhidden<' diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index d7280fb..e2c3504 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -46,7 +46,6 @@ in vim-repeat # Enanche '.' for plugins vim-rsi # Readline mappings vim-unimpaired # Some ex command mappings - vim-vinegar # Better netrw # Languages rust-vim @@ -85,6 +84,7 @@ in dressing-nvim # Integrate native UI hooks with Telescope etc... gitsigns-nvim # Fast git UI integration nvim-surround # Deal with pairs, now in Lua + oil-nvim # Better alternative to NetrW telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm telescope-lsp-handlers-nvim # Use 'telescope' for various LSP actions telescope-nvim # Fuzzy finder interface diff --git a/modules/home/vim/plugin/settings/oil.lua b/modules/home/vim/plugin/settings/oil.lua new file mode 100644 index 0000000..451345d --- /dev/null +++ b/modules/home/vim/plugin/settings/oil.lua @@ -0,0 +1,19 @@ +local oil = require("oil") +local wk = require("which-key") + +oil.setup({ + view_options = { + -- Show files and directories that start with "." by default + show_hidden = true, + -- But never '..' + is_always_hidden = function(name, bufnr) + return name == ".." + end, + }, +}) + +local keys = { + ["-"] = { oil.open, "Open parent directory" }, +} + +wk.register(keys) From 452399ee4c036663e2aef0a802120445591931a6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 10 Jul 2024 22:16:51 +0100 Subject: [PATCH 1332/1588] home: vim: oil: add detail view toggle mapping --- modules/home/vim/plugin/settings/oil.lua | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/home/vim/plugin/settings/oil.lua b/modules/home/vim/plugin/settings/oil.lua index 451345d..e4a6716 100644 --- a/modules/home/vim/plugin/settings/oil.lua +++ b/modules/home/vim/plugin/settings/oil.lua @@ -1,6 +1,8 @@ local oil = require("oil") local wk = require("which-key") +local detail = false + oil.setup({ view_options = { -- Show files and directories that start with "." by default @@ -10,6 +12,19 @@ oil.setup({ return name == ".." end, }, + keymaps = { + ["gd"] = { + desc = "Toggle file detail view", + callback = function() + detail = not detail + if detail then + oil.set_columns({ "icon", "permissions", "size", "mtime" }) + else + oil.set_columns({ "icon" }) + end + end, + }, + }, }) local keys = { From 0de9966127b4177ad0c0760c72e9849c383a0a5f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 10 Jul 2024 22:45:48 +0100 Subject: [PATCH 1333/1588] home: vim: remove redundant 'nobackup' It's already the default. --- modules/home/vim/init.vim | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index 3a74c4f..eba0c25 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -38,8 +38,6 @@ set tabstop=8 " File parameters {{{ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Disable backups, we have source control for that -set nobackup " Disable swapfiles too set noswapfile " }}} From 16d68022ebfaf8108ab73a99c54a84bbc811511d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 10 Jul 2024 22:47:14 +0100 Subject: [PATCH 1334/1588] home: vim: enable swap and undo files Trying it on for size, since NeoVim does use XDG directories for those. --- modules/home/vim/init.vim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index eba0c25..a5a06f4 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -38,8 +38,10 @@ set tabstop=8 " File parameters {{{ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Disable swapfiles too -set noswapfile +" Enable swap files +set swapfile +" And undo files +set undofile " }}} " UI and UX parameters {{{ From 88e4d72366955f31f6dcae0caeffb78cdb7b810a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Jul 2024 19:52:03 +0100 Subject: [PATCH 1335/1588] home: vim: git: use lua in visual mappings I thought the partial staging feature had broken, but it looks to be unrelated [1]. [1]: https://github.com/lewis6991/gitsigns.nvim/issues/1088 --- modules/home/vim/plugin/settings/git.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/modules/home/vim/plugin/settings/git.lua b/modules/home/vim/plugin/settings/git.lua index 4dbebca..5ae03e1 100644 --- a/modules/home/vim/plugin/settings/git.lua +++ b/modules/home/vim/plugin/settings/git.lua @@ -1,6 +1,15 @@ local gitsigns = require("gitsigns") local wk = require("which-key") +--- Transform `f` into a function which acts on the current visual selection +local function make_visual(f) + return function() + local first = vim.fn.line("v") + local last = vim.fn.line(".") + f({ first, last }) + end +end + gitsigns.setup({ current_line_blame_opts = { -- Show the blame quickly @@ -43,13 +52,12 @@ local objects = { local visual = { ["ih"] = { gitsigns.select_hunk, "Git hunk" }, - -- Only the actual command can make use of the visual selection... ["<leader>g"] = { name = "Git", - p = { ":Gitsigns preview_hunk<CR>", "Preview selection" }, - r = { ":Gitsigns reset_hunk<CR>", "Restore selection" }, - s = { ":Gitsigns stage_hunk<CR>", "Stage selection" }, - u = { ":Gitsigns undo_stage_hunk<CR>", "Undo stage selection" }, + p = { gitsigns.preview_hunk, "Preview selection" }, + r = { make_visual(gitsigns.reset_hunk), "Restore selection" }, + s = { make_visual(gitsigns.stage_hunk), "Stage selection" }, + u = { gitsigns.undo_stage_hunk, "Undo stage selection" }, }, } From 966934a8bc1475b20fe03b2749916fb769d36051 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Jul 2024 20:11:51 +0100 Subject: [PATCH 1336/1588] home: vim: git: use lua in hunk mappings --- modules/home/vim/plugin/settings/git.lua | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/home/vim/plugin/settings/git.lua b/modules/home/vim/plugin/settings/git.lua index 5ae03e1..0ef647e 100644 --- a/modules/home/vim/plugin/settings/git.lua +++ b/modules/home/vim/plugin/settings/git.lua @@ -10,6 +10,20 @@ local function make_visual(f) end end +local function nav_hunk(dir) + return function() + if vim.wo.diff then + local map = { + prev = "[c", + next = "]c", + } + vim.cmd.normal({ map[dir], bang = true }) + else + gitsigns.nav_hunk(dir) + end + end +end + gitsigns.setup({ current_line_blame_opts = { -- Show the blame quickly @@ -19,8 +33,8 @@ gitsigns.setup({ local keys = { -- Navigation - ["[c"] = { "&diff ? '[c' : '<cmd>Gitsigns prev_hunk<CR>'", "Previous hunk/diff", expr = true }, - ["]c"] = { "&diff ? ']c' : '<cmd>Gitsigns next_hunk<CR>'", "Next hunk/diff", expr = true }, + ["[c"] = { nav_hunk("prev"), "Previous hunk/diff" }, + ["]c"] = { nav_hunk("next"), "Next hunk/diff" }, -- Commands ["<leader>g"] = { From bcd9a31bb8f61d6355f4c9ee4a6e777087889b09 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Jul 2024 20:34:51 +0100 Subject: [PATCH 1337/1588] home: vim: lua: utils: add 'partial' Love me some functional goodness. This was taken from [1]. [1]: https://reddit.com/r/lua/comments/fh2go5 --- modules/home/vim/lua/ambroisie/utils.lua | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/modules/home/vim/lua/ambroisie/utils.lua b/modules/home/vim/lua/ambroisie/utils.lua index 3d2dd3b..c9e9292 100644 --- a/modules/home/vim/lua/ambroisie/utils.lua +++ b/modules/home/vim/lua/ambroisie/utils.lua @@ -48,4 +48,22 @@ M.list_lsp_clients = function(bufnr) return names end +--- partially apply a function with given arguments +M.partial = function(f, ...) + local a = { ... } + local a_len = select("#", ...) + + return function(...) + local tmp = { ... } + local tmp_len = select("#", ...) + + -- Merge arg lists + for i = 1, tmp_len do + a[a_len + i] = tmp[i] + end + + return f(unpack(a, 1, a_len + tmp_len)) + end +end + return M From 5592a120a4f0c9c40d7f3228d2b989f8d3d8c149 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Jul 2024 20:38:40 +0100 Subject: [PATCH 1338/1588] home: vim: git: use 'partial' --- modules/home/vim/plugin/settings/git.lua | 26 +++++++++++------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/modules/home/vim/plugin/settings/git.lua b/modules/home/vim/plugin/settings/git.lua index 0ef647e..de5bb69 100644 --- a/modules/home/vim/plugin/settings/git.lua +++ b/modules/home/vim/plugin/settings/git.lua @@ -1,4 +1,5 @@ local gitsigns = require("gitsigns") +local utils = require("ambroisie.utils") local wk = require("which-key") --- Transform `f` into a function which acts on the current visual selection @@ -11,16 +12,14 @@ local function make_visual(f) end local function nav_hunk(dir) - return function() - if vim.wo.diff then - local map = { - prev = "[c", - next = "]c", - } - vim.cmd.normal({ map[dir], bang = true }) - else - gitsigns.nav_hunk(dir) - end + if vim.wo.diff then + local map = { + prev = "[c", + next = "]c", + } + vim.cmd.normal({ map[dir], bang = true }) + else + gitsigns.nav_hunk(dir) end end @@ -33,8 +32,8 @@ gitsigns.setup({ local keys = { -- Navigation - ["[c"] = { nav_hunk("prev"), "Previous hunk/diff" }, - ["]c"] = { nav_hunk("next"), "Next hunk/diff" }, + ["[c"] = { utils.partial(nav_hunk, "prev"), "Previous hunk/diff" }, + ["]c"] = { utils.partial(nav_hunk, "next"), "Next hunk/diff" }, -- Commands ["<leader>g"] = { @@ -42,8 +41,7 @@ local keys = { -- Actions b = { gitsigns.toggle_current_line_blame, "Toggle blame virtual text" }, d = { gitsigns.diffthis, "Diff buffer" }, - -- stylua: ignore - D = { function() gitsigns.diffthis("~") end, "Diff buffer against last commit" }, + D = { utils.partial(gitsigns.diffthis, "~"), "Diff buffer against last commit" }, g = { "<cmd>Git<CR>", "Git status" }, h = { gitsigns.toggle_deleted, "Show deleted hunks" }, L = { "<cmd>:sp<CR><C-w>T:Gllog --follow -- %:p<CR>", "Current buffer log" }, From 5ffe2653c0499afda8b2c9b933b2ef9554c23510 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 12 Jul 2024 20:59:58 +0100 Subject: [PATCH 1339/1588] home: vim: git: work around partial staging issue See [1]. [1]: https://github.com/lewis6991/gitsigns.nvim/issues/929 --- modules/home/vim/plugin/settings/git.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/home/vim/plugin/settings/git.lua b/modules/home/vim/plugin/settings/git.lua index de5bb69..404abfc 100644 --- a/modules/home/vim/plugin/settings/git.lua +++ b/modules/home/vim/plugin/settings/git.lua @@ -28,6 +28,8 @@ gitsigns.setup({ -- Show the blame quickly delay = 100, }, + -- Work-around for https://github.com/lewis6991/gitsigns.nvim/issues/929 + signs_staged_enable = false, }) local keys = { From 280829b54f55760119c37b15c2d68e6e6535001d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 15 Jul 2024 20:34:09 +0100 Subject: [PATCH 1340/1588] home: vim: signtoggle: fix toggling Don't know how I missed this for so long... --- modules/home/vim/plugin/signtoggle.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/vim/plugin/signtoggle.lua b/modules/home/vim/plugin/signtoggle.lua index d6a26e2..60f6a65 100644 --- a/modules/home/vim/plugin/signtoggle.lua +++ b/modules/home/vim/plugin/signtoggle.lua @@ -9,7 +9,7 @@ vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "WinEnter" }, { vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "WinLeave" }, { pattern = "*", group = signtoggle, - command = "setlocal signcolumn=yes", + command = "setlocal signcolumn=no", }) -- Never show the sign column in a terminal buffer From a7c542784c2ceb2ad4bbe605b8362794a69f0193 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 15 Jul 2024 20:40:37 +0100 Subject: [PATCH 1341/1588] home: vim: numbertoggle: use lua callbacks Use `vim.opt` because those are local options (i.e: similar to `set` it defaults to setting it locally, `vim.opt_local` is not necessary). --- modules/home/vim/plugin/numbertoggle.lua | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/modules/home/vim/plugin/numbertoggle.lua b/modules/home/vim/plugin/numbertoggle.lua index 1f97fc8..8042710 100644 --- a/modules/home/vim/plugin/numbertoggle.lua +++ b/modules/home/vim/plugin/numbertoggle.lua @@ -7,17 +7,28 @@ local numbertoggle = vim.api.nvim_create_augroup("numbertoggle", { clear = true vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "WinEnter" }, { pattern = "*", group = numbertoggle, - command = "if &nu | setlocal rnu | endif", + callback = function() + if vim.opt.number:get() then + vim.opt.relativenumber = true + end + end, }) vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "WinLeave" }, { pattern = "*", group = numbertoggle, - command = "if &nu | setlocal nornu | endif", + callback = function() + if vim.opt.number:get() then + vim.opt.relativenumber = false + end + end, }) -- Never show the sign column in a terminal buffer vim.api.nvim_create_autocmd({ "TermOpen" }, { pattern = "*", group = numbertoggle, - command = "setlocal nonu nornu", + callback = function() + vim.opt.number = false + vim.opt.relativenumber = false + end, }) From 5918a0b9e6b246f69607c78d2dd68192849d724c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 15 Jul 2024 20:40:59 +0100 Subject: [PATCH 1342/1588] home: vim: signtoggle: use lua callbacks Use `vim.opt` because this is a local option (i.e: similar to `set` it defaults to setting it locally, `vim.opt_local` is not necessary). --- modules/home/vim/plugin/signtoggle.lua | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/home/vim/plugin/signtoggle.lua b/modules/home/vim/plugin/signtoggle.lua index 60f6a65..9765a81 100644 --- a/modules/home/vim/plugin/signtoggle.lua +++ b/modules/home/vim/plugin/signtoggle.lua @@ -4,17 +4,23 @@ local signtoggle = vim.api.nvim_create_augroup("signtoggle", { clear = true }) vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "WinEnter" }, { pattern = "*", group = signtoggle, - command = "setlocal signcolumn=yes", + callback = function() + vim.opt.signcolumn = "yes" + end, }) vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "WinLeave" }, { pattern = "*", group = signtoggle, - command = "setlocal signcolumn=no", + callback = function() + vim.opt.signcolumn = "no" + end, }) -- Never show the sign column in a terminal buffer vim.api.nvim_create_autocmd({ "TermOpen" }, { pattern = "*", group = signtoggle, - command = "setlocal signcolumn=no", + callback = function() + vim.opt.signcolumn = "no" + end, }) From 82f49f1389591f04440471422e542608edb6a326 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 19 Jul 2024 11:10:49 +0000 Subject: [PATCH 1343/1588] home: vim: telescope: move mappings from 'after' --- .../home/vim/after/plugin/mappings/telescope.lua | 15 --------------- modules/home/vim/plugin/settings/telescope.lua | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 15 deletions(-) delete mode 100644 modules/home/vim/after/plugin/mappings/telescope.lua diff --git a/modules/home/vim/after/plugin/mappings/telescope.lua b/modules/home/vim/after/plugin/mappings/telescope.lua deleted file mode 100644 index 0867b36..0000000 --- a/modules/home/vim/after/plugin/mappings/telescope.lua +++ /dev/null @@ -1,15 +0,0 @@ -local wk = require("which-key") -local telescope_builtin = require("telescope.builtin") - -local keys = { - f = { - name = "Fuzzy finder", - b = { telescope_builtin.buffers, "Open buffers" }, - f = { telescope_builtin.git_files, "Git tracked files" }, - F = { telescope_builtin.find_files, "Files" }, - g = { telescope_builtin.live_grep, "Grep string" }, - G = { telescope_builtin.grep_string, "Grep string under cursor" }, - }, -} - -wk.register(keys, { prefix = "<leader>" }) diff --git a/modules/home/vim/plugin/settings/telescope.lua b/modules/home/vim/plugin/settings/telescope.lua index 4548ec5..64cc298 100644 --- a/modules/home/vim/plugin/settings/telescope.lua +++ b/modules/home/vim/plugin/settings/telescope.lua @@ -1,4 +1,6 @@ local telescope = require("telescope") +local telescope_builtin = require("telescope.builtin") +local wk = require("which-key") telescope.setup({ defaults = { @@ -22,3 +24,16 @@ telescope.setup({ telescope.load_extension("fzf") telescope.load_extension("lsp_handlers") + +local keys = { + f = { + name = "Fuzzy finder", + b = { telescope_builtin.buffers, "Open buffers" }, + f = { telescope_builtin.git_files, "Git tracked files" }, + F = { telescope_builtin.find_files, "Files" }, + g = { telescope_builtin.live_grep, "Grep string" }, + G = { telescope_builtin.grep_string, "Grep string under cursor" }, + }, +} + +wk.register(keys, { prefix = "<leader>" }) From 3438290e32adb1dfcc3e69b86f83effa279a7c27 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 19 Jul 2024 11:13:11 +0000 Subject: [PATCH 1344/1588] home: vim: tree-sitter: move mappings from 'after' --- .../mappings/tree-sitter-textobjects.lua | 30 ------------------ .../home/vim/plugin/settings/tree-sitter.lua | 31 +++++++++++++++++++ 2 files changed, 31 insertions(+), 30 deletions(-) delete mode 100644 modules/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua diff --git a/modules/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua b/modules/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua deleted file mode 100644 index 631731c..0000000 --- a/modules/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua +++ /dev/null @@ -1,30 +0,0 @@ -local wk = require("which-key") - -local motions = { - ["]m"] = "Next method start", - ["]M"] = "Next method end", - ["]S"] = "Next statement start", - ["]]"] = "Next class start", - ["]["] = "Next class end", - ["[m"] = "Previous method start", - ["[M"] = "Previous method end", - ["[S"] = "Previous statement start", - ["[["] = "Previous class start", - ["[]"] = "Previous class end", -} - -local objects = { - ["aa"] = "a parameter", - ["ia"] = "inner parameter", - ["ab"] = "a block", - ["ib"] = "inner block", - ["ac"] = "a class", - ["ic"] = "inner class", - ["af"] = "a function", - ["if"] = "inner function", - ["ak"] = "a comment", - ["aS"] = "a statement", -} - -wk.register(motions, { mode = "n" }) -wk.register(objects, { mode = "o" }) diff --git a/modules/home/vim/plugin/settings/tree-sitter.lua b/modules/home/vim/plugin/settings/tree-sitter.lua index 5503857..4584c85 100644 --- a/modules/home/vim/plugin/settings/tree-sitter.lua +++ b/modules/home/vim/plugin/settings/tree-sitter.lua @@ -1,4 +1,6 @@ local ts_config = require("nvim-treesitter.configs") +local wk = require("which-key") + ts_config.setup({ highlight = { enable = true, @@ -51,3 +53,32 @@ ts_config.setup({ }, }, }) + +local motions = { + ["]m"] = "Next method start", + ["]M"] = "Next method end", + ["]S"] = "Next statement start", + ["]]"] = "Next class start", + ["]["] = "Next class end", + ["[m"] = "Previous method start", + ["[M"] = "Previous method end", + ["[S"] = "Previous statement start", + ["[["] = "Previous class start", + ["[]"] = "Previous class end", +} + +local objects = { + ["aa"] = "a parameter", + ["ia"] = "inner parameter", + ["ab"] = "a block", + ["ib"] = "inner block", + ["ac"] = "a class", + ["ic"] = "inner class", + ["af"] = "a function", + ["if"] = "inner function", + ["ak"] = "a comment", + ["aS"] = "a statement", +} + +wk.register(motions, { mode = "n" }) +wk.register(objects, { mode = "o" }) From c6735f3912041595610b64f4b2231ca836b39ebe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 19 Jul 2024 11:32:10 +0000 Subject: [PATCH 1345/1588] home: vime: tree-sitter: remove 'which-key' The plug-in now has support for setting mapping descriptions by itself. --- .../home/vim/plugin/settings/tree-sitter.lua | 70 ++++++------------- 1 file changed, 20 insertions(+), 50 deletions(-) diff --git a/modules/home/vim/plugin/settings/tree-sitter.lua b/modules/home/vim/plugin/settings/tree-sitter.lua index 4584c85..d5fff46 100644 --- a/modules/home/vim/plugin/settings/tree-sitter.lua +++ b/modules/home/vim/plugin/settings/tree-sitter.lua @@ -1,5 +1,4 @@ local ts_config = require("nvim-treesitter.configs") -local wk = require("which-key") ts_config.setup({ highlight = { @@ -16,16 +15,16 @@ ts_config.setup({ -- Jump to matching text objects lookahead = true, keymaps = { - ["aa"] = "@parameter.outer", - ["ia"] = "@parameter.inner", - ["ab"] = "@block.outer", - ["ib"] = "@block.inner", - ["ac"] = "@class.outer", - ["ic"] = "@class.inner", - ["af"] = "@function.outer", - ["if"] = "@function.inner", - ["ak"] = "@comment.outer", - ["aS"] = "@statement.outer", + ["aa"] = { query = "@parameter.outer", desc = "a parameter" }, + ["ia"] = { query = "@parameter.inner", desc = "inner parameter" }, + ["ab"] = { query = "@block.outer", desc = "a block" }, + ["ib"] = { query = "@block.inner", desc = "inner block" }, + ["ac"] = { query = "@class.outer", desc = "a class" }, + ["ic"] = { query = "@class.inner", desc = "inner class" }, + ["af"] = { query = "@function.outer", desc = "a function" }, + ["if"] = { query = "@function.inner", desc = "inner function" }, + ["ak"] = { query = "@comment.outer", desc = "a comment" }, + ["aS"] = { query = "@statement.outer", desc = "a statement" }, }, }, move = { @@ -33,52 +32,23 @@ ts_config.setup({ -- Add to jump list set_jumps = true, goto_next_start = { - ["]m"] = "@function.outer", - ["]S"] = "@statement.outer", - ["]]"] = "@class.outer", + ["]m"] = { query = "@function.outer", desc = "Next method start" }, + ["]S"] = { query = "@statement.outer", desc = "Next statement start" }, + ["]]"] = { query = "@class.outer", desc = "Next class start" }, }, goto_next_end = { - ["]M"] = "@function.outer", - ["]["] = "@class.outer", + ["]M"] = { query = "@function.outer", desc = "Next method end" }, + ["]["] = { query = "@class.outer", desc = "Next class end" }, }, goto_previous_start = { - ["[m"] = "@function.outer", - ["[S"] = "@statement.outer", - ["[["] = "@class.outer", + ["[m"] = { query = "@function.outer", desc = "Previous method start" }, + ["[S"] = { query = "@statement.outer", desc = "Previous statement start" }, + ["[["] = { query = "@class.outer", desc = "Previous class start" }, }, goto_previous_end = { - ["[M"] = "@function.outer", - ["[]"] = "@class.outer", + ["[M"] = { query = "@function.outer", desc = "Previous method end" }, + ["[]"] = { query = "@class.outer", desc = "Previous class end" }, }, }, }, }) - -local motions = { - ["]m"] = "Next method start", - ["]M"] = "Next method end", - ["]S"] = "Next statement start", - ["]]"] = "Next class start", - ["]["] = "Next class end", - ["[m"] = "Previous method start", - ["[M"] = "Previous method end", - ["[S"] = "Previous statement start", - ["[["] = "Previous class start", - ["[]"] = "Previous class end", -} - -local objects = { - ["aa"] = "a parameter", - ["ia"] = "inner parameter", - ["ab"] = "a block", - ["ib"] = "inner block", - ["ac"] = "a class", - ["ic"] = "inner class", - ["af"] = "a function", - ["if"] = "inner function", - ["ak"] = "a comment", - ["aS"] = "a statement", -} - -wk.register(motions, { mode = "n" }) -wk.register(objects, { mode = "o" }) From abaa7119e7ba773045e66be0884796b323919346 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 20 Jul 2024 11:34:42 +0100 Subject: [PATCH 1346/1588] home: vim: consistent 'unimpaired' mapping names --- modules/home/vim/after/plugin/mappings/unimpaired.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/vim/after/plugin/mappings/unimpaired.lua b/modules/home/vim/after/plugin/mappings/unimpaired.lua index f502056..e171d8f 100644 --- a/modules/home/vim/after/plugin/mappings/unimpaired.lua +++ b/modules/home/vim/after/plugin/mappings/unimpaired.lua @@ -86,7 +86,7 @@ local keys = { z = "Spell checking", }, ["]o"] = { - name = "Option off", + name = "Disable option", b = "Light background", c = "Cursor line", d = "Diff", @@ -105,7 +105,7 @@ local keys = { z = "Spell checking", }, ["yo"] = { - name = "Option toggle", + name = "Toggle option", b = "Light background", c = "Cursor line", d = "Diff", From 326f9d039a2811531e48dacb6b30590fe6172e6a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 22 Jul 2024 16:05:54 +0000 Subject: [PATCH 1347/1588] home: vim: disable 'swapfile' As before, I still dislike this option and find its downsides worse than its upsides. --- modules/home/vim/init.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index a5a06f4..0186614 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -38,9 +38,9 @@ set tabstop=8 " File parameters {{{ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Enable swap files -set swapfile -" And undo files +" Disable swap files +set noswapfile +" Enable undo files set undofile " }}} From 997f208d305cbedfbfbd9f6e93d3caf95225775a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 24 Jul 2024 16:33:09 +0000 Subject: [PATCH 1348/1588] home: vim: remove irrelevant filetype plugins I don't make use of their non-upstreamed functionality. --- modules/home/vim/default.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index e2c3504..a063483 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -48,11 +48,7 @@ in vim-unimpaired # Some ex command mappings # Languages - rust-vim vim-beancount - vim-jsonnet - vim-nix - vim-toml # General enhancements vim-qf # Better quick-fix list From 442eef04826277d1eb562665b49b3215e59b445e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 25 Jul 2024 09:39:38 +0000 Subject: [PATCH 1349/1588] home: vim: git: fix deprecated functions --- modules/home/vim/plugin/settings/git.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/vim/plugin/settings/git.lua b/modules/home/vim/plugin/settings/git.lua index 404abfc..0e3bc5e 100644 --- a/modules/home/vim/plugin/settings/git.lua +++ b/modules/home/vim/plugin/settings/git.lua @@ -54,8 +54,8 @@ local keys = { s = { gitsigns.stage_hunk, "Stage hunk" }, S = { gitsigns.stage_buffer, "Stage buffer" }, u = { gitsigns.undo_stage_hunk, "Undo stage hunk" }, - ["["] = { gitsigns.prev_hunk, "Previous hunk" }, - ["]"] = { gitsigns.next_hunk, "Next hunk" }, + ["["] = { utils.partial(gitsigns.nav_hunk, "prev"), "Previous hunk" }, + ["]"] = { utils.partial(gitsigns.nav_hunk, "next"), "Next hunk" }, }, } From b5216a6a50de84bed2de995e623e82f91bce35a9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 25 Jul 2024 20:28:04 +0200 Subject: [PATCH 1350/1588] pkgs: unbound-zones-adblock: fix version --- pkgs/unbound-zones-adblock/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index 642ac41..2a6d4b7 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -1,7 +1,7 @@ { lib, gawk, stdenvNoCC, stevenblack-blocklist }: stdenvNoCC.mkDerivation { name = "unbound-zones-adblock"; - version = stevenblack-blocklist.rev; + inherit (stevenblack-blocklist) version; src = stevenblack-blocklist; From d04de7d21307a24e2bdefd98bca02194e1931f96 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 20 Jul 2024 22:41:42 +0100 Subject: [PATCH 1351/1588] flake: bump inputs And fix renamed packages. --- flake.lock | 36 ++++++++++++++++++------------------ modules/home/gtk/default.nix | 4 ++-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/flake.lock b/flake.lock index 83ccfd7..6b84846 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1718371084, - "narHash": "sha256-abpBi61mg0g+lFFU0zY4C6oP6fBwPzbHPKBGw676xsA=", + "lastModified": 1720546205, + "narHash": "sha256-boCXsjYVxDviyzoEyAk624600f3ZBo/DKtUdvMTpbGY=", "owner": "ryantm", "repo": "agenix", - "rev": "3a56735779db467538fb2e577eda28a9daacaca6", + "rev": "de96bd907d5fbc3b14fc33ad37d1b9a3cb15edc6", "type": "github" }, "original": { @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "lastModified": 1719994518, + "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1719438532, - "narHash": "sha256-/Vmso2ZMoFE3M7d1MRsQ2K5sR8CVKnrM6t1ys9Xjpz4=", + "lastModified": 1721852138, + "narHash": "sha256-JH8N5uoqoVA6erV4O40VtKKHsnfmhvMGbxMNDLtim5o=", "owner": "nix-community", "repo": "home-manager", - "rev": "1a4f12ae0bda877ec4099b429cf439aad897d7e9", + "rev": "304a011325b7ac7b8c9950333cd215a7aa146b0e", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1719254875, - "narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=", + "lastModified": 1721743106, + "narHash": "sha256-adRZhFpBTnHiK3XIELA3IBaApz70HwCYfv7xNrHjebA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60", + "rev": "dc14ed91132ee3a26255d01d8fd0c1f5bff27b2f", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1719564461, - "narHash": "sha256-wCFs1sf1tPoV3nCG5N5KaakAKm88FyzN6pRdOsOqNZg=", + "lastModified": 1721930286, + "narHash": "sha256-IUr/laHRe52MkPlOSflG1GThgQo+ECmAP7O51RxLduI=", "owner": "nix-community", "repo": "NUR", - "rev": "7369862c4a8f293f6fde79044369dad7dfc04798", + "rev": "3ea857d2abb7f3825976cefc50894d35ca55f8c4", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1719259945, - "narHash": "sha256-F1h+XIsGKT9TkGO3omxDLEb/9jOOsI6NnzsXFsZhry4=", + "lastModified": 1721042469, + "narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", + "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd", "type": "github" }, "original": { diff --git a/modules/home/gtk/default.nix b/modules/home/gtk/default.nix index 62d3f81..f10087d 100644 --- a/modules/home/gtk/default.nix +++ b/modules/home/gtk/default.nix @@ -21,12 +21,12 @@ in }; iconTheme = { - package = pkgs.gnome.gnome-themes-extra; + package = pkgs.gnome-themes-extra; name = "Adwaita"; }; theme = { - package = pkgs.gnome.gnome-themes-extra; + package = pkgs.gnome-themes-extra; name = "Adwaita"; }; }; From 4de788695034d7b5f4847fb23dad1a9431e51593 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 20 Jul 2024 22:57:28 +0100 Subject: [PATCH 1352/1588] nixos: system: packages: fix deprecated config --- modules/nixos/system/packages/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/nixos/system/packages/default.nix b/modules/nixos/system/packages/default.nix index 5c29aa0..ebea06f 100644 --- a/modules/nixos/system/packages/default.nix +++ b/modules/nixos/system/packages/default.nix @@ -14,12 +14,14 @@ in config = lib.mkIf cfg.enable { environment.systemPackages = with pkgs; [ - vim wget ]; programs = { - vim.defaultEditor = true; # Modal editing is life + vim = { + enable = true; + defaultEditor = true; # Modal editing is life + }; zsh = { enable = true; # Use integrations From 58760280be64aa68500573111564ee7cf37dae6c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 20 Jul 2024 22:43:19 +0100 Subject: [PATCH 1353/1588] home: vim: update for 'which-key' v3 It complains quite loudly about the legacy mapping syntax. --- .../home/vim/after/plugin/mappings/misc.lua | 4 +- .../vim/after/plugin/mappings/unimpaired.lua | 238 +++++++++--------- modules/home/vim/lua/ambroisie/lsp.lua | 45 ++-- modules/home/vim/plugin/settings/git.lua | 67 +++-- modules/home/vim/plugin/settings/oil.lua | 4 +- .../home/vim/plugin/settings/telescope.lua | 16 +- .../home/vim/plugin/settings/which-key.lua | 27 +- 7 files changed, 208 insertions(+), 193 deletions(-) diff --git a/modules/home/vim/after/plugin/mappings/misc.lua b/modules/home/vim/after/plugin/mappings/misc.lua index 6aa25a2..12dbffc 100644 --- a/modules/home/vim/after/plugin/mappings/misc.lua +++ b/modules/home/vim/after/plugin/mappings/misc.lua @@ -1,7 +1,7 @@ local wk = require("which-key") local keys = { - ["<leader>"] = { "<cmd>nohls<CR>", "Clear search highlight" }, + { "<leader><leader>", "<cmd>nohls<CR>", desc = "Clear search highlight" }, } -wk.register(keys, { prefix = "<leader>" }) +wk.add(keys) diff --git a/modules/home/vim/after/plugin/mappings/unimpaired.lua b/modules/home/vim/after/plugin/mappings/unimpaired.lua index e171d8f..a0336d1 100644 --- a/modules/home/vim/after/plugin/mappings/unimpaired.lua +++ b/modules/home/vim/after/plugin/mappings/unimpaired.lua @@ -3,126 +3,124 @@ local wk = require("which-key") local lsp = require("ambroisie.lsp") local keys = { - -- Edition and navigation mappins - ["["] = { - name = "Previous", - ["<space>"] = "Insert blank line above", - ["<C-L>"] = "Previous location list file", - ["<C-Q>"] = "Previous quickfix list file", - ["<C-T>"] = "Previous tag in preview window", - a = "Previous argument", - A = "First argument", - b = "Previous buffer", - B = "First buffer", - e = "Exchange previous line", - f = "Previous file in directory", - l = "Previous location list entry", - L = "First Location list entry", - n = "Previous conflict marker/diff hunk", - p = "Paste line above", - P = "Paste line above", - q = "Previous quickfix list entry", - Q = "First quickfix list entry", - t = "Previous matching tag", - T = "First matching tag", - z = "Previous fold", - -- Encoding - C = "C string encode", - u = "URL encode", - x = "XML encode", - y = "C string encode", - -- Custom - d = { lsp.goto_prev_diagnostic, "Previous diagnostic" }, - }, - ["]"] = { - name = "Next", - ["<space>"] = "Insert blank line below", - ["<C-L>"] = "Next location list file", - ["<C-Q>"] = "Next quickfix list file", - ["<C-T>"] = "Next tag in preview window", - a = "Next argument", - A = "Last argument", - b = "Next buffer", - B = "Last buffer", - e = "Exchange next line", - f = "Next file in directory", - l = "Next location list entry", - L = "Last Location list entry", - n = "Next conflict marker/diff hunk", - p = "Paste line below", - P = "Paste line below", - q = "Next quickfix list entry", - Q = "Last quickfix list entry", - t = "Next matching tag", - T = "Last matching tag", - z = "Next fold", - -- Decoding - C = "C string decode", - u = "URL decode", - x = "XML decode", - y = "C string decode", - -- Custom - d = { lsp.goto_next_diagnostic, "Next diagnostic" }, - }, + -- Previous + { "[", group = "Previous" }, + -- Edition and navigation mappings + { "[<space>", desc = "Insert blank line above" }, + { "[<C-L>", desc = "Previous location list file" }, + { "[<C-Q>", desc = "Previous quickfix list file" }, + { "[<C-T>", desc = "Previous tag in preview window" }, + { "[a", desc = "Previous argument" }, + { "[A", desc = "First argument" }, + { "[b", desc = "Previous buffer" }, + { "[B", desc = "First buffer" }, + { "[e", desc = "Exchange previous line" }, + { "[f", desc = "Previous file in directory" }, + { "[l", desc = "Previous location list entry" }, + { "[L", desc = "First Location list entry" }, + { "[n", desc = "Previous conflict marker/diff hunk" }, + { "[p", desc = "Paste line above" }, + { "[P", desc = "Paste line above" }, + { "[q", desc = "Previous quickfix list entry" }, + { "[Q", desc = "First quickfix list entry" }, + { "[t", desc = "Previous matching tag" }, + { "[T", desc = "First matching tag" }, + { "[z", desc = "Previous fold" }, + -- Encoding + { "[C", desc = "C string encode" }, + { "[u", desc = "URL encode" }, + { "[x", desc = "XML encode" }, + { "[y", desc = "C string encode" }, + -- Custom + { "[d", lsp.goto_prev_diagnostic, desc = "Previous diagnostic" }, - -- Option mappings - ["[o"] = { - name = "Enable option", - b = "Light background", - c = "Cursor line", - d = "Diff", - f = { "<cmd>FormatEnable<CR>", "LSP Formatting" }, - h = "Search high-lighting", - i = "Case insensitive search", - l = "List mode", - n = "Line numbers", - r = "Relative line numbers", - p = { "<cmd>lwindow<CR>", "Location list" }, - q = { "<cmd>cwindow<CR>", "Quickfix list" }, - u = "Cursor column", - v = "Virtual editing", - w = "Text wrapping", - x = "Cursor line and column", - z = "Spell checking", - }, - ["]o"] = { - name = "Disable option", - b = "Light background", - c = "Cursor line", - d = "Diff", - f = { "<cmd>FormatDisable<CR>", "LSP Formatting" }, - h = "Search high-lighting", - i = "Case insensitive search", - l = "List mode", - n = "Line numbers", - p = { "<cmd>lclose<CR>", "Location list" }, - q = { "<cmd>cclose<CR>", "Quickfix list" }, - r = "Relative line numbers", - u = "Cursor column", - v = "Virtual editing", - w = "Text wrapping", - x = "Cursor line and column", - z = "Spell checking", - }, - ["yo"] = { - name = "Toggle option", - b = "Light background", - c = "Cursor line", - d = "Diff", - f = { "<cmd>FormatToggle<CR>", "LSP Formatting" }, - h = "Search high-lighting", - i = "Case insensitive search", - l = "List mode", - n = "Line numbers", - p = { "<Plug>(qf_loc_toggle)", "Location list" }, - q = { "<Plug>(qf_qf_toggle)", "Quickfix list" }, - r = "Relative line numbers", - u = "Cursor column", - v = "Virtual editing", - w = "Text wrapping", - x = "Cursor line and column", - z = "Spell checking", - }, + -- Next + { "]", group = "Next" }, + -- Edition and navigation mappings + { "]<space>", desc = "Insert blank line below" }, + { "]<C-L>", desc = "Next location list file" }, + { "]<C-Q>", desc = "Next quickfix list file" }, + { "]<C-T>", desc = "Next tag in preview window" }, + { "]a", desc = "Next argument" }, + { "]A", desc = "Last argument" }, + { "]b", desc = "Next buffer" }, + { "]B", desc = "Last buffer" }, + { "]e", desc = "Exchange next line" }, + { "]f", desc = "Next file in directory" }, + { "]l", desc = "Next location list entry" }, + { "]L", desc = "Last Location list entry" }, + { "]n", desc = "Next conflict marker/diff hunk" }, + { "]p", desc = "Paste line below" }, + { "]P", desc = "Paste line below" }, + { "]q", desc = "Next quickfix list entry" }, + { "]Q", desc = "Last quickfix list entry" }, + { "]t", desc = "Next matching tag" }, + { "]T", desc = "Last matching tag" }, + { "]z", desc = "Next fold" }, + -- Decoding + { "]C", desc = "C string decode" }, + { "]u", desc = "URL decode" }, + { "]x", desc = "XML decode" }, + { "]y", desc = "C string decode" }, + -- Custom + { "]d", lsp.goto_next_diagnostic, desc = "Next diagnostic" }, + + -- Enable option + { "[o", desc = "Enable option" }, + { "[ob", desc = "Light background" }, + { "[oc", desc = "Cursor line" }, + { "[od", desc = "Diff" }, + { "[of", "<cmd>FormatEnable<CR>", desc = "LSP Formatting" }, + { "[oh", desc = "Search high-lighting" }, + { "[oi", desc = "Case insensitive search" }, + { "[ol", desc = "List mode" }, + { "[on", desc = "Line numbers" }, + { "[or", desc = "Relative line numbers" }, + { "[op", "<cmd>lwindow<CR>", desc = "Location list" }, + { "[oq", "<cmd>cwindow<CR>", desc = "Quickfix list" }, + { "[ou", desc = "Cursor column" }, + { "[ov", desc = "Virtual editing" }, + { "[ow", desc = "Text wrapping" }, + { "[ox", desc = "Cursor line and column" }, + { "[oz", desc = "Spell checking" }, + + -- Disable option + { "]o", desc = "Disable option" }, + { "]ob", desc = "Light background" }, + { "]oc", desc = "Cursor line" }, + { "]od", desc = "Diff" }, + { "]of", "<cmd>FormatDisable<CR>", desc = "LSP Formatting" }, + { "]oh", desc = "Search high-lighting" }, + { "]oi", desc = "Case insensitive search" }, + { "]ol", desc = "List mode" }, + { "]on", desc = "Line numbers" }, + { "]op", "<cmd>lclose<CR>", desc = "Location list" }, + { "]oq", "<cmd>cclose<CR>", desc = "Quickfix list" }, + { "]or", desc = "Relative line numbers" }, + { "]ou", desc = "Cursor column" }, + { "]ov", desc = "Virtual editing" }, + { "]ow", desc = "Text wrapping" }, + { "]ox", desc = "Cursor line and column" }, + { "]oz", desc = "Spell checking" }, + + -- Toggle option + { "yo", group = "Toggle option" }, + { "yob", desc = "Light background" }, + { "yoc", desc = "Cursor line" }, + { "yod", desc = "Diff" }, + { "yof", "<cmd>FormatToggle<CR>", desc = "LSP Formatting" }, + { "yoh", desc = "Search high-lighting" }, + { "yoi", desc = "Case insensitive search" }, + { "yol", desc = "List mode" }, + { "yon", desc = "Line numbers" }, + { "yop", "<Plug>(qf_loc_toggle)", desc = "Location list" }, + { "yoq", "<Plug>(qf_qf_toggle)", desc = "Quickfix list" }, + { "yor", desc = "Relative line numbers" }, + { "you", desc = "Cursor column" }, + { "yov", desc = "Virtual editing" }, + { "yow", desc = "Text wrapping" }, + { "yox", desc = "Cursor line and column" }, + { "yoz", desc = "Spell checking" }, } -wk.register(keys) +wk.add(keys) diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua index dc47366..1912623 100644 --- a/modules/home/vim/lua/ambroisie/lsp.lua +++ b/modules/home/vim/lua/ambroisie/lsp.lua @@ -87,31 +87,30 @@ M.on_attach = function(client, bufnr) end local keys = { - K = { vim.lsp.buf.hover, "Show symbol information" }, - ["<C-k>"] = { vim.lsp.buf.signature_help, "Show signature information" }, - ["gd"] = { vim.lsp.buf.definition, "Go to definition" }, - ["gD"] = { vim.lsp.buf.declaration, "Go to declaration" }, - ["gi"] = { vim.lsp.buf.implementation, "Go to implementation" }, - ["gr"] = { vim.lsp.buf.references, "List all references" }, - - ["<leader>c"] = { - name = "Code", - a = { vim.lsp.buf.code_action, "Code actions" }, - d = { cycle_diagnostics_display, "Cycle diagnostics display" }, - D = { show_buffer_diagnostics, "Show buffer diagnostics" }, - r = { vim.lsp.buf.rename, "Rename symbol" }, - s = { vim.lsp.buf.signature_help, "Show signature" }, - t = { vim.lsp.buf.type_definition, "Go to type definition" }, - w = { - name = "Workspace", - a = { vim.lsp.buf.add_workspace_folder, "Add folder to workspace" }, - l = { list_workspace_folders, "List folders in workspace" }, - r = { vim.lsp.buf.remove_workspace_folder, "Remove folder from workspace" }, - }, - }, + buffer = bufnr, + -- LSP navigation + { "K", vim.lsp.buf.hover, desc = "Show symbol information" }, + { "<C-k>", vim.lsp.buf.signature_help, desc = "Show signature information" }, + { "gd", vim.lsp.buf.definition, desc = "Go to definition" }, + { "gD", vim.lsp.buf.declaration, desc = "Go to declaration" }, + { "gi", vim.lsp.buf.implementation, desc = "Go to implementation" }, + { "gr", vim.lsp.buf.references, desc = "List all references" }, + -- Code + { "<leader>c", group = "Code" }, + { "<leader>ca", vim.lsp.buf.code_action, desc = "Code actions" }, + { "<leader>cd", cycle_diagnostics_display, desc = "Cycle diagnostics display" }, + { "<leader>cD", show_buffer_diagnostics, desc = "Show buffer diagnostics" }, + { "<leader>cr", vim.lsp.buf.rename, desc = "Rename symbol" }, + { "<leader>cs", vim.lsp.buf.signature_help, desc = "Show signature" }, + { "<leader>ct", vim.lsp.buf.type_definition, desc = "Go to type definition" }, + -- Workspace + { "<leader>cw", group = "Workspace" }, + { "<leader>cwa", vim.lsp.buf.add_workspace_folder, desc = "Add folder to workspace" }, + { "<leader>cwl", list_workspace_folders, desc = "List folders in workspace" }, + { "<leader>cwr", vim.lsp.buf.remove_workspace_folder, desc = "Remove folder from workspace" }, } - wk.register(keys, { buffer = bufnr }) + wk.add(keys) end return M diff --git a/modules/home/vim/plugin/settings/git.lua b/modules/home/vim/plugin/settings/git.lua index 0e3bc5e..b9b92a6 100644 --- a/modules/home/vim/plugin/settings/git.lua +++ b/modules/home/vim/plugin/settings/git.lua @@ -34,47 +34,42 @@ gitsigns.setup({ local keys = { -- Navigation - ["[c"] = { utils.partial(nav_hunk, "prev"), "Previous hunk/diff" }, - ["]c"] = { utils.partial(nav_hunk, "next"), "Next hunk/diff" }, - + { "[c", utils.partial(nav_hunk, "prev"), desc = "Previous hunk/diff" }, + { "]c", utils.partial(nav_hunk, "next"), desc = "Next hunk/diff" }, -- Commands - ["<leader>g"] = { - name = "Git", - -- Actions - b = { gitsigns.toggle_current_line_blame, "Toggle blame virtual text" }, - d = { gitsigns.diffthis, "Diff buffer" }, - D = { utils.partial(gitsigns.diffthis, "~"), "Diff buffer against last commit" }, - g = { "<cmd>Git<CR>", "Git status" }, - h = { gitsigns.toggle_deleted, "Show deleted hunks" }, - L = { "<cmd>:sp<CR><C-w>T:Gllog --follow -- %:p<CR>", "Current buffer log" }, - m = { "<Plug>(git-messenger)", "Current line blame" }, - p = { gitsigns.preview_hunk, "Preview hunk" }, - r = { gitsigns.reset_hunk, "Restore hunk" }, - R = { gitsigns.reset_buffer, "Restore buffer" }, - s = { gitsigns.stage_hunk, "Stage hunk" }, - S = { gitsigns.stage_buffer, "Stage buffer" }, - u = { gitsigns.undo_stage_hunk, "Undo stage hunk" }, - ["["] = { utils.partial(gitsigns.nav_hunk, "prev"), "Previous hunk" }, - ["]"] = { utils.partial(gitsigns.nav_hunk, "next"), "Next hunk" }, - }, + { "<leader>g", group = "Git" }, + { "<leader>gb", gitsigns.toggle_current_line_blame, desc = "Toggle blame virtual text" }, + { "<leader>gd", gitsigns.diffthis, desc = "Diff buffer" }, + { "<leader>gD", utils.partial(gitsigns.diffthis, "~"), desc = "Diff buffer against last commit" }, + { "<leader>gg", "<cmd>Git<CR>", desc = "Git status" }, + { "<leader>gh", gitsigns.toggle_deleted, desc = "Show deleted hunks" }, + { "<leader>gL", "<cmd>:sp<CR><C-w>T:Gllog --follow -- %:p<CR>", desc = "Current buffer log" }, + { "<leader>gm", "<Plug>(git-messenger)", desc = "Current line blame" }, + { "<leader>gp", gitsigns.preview_hunk, desc = "Preview hunk" }, + { "<leader>gr", gitsigns.reset_hunk, desc = "Restore hunk" }, + { "<leader>gR", gitsigns.reset_buffer, desc = "Restore buffer" }, + { "<leader>gs", gitsigns.stage_hunk, desc = "Stage hunk" }, + { "<leader>gS", gitsigns.stage_buffer, desc = "Stage buffer" }, + { "<leader>gu", gitsigns.undo_stage_hunk, desc = "Undo stage hunk" }, + { "<leader>g[", utils.partial(gitsigns.nav_hunk, "prev"), desc = "Previous hunk" }, + { "<leader>g]", utils.partial(gitsigns.nav_hunk, "next"), desc = "Next hunk" }, } local objects = { - ["ih"] = { gitsigns.select_hunk, "Git hunk" }, + mode = "o", + { "ih", gitsigns.select_hunk, desc = "Git hunk" }, } - +-- Visual local visual = { - ["ih"] = { gitsigns.select_hunk, "Git hunk" }, - - ["<leader>g"] = { - name = "Git", - p = { gitsigns.preview_hunk, "Preview selection" }, - r = { make_visual(gitsigns.reset_hunk), "Restore selection" }, - s = { make_visual(gitsigns.stage_hunk), "Stage selection" }, - u = { gitsigns.undo_stage_hunk, "Undo stage selection" }, - }, + mode = { "x" }, + { "ih", gitsigns.select_hunk, desc = "Git hunk" }, + { "<leader>g", group = "Git" }, + { "<leader>gp", gitsigns.preview_hunk, desc = "Preview selection" }, + { "<leader>gr", make_visual(gitsigns.reset_hunk), desc = "Restore selection" }, + { "<leader>gs", make_visual(gitsigns.stage_hunk), desc = "Stage selection" }, + { "<leader>gu", gitsigns.undo_stage_hunk, desc = "Undo stage selection" }, } -wk.register(keys, { buffer = bufnr }) -wk.register(objects, { buffer = bufnr, mode = "o" }) -wk.register(visual, { buffer = bufnr, mode = "x" }) +wk.add(keys) +wk.add(objects) +wk.add(visual) diff --git a/modules/home/vim/plugin/settings/oil.lua b/modules/home/vim/plugin/settings/oil.lua index e4a6716..a160725 100644 --- a/modules/home/vim/plugin/settings/oil.lua +++ b/modules/home/vim/plugin/settings/oil.lua @@ -28,7 +28,7 @@ oil.setup({ }) local keys = { - ["-"] = { oil.open, "Open parent directory" }, + { "-", oil.open, desc = "Open parent directory" }, } -wk.register(keys) +wk.add(keys) diff --git a/modules/home/vim/plugin/settings/telescope.lua b/modules/home/vim/plugin/settings/telescope.lua index 64cc298..1a23928 100644 --- a/modules/home/vim/plugin/settings/telescope.lua +++ b/modules/home/vim/plugin/settings/telescope.lua @@ -26,14 +26,12 @@ telescope.load_extension("fzf") telescope.load_extension("lsp_handlers") local keys = { - f = { - name = "Fuzzy finder", - b = { telescope_builtin.buffers, "Open buffers" }, - f = { telescope_builtin.git_files, "Git tracked files" }, - F = { telescope_builtin.find_files, "Files" }, - g = { telescope_builtin.live_grep, "Grep string" }, - G = { telescope_builtin.grep_string, "Grep string under cursor" }, - }, + { "<leader>f", group = "Fuzzy finder" }, + { "<leader>fb", telescope_builtin.buffers, desc = "Open buffers" }, + { "<leader>ff", telescope_builtin.git_files, desc = "Git tracked files" }, + { "<leader>fF", telescope_builtin.find_files, desc = "Files" }, + { "<leader>fg", telescope_builtin.live_grep, desc = "Grep string" }, + { "<leader>fG", telescope_builtin.grep_string, desc = "Grep string under cursor" }, } -wk.register(keys, { prefix = "<leader>" }) +wk.add(keys) diff --git a/modules/home/vim/plugin/settings/which-key.lua b/modules/home/vim/plugin/settings/which-key.lua index 2edfd70..81f398f 100644 --- a/modules/home/vim/plugin/settings/which-key.lua +++ b/modules/home/vim/plugin/settings/which-key.lua @@ -1,2 +1,27 @@ local wk = require("which-key") -wk.setup() +wk.setup({ + icons = { + -- I don't like icons + mappings = false, + breadcrumb = "»", + separator = "➜", + group = "+", + ellipsis = "…", + keys = { + Up = " ", + Down = " ", + Left = " ", + Right = " ", + C = "<C>", + M = "<M>", + D = "<D>", + S = "<S>", + CR = "<CR>", + Esc = "<Esc> ", + NL = "<NL>", + BS = "<BS>", + Space = "<space>", + Tab = "<Tab> ", + }, + }, +}) From 6b7510cfd943763ca09b91ea83bc2510bf0f6c86 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 25 Jul 2024 20:17:50 +0100 Subject: [PATCH 1354/1588] home: vim: show directories in blue Blue is much more readable when the night filter kicks in. --- modules/home/vim/init.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index 0186614..93eb133 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -100,6 +100,8 @@ gruvbox.setup({ DiffChange = { fg = colors.aqua, bg = "NONE" }, DiffDelete = { fg = colors.red, bg = "NONE" }, DiffText = { fg = colors.yellow, bg = colors.bg0 }, + -- Directories "pop" better in blue + Directory = { link = "GruvboxBlueBold" }, } }) EOF From ace266b02c3a45ce717ca457d9f79b49513e71cf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 26 Jul 2024 10:06:02 +0000 Subject: [PATCH 1355/1588] overlays: add 'none-ls-root-bug' Will be removed when the plug-in gets its next bump. --- overlays/none-ls-root-bug/default.nix | 4 ++++ overlays/none-ls-root-bug/generated.nix | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 overlays/none-ls-root-bug/default.nix create mode 100644 overlays/none-ls-root-bug/generated.nix diff --git a/overlays/none-ls-root-bug/default.nix b/overlays/none-ls-root-bug/default.nix new file mode 100644 index 0000000..832e71d --- /dev/null +++ b/overlays/none-ls-root-bug/default.nix @@ -0,0 +1,4 @@ +self: prev: +{ + vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); +} diff --git a/overlays/none-ls-root-bug/generated.nix b/overlays/none-ls-root-bug/generated.nix new file mode 100644 index 0000000..16d3b25 --- /dev/null +++ b/overlays/none-ls-root-bug/generated.nix @@ -0,0 +1,14 @@ +{ fetchpatch, ... }: + +_final: prev: { + none-ls-nvim = prev.none-ls-nvim.overrideAttrs (oa: { + patches = (oa.patches or [ ]) ++ [ + # https://github.com/nvimtools/none-ls.nvim/pull/163 + (fetchpatch { + name = "fix-get-root-directory.patch"; + url = "https://github.com/nvimtools/none-ls.nvim/commit/2cde745aadc2c36f6860a77a556494870675771a.patch"; + hash = "sha256-BtIjrT6ME2mR/5Ez9h+6r+fy0jYkBkw6/A9NConKRVs="; + }) + ]; + }); +} From 0d820cc2f41074564984ea0a2ba72c63bc08ef70 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 26 Jul 2024 11:52:17 +0000 Subject: [PATCH 1356/1588] home: vim: move 'nohls' to 'which-key' --- modules/home/vim/after/plugin/mappings/misc.lua | 7 ------- modules/home/vim/plugin/settings/which-key.lua | 6 ++++++ 2 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 modules/home/vim/after/plugin/mappings/misc.lua diff --git a/modules/home/vim/after/plugin/mappings/misc.lua b/modules/home/vim/after/plugin/mappings/misc.lua deleted file mode 100644 index 12dbffc..0000000 --- a/modules/home/vim/after/plugin/mappings/misc.lua +++ /dev/null @@ -1,7 +0,0 @@ -local wk = require("which-key") - -local keys = { - { "<leader><leader>", "<cmd>nohls<CR>", desc = "Clear search highlight" }, -} - -wk.add(keys) diff --git a/modules/home/vim/plugin/settings/which-key.lua b/modules/home/vim/plugin/settings/which-key.lua index 81f398f..76a2117 100644 --- a/modules/home/vim/plugin/settings/which-key.lua +++ b/modules/home/vim/plugin/settings/which-key.lua @@ -25,3 +25,9 @@ wk.setup({ }, }, }) + +local keys = { + { "<leader><leader>", "<cmd>nohls<CR>", desc = "Clear search highlight" }, +} + +wk.add(keys) From 9ed2dcefdeef07a3359985c2859b5ec1c02a8386 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 26 Jul 2024 11:54:11 +0000 Subject: [PATCH 1357/1588] home: vim: which-key: use lua callbacks --- modules/home/vim/plugin/settings/which-key.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/vim/plugin/settings/which-key.lua b/modules/home/vim/plugin/settings/which-key.lua index 76a2117..3dc260a 100644 --- a/modules/home/vim/plugin/settings/which-key.lua +++ b/modules/home/vim/plugin/settings/which-key.lua @@ -27,7 +27,7 @@ wk.setup({ }) local keys = { - { "<leader><leader>", "<cmd>nohls<CR>", desc = "Clear search highlight" }, + { "<leader><leader>", vim.cmd.nohlsearch, desc = "Clear search highlight" }, } wk.add(keys) From 1e2872c5c7ce6c07abdd4850bd100706606993f2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 27 Jul 2024 15:09:52 +0100 Subject: [PATCH 1358/1588] home: vim: fix '+'/'-' highlighting in diffs I'm not a big fan of the new highlighting [1]. [1]: https://github.com/nvim-treesitter/nvim-treesitter/pull/6619 --- modules/home/vim/after/queries/diff/highlights.scm | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 modules/home/vim/after/queries/diff/highlights.scm diff --git a/modules/home/vim/after/queries/diff/highlights.scm b/modules/home/vim/after/queries/diff/highlights.scm new file mode 100644 index 0000000..c998725 --- /dev/null +++ b/modules/home/vim/after/queries/diff/highlights.scm @@ -0,0 +1,5 @@ +; extends + +; I want to the line added/removed markers to be the correct color +"+" @diff.plus +"-" @diff.minus From 93dfe0411493683dab491f632f3f27286bf59a19 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 4 Aug 2024 11:37:33 +0100 Subject: [PATCH 1359/1588] hosts: nixos: aramis: home: use 'pinentry-rofi' --- hosts/nixos/aramis/home.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index 64b63ce..abf472a 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -2,7 +2,7 @@ { my.home = { # Use graphical pinentry - bitwarden.pinentry = pkgs.pinentry-gtk2; + bitwarden.pinentry = pkgs.pinentry-rofi; # Ebook library calibre.enable = true; # Some amount of social life @@ -14,7 +14,7 @@ # Blue light filter gammastep.enable = true; # Use a small popup to enter passwords - gpg.pinentry = pkgs.pinentry-gtk2; + gpg.pinentry = pkgs.pinentry-rofi; # Machine specific packages packages.additionalPackages = with pkgs; [ element-desktop # Matrix client From f240730c4f6fd32738b944b5ef836768da10adf2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 Aug 2024 14:15:12 +0000 Subject: [PATCH 1360/1588] flake: bump inputs And remove the overlay for `none-ls`, which has been fixed. This reverts commit ace266b02c3a45ce717ca457d9f79b49513e71cf. --- flake.lock | 36 ++++++++++++------------- overlays/none-ls-root-bug/default.nix | 4 --- overlays/none-ls-root-bug/generated.nix | 14 ---------- 3 files changed, 18 insertions(+), 36 deletions(-) delete mode 100644 overlays/none-ls-root-bug/default.nix delete mode 100644 overlays/none-ls-root-bug/generated.nix diff --git a/flake.lock b/flake.lock index 6b84846..751e70c 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1720546205, - "narHash": "sha256-boCXsjYVxDviyzoEyAk624600f3ZBo/DKtUdvMTpbGY=", + "lastModified": 1722339003, + "narHash": "sha256-ZeS51uJI30ehNkcZ4uKqT4ZDARPyqrHADSKAwv5vVCU=", "owner": "ryantm", "repo": "agenix", - "rev": "de96bd907d5fbc3b14fc33ad37d1b9a3cb15edc6", + "rev": "3f1dae074a12feb7327b4bf43cbac0d124488bb7", "type": "github" }, "original": { @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1719994518, - "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", + "lastModified": 1722555600, + "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", + "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1721852138, - "narHash": "sha256-JH8N5uoqoVA6erV4O40VtKKHsnfmhvMGbxMNDLtim5o=", + "lastModified": 1723015306, + "narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=", "owner": "nix-community", "repo": "home-manager", - "rev": "304a011325b7ac7b8c9950333cd215a7aa146b0e", + "rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1721743106, - "narHash": "sha256-adRZhFpBTnHiK3XIELA3IBaApz70HwCYfv7xNrHjebA=", + "lastModified": 1722813957, + "narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dc14ed91132ee3a26255d01d8fd0c1f5bff27b2f", + "rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1721930286, - "narHash": "sha256-IUr/laHRe52MkPlOSflG1GThgQo+ECmAP7O51RxLduI=", + "lastModified": 1723036652, + "narHash": "sha256-YIKo7vD/wkItzqIzg7u9bxYPhPwKhJbRbFcENuT0p68=", "owner": "nix-community", "repo": "NUR", - "rev": "3ea857d2abb7f3825976cefc50894d35ca55f8c4", + "rev": "2ee33d83d919b2375ebeeee175fab2af02dff92f", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1721042469, - "narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=", + "lastModified": 1722857853, + "narHash": "sha256-3Zx53oz/MSIyevuWO/SumxABkrIvojnB7g9cimxkhiE=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd", + "rev": "06939f6b7ec4d4f465bf3132a05367cccbbf64da", "type": "github" }, "original": { diff --git a/overlays/none-ls-root-bug/default.nix b/overlays/none-ls-root-bug/default.nix deleted file mode 100644 index 832e71d..0000000 --- a/overlays/none-ls-root-bug/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -self: prev: -{ - vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); -} diff --git a/overlays/none-ls-root-bug/generated.nix b/overlays/none-ls-root-bug/generated.nix deleted file mode 100644 index 16d3b25..0000000 --- a/overlays/none-ls-root-bug/generated.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ fetchpatch, ... }: - -_final: prev: { - none-ls-nvim = prev.none-ls-nvim.overrideAttrs (oa: { - patches = (oa.patches or [ ]) ++ [ - # https://github.com/nvimtools/none-ls.nvim/pull/163 - (fetchpatch { - name = "fix-get-root-directory.patch"; - url = "https://github.com/nvimtools/none-ls.nvim/commit/2cde745aadc2c36f6860a77a556494870675771a.patch"; - hash = "sha256-BtIjrT6ME2mR/5Ez9h+6r+fy0jYkBkw6/A9NConKRVs="; - }) - ]; - }); -} From 8ed69de4be87e5f558216df84d6563a5d3727778 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 10 Aug 2024 12:09:02 +0100 Subject: [PATCH 1361/1588] hosts: nixos: aramis: home: remove 'pinentry-rofi' I'm not sure why, but it's messing with my `gpg-agent`... But I didn't get any issues with `rbw`. I'll try and figure out why. This reverts commit 93dfe0411493683dab491f632f3f27286bf59a19. --- hosts/nixos/aramis/home.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index abf472a..64b63ce 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -2,7 +2,7 @@ { my.home = { # Use graphical pinentry - bitwarden.pinentry = pkgs.pinentry-rofi; + bitwarden.pinentry = pkgs.pinentry-gtk2; # Ebook library calibre.enable = true; # Some amount of social life @@ -14,7 +14,7 @@ # Blue light filter gammastep.enable = true; # Use a small popup to enter passwords - gpg.pinentry = pkgs.pinentry-rofi; + gpg.pinentry = pkgs.pinentry-gtk2; # Machine specific packages packages.additionalPackages = with pkgs; [ element-desktop # Matrix client From 483c5d23e0b6fe8b9379c4245a79876d1a1fc585 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 14 Aug 2024 12:50:20 +0000 Subject: [PATCH 1362/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 751e70c..9c8bb14 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1722339003, - "narHash": "sha256-ZeS51uJI30ehNkcZ4uKqT4ZDARPyqrHADSKAwv5vVCU=", + "lastModified": 1723293904, + "narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=", "owner": "ryantm", "repo": "agenix", - "rev": "3f1dae074a12feb7327b4bf43cbac0d124488bb7", + "rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1723015306, - "narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=", + "lastModified": 1723399884, + "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=", "owner": "nix-community", "repo": "home-manager", - "rev": "b3d5ea65d88d67d4ec578ed11d4d2d51e3de525e", + "rev": "086f619dd991a4d355c07837448244029fc2d9ab", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1722813957, - "narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", + "lastModified": 1723362943, + "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", + "rev": "a58bc8ad779655e790115244571758e8de055e3d", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1723036652, - "narHash": "sha256-YIKo7vD/wkItzqIzg7u9bxYPhPwKhJbRbFcENuT0p68=", + "lastModified": 1723632306, + "narHash": "sha256-WzILwMkbQ4S1ks1g5AzeHNTIWj5AcJ6PwQDUnHNWmM8=", "owner": "nix-community", "repo": "NUR", - "rev": "2ee33d83d919b2375ebeeee175fab2af02dff92f", + "rev": "dc6d7986f1d0a0d03f1a270e22352181f074e70a", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1722857853, - "narHash": "sha256-3Zx53oz/MSIyevuWO/SumxABkrIvojnB7g9cimxkhiE=", + "lastModified": 1723202784, + "narHash": "sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "06939f6b7ec4d4f465bf3132a05367cccbbf64da", + "rev": "c7012d0c18567c889b948781bc74a501e92275d1", "type": "github" }, "original": { From e94bdef69050914da09e280d97b8022254adc600 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 28 Jul 2024 11:53:10 +0200 Subject: [PATCH 1363/1588] hosts: nixos: porthos: secrets: fix SSO owner --- hosts/nixos/porthos/secrets/secrets.nix | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index c43376b..a9b9c51 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -81,9 +81,18 @@ in "pyload/credentials.age".publicKeys = all; - "sso/auth-key.age".publicKeys = all; - "sso/ambroisie/password-hash.age".publicKeys = all; - "sso/ambroisie/totp-secret.age".publicKeys = all; + "sso/auth-key.age" = { + owner = "nginx-sso"; + publicKeys = all; + }; + "sso/ambroisie/password-hash.age" = { + owner = "nginx-sso"; + publicKeys = all; + }; + "sso/ambroisie/totp-secret.age" = { + owner = "nginx-sso"; + publicKeys = all; + }; "tandoor-recipes/secret-key.age".publicKeys = all; From 44c11fc431b4b349dfa350f6cf9b3a1f83fd3a0d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 4 Sep 2024 12:07:33 +0200 Subject: [PATCH 1364/1588] pkgs: lohr: 0.4.5 -> 0.4.6 --- pkgs/lohr/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix index ddeac7a..b89ccff 100644 --- a/pkgs/lohr/default.nix +++ b/pkgs/lohr/default.nix @@ -1,16 +1,16 @@ { lib, fetchFromGitHub, rustPlatform }: rustPlatform.buildRustPackage rec { pname = "lohr"; - version = "0.4.5"; + version = "0.4.6"; src = fetchFromGitHub { owner = "alarsyo"; repo = "lohr"; rev = "v${version}"; - hash = "sha256-p6E/r+OxFTpxDpOKSlacOxvRLfHSKg1mHNAfTytfqDY="; + hash = "sha256-dunQgtap+XCK5LoSyOqIY/6p6HizBeiyPWNuCffwjDU="; }; - cargoHash = "sha256-hext0S0o9D9pN9epzXtD5dwAYMPCLpBBOBT4FX0mTMk="; + cargoHash = "sha256-EUhyrhPe+mUgMmm4o+bxRIiSNReJRfw+/O1fPr8r7lo="; meta = with lib; { description = "Git mirroring daemon"; From 10727f9eea517935c8b968540d7a9ff0cf6c4b4f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 26 Aug 2024 22:40:46 +0200 Subject: [PATCH 1365/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 9c8bb14..ee428c0 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1723399884, - "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=", + "lastModified": 1724435763, + "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", "owner": "nix-community", "repo": "home-manager", - "rev": "086f619dd991a4d355c07837448244029fc2d9ab", + "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1723362943, - "narHash": "sha256-dFZRVSgmJkyM0bkPpaYRtG/kRMRTorUIDj8BxoOt1T4=", + "lastModified": 1724479785, + "narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a58bc8ad779655e790115244571758e8de055e3d", + "rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1723632306, - "narHash": "sha256-WzILwMkbQ4S1ks1g5AzeHNTIWj5AcJ6PwQDUnHNWmM8=", + "lastModified": 1724704503, + "narHash": "sha256-QcZKCI9d5UNuQt6UFQSNhQwzXnXDF8jgCy7julsbnvg=", "owner": "nix-community", "repo": "NUR", - "rev": "dc6d7986f1d0a0d03f1a270e22352181f074e70a", + "rev": "6b1fa8a8dec17eb73962a0eac8e04f2df1439448", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1723202784, - "narHash": "sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q=", + "lastModified": 1724440431, + "narHash": "sha256-9etXEOUtzeMgqg1u0wp+EdwG7RpmrAZ2yX516bMj2aE=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "c7012d0c18567c889b948781bc74a501e92275d1", + "rev": "c8a54057aae480c56e28ef3e14e4960628ac495b", "type": "github" }, "original": { From 445cb43cb42270065d312ded3d69160e2603833c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 4 Sep 2024 10:34:37 +0000 Subject: [PATCH 1366/1588] nixos: services: nix-cache: fix deprecated config --- modules/nixos/services/nix-cache/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/nix-cache/default.nix b/modules/nixos/services/nix-cache/default.nix index 1ce3161..f3a29aa 100644 --- a/modules/nixos/services/nix-cache/default.nix +++ b/modules/nixos/services/nix-cache/default.nix @@ -40,7 +40,7 @@ in inherit (cfg) priority; }; - signKeyPath = cfg.secretKeyFile; + signKeyPaths = [ cfg.secretKeyFile ]; }; my.services.nginx.virtualHosts = { From fb4047b2b303f2dbdf91a862ee4ab543594c21dd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 4 Sep 2024 12:07:33 +0200 Subject: [PATCH 1367/1588] nixos: services: nginx: sso: align with upstream This aligns with the PR I opened on nixpkgs [1]. [1]: https://github.com/NixOS/nixpkgs/pull/325838 --- modules/nixos/services/nginx/sso/default.nix | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/modules/nixos/services/nginx/sso/default.nix b/modules/nixos/services/nginx/sso/default.nix index 4a78282..d60e31b 100644 --- a/modules/nixos/services/nginx/sso/default.nix +++ b/modules/nixos/services/nginx/sso/default.nix @@ -59,15 +59,10 @@ in StateDirectory = "nginx-sso"; WorkingDirectory = "/var/lib/nginx-sso"; # The files to be merged might not have the correct permissions - ExecStartPre = ''+${pkgs.writeShellScript "merge-nginx-sso-config" '' + ExecStartPre = pkgs.writeShellScript "merge-nginx-sso-config" '' rm -f '${confPath}' ${utils.genJqSecretsReplacementSnippet cfg.configuration confPath} - - # Fix permissions - chown nginx-sso:nginx-sso ${confPath} - chmod 0600 ${confPath} - '' - }''; + ''; ExecStart = lib.mkForce '' ${lib.getExe pkg} \ --config ${confPath} \ From 52197a4f965dab7fe16bfc2fe6f301da8bc184a4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 4 Sep 2024 12:07:33 +0200 Subject: [PATCH 1368/1588] nixos: services: pirate: add readarr --- modules/nixos/services/pirate/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/nixos/services/pirate/default.nix b/modules/nixos/services/pirate/default.nix index e500b54..822a8aa 100644 --- a/modules/nixos/services/pirate/default.nix +++ b/modules/nixos/services/pirate/default.nix @@ -10,6 +10,7 @@ let bazarr = 6767; lidarr = 8686; radarr = 7878; + readarr = 8787; sonarr = 8989; }; @@ -67,6 +68,10 @@ in enable = lib.my.mkDisableOption "Radarr"; }; + readarr = { + enable = lib.my.mkDisableOption "Readarr"; + }; + sonarr = { enable = lib.my.mkDisableOption "Sonarr"; }; @@ -85,6 +90,9 @@ in # Radarr for movies (mkFullConfig "radarr") (mkFail2Ban "radarr") + # Readarr for books + (mkFullConfig "readarr") + (mkFail2Ban "readarr") # Sonarr for shows (mkFullConfig "sonarr") (mkFail2Ban "sonarr") From 6f00036b7963ac6674a40c5d2bc8fe8a25fe79cf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 4 Sep 2024 12:07:33 +0200 Subject: [PATCH 1369/1588] overlays: add 'downgrade-transmission' The 4.0.6 release is buggy and widely blacklisted. --- overlays/downgrade-transmission/default.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 overlays/downgrade-transmission/default.nix diff --git a/overlays/downgrade-transmission/default.nix b/overlays/downgrade-transmission/default.nix new file mode 100644 index 0000000..9d3fc8a --- /dev/null +++ b/overlays/downgrade-transmission/default.nix @@ -0,0 +1,14 @@ +self: prev: +{ + transmission_4 = prev.transmission_4.overrideAttrs (_: { + version = "4.0.5"; + + src = self.fetchFromGitHub { + owner = "transmission"; + repo = "transmission"; + rev = "4.0.5"; + hash = "sha256-gd1LGAhMuSyC/19wxkoE2mqVozjGPfupIPGojKY0Hn4="; + fetchSubmodules = true; + }; + }); +} From 0d2b9c969940e403a48af210dd856c2d086d360a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 5 Sep 2024 10:39:01 +0000 Subject: [PATCH 1370/1588] nixos: services: rename 'servarr' --- hosts/nixos/porthos/services.nix | 16 ++++++++-------- modules/nixos/services/default.nix | 2 +- .../services/{pirate => servarr}/default.nix | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) rename modules/nixos/services/{pirate => servarr}/default.nix (96%) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 23901f7..38e827b 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -127,14 +127,6 @@ in passwordFile = secrets."paperless/password".path; secretKeyFile = secrets."paperless/secret-key".path; }; - # The whole *arr software suite - pirate = { - enable = true; - # ... But not Lidarr because I don't care for music that much - lidarr = { - enable = false; - }; - }; # Podcast automatic downloader podgrab = { enable = true; @@ -152,6 +144,14 @@ in rss-bridge.enable = true; # Usenet client sabnzbd.enable = true; + # The whole *arr software suite + servarr = { + enable = true; + # ... But not Lidarr because I don't care for music that much + lidarr = { + enable = false; + }; + }; # Because I stilll need to play sysadmin ssh-server.enable = true; # Recipe manager diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 60b2478..e877c8f 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -26,7 +26,6 @@ ./nginx ./nix-cache ./paperless - ./pirate ./podgrab ./postgresql ./postgresql-backup @@ -34,6 +33,7 @@ ./quassel ./rss-bridge ./sabnzbd + ./servarr ./ssh-server ./tandoor-recipes ./tlp diff --git a/modules/nixos/services/pirate/default.nix b/modules/nixos/services/servarr/default.nix similarity index 96% rename from modules/nixos/services/pirate/default.nix rename to modules/nixos/services/servarr/default.nix index 822a8aa..e25d9cf 100644 --- a/modules/nixos/services/pirate/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -4,7 +4,7 @@ # [1]: https://youtu.be/I26Ql-uX6AM { config, lib, ... }: let - cfg = config.my.services.pirate; + cfg = config.my.services.servarr; ports = { bazarr = 6767; @@ -53,7 +53,7 @@ let ]); in { - options.my.services.pirate = { + options.my.services.servarr = { enable = lib.mkEnableOption "Media automation"; bazarr = { From 9b7bab8e8306e8138b5559929f28f46ac4333768 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 5 Sep 2024 18:09:50 +0200 Subject: [PATCH 1371/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index ee428c0..0c1b965 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1722555600, - "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", + "lastModified": 1725234343, + "narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", + "rev": "567b938d64d4b4112ee253b9274472dc3a346eb6", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1724435763, - "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", + "lastModified": 1725180166, + "narHash": "sha256-fzssXuGR/mCeGbzM1ExaTqDz7QDGta3WA4jJsZyRruo=", "owner": "nix-community", "repo": "home-manager", - "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", + "rev": "471e3eb0a114265bcd62d11d58ba8d3421ee68eb", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1724479785, - "narHash": "sha256-pP3Azj5d6M5nmG68Fu4JqZmdGt4S4vqI5f8te+E/FTw=", + "lastModified": 1725432240, + "narHash": "sha256-+yj+xgsfZaErbfYM3T+QvEE2hU7UuE+Jf0fJCJ8uPS0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d0e1602ddde669d5beb01aec49d71a51937ed7be", + "rev": "ad416d066ca1222956472ab7d0555a6946746a80", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1724704503, - "narHash": "sha256-QcZKCI9d5UNuQt6UFQSNhQwzXnXDF8jgCy7julsbnvg=", + "lastModified": 1725551138, + "narHash": "sha256-4tSFz+wu2NvB41MLF68PDLM3gu8lg1hjgtgikbRq6Zo=", "owner": "nix-community", "repo": "NUR", - "rev": "6b1fa8a8dec17eb73962a0eac8e04f2df1439448", + "rev": "06bc57134f691188397ebeffa9b88552cc8090d3", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1724440431, - "narHash": "sha256-9etXEOUtzeMgqg1u0wp+EdwG7RpmrAZ2yX516bMj2aE=", + "lastModified": 1725513492, + "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "c8a54057aae480c56e28ef3e14e4960628ac495b", + "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", "type": "github" }, "original": { From a713913eefd3a201f971c456c648099d5ca1e3e1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 22 Aug 2024 23:44:40 +0200 Subject: [PATCH 1372/1588] nixos: services: add pdf-edit --- modules/nixos/services/default.nix | 1 + modules/nixos/services/pdf-edit/default.nix | 73 +++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 modules/nixos/services/pdf-edit/default.nix diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index e877c8f..1211ee6 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -26,6 +26,7 @@ ./nginx ./nix-cache ./paperless + ./pdf-edit ./podgrab ./postgresql ./postgresql-backup diff --git a/modules/nixos/services/pdf-edit/default.nix b/modules/nixos/services/pdf-edit/default.nix new file mode 100644 index 0000000..d59507b --- /dev/null +++ b/modules/nixos/services/pdf-edit/default.nix @@ -0,0 +1,73 @@ +{ config, lib, ... }: +let + cfg = config.my.services.pdf-edit; +in +{ + options.my.services.pdf-edit = with lib; { + enable = mkEnableOption "PDF edition service"; + + port = mkOption { + type = types.port; + default = 8089; + example = 8080; + description = "Internal port for webui"; + }; + + loginFile = mkOption { + type = types.str; + example = "/run/secrets/pdf-edit/login.env"; + description = '' + `SECURITY_INITIALLOGIN_USERNAME` and `SECURITY_INITIALLOGIN_PASSWORD` + defined in the format of 'EnvironmentFile' (see `systemd.exec(5)`). + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.stirling-pdf = lib.mkIf cfg.enable { + enable = true; + + environment = { + SERVER_PORT = cfg.port; + SECURITY_CSRFDISABLED = "false"; + + SYSTEM_SHOWUPDATE = "false"; # We don't care about update notifications + INSTALL_BOOK_AND_ADVANCED_HTML_OPS = "true"; # Installed by the module + + SECURITY_ENABLELOGIN = "true"; + SECURITY_LOGINATTEMPTCOUNT = "-1"; # Rely on fail2ban instead + }; + + environmentFiles = [ cfg.loginFile ]; + }; + + my.services.nginx.virtualHosts = { + pdf-edit = { + inherit (cfg) port; + + extraConfig = { + # Allow upload of PDF files up to 1G + locations."/".extraConfig = '' + client_max_body_size 1G; + ''; + }; + }; + }; + + services.fail2ban.jails = { + stirling-pdf = '' + enabled = true + filter = stirling-pdf + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/stirling-pdf.conf".text = '' + [Definition] + failregex = ^.*Failed login attempt from IP: <HOST>$ + journalmatch = _SYSTEMD_UNIT=stirling-pdf.service + ''; + }; + }; +} From 90dcf3a1641aa93a4ce14cc8a9c49ba3efec8108 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 22 Aug 2024 23:45:16 +0200 Subject: [PATCH 1373/1588] hosts: nixos: porthos: secrets: add pdf-edit --- hosts/nixos/porthos/secrets/pdf-edit/login.age | 8 ++++++++ hosts/nixos/porthos/secrets/secrets.nix | 2 ++ 2 files changed, 10 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/pdf-edit/login.age diff --git a/hosts/nixos/porthos/secrets/pdf-edit/login.age b/hosts/nixos/porthos/secrets/pdf-edit/login.age new file mode 100644 index 0000000..7f13f88 --- /dev/null +++ b/hosts/nixos/porthos/secrets/pdf-edit/login.age @@ -0,0 +1,8 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg VYlHgHSLpfKb5bn1XA3aCpfX7M23DgbraLxxOfo9PDk +Rj+mDvAsWX3WwpuhTrOubmo17j/aud5+P87df5bosBA +-> ssh-ed25519 jPowng o9ZFaYrITZ6DjWw07Vk/+TkuU187/ytlEK4sw7G32G4 +zmxlpDvDDEgQFqBVARXeX1ABhvfJ4uAHfa6mIxXzjAY +--- k/d9FWW8/OSo8EllwOBV74pZyX918u54jEljGk3ATUc +4+2{hE7!ҭGA`ׁ_@ߗR_6JL4v,6%#^  BOF|7ܽL]jR +B۾as]xS pbo#J1Q=t}5>O{+. M"7ey \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index a9b9c51..a8a9819 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -77,6 +77,8 @@ in "paperless/password.age".publicKeys = all; "paperless/secret-key.age".publicKeys = all; + "pdf-edit/login.age".publicKeys = all; + "podgrab/password.age".publicKeys = all; "pyload/credentials.age".publicKeys = all; From f91286d13b9e111355f11d0e54da897444207471 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 6 Sep 2024 20:52:26 +0100 Subject: [PATCH 1374/1588] flake: bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 0c1b965..88fda1a 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1725180166, - "narHash": "sha256-fzssXuGR/mCeGbzM1ExaTqDz7QDGta3WA4jJsZyRruo=", + "lastModified": 1725628988, + "narHash": "sha256-Y6TBMTGu4bddUwszGjlcOuN0soVc1Gv43hp+1sT/GNI=", "owner": "nix-community", "repo": "home-manager", - "rev": "471e3eb0a114265bcd62d11d58ba8d3421ee68eb", + "rev": "127ccc3eb7e36fa75e8c3fbd8a343154f66cc1c6", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1725551138, - "narHash": "sha256-4tSFz+wu2NvB41MLF68PDLM3gu8lg1hjgtgikbRq6Zo=", + "lastModified": 1725647621, + "narHash": "sha256-GzILohiffZJQYq0dTg6PW36S0N0jV4rhcUmNbKxP+p8=", "owner": "nix-community", "repo": "NUR", - "rev": "06bc57134f691188397ebeffa9b88552cc8090d3", + "rev": "fa9112b06f678299e8c85dade3654cf8c5d7e1b4", "type": "github" }, "original": { From fbd3b70d61bd733af033545d4cfe4809fbb068a3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 29 Aug 2024 10:10:26 +0000 Subject: [PATCH 1375/1588] home: use 'XDG_STATE_HOME' for history files It's specified as the place to put them, so let's make use of it I guess. --- modules/home/gdb/default.nix | 4 ++-- modules/home/pager/default.nix | 2 +- modules/home/wget/default.nix | 2 +- modules/home/xdg/default.nix | 9 ++++++--- modules/home/zsh/default.nix | 2 +- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/modules/home/gdb/default.nix b/modules/home/gdb/default.nix index efb49e2..1ffc6bd 100644 --- a/modules/home/gdb/default.nix +++ b/modules/home/gdb/default.nix @@ -23,11 +23,11 @@ in xdg = { configFile."gdb/gdbinit".source = ./gdbinit; - dataFile. "gdb/.keep".text = ""; + stateFile."gdb/.keep".text = ""; }; home.sessionVariables = { - GDBHISTFILE = "${config.xdg.dataHome}/gdb/gdb_history"; + GDBHISTFILE = "${config.xdg.stateHome}/gdb/gdb_history"; }; } diff --git a/modules/home/pager/default.nix b/modules/home/pager/default.nix index e304097..1119440 100644 --- a/modules/home/pager/default.nix +++ b/modules/home/pager/default.nix @@ -15,7 +15,7 @@ in # Clear the screen on start and exit LESS = "-R -+X -c"; # Better XDG compliance - LESSHISTFILE = "${config.xdg.dataHome}/less/history"; + LESSHISTFILE = "${config.xdg.stateHome}/less/history"; LESSKEY = "${config.xdg.configHome}/less/lesskey"; }; }; diff --git a/modules/home/wget/default.nix b/modules/home/wget/default.nix index 32c13c0..1be5397 100644 --- a/modules/home/wget/default.nix +++ b/modules/home/wget/default.nix @@ -20,7 +20,7 @@ in }; xdg.configFile."wgetrc".text = '' - hsts-file = ${config.xdg.dataHome}/wget-hsts + hsts-file = ${config.xdg.stateHome}/wget-hsts ''; }; } diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index fb2668c..e180f27 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -34,6 +34,9 @@ in "gdb/.keep".text = ""; "tig/.keep".text = ""; }; + stateFile = { + "python/.keep".text = ""; + }; }; # I want a tidier home @@ -43,13 +46,13 @@ in CARGO_HOME = "${dataHome}/cargo"; DOCKER_CONFIG = "${configHome}/docker"; GRADLE_USER_HOME = "${dataHome}/gradle"; - HISTFILE = "${dataHome}/bash/history"; + HISTFILE = "${stateHome}/bash/history"; INPUTRC = "${configHome}/readline/inputrc"; - PSQL_HISTORY = "${dataHome}/psql_history"; + PSQL_HISTORY = "${stateHome}/psql_history"; PYTHONPYCACHEPREFIX = "${cacheHome}/python/"; PYTHONUSERBASE = "${dataHome}/python/"; PYTHON_HISTORY = "${stateHome}/python/history"; - REDISCLI_HISTFILE = "${dataHome}/redis/rediscli_history"; + REDISCLI_HISTFILE = "${stateHome}/redis/rediscli_history"; REPO_CONFIG_DIR = "${configHome}/repo"; XCOMPOSECACHE = "${dataHome}/X11/xcompose"; _JAVA_OPTIONS = "-Djava.util.prefs.userRoot=${configHome}/java"; diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index a277366..11b6cb2 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -68,7 +68,7 @@ in ignoreSpace = true; ignoreDups = true; share = false; - path = "${config.xdg.dataHome}/zsh/zsh_history"; + path = "${config.xdg.stateHome}/zsh/zsh_history"; }; plugins = [ From e67b055a7bde91d1ee9d601a2ce71e0965459490 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 9 Sep 2024 15:27:51 +0000 Subject: [PATCH 1376/1588] home: vim: fix unimpaired mapping groups --- modules/home/vim/after/plugin/mappings/unimpaired.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/vim/after/plugin/mappings/unimpaired.lua b/modules/home/vim/after/plugin/mappings/unimpaired.lua index a0336d1..82aab05 100644 --- a/modules/home/vim/after/plugin/mappings/unimpaired.lua +++ b/modules/home/vim/after/plugin/mappings/unimpaired.lua @@ -66,7 +66,7 @@ local keys = { { "]d", lsp.goto_next_diagnostic, desc = "Next diagnostic" }, -- Enable option - { "[o", desc = "Enable option" }, + { "[o", group = "Enable option" }, { "[ob", desc = "Light background" }, { "[oc", desc = "Cursor line" }, { "[od", desc = "Diff" }, @@ -85,7 +85,7 @@ local keys = { { "[oz", desc = "Spell checking" }, -- Disable option - { "]o", desc = "Disable option" }, + { "]o", group = "Disable option" }, { "]ob", desc = "Light background" }, { "]oc", desc = "Cursor line" }, { "]od", desc = "Diff" }, From 6529bea6bb1af7cc082cad514321bb694a297ed8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 11 Sep 2024 10:28:32 +0000 Subject: [PATCH 1377/1588] home: nixpkgs: don't use 'escapeShellArg' I don't know what I was thinking exactly when I wrote this, but I clearly hadn't tested it. We can't use `escapeShellArg` as we need to expand the `$XDG_RUNTIME_DIR` variable used in those paths... This reverts commit 468eaa9ed47f3c5077a1e176d3a53e7dc3087fcc. --- modules/home/nixpkgs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/nixpkgs/default.nix b/modules/home/nixpkgs/default.nix index a4946db..720fc9b 100644 --- a/modules/home/nixpkgs/default.nix +++ b/modules/home/nixpkgs/default.nix @@ -13,8 +13,8 @@ in ]; home.sessionVariables = { - GITHUB_TOKEN = ''$(cat ${lib.escapeShellArg config.age.secrets."github/token".path})''; - GITHUB_API_TOKEN = ''$(cat ${lib.escapeShellArg config.age.secrets."github/token".path})''; + GITHUB_TOKEN = ''$(cat "${config.age.secrets."github/token".path}")''; + GITHUB_API_TOKEN = ''$(cat "${config.age.secrets."github/token".path}")''; }; }; } From 4f73945e283a15a4cd03178d27bd957fd30a066e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Sep 2024 12:07:22 +0000 Subject: [PATCH 1378/1588] home: direnv: silence 'layout_poetry' --- modules/home/direnv/lib/python.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/direnv/lib/python.sh b/modules/home/direnv/lib/python.sh index 15a273f..650115d 100644 --- a/modules/home/direnv/lib/python.sh +++ b/modules/home/direnv/lib/python.sh @@ -14,7 +14,7 @@ layout_poetry() { fi # create venv if it doesn't exist - poetry run true + poetry run -q -- true # shellcheck disable=2155 export VIRTUAL_ENV=$(poetry env info --path) From 8a6af0e5b73c4e1a87e8da95aa339526a909495f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Sep 2024 12:08:50 +0000 Subject: [PATCH 1379/1588] home: direnv: only mention 'poetry init' `poetry new` creates a new directory, which isn't really what we're interested in here. --- modules/home/direnv/lib/python.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/direnv/lib/python.sh b/modules/home/direnv/lib/python.sh index 650115d..eae6d26 100644 --- a/modules/home/direnv/lib/python.sh +++ b/modules/home/direnv/lib/python.sh @@ -9,7 +9,7 @@ layout_poetry() { if [[ ! -f pyproject.toml ]]; then # shellcheck disable=2016 - log_error 'layout_poetry: no pyproject.toml found. Use `poetry new` or `poetry init` to create one first' + log_error 'layout_poetry: no pyproject.toml found. Use `poetry init` to create one first' return 1 fi From 8d344b5d5104aa550cf1e2388f5b9bf2573dec41 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 12 Sep 2024 13:23:19 +0000 Subject: [PATCH 1380/1588] home: direnv: add 'layout_uv' I haven't really played with it yet, but from my small experiments this should be good enough for my (future) purposes. --- modules/home/direnv/lib/python.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/modules/home/direnv/lib/python.sh b/modules/home/direnv/lib/python.sh index eae6d26..d1e67a2 100644 --- a/modules/home/direnv/lib/python.sh +++ b/modules/home/direnv/lib/python.sh @@ -23,3 +23,34 @@ layout_poetry() { watch_file pyproject.toml watch_file poetry.lock } + +layout_uv() { + if ! has uv; then + # shellcheck disable=2016 + log_error 'layout_uv: `uv` is not in PATH' + return 1 + fi + + if [[ ! -f pyproject.toml ]]; then + # shellcheck disable=2016 + log_error 'layout_uv: no pyproject.toml found. Use `uv init` to create one first' + return 1 + fi + + local default_venv="$PWD/.venv" + : "${VIRTUAL_ENV:=$default_venv}" + + # Use non-default venv path if required + if [ "$VIRTUAL_ENV" != "$default_venv" ]; then + export UV_PROJECT_ENVIRONMENT="$VIRTUAL_ENV" + fi + + # create venv if it doesn't exist + uv venv -q + + export VIRTUAL_ENV + export UV_ACTIVE=1 + PATH_add "$VIRTUAL_ENV/bin" + watch_file pyproject.toml + watch_file uv.lock +} From 4a38757db92d2b621812558c219479cc2872ce33 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 19 Sep 2024 11:58:55 +0000 Subject: [PATCH 1381/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 88fda1a..393a824 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1725234343, - "narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=", + "lastModified": 1726153070, + "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "567b938d64d4b4112ee253b9274472dc3a346eb6", + "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", "type": "github" }, "original": { @@ -94,11 +94,11 @@ ] }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1725628988, - "narHash": "sha256-Y6TBMTGu4bddUwszGjlcOuN0soVc1Gv43hp+1sT/GNI=", + "lastModified": 1726611255, + "narHash": "sha256-/bxaYvIK6/d3zqpW26QFS0rqfd0cO4qreSNWvYLTl/w=", "owner": "nix-community", "repo": "home-manager", - "rev": "127ccc3eb7e36fa75e8c3fbd8a343154f66cc1c6", + "rev": "d2493de5cd1da06b6a4c3e97f4e7d5dd791df457", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1725432240, - "narHash": "sha256-+yj+xgsfZaErbfYM3T+QvEE2hU7UuE+Jf0fJCJ8uPS0=", + "lastModified": 1726463316, + "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad416d066ca1222956472ab7d0555a6946746a80", + "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1725647621, - "narHash": "sha256-GzILohiffZJQYq0dTg6PW36S0N0jV4rhcUmNbKxP+p8=", + "lastModified": 1726739127, + "narHash": "sha256-eI3C3B30nSiobx/Ld3n7ZL38Omn2zEIAwCgtgwCQaQc=", "owner": "nix-community", "repo": "NUR", - "rev": "fa9112b06f678299e8c85dade3654cf8c5d7e1b4", + "rev": "cb39c55630fd1660784dc5f60eb48adaeb9e950e", "type": "github" }, "original": { From c1eab0edeef61911777341fb8f4f4e7f19c51a21 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 20 Sep 2024 14:39:53 +0000 Subject: [PATCH 1382/1588] nixos: services: jellyfin: add fail2ban jail The upstream documentation adds quotes around the IP, but I don't see them in my logs. Let's split the difference by making them optional. --- modules/nixos/services/jellyfin/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/nixos/services/jellyfin/default.nix b/modules/nixos/services/jellyfin/default.nix index f5aaa99..e8910a5 100644 --- a/modules/nixos/services/jellyfin/default.nix +++ b/modules/nixos/services/jellyfin/default.nix @@ -41,5 +41,21 @@ in }; }; }; + + services.fail2ban.jails = { + jellyfin = '' + enabled = true + filter = jellyfin + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/jellyfin.conf".text = '' + [Definition] + failregex = ^.*Authentication request for .* has been denied \(IP: "?<ADDR>"?\)\. + journalmatch = _SYSTEMD_UNIT=jellyfin.service + ''; + }; }; } From 129d4b3a5a6e5ad1dbd80b3a04f3ff5bc32cf6e4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 22 Aug 2024 23:46:25 +0200 Subject: [PATCH 1383/1588] hosts: nixos: porthos: services: enable pdf-edit --- hosts/nixos/porthos/services.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 38e827b..5792be3 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -127,6 +127,11 @@ in passwordFile = secrets."paperless/password".path; secretKeyFile = secrets."paperless/secret-key".path; }; + # Sometimes, editing PDFs is useful + pdf-edit = { + enable = true; + loginFile = secrets."pdf-edit/login".path; + }; # Podcast automatic downloader podgrab = { enable = true; From cedac6bbf46605fffd52859dc7d5ffdb55e78cec Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 22 Sep 2024 00:43:17 +0200 Subject: [PATCH 1384/1588] nixos: services: mealie: add fail2ban jail --- modules/nixos/services/mealie/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/nixos/services/mealie/default.nix b/modules/nixos/services/mealie/default.nix index 96b9e14..664d5ba 100644 --- a/modules/nixos/services/mealie/default.nix +++ b/modules/nixos/services/mealie/default.nix @@ -71,5 +71,21 @@ in }; }; }; + + services.fail2ban.jails = { + mealie = '' + enabled = true + filter = mealie + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/mealie.conf".text = '' + [Definition] + failregex = ^.*ERROR.*Incorrect username or password from <HOST> + journalmatch = _SYSTEMD_UNIT=mealie.service + ''; + }; }; } From f24cf2e16d7d25c387851a888e6615768d24b47d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 22 Sep 2024 01:10:52 +0200 Subject: [PATCH 1385/1588] nixos: services: audiobookshelf: add fail2ban jail --- .../nixos/services/audiobookshelf/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/nixos/services/audiobookshelf/default.nix b/modules/nixos/services/audiobookshelf/default.nix index 8c9719d..da9ec55 100644 --- a/modules/nixos/services/audiobookshelf/default.nix +++ b/modules/nixos/services/audiobookshelf/default.nix @@ -35,5 +35,21 @@ in }; }; }; + + services.fail2ban.jails = { + audiobookshelf = '' + enabled = true + filter = audiobookshelf + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/audiobookshelf.conf".text = '' + [Definition] + failregex = ^.*ERROR: \[Auth\] Failed login attempt for username ".*" from ip <ADDR> + journalmatch = _SYSTEMD_UNIT=audiobookshelf.service + ''; + }; }; } From 96e1a54638c98d64a3a38fd193844d6d5c3e66da Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 22 Sep 2024 01:26:06 +0200 Subject: [PATCH 1386/1588] nixos: services: nextcloud: add fail2ban jail --- modules/nixos/services/nextcloud/default.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index bb3169a..d173fc0 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -87,5 +87,25 @@ in "${config.services.nextcloud.home}/data/appdata_*/preview" ]; }; + + services.fail2ban.jails = { + nextcloud = '' + enabled = true + filter = nextcloud + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/nextcloud.conf".text = '' + [Definition] + _groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*) + datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?" + failregex = ^[^{]*\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed: + ^[^{]*\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error. + ^[^{]*\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Two-factor challenge failed: + journalmatch = _SYSTEMD_UNIT=phpfpm-nextcloud.service + ''; + }; }; } From a059828a587eb271d42656d8e315c083ff47b921 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 22 Sep 2024 01:58:56 +0200 Subject: [PATCH 1387/1588] nixos: services: miniflux: add fail2ban jail --- modules/nixos/services/miniflux/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/nixos/services/miniflux/default.nix b/modules/nixos/services/miniflux/default.nix index 5104c8b..400ae00 100644 --- a/modules/nixos/services/miniflux/default.nix +++ b/modules/nixos/services/miniflux/default.nix @@ -48,5 +48,21 @@ in inherit (cfg) port; }; }; + + services.fail2ban.jails = { + miniflux = '' + enabled = true + filter = miniflux + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/miniflux.conf".text = '' + [Definition] + failregex = ^.*msg="[^"]*(Incorrect|Invalid) username or password[^"]*".*client_ip=<ADDR> + journalmatch = _SYSTEMD_UNIT=miniflux.service + ''; + }; }; } From 1aa3385e137f81cb05975829dedb90e89f1c0e6d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 22 Sep 2024 02:12:48 +0200 Subject: [PATCH 1388/1588] nixos: services: navidrome: add fail2ban jail --- modules/nixos/services/navidrome/default.nix | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/nixos/services/navidrome/default.nix b/modules/nixos/services/navidrome/default.nix index 944a97a..c513b91 100644 --- a/modules/nixos/services/navidrome/default.nix +++ b/modules/nixos/services/navidrome/default.nix @@ -52,5 +52,21 @@ in inherit (cfg) port; }; }; + + services.fail2ban.jails = { + navidrome = '' + enabled = true + filter = navidrome + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/navidrome.conf".text = '' + [Definition] + failregex = ^.*msg="Unsuccessful login".*X-Real-Ip:\[<HOST>\] + journalmatch = _SYSTEMD_UNIT=navidrome.service + ''; + }; }; } From 2b64a00dc98535f71859f66986b416d941aa0291 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 22 Sep 2024 02:13:30 +0200 Subject: [PATCH 1389/1588] nixos: services: flood: add fail2ban note --- modules/nixos/services/flood/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/flood/default.nix b/modules/nixos/services/flood/default.nix index b95bac5..f3fe90b 100644 --- a/modules/nixos/services/flood/default.nix +++ b/modules/nixos/services/flood/default.nix @@ -27,5 +27,7 @@ in inherit (cfg) port; }; }; + + # NOTE: unfortunately flood does not log connection failures for fail2ban }; } From 1f40ac4a9f09743a13e234e493eb7e9345c6d03d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 22 Sep 2024 02:21:01 +0200 Subject: [PATCH 1390/1588] nixos: services: grocy: add fail2ban note --- modules/nixos/services/grocy/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/grocy/default.nix b/modules/nixos/services/grocy/default.nix index 87927d6..9045b03 100644 --- a/modules/nixos/services/grocy/default.nix +++ b/modules/nixos/services/grocy/default.nix @@ -36,5 +36,7 @@ in forceSSL = true; useACMEHost = config.networking.domain; }; + + # NOTE: unfortunately grocy does not log connection failures for fail2ban }; } From 0f3c5d1d63b2fbe8a08382af1e28c571a2620b64 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 24 Sep 2024 10:43:50 +0000 Subject: [PATCH 1391/1588] nixos: services: transmission: add fail2ban note --- modules/nixos/services/transmission/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/transmission/default.nix b/modules/nixos/services/transmission/default.nix index aeb88b7..ac8b24d 100644 --- a/modules/nixos/services/transmission/default.nix +++ b/modules/nixos/services/transmission/default.nix @@ -90,5 +90,7 @@ in allowedTCPPorts = [ cfg.peerPort ]; allowedUDPPorts = [ cfg.peerPort ]; }; + + # NOTE: unfortunately transmission does not log connection failures for fail2ban }; } From b6279108e090c620d5d9a7fdbb4ccb556212cfb0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 24 Sep 2024 10:44:09 +0000 Subject: [PATCH 1392/1588] nixos: services: vikunja: add fail2ban note --- modules/nixos/services/vikunja/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/vikunja/default.nix b/modules/nixos/services/vikunja/default.nix index 6e7700f..7838a79 100644 --- a/modules/nixos/services/vikunja/default.nix +++ b/modules/nixos/services/vikunja/default.nix @@ -99,5 +99,7 @@ in config.services.vikunja.settings.files.basepath ]; }; + + # NOTE: unfortunately vikunja does not log connection failures for fail2ban }; } From 3aab65d9eac7d06a987f8f92de792da400845210 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 24 Sep 2024 13:13:15 +0000 Subject: [PATCH 1393/1588] nixos: services: tandoor-recipes: add fail2ban note --- modules/nixos/services/tandoor-recipes/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix index 48ad7a8..3447bee 100644 --- a/modules/nixos/services/tandoor-recipes/default.nix +++ b/modules/nixos/services/tandoor-recipes/default.nix @@ -82,5 +82,7 @@ in }; }; }; + + # NOTE: unfortunately tandoor-recipes does not log connection failures for fail2ban }; } From b0029448c6d5ddbfa46f2b7c4785ca82787e4fcb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 25 Sep 2024 14:10:34 +0000 Subject: [PATCH 1394/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 393a824..7112362 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1726611255, - "narHash": "sha256-/bxaYvIK6/d3zqpW26QFS0rqfd0cO4qreSNWvYLTl/w=", + "lastModified": 1727246346, + "narHash": "sha256-TcUaKtya339Asu+g6KTJ8h7KiKcKXKp2V+At+7tksyY=", "owner": "nix-community", "repo": "home-manager", - "rev": "d2493de5cd1da06b6a4c3e97f4e7d5dd791df457", + "rev": "1e22ef1518fb175d762006f9cae7f6312b8caedb", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1726463316, - "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=", + "lastModified": 1726937504, + "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172", + "rev": "9357f4f23713673f310988025d9dc261c20e70c6", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1726739127, - "narHash": "sha256-eI3C3B30nSiobx/Ld3n7ZL38Omn2zEIAwCgtgwCQaQc=", + "lastModified": 1727272134, + "narHash": "sha256-q8xoi2eO23zhOmgBtJTj0QlcABoMeVB0CAWufTR3wyw=", "owner": "nix-community", "repo": "NUR", - "rev": "cb39c55630fd1660784dc5f60eb48adaeb9e950e", + "rev": "8dbbe7f3575d0ff0998f92f811fb8bf4e3f0d3b1", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1725513492, - "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", + "lastModified": 1726745158, + "narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", + "rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74", "type": "github" }, "original": { From 20db71996c678e75c999d733a713805691fa9991 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 25 Sep 2024 16:25:40 +0000 Subject: [PATCH 1395/1588] pkgs: add 'cgt-calc' --- pkgs/cgt-calc/default.nix | 47 +++++++++++++++++++++++++++++++++++++++ pkgs/default.nix | 2 ++ 2 files changed, 49 insertions(+) create mode 100644 pkgs/cgt-calc/default.nix diff --git a/pkgs/cgt-calc/default.nix b/pkgs/cgt-calc/default.nix new file mode 100644 index 0000000..9966944 --- /dev/null +++ b/pkgs/cgt-calc/default.nix @@ -0,0 +1,47 @@ +{ lib +, fetchFromGitHub +, python3Packages +, withTeXLive ? true +, texliveSmall +}: +python3Packages.buildPythonApplication rec { + pname = "cgt-calc"; + version = "1.13.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "KapJI"; + repo = "capital-gains-calculator"; + rev = "v${version}"; + hash = "sha256-y/Y05wG89nccXyxfjqazyPJhd8dOkfwRJre+Rzx97Hw="; + }; + + build-system = with python3Packages; [ + poetry-core + ]; + + dependencies = with python3Packages; [ + defusedxml + jinja2 + pandas + requests + types-requests + yfinance + ]; + + makeWrapperArgs = lib.optionals withTeXLive [ + "--prefix" + "PATH" + ":" + "${lib.getBin texliveSmall}/bin" + ]; + + meta = with lib; { + description = "UK capital gains tax calculator"; + homepage = "https://github.com/KapJI/capital-gains-calculator"; + license = with licenses; [ mit ]; + mainProgram = "cgt-calc"; + maintainers = with maintainers; [ ambroisie ]; + platforms = platforms.unix; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix index 6b7fce1..949bcf7 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,6 +2,8 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { bw-pass = pkgs.callPackage ./bw-pass { }; + cgt-calc = pkgs.callPackage ./cgt-calc { }; + change-audio = pkgs.callPackage ./change-audio { }; change-backlight = pkgs.callPackage ./change-backlight { }; From cbba752b54825e09245088d42b0e1d0e0910f33f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 27 Sep 2024 13:44:23 +0000 Subject: [PATCH 1396/1588] nixos: services: nginx: remove 'literalExample' Those examples do not use functions or any other "difficult to render" expression. --- modules/nixos/services/nginx/default.nix | 72 +++++++++++------------- 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index 7980ad9..e305b29 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -59,14 +59,12 @@ let extraConfig = mkOption { type = types.attrs; # FIXME: forward type of virtualHosts - example = litteralExample '' - { - locations."/socket" = { - proxyPass = "http://127.0.0.1:8096/"; - proxyWebsockets = true; - }; - } - ''; + example = { + locations."/socket" = { + proxyPass = "http://127.0.0.1:8096/"; + proxyWebsockets = true; + }; + }; default = { }; description = '' Any extra configuration that should be applied to this virtual host. @@ -100,26 +98,24 @@ in virtualHosts = mkOption { type = types.attrsOf virtualHostOption; default = { }; - example = litteralExample '' - { - gitea = { - subdomain = "git"; - port = 8080; - }; - dev = { - root = "/var/www/dev"; - }; - jellyfin = { - port = 8096; - extraConfig = { - locations."/socket" = { - proxyPass = "http://127.0.0.1:8096/"; - proxyWebsockets = true; - }; + example = { + gitea = { + subdomain = "git"; + port = 8080; + }; + dev = { + root = "/var/www/dev"; + }; + jellyfin = { + port = 8096; + extraConfig = { + locations."/socket" = { + proxyPass = "http://127.0.0.1:8096/"; + proxyWebsockets = true; }; }; - } - ''; + }; + }; description = '' List of virtual hosts to set-up using default settings. ''; @@ -163,25 +159,21 @@ in }; }; }); - example = litteralExample '' - { - alice = { - passwordHashFile = "/var/lib/nginx-sso/alice/password-hash.txt"; - totpSecretFile = "/var/lib/nginx-sso/alice/totp-secret.txt"; - }; - } - ''; + example = { + alice = { + passwordHashFile = "/var/lib/nginx-sso/alice/password-hash.txt"; + totpSecretFile = "/var/lib/nginx-sso/alice/totp-secret.txt"; + }; + }; description = "Definition of users"; }; groups = mkOption { type = with types; attrsOf (listOf str); - example = litteralExample '' - { - root = [ "alice" ]; - users = [ "alice" "bob" ]; - } - ''; + example = { + root = [ "alice" ]; + users = [ "alice" "bob" ]; + }; description = "Groups of users"; }; }; From 898523d079c724e16ad4f1f4b6e8f110e6d96e8f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 27 Sep 2024 13:48:26 +0000 Subject: [PATCH 1397/1588] treewide: fix typos --- hosts/nixos/porthos/services.nix | 2 +- modules/home/firefox/tridactyl/tridactylrc | 2 +- modules/home/mail/accounts/default.nix | 4 ++-- modules/home/tmux/default.nix | 2 +- modules/home/vim/init.vim | 2 +- modules/home/vim/lua/ambroisie/lsp.lua | 2 +- modules/home/wm/default.nix | 2 +- modules/home/wm/screen-lock/default.nix | 4 ++-- modules/home/xdg/default.nix | 2 +- modules/home/zsh/options.zsh | 2 +- modules/nixos/hardware/trackball/default.nix | 2 +- modules/nixos/profiles/default.nix | 2 +- modules/nixos/services/forgejo/default.nix | 2 +- modules/nixos/services/gitea/default.nix | 2 +- modules/nixos/services/podgrab/default.nix | 2 +- modules/nixos/services/vikunja/default.nix | 2 +- modules/nixos/services/wireguard/default.nix | 2 +- pkgs/unbound-zones-adblock/default.nix | 2 +- 18 files changed, 20 insertions(+), 20 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 5792be3..7a38cea 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -157,7 +157,7 @@ in enable = false; }; }; - # Because I stilll need to play sysadmin + # Because I still need to play sysadmin ssh-server.enable = true; # Recipe manager tandoor-recipes = { diff --git a/modules/home/firefox/tridactyl/tridactylrc b/modules/home/firefox/tridactyl/tridactylrc index 36bd59d..775719c 100644 --- a/modules/home/firefox/tridactyl/tridactylrc +++ b/modules/home/firefox/tridactyl/tridactylrc @@ -4,7 +4,7 @@ " Use dark color scheme colorscheme dark -" Make tridactyl open Vim in my prefered terminal +" Make tridactyl open Vim in my preferred terminal set editorcmd @editorcmd@ " Remove editor file after use diff --git a/modules/home/mail/accounts/default.nix b/modules/home/mail/accounts/default.nix index 8886139..202b9bc 100644 --- a/modules/home/mail/accounts/default.nix +++ b/modules/home/mail/accounts/default.nix @@ -58,7 +58,7 @@ in { config.accounts.email.accounts = { personal = lib.mkMerge [ - # Common configuraton + # Common configuration (mkConfig { domain = "belanyi.fr"; address = "bruno"; @@ -70,7 +70,7 @@ in ]; gmail = lib.mkMerge [ - # Common configuraton + # Common configuration (mkConfig { domain = "gmail.com"; address = "brunobelanyi"; diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 501b954..71ce4ca 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -30,7 +30,7 @@ in }); default = { ${config.my.home.terminal.program} = { }; }; - defaultText = litteralExpression '' + defaultText = literalExpression '' { ''${config.my.home.terminal.program} = { }; }; ''; example = { xterm-256color = { }; }; diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index 93eb133..8202cad 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -1,4 +1,4 @@ -" Basic configuraion {{{ +" Basic configuration {{{ """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Use UTF-8 set encoding=utf-8 diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua index 1912623..eb53da6 100644 --- a/modules/home/vim/lua/ambroisie/lsp.lua +++ b/modules/home/vim/lua/ambroisie/lsp.lua @@ -42,7 +42,7 @@ end --- shared LSP configuration callback --- @param client native client configuration ---- @param bufnr int? buffer number of the attched client +--- @param bufnr int? buffer number of the attached client M.on_attach = function(client, bufnr) -- Format on save lsp_format.on_attach(client, bufnr) diff --git a/modules/home/wm/default.nix b/modules/home/wm/default.nix index 449918a..ae1e136 100644 --- a/modules/home/wm/default.nix +++ b/modules/home/wm/default.nix @@ -58,7 +58,7 @@ in service = "some-service-name"; } ]; - description = "list of block configurations, merged with the defauls"; + description = "list of block configurations, merged with the defaults"; }; }; }; diff --git a/modules/home/wm/screen-lock/default.nix b/modules/home/wm/screen-lock/default.nix index 3b2ead6..5e6874e 100644 --- a/modules/home/wm/screen-lock/default.nix +++ b/modules/home/wm/screen-lock/default.nix @@ -2,7 +2,7 @@ let cfg = config.my.home.wm.screen-lock; - notficationCmd = + notificationCmd = let duration = toString (cfg.notify.delay * 1000); notifyCmd = "${lib.getExe pkgs.libnotify} -u critical -t ${duration}"; @@ -48,7 +48,7 @@ in "-notify" "${toString cfg.notify.delay}" "-notifier" - notficationCmd + notificationCmd ]; }; }; diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index e180f27..270200e 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -11,7 +11,7 @@ in enable = true; # File types mime.enable = true; - # File associatons + # File associations mimeApps = { enable = true; }; diff --git a/modules/home/zsh/options.zsh b/modules/home/zsh/options.zsh index 32da8d8..7bcad03 100644 --- a/modules/home/zsh/options.zsh +++ b/modules/home/zsh/options.zsh @@ -12,7 +12,7 @@ setopt rc_quotes setopt auto_resume # Show history expansion before running a command setopt hist_verify -# Append commands to history as they are exectuted +# Append commands to history as they are executed setopt inc_append_history_time # Remove useless whitespace from commands setopt hist_reduce_blanks diff --git a/modules/nixos/hardware/trackball/default.nix b/modules/nixos/hardware/trackball/default.nix index 7a99247..a9b24e3 100644 --- a/modules/nixos/hardware/trackball/default.nix +++ b/modules/nixos/hardware/trackball/default.nix @@ -11,7 +11,7 @@ in config = lib.mkIf cfg.enable { services.xserver = { # This section must be *after* the one configured by `libinput` - # for the `ScrollMethod` configuration to not be overriden + # for the `ScrollMethod` configuration to not be overridden inputClassSections = lib.mkAfter [ # MX Ergo '' diff --git a/modules/nixos/profiles/default.nix b/modules/nixos/profiles/default.nix index 43d5a84..dbd4be3 100644 --- a/modules/nixos/profiles/default.nix +++ b/modules/nixos/profiles/default.nix @@ -1,4 +1,4 @@ -# Configuration that spans accross system and home, or are almagations of modules +# Configuration that spans across system and home, or are almagations of modules { ... }: { imports = [ diff --git a/modules/nixos/services/forgejo/default.nix b/modules/nixos/services/forgejo/default.nix index 18538be..511724b 100644 --- a/modules/nixos/services/forgejo/default.nix +++ b/modules/nixos/services/forgejo/default.nix @@ -1,4 +1,4 @@ -# A low-ressource, full-featured git forge. +# A low-resource, full-featured git forge. { config, lib, ... }: let cfg = config.my.services.forgejo; diff --git a/modules/nixos/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix index 212f59c..95bdf42 100644 --- a/modules/nixos/services/gitea/default.nix +++ b/modules/nixos/services/gitea/default.nix @@ -1,4 +1,4 @@ -# A low-ressource, full-featured git forge. +# A low-resource, full-featured git forge. { config, lib, ... }: let cfg = config.my.services.gitea; diff --git a/modules/nixos/services/podgrab/default.nix b/modules/nixos/services/podgrab/default.nix index ea89e4e..3ced8d3 100644 --- a/modules/nixos/services/podgrab/default.nix +++ b/modules/nixos/services/podgrab/default.nix @@ -13,7 +13,7 @@ in example = "/run/secrets/password.env"; description = '' The path to a file containing the PASSWORD environment variable - definition for Podgrab's authentification. + definition for Podgrab's authentication. ''; }; diff --git a/modules/nixos/services/vikunja/default.nix b/modules/nixos/services/vikunja/default.nix index 7838a79..2753da3 100644 --- a/modules/nixos/services/vikunja/default.nix +++ b/modules/nixos/services/vikunja/default.nix @@ -41,7 +41,7 @@ in service = { # Only allow registration of users through the CLI enableregistration = false; - # Ues the host's timezone + # Use the host's timezone timezone = config.time.timeZone; # Use UNIX socket for serving the API unixsocket = socketPath; diff --git a/modules/nixos/services/wireguard/default.nix b/modules/nixos/services/wireguard/default.nix index a76e424..840ac33 100644 --- a/modules/nixos/services/wireguard/default.nix +++ b/modules/nixos/services/wireguard/default.nix @@ -206,7 +206,7 @@ in ]; } - # Additional inteface is only used to get access to "LAN" from wireguard + # Additional interface is only used to get access to "LAN" from wireguard (lib.mkIf cfg.internal.enable { networking.wg-quick.interfaces."${cfg.internal.name}" = mkInterface [ "${cfg.net.v4.subnet}.0/${toString cfg.net.v4.mask}" diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix index 2a6d4b7..11a6c90 100644 --- a/pkgs/unbound-zones-adblock/default.nix +++ b/pkgs/unbound-zones-adblock/default.nix @@ -30,7 +30,7 @@ stdenvNoCC.mkDerivation { description = "Unified host lists, ready to be used by unbound"; longDescription = '' This is a simple derivation based on StevenBlack's unified hosts list. - The files have been modified for easy use wih unbound. + The files have been modified for easy use with unbound. ''; homepage = "https://github.com/StevenBlack/hosts"; license = licenses.mit; From 38f3ac0ce5883f6aee526b91240bca153019584b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 27 Sep 2024 14:11:03 +0000 Subject: [PATCH 1398/1588] home: vim: lspconfig: add 'typos-lsp' --- modules/home/vim/default.nix | 3 +++ modules/home/vim/plugin/settings/lspconfig.lua | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index a063483..8e6bd5c 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -100,6 +100,9 @@ in # Shell bash-language-server shfmt + + # Generic + typos-lsp ]; }; diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index 2f355f4..9e9425c 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -84,3 +84,11 @@ if utils.is_executable("starpls") then on_attach = lsp.on_attach, }) end + +-- Generic +if utils.is_executable("typos-lsp") then + lspconfig.typos_lsp.setup({ + capabilities = capabilities, + on_attach = lsp.on_attach, + }) +end From 79f08ea5a1a8060db0074d3eb9576283f27ca29f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 30 Sep 2024 13:47:26 +0000 Subject: [PATCH 1399/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 7112362..5c355bf 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1727246346, - "narHash": "sha256-TcUaKtya339Asu+g6KTJ8h7KiKcKXKp2V+At+7tksyY=", + "lastModified": 1727383923, + "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=", "owner": "nix-community", "repo": "home-manager", - "rev": "1e22ef1518fb175d762006f9cae7f6312b8caedb", + "rev": "ffe2d07e771580a005e675108212597e5b367d2d", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1726937504, - "narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=", + "lastModified": 1727348695, + "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9357f4f23713673f310988025d9dc261c20e70c6", + "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1727272134, - "narHash": "sha256-q8xoi2eO23zhOmgBtJTj0QlcABoMeVB0CAWufTR3wyw=", + "lastModified": 1727701468, + "narHash": "sha256-C7Trw/LSFXDpN6RcDqoH8oaXDIQsCbI7aVwOT68ElUs=", "owner": "nix-community", "repo": "NUR", - "rev": "8dbbe7f3575d0ff0998f92f811fb8bf4e3f0d3b1", + "rev": "a885f104ba4ef8431d0fbe7ecbabac024779afb1", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1726745158, - "narHash": "sha256-D5AegvGoEjt4rkKedmxlSEmC+nNLMBPWFxvmYnVLhjk=", + "lastModified": 1727514110, + "narHash": "sha256-0YRcOxJG12VGDFH8iS8pJ0aYQQUAgo/r3ZAL+cSh9nk=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "4e743a6920eab45e8ba0fbe49dc459f1423a4b74", + "rev": "85f7a7177c678de68224af3402ab8ee1bcee25c8", "type": "github" }, "original": { From 09f763bc164946c6e548b933fad626b0a7bf689e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 30 Sep 2024 22:10:38 +0200 Subject: [PATCH 1400/1588] nixos: services: add komga --- modules/nixos/services/default.nix | 1 + modules/nixos/services/komga/default.nix | 55 ++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 modules/nixos/services/komga/default.nix diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 1211ee6..651f3f8 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -16,6 +16,7 @@ ./grocy ./indexers ./jellyfin + ./komga ./lohr ./matrix ./mealie diff --git a/modules/nixos/services/komga/default.nix b/modules/nixos/services/komga/default.nix new file mode 100644 index 0000000..e1dc780 --- /dev/null +++ b/modules/nixos/services/komga/default.nix @@ -0,0 +1,55 @@ +# A Comics/Manga media server +{ config, lib, ... }: +let + cfg = config.my.services.komga; +in +{ + options.my.services.komga = with lib; { + enable = mkEnableOption "Komga comics server"; + + port = mkOption { + type = types.port; + default = 4584; + example = 8080; + description = "Internal port for webui"; + }; + }; + + config = lib.mkIf cfg.enable { + services.komga = { + enable = true; + inherit (cfg) port; + + group = "media"; + }; + + systemd.services.komga.environment = { + LOGGING_LEVEL_ORG_GOTSON_KOMGA = "DEBUG"; # Needed for fail2ban + }; + + # Set-up media group + users.groups.media = { }; + + my.services.nginx.virtualHosts = { + komga = { + inherit (cfg) port; + }; + }; + + services.fail2ban.jails = { + komga = '' + enabled = true + filter = komga + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/komga.conf".text = '' + [Definition] + failregex = ^.* ip=<HOST>,.*Bad credentials.*$ + journalmatch = _SYSTEMD_UNIT=komga.service + ''; + }; + }; +} From eec65dc6b31b02fec85b5c65e30079fad1f9227a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 1 Oct 2024 16:54:44 +0200 Subject: [PATCH 1401/1588] hosts: nixos: porthos: services: remove podgrab Podgrab is unmaintained... I'll rely on Audiobookshelf to both download and play podcasts. --- hosts/nixos/porthos/services.nix | 7 ------- 1 file changed, 7 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 7a38cea..ec3db67 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -132,13 +132,6 @@ in enable = true; loginFile = secrets."pdf-edit/login".path; }; - # Podcast automatic downloader - podgrab = { - enable = true; - passwordFile = secrets."podgrab/password".path; - dataDir = "/data/media/podcasts"; - port = 9598; - }; # Regular backups postgresql-backup.enable = true; pyload = { From b10d936c0a98aef3b4c078b7f7886e2db39758da Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 8 Oct 2024 11:35:11 +0000 Subject: [PATCH 1402/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 5c355bf..752a214 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1726153070, - "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1727383923, - "narHash": "sha256-4/vacp3CwdGoPf8U4e/N8OsGYtO09WTcQK5FqYfJbKs=", + "lastModified": 1728337164, + "narHash": "sha256-VdRTjJFyq4Q9U7Z/UoC2Q5jK8vSo6E86lHc2OanXtvc=", "owner": "nix-community", "repo": "home-manager", - "rev": "ffe2d07e771580a005e675108212597e5b367d2d", + "rev": "038630363e7de57c36c417fd2f5d7c14773403e4", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1727348695, - "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", + "lastModified": 1728241625, + "narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", + "rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1727701468, - "narHash": "sha256-C7Trw/LSFXDpN6RcDqoH8oaXDIQsCbI7aVwOT68ElUs=", + "lastModified": 1728385750, + "narHash": "sha256-M2Qgz4Opif8uN9/I/dWRtyZRcuHRv+02B1+FgJk6LyY=", "owner": "nix-community", "repo": "NUR", - "rev": "a885f104ba4ef8431d0fbe7ecbabac024779afb1", + "rev": "7fc13fc5ea634482f96525f06132646d5aa01f7f", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1727514110, - "narHash": "sha256-0YRcOxJG12VGDFH8iS8pJ0aYQQUAgo/r3ZAL+cSh9nk=", + "lastModified": 1728092656, + "narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "85f7a7177c678de68224af3402ab8ee1bcee25c8", + "rev": "1211305a5b237771e13fcca0c51e60ad47326a9a", "type": "github" }, "original": { From 8e81d148bdda429cad565fc1cf6b327ba7eec29a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 10 Oct 2024 13:53:19 +0000 Subject: [PATCH 1403/1588] home: direnv: warn on non-existent version --- modules/home/direnv/lib/android.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/home/direnv/lib/android.sh b/modules/home/direnv/lib/android.sh index fa2f856..64321e1 100644 --- a/modules/home/direnv/lib/android.sh +++ b/modules/home/direnv/lib/android.sh @@ -32,10 +32,16 @@ use_android() { -b|--build-tools) build_tools_version="$2" shift 2 + if ! [ -e "$ANDROID_HOME/build-tools/$build_tools_version" ]; then + log_error "use_android: build-tools version '$build_tools_version' does not exist" + fi ;; -n|--ndk) ndk_version="$2" shift 2 + if ! [ -e "$ANDROID_HOME/ndk/$ndk_version" ]; then + log_error "use_android: NDK version '$ndk_version' does not exist" + fi ;; --) shift From 0547ebc33c8d8891bbbeea44d31d50bc6b5dd01f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 16 Oct 2024 10:43:52 +0000 Subject: [PATCH 1404/1588] home: wm: i3: remove 'FIXME' Add a clearer message about why I don't use the `startup` section. --- modules/home/wm/i3/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/home/wm/i3/default.nix b/modules/home/wm/i3/default.nix index 69246f0..c432864 100644 --- a/modules/home/wm/i3/default.nix +++ b/modules/home/wm/i3/default.nix @@ -371,8 +371,7 @@ in }; startup = [ - # FIXME - # { commdand; always; notification; } + # NOTE: rely on systemd user services instead... ]; window = { From a09cef76c5b13c052eeed4b52531516204bd8839 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 17 Oct 2024 15:26:17 +0200 Subject: [PATCH 1405/1588] nixos: services: nextcloud: bump to 30 --- modules/nixos/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index d173fc0..e2c4746 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -31,7 +31,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud29; + package = pkgs.nextcloud30; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From cf1aeaf0884d2420ed7c55d94a859ffe527f3cbf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 23 Oct 2024 13:49:19 +0000 Subject: [PATCH 1406/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 752a214..fb392a4 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1728337164, - "narHash": "sha256-VdRTjJFyq4Q9U7Z/UoC2Q5jK8vSo6E86lHc2OanXtvc=", + "lastModified": 1729551526, + "narHash": "sha256-7LAGY32Xl14OVQp3y6M43/0AtHYYvV6pdyBcp3eoz0s=", "owner": "nix-community", "repo": "home-manager", - "rev": "038630363e7de57c36c417fd2f5d7c14773403e4", + "rev": "5ec753a1fc4454df9285d8b3ec0809234defb975", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728241625, - "narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=", + "lastModified": 1729413321, + "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1", + "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1728385750, - "narHash": "sha256-M2Qgz4Opif8uN9/I/dWRtyZRcuHRv+02B1+FgJk6LyY=", + "lastModified": 1729688743, + "narHash": "sha256-Oe1PRxUAXSwRUcRIH+saPgMsIEEm7PfL81+M5IDCqvg=", "owner": "nix-community", "repo": "NUR", - "rev": "7fc13fc5ea634482f96525f06132646d5aa01f7f", + "rev": "2680c1d6af171ee32198c8f2f5dc07ce1d5bd2ea", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1728092656, - "narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=", + "lastModified": 1729104314, + "narHash": "sha256-pZRZsq5oCdJt3upZIU4aslS9XwFJ+/nVtALHIciX/BI=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "1211305a5b237771e13fcca0c51e60ad47326a9a", + "rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6", "type": "github" }, "original": { From 46df8b5b5b38be165849382e4c3ecc7c9e4b4201 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 21 Oct 2024 14:24:42 +0000 Subject: [PATCH 1407/1588] home: direnv: lib: fix shellcheck directive I like it better with a space in it. --- modules/home/direnv/lib/android.sh | 2 +- modules/home/direnv/lib/nix.sh | 2 +- modules/home/direnv/lib/postgres.sh | 2 +- modules/home/direnv/lib/python.sh | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/home/direnv/lib/android.sh b/modules/home/direnv/lib/android.sh index 64321e1..9344aea 100644 --- a/modules/home/direnv/lib/android.sh +++ b/modules/home/direnv/lib/android.sh @@ -1,4 +1,4 @@ -#shellcheck shell=bash +# shellcheck shell=bash # shellcheck disable=2155 use_android() { diff --git a/modules/home/direnv/lib/nix.sh b/modules/home/direnv/lib/nix.sh index a65eb31..4b6c547 100644 --- a/modules/home/direnv/lib/nix.sh +++ b/modules/home/direnv/lib/nix.sh @@ -1,4 +1,4 @@ -#shellcheck shell=bash +# shellcheck shell=bash use_pkgs() { if ! has nix; then diff --git a/modules/home/direnv/lib/postgres.sh b/modules/home/direnv/lib/postgres.sh index c2e6a8f..46e171d 100644 --- a/modules/home/direnv/lib/postgres.sh +++ b/modules/home/direnv/lib/postgres.sh @@ -1,4 +1,4 @@ -#shellcheck shell=bash +# shellcheck shell=bash layout_postgres() { if ! has postgres || ! has initdb; then diff --git a/modules/home/direnv/lib/python.sh b/modules/home/direnv/lib/python.sh index d1e67a2..780fbe6 100644 --- a/modules/home/direnv/lib/python.sh +++ b/modules/home/direnv/lib/python.sh @@ -1,4 +1,4 @@ -#shellcheck shell=bash +# shellcheck shell=bash layout_poetry() { if ! has poetry; then From 6d2ac0c473561aa75156788c26b0b7e6b442d241 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 28 Oct 2024 10:38:40 +0000 Subject: [PATCH 1408/1588] modules: services: matrix: remove sliding sync The functionality has been folded into `synapse` itself, and the module has been removed from the unstable branch. This reverts commit b4c2cc581b6b79db1961e0aa840fad6d17ee6652. --- hosts/nixos/porthos/services.nix | 3 -- modules/nixos/services/matrix/default.nix | 39 ----------------------- 2 files changed, 42 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index ec3db67..a2339f4 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -69,9 +69,6 @@ in mailConfigFile = secrets."matrix/mail".path; # Only necessary when doing the initial registration secretFile = secrets."matrix/secret".path; - slidingSync = { - secretFile = secrets."matrix/sliding-sync-secret".path; - }; }; mealie = { enable = true; diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index b958f76..f423834 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -26,21 +26,6 @@ in description = "Shared secret to register users"; }; - slidingSync = { - port = mkOption { - type = types.port; - default = 8009; - example = 8084; - description = "Port used by sliding sync server"; - }; - - secretFile = mkOption { - type = types.str; - example = "/var/lib/matrix/sliding-sync-secret-file.env"; - description = "Secret file which contains SYNCV3_SECRET definition"; - }; - }; - mailConfigFile = mkOption { type = types.str; example = "/var/lib/matrix/email-config.yaml"; @@ -106,17 +91,6 @@ in ] ++ lib.optional (cfg.secretFile != null) cfg.secretFile; }; - services.matrix-sliding-sync = { - enable = true; - - settings = { - SYNCV3_SERVER = "https://${matrixDomain}"; - SYNCV3_BINDADDR = "127.0.0.1:${toString cfg.slidingSync.port}"; - }; - - environmentFile = cfg.slidingSync.secretFile; - }; - my.services.nginx.virtualHosts = { # Element Web app deployment chat = { @@ -130,9 +104,6 @@ in "m.identity_server" = { "base_url" = "https://vector.im"; }; - "org.matrix.msc3575.proxy" = { - "url" = "https://matrix-sync.${domain}"; - }; }; showLabsSettings = true; defaultCountryCode = "FR"; # cocorico @@ -152,10 +123,6 @@ in matrix-client = { port = clientPort.private; }; - # Sliding sync - matrix-sync = { - inherit (cfg.slidingSync) port; - }; }; # Those are too complicated to use my wrapper... @@ -178,11 +145,6 @@ in "/_matrix" = proxyToClientPort; "/_synapse/client" = proxyToClientPort; - - # Sliding sync - "~ ^/(client/|_matrix/client/unstable/org.matrix.msc3575/sync)" = { - proxyPass = "http://${config.services.matrix-sliding-sync.settings.SYNCV3_BINDADDR}"; - }; }; listen = [ @@ -228,7 +190,6 @@ in client = { "m.homeserver" = { "base_url" = "https://${matrixDomain}"; }; "m.identity_server" = { "base_url" = "https://vector.im"; }; - "org.matrix.msc3575.proxy" = { "url" = "https://matrix-sync.${domain}"; }; }; # ACAO required to allow element-web on any URL to request this json file in From 67eb7bdd4bfe4b78c476a3e2ef3ef09727fb992b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 28 Oct 2024 10:43:54 +0000 Subject: [PATCH 1409/1588] hosts: nixos: porthos: secrets: remove matrix sync Remove the secret, as it not used anymore. This reverts commit 52413dcaf7d937a69002be661b8a6c26443e162c. --- .../nixos/porthos/secrets/matrix/sliding-sync-secret.age | 8 -------- hosts/nixos/porthos/secrets/secrets.nix | 3 --- 2 files changed, 11 deletions(-) delete mode 100644 hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age diff --git a/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age b/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age deleted file mode 100644 index e938cfa..0000000 --- a/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age +++ /dev/null @@ -1,8 +0,0 @@ -age-encryption.org/v1 --> ssh-ed25519 cKojmg xRtF3XVc7yPicAV/E4U7mn0itvD0h1BWBTjwunuoe2E -OkB9sjGB3ulH4Feuyj3Ed0DBG4+mghW/Qpum9oXL/8c --> ssh-ed25519 jPowng 1r8drqhz1yZdTq0Kvqya+ArU1C2fkN7Gg9LiWWfeUFg -cjbxntVwHvqLaJpiKs/Y8ojeb6e3/cLFcsoeuoobfFg ---- B1qA2PylJBrdZxZtCzlU2kRPvxLM+IrXTvR+ERxVtTY -"W9bg~/b4ՆI -} -NC7vWb?8=wB UpJClOșnO\ \ No newline at end of file diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index a8a9819..68e90f2 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -48,9 +48,6 @@ in owner = "matrix-synapse"; publicKeys = all; }; - "matrix/sliding-sync-secret.age" = { - publicKeys = all; - }; "mealie/mail.age" = { publicKeys = all; From 5b66145be378013d673db5b31514437c76991c02 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 28 Oct 2024 10:32:19 +0000 Subject: [PATCH 1410/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index fb392a4..249cddd 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1729551526, - "narHash": "sha256-7LAGY32Xl14OVQp3y6M43/0AtHYYvV6pdyBcp3eoz0s=", + "lastModified": 1729864948, + "narHash": "sha256-CeGSqbN6S8JmzYJX/HqZjr7dMGlvHLLnJJarwB45lPs=", "owner": "nix-community", "repo": "home-manager", - "rev": "5ec753a1fc4454df9285d8b3ec0809234defb975", + "rev": "0c0268a3c80d30b989d0aadbd65f38d4fa27a9a0", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729413321, - "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", + "lastModified": 1729665710, + "narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", + "rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1729688743, - "narHash": "sha256-Oe1PRxUAXSwRUcRIH+saPgMsIEEm7PfL81+M5IDCqvg=", + "lastModified": 1729868220, + "narHash": "sha256-OxHE1U+FIIaQ50nZpt/VxLH0bokiqsEqAshehlHhOFs=", "owner": "nix-community", "repo": "NUR", - "rev": "2680c1d6af171ee32198c8f2f5dc07ce1d5bd2ea", + "rev": "70b30d23d33ca2acfb267430b08ddf82ff7116b2", "type": "github" }, "original": { From 07552f30705ac3b268cf4f2301d9b28a9ba7089d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 21 Oct 2024 10:06:48 +0000 Subject: [PATCH 1411/1588] nixos: system: nix: configure GC --- modules/nixos/system/nix/default.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/nixos/system/nix/default.nix b/modules/nixos/system/nix/default.nix index ad13539..12a395e 100644 --- a/modules/nixos/system/nix/default.nix +++ b/modules/nixos/system/nix/default.nix @@ -22,6 +22,10 @@ in options.my.system.nix = with lib; { enable = my.mkDisableOption "nix configuration"; + gc = { + enable = my.mkDisableOption "nix GC configuration"; + }; + cache = { selfHosted = my.mkDisableOption "self-hosted cache"; }; @@ -62,6 +66,22 @@ in }; } + (lib.mkIf cfg.gc.enable { + nix.gc = { + automatic = true; + + # Every week, with some wiggle room + dates = "weekly"; + randomizedDelaySec = "10min"; + + # Use a persistent timer for e.g: laptops + persistent = true; + + # Delete old profiles automatically after 15 days + options = "--delete-older-than 15d"; + }; + }) + (lib.mkIf cfg.cache.selfHosted { nix = { settings = { From 8475d92314d9e6e522910e1d96263cfa396881e4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 21 Oct 2024 10:07:21 +0000 Subject: [PATCH 1412/1588] home: nix: configure GC --- modules/home/nix/default.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/home/nix/default.nix b/modules/home/nix/default.nix index c0bbcc8..c67cc6a 100644 --- a/modules/home/nix/default.nix +++ b/modules/home/nix/default.nix @@ -22,6 +22,10 @@ in options.my.home.nix = with lib; { enable = my.mkDisableOption "nix configuration"; + gc = { + enable = my.mkDisableOption "nix GC configuration"; + }; + cache = { selfHosted = my.mkDisableOption "self-hosted cache"; }; @@ -60,6 +64,22 @@ in }; } + (lib.mkIf cfg.gc.enable { + nix.gc = { + automatic = true; + + # Every week, with some wiggle room + frequency = "weekly"; + randomizedDelaySec = "10min"; + + # Use a persistent timer for e.g: laptops + persistent = true; + + # Delete old profiles automatically after 15 days + options = "--delete-older-than 15d"; + }; + }) + (lib.mkIf cfg.cache.selfHosted { nix = { settings = { From 62de2772a40744cd5045a54c3191c373ad849332 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 4 Nov 2024 11:02:35 +0000 Subject: [PATCH 1413/1588] home: vim: do not italicize comments --- modules/home/vim/init.vim | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index 8202cad..0b54676 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -102,7 +102,11 @@ gruvbox.setup({ DiffText = { fg = colors.yellow, bg = colors.bg0 }, -- Directories "pop" better in blue Directory = { link = "GruvboxBlueBold" }, - } + }, + italic = { + -- Comments should not be italic, for e.g: box drawing + comments = false, + }, }) EOF " Use my preferred colorscheme From 46bd23ff077063827304b9d1555a1a4f267f0c1f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 6 Nov 2024 10:53:58 +0000 Subject: [PATCH 1414/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 249cddd..af4cbfa 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1727826117, - "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "lastModified": 1730504689, + "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "rev": "506278e768c2a08bec68eb62932193e341f55c90", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1729864948, - "narHash": "sha256-CeGSqbN6S8JmzYJX/HqZjr7dMGlvHLLnJJarwB45lPs=", + "lastModified": 1730837930, + "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=", "owner": "nix-community", "repo": "home-manager", - "rev": "0c0268a3c80d30b989d0aadbd65f38d4fa27a9a0", + "rev": "2f607e07f3ac7e53541120536708e824acccfaa8", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729665710, - "narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=", + "lastModified": 1730785428, + "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d", + "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1729868220, - "narHash": "sha256-OxHE1U+FIIaQ50nZpt/VxLH0bokiqsEqAshehlHhOFs=", + "lastModified": 1730885145, + "narHash": "sha256-UPrBEY0No1O3ULb67xYjRh2r3u7MnZovfo1oYSPCIxI=", "owner": "nix-community", "repo": "NUR", - "rev": "70b30d23d33ca2acfb267430b08ddf82ff7116b2", + "rev": "c0d8828600ef47d475e6ec33513bf9af6eb6b991", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1729104314, - "narHash": "sha256-pZRZsq5oCdJt3upZIU4aslS9XwFJ+/nVtALHIciX/BI=", + "lastModified": 1730814269, + "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6", + "rev": "d70155fdc00df4628446352fc58adc640cd705c2", "type": "github" }, "original": { From 7b42368e2f144cab111d8856928cfc1d21bf0489 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 11 Nov 2024 11:45:11 +0000 Subject: [PATCH 1415/1588] hosts: nixos: porthos: services: remove tandoor I fully transitioned to using Mealie instead. This reverts commit 493636decb178a23e85c593bd38cbcb1982df8cc. --- hosts/nixos/porthos/services.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index a2339f4..109b4e5 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -149,11 +149,6 @@ in }; # Because I still need to play sysadmin ssh-server.enable = true; - # Recipe manager - tandoor-recipes = { - enable = true; - secretKeyFile = secrets."tandoor-recipes/secret-key".path; - }; # Torrent client and webui transmission = { enable = true; From ab8a5daefe9773dbb69fce4667910819f748cb94 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Nov 2024 20:05:06 +0000 Subject: [PATCH 1416/1588] hosts: porthos: secrets: acme: use OVH API I switched registrar, as OVH was ~4x cheaper. This needs a small change to the module to both refer to OVH instead of Gandi in the documentation, and make use of the correct API. I also needed to disable the propagation check, as it looks like OVH is slower than Gandi, and leads to spurious errors... --- hosts/nixos/porthos/secrets/acme/dns-key.age | 15 ++++++++------- modules/nixos/services/nginx/default.nix | 6 ++++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/hosts/nixos/porthos/secrets/acme/dns-key.age b/hosts/nixos/porthos/secrets/acme/dns-key.age index fce2a84..d7f159e 100644 --- a/hosts/nixos/porthos/secrets/acme/dns-key.age +++ b/hosts/nixos/porthos/secrets/acme/dns-key.age @@ -1,8 +1,9 @@ age-encryption.org/v1 --> ssh-ed25519 cKojmg bQFr9oAnbo1rI/MpUV8wQz/Xj7iZY4ZU+Swf0nSIQFw -zama2XJ0gdvUlD2GHMhmZqHSxHe+dKSfXnHoWDcSw7Y --> ssh-ed25519 jPowng gitUwSKTNKWLSxnwa185O7x/u0ul93g8wPESdZaKRk8 -uvBIfAUkZp5sg6rfeEGvL5ZDV8m2uSEotW02kjPN3Hw ---- SZxe5f/CUZBvPQa2Sz/UBY3L68rMkIGGRuZPk7YE+Vg -r&{~v?}= -}+ SQM[]k MAtmM/Ls|ޅmCiYC}x \ No newline at end of file +-> ssh-ed25519 cKojmg Ec0xt1uJTva8MxUdoTVX5m3uWaIiRlodf345FEM7Uzs +aJIneWFJPB5HVeoUGp57agXih9YeZ6xMEbyQ+zJtWQY +-> ssh-ed25519 jPowng B5XotRgv7s/FUegGhceBj7EoukewNUOIFl4TFRQf1EQ +PgGCBd/Pqwp7ayqi7okHBGF1SfFpwT4KlHJ/np6p2uQ +--- AeLgwGz6k3OABb53cXNaCU/sgI4FlU1s6p8PhAaFOlg +1CԹULfI1Hmb}m šg0`XG>\>8rz+Y`ʢ.JBU!z¸Z50*ٟI] I +ĵo۰g¿tncz[{ +j&NNo{ -eP=L 6.SP:e \ No newline at end of file diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index e305b29..e5a87de 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -86,7 +86,7 @@ in type = types.str; example = "/var/lib/acme/creds.env"; description = '' - Gandi API key file as an 'EnvironmentFile' (see `systemd.exec(5)`) + OVH API key file as an 'EnvironmentFile' (see `systemd.exec(5)`) ''; }; }; @@ -281,6 +281,7 @@ in locations."/" = { extraConfig = + # FIXME: check that X-User is dropped otherwise (args.extraConfig.locations."/".extraConfig or "") + '' # Use SSO auth_request /sso-auth; @@ -414,7 +415,8 @@ in { "${domain}" = { extraDomainNames = [ "*.${domain}" ]; - dnsProvider = "gandiv5"; + dnsProvider = "ovh"; + dnsPropagationCheck = false; # OVH is slow inherit (cfg.acme) credentialsFile; }; }; From 138d4d2bd9d7460dbe2bb48c1473c5bf9a07522e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 15 Nov 2024 21:36:11 +0100 Subject: [PATCH 1417/1588] nixos: services: nextcloud: add collabora This needs to be configured through the "Nextcloud Office" app, specifically the WOPI setting is important for security (I put both the external IP, as well as `::1` and `127.0.0.1`). --- .../nixos/services/nextcloud/collabora.nix | 58 +++++++++++++++++++ modules/nixos/services/nextcloud/default.nix | 4 ++ 2 files changed, 62 insertions(+) create mode 100644 modules/nixos/services/nextcloud/collabora.nix diff --git a/modules/nixos/services/nextcloud/collabora.nix b/modules/nixos/services/nextcloud/collabora.nix new file mode 100644 index 0000000..d62181f --- /dev/null +++ b/modules/nixos/services/nextcloud/collabora.nix @@ -0,0 +1,58 @@ +# Document editor with Nextcloud +{ config, lib, ... }: +let + cfg = config.my.services.nextcloud.collabora; +in +{ + options.my.services.nextcloud.collabora = with lib; { + enable = mkEnableOption "Collabora integration"; + + port = mkOption { + type = types.port; + default = 9980; + example = 8080; + description = "Internal port for API"; + }; + }; + + config = lib.mkIf cfg.enable { + services.collabora-online = { + enable = true; + inherit (cfg) port; + + aliasGroups = [ + { + host = "https://collabora.${config.networking.domain}"; + # Allow using from nextcloud + aliases = [ "https://${config.services.nextcloud.hostName}" ]; + } + ]; + + settings = { + # Rely on reverse proxy for SSL + ssl = { + enable = false; + termination = true; + }; + }; + }; + + my.services.nginx.virtualHosts = { + collabora = { + inherit (cfg) port; + + extraConfig = { + # Too bad for the repetition... + locations."~ ^/cool/(.*)/ws$" = { + proxyPass = "http://127.0.0.1:${builtins.toString cfg.port}"; + proxyWebsockets = true; + }; + locations."^~ /cool/adminws" = { + proxyPass = "http://127.0.0.1:${builtins.toString cfg.port}"; + proxyWebsockets = true; + }; + }; + }; + }; + }; +} diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index e2c4746..fe94177 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -4,6 +4,10 @@ let cfg = config.my.services.nextcloud; in { + imports = [ + ./collabora.nix + ]; + options.my.services.nextcloud = with lib; { enable = mkEnableOption "Nextcloud"; maxSize = mkOption { From ae230b5df7b17e222e5cebe8fc055c01d0361f24 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 15 Nov 2024 21:38:16 +0100 Subject: [PATCH 1418/1588] hosts: porthos: services: enable collabora --- hosts/nixos/porthos/services.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 109b4e5..ffd150a 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -95,6 +95,9 @@ in nextcloud = { enable = true; passwordFile = secrets."nextcloud/password".path; + collabora = { + enable = true; + }; }; nix-cache = { enable = true; From e9d96138d5b5c6c678e2298618a3faa444bd37a9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 19 Nov 2024 15:46:31 +0000 Subject: [PATCH 1419/1588] nixos: services: nginx: add 'websocketsLocations' This accounts for the overwhelming majority of my usage of `extraConfig`. --- modules/nixos/services/nginx/default.nix | 44 ++++++++++++++++++------ 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index e5a87de..5a372ed 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -17,6 +17,16 @@ let ''; }; + websocketsLocations = mkOption { + type = with types; listOf str; + default = [ ]; + example = [ "/socket" ]; + description = '' + Which locations on this virtual host should be configured for + websockets. + ''; + }; + port = mkOption { type = with types; nullOr port; default = null; @@ -108,12 +118,7 @@ in }; jellyfin = { port = 8096; - extraConfig = { - locations."/socket" = { - proxyPass = "http://127.0.0.1:8096/"; - proxyWebsockets = true; - }; - }; + websocketsLocations = [ "/socket" ]; }; }; description = '' @@ -195,6 +200,19 @@ in } configured. ''; })) + ++ (lib.flip lib.mapAttrsToList cfg.virtualHosts (_: { subdomain, ... } @ args: + let + proxyPass = [ "port" "socket" ]; + proxyPassUsed = lib.any (v: args.${v} != null) proxyPass; + in + { + assertion = args.websocketsLocations != [ ] -> proxyPassUsed; + message = '' + Subdomain '${subdomain}' can only use 'websocketsLocations' with one of ${ + lib.concatStringsSep ", " (builtins.map (v: "'${v}'") proxyPass) + }. + ''; + })) ++ ( let ports = lib.my.mapFilter @@ -241,6 +259,14 @@ in virtualHosts = let domain = config.networking.domain; + mkProxyPass = { websocketsLocations, ... }: proxyPass: + let + websockets = lib.genAttrs websocketsLocations (_: { + inherit proxyPass; + proxyWebsockets = true; + }); + in + { "/" = { inherit proxyPass; }; } // websockets; mkVHost = ({ subdomain, ... } @ args: lib.nameValuePair "${subdomain}.${domain}" (lib.my.recursiveMerge [ @@ -251,8 +277,7 @@ in } # Proxy to port (lib.optionalAttrs (args.port != null) { - locations."/".proxyPass = - "http://127.0.0.1:${toString args.port}"; + locations = mkProxyPass args "http://127.0.0.1:${toString args.port}"; }) # Serve filesystem content (lib.optionalAttrs (args.root != null) { @@ -260,8 +285,7 @@ in }) # Serve to UNIX socket (lib.optionalAttrs (args.socket != null) { - locations."/".proxyPass = - "http://unix:${args.socket}"; + locations = mkProxyPass args "http://unix:${args.socket}"; }) # Redirect to a different domain (lib.optionalAttrs (args.redirect != null) { From 6a1a35a3840bc40cc095a6e98702b705e67aa43f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 19 Nov 2024 15:49:31 +0000 Subject: [PATCH 1420/1588] nixos: services: migrate to 'websocketsLocations' --- modules/nixos/services/aria/default.nix | 4 +--- .../nixos/services/audiobookshelf/default.nix | 4 +--- modules/nixos/services/jellyfin/default.nix | 6 +----- modules/nixos/services/nextcloud/collabora.nix | 16 ++++------------ modules/nixos/services/paperless/default.nix | 6 +----- 5 files changed, 8 insertions(+), 28 deletions(-) diff --git a/modules/nixos/services/aria/default.nix b/modules/nixos/services/aria/default.nix index 2d1b3e2..acbf0b7 100644 --- a/modules/nixos/services/aria/default.nix +++ b/modules/nixos/services/aria/default.nix @@ -65,9 +65,7 @@ in aria-rpc = { port = cfg.rpcPort; # Proxy websockets for RPC - extraConfig = { - locations."/".proxyWebsockets = true; - }; + websocketsLocations = [ "/" ]; }; }; diff --git a/modules/nixos/services/audiobookshelf/default.nix b/modules/nixos/services/audiobookshelf/default.nix index da9ec55..04ec8b9 100644 --- a/modules/nixos/services/audiobookshelf/default.nix +++ b/modules/nixos/services/audiobookshelf/default.nix @@ -30,9 +30,7 @@ in audiobookshelf = { inherit (cfg) port; # Proxy websockets for RPC - extraConfig = { - locations."/".proxyWebsockets = true; - }; + websocketsLocations = [ "/" ]; }; }; diff --git a/modules/nixos/services/jellyfin/default.nix b/modules/nixos/services/jellyfin/default.nix index e8910a5..6edeb67 100644 --- a/modules/nixos/services/jellyfin/default.nix +++ b/modules/nixos/services/jellyfin/default.nix @@ -27,17 +27,13 @@ in my.services.nginx.virtualHosts = { jellyfin = { port = 8096; + websocketsLocations = [ "/socket" ]; extraConfig = { locations."/" = { extraConfig = '' proxy_buffering off; ''; }; - # Too bad for the repetition... - locations."/socket" = { - proxyPass = "http://127.0.0.1:8096/"; - proxyWebsockets = true; - }; }; }; }; diff --git a/modules/nixos/services/nextcloud/collabora.nix b/modules/nixos/services/nextcloud/collabora.nix index d62181f..f8f42a7 100644 --- a/modules/nixos/services/nextcloud/collabora.nix +++ b/modules/nixos/services/nextcloud/collabora.nix @@ -40,18 +40,10 @@ in my.services.nginx.virtualHosts = { collabora = { inherit (cfg) port; - - extraConfig = { - # Too bad for the repetition... - locations."~ ^/cool/(.*)/ws$" = { - proxyPass = "http://127.0.0.1:${builtins.toString cfg.port}"; - proxyWebsockets = true; - }; - locations."^~ /cool/adminws" = { - proxyPass = "http://127.0.0.1:${builtins.toString cfg.port}"; - proxyWebsockets = true; - }; - }; + websocketsLocations = [ + "~ ^/cool/(.*)/ws$" + "^~ /cool/adminws" + ]; }; }; }; diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index f62879a..eceae1c 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -152,11 +152,7 @@ in sso = { enable = true; }; - - # Enable websockets on root - extraConfig = { - locations."/".proxyWebsockets = true; - }; + websocketsLocations = [ "/" ]; }; }; From 60050113bc6a167449a56f0a17f2820e776f97bf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 19 Nov 2024 15:53:19 +0000 Subject: [PATCH 1421/1588] nixos: services: nginx: modify example Now that `websocketLocations` exists, it makes little sense to use `proxyWebsockets` in an example, so use a different one. --- modules/nixos/services/nginx/default.nix | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index 5a372ed..3bba9f4 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -70,10 +70,13 @@ let extraConfig = mkOption { type = types.attrs; # FIXME: forward type of virtualHosts example = { - locations."/socket" = { - proxyPass = "http://127.0.0.1:8096/"; - proxyWebsockets = true; - }; + extraConfig = '' + add_header X-Clacks-Overhead "GNU Terry Pratchett"; + ''; + + locations."/".extraConfig = '' + client_max_body_size 1G; + ''; }; default = { }; description = '' From 2ffbc13513088245c5bdfa680a34eeb40468fbf1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 20 Nov 2024 21:05:16 +0100 Subject: [PATCH 1422/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index af4cbfa..fd8354f 100644 --- a/flake.lock +++ b/flake.lock @@ -94,11 +94,11 @@ ] }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1730837930, - "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=", + "lastModified": 1732025103, + "narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f607e07f3ac7e53541120536708e824acccfaa8", + "rev": "a46e702093a5c46e192243edbd977d5749e7f294", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1730885145, - "narHash": "sha256-UPrBEY0No1O3ULb67xYjRh2r3u7MnZovfo1oYSPCIxI=", + "lastModified": 1732131502, + "narHash": "sha256-kWc3mjgEUh+2xzaluNxLMvEHRkfJ37pRBtXcwekKefM=", "owner": "nix-community", "repo": "NUR", - "rev": "c0d8828600ef47d475e6ec33513bf9af6eb6b991", + "rev": "13b44543c4e5d20bb2976ddde846c7341e4c41dd", "type": "github" }, "original": { @@ -194,11 +194,11 @@ ] }, "locked": { - "lastModified": 1730814269, - "narHash": "sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF+06nOg=", + "lastModified": 1732021966, + "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "d70155fdc00df4628446352fc58adc640cd705c2", + "rev": "3308484d1a443fc5bc92012435d79e80458fe43c", "type": "github" }, "original": { From 7f0cd6612eccf07046df860650f2f95ad85fea95 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 14 Nov 2024 21:29:24 +0100 Subject: [PATCH 1423/1588] nixos: services: paperless: remove MKL work-around Instead, rely on the upstream service's work-around [1]. This will reduce the amount of package builds I need to do when updating my server... [1]: https://github.com/NixOS/nixpkgs/pull/299008 This reverts commit e2ec4d3032ee3d3dc3be935b0e2af9ad7ff0c511. --- modules/nixos/services/paperless/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index eceae1c..321dfa3 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.services.paperless; in @@ -80,9 +80,6 @@ in # Misc PAPERLESS_TIME_ZONE = config.time.timeZone; PAPERLESS_ADMIN_USER = cfg.username; - - # Fix classifier hangs - LD_LIBRARY_PATH = "${lib.getLib pkgs.mkl}/lib"; }; # Admin password From 6a5c4a627aa9b26a7aeb7e324ae9b3b533f9a04f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 18 Nov 2024 13:31:08 +0100 Subject: [PATCH 1424/1588] nixos: services: pyload: add fail2ban jail --- modules/nixos/services/pyload/default.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/nixos/services/pyload/default.nix b/modules/nixos/services/pyload/default.nix index 88889bf..7257d0f 100644 --- a/modules/nixos/services/pyload/default.nix +++ b/modules/nixos/services/pyload/default.nix @@ -53,6 +53,20 @@ in }; }; - # FIXME: fail2ban + services.fail2ban.jails = { + pyload = '' + enabled = true + filter = pyload + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/pyload.conf".text = '' + [Definition] + failregex = ^.*Login failed for user '<F-USER>.*</F-USER>' \[CLIENT: <HOST>\]$ + journalmatch = _SYSTEMD_UNIT=pyload.service + ''; + }; }; } From fe49e470269f9f8a2445e7ce6f219a4fd6d18561 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 27 Nov 2024 12:02:29 +0000 Subject: [PATCH 1425/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index fd8354f..cd3f50c 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1732025103, - "narHash": "sha256-qjEI64RKvDxRyEarY0jTzrZMa8ebezh2DEZmJJrpVdo=", + "lastModified": 1732482255, + "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=", "owner": "nix-community", "repo": "home-manager", - "rev": "a46e702093a5c46e192243edbd977d5749e7f294", + "rev": "a9953635d7f34e7358d5189751110f87e3ac17da", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732014248, - "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", + "lastModified": 1732521221, + "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", + "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1732131502, - "narHash": "sha256-kWc3mjgEUh+2xzaluNxLMvEHRkfJ37pRBtXcwekKefM=", + "lastModified": 1732704680, + "narHash": "sha256-x3NlO2qzuobU9BrynzydX7X9oskJpysv7BI7DJ5cVSE=", "owner": "nix-community", "repo": "NUR", - "rev": "13b44543c4e5d20bb2976ddde846c7341e4c41dd", + "rev": "31a30f0862fd8b5f88a6597382bb09197356b19e", "type": "github" }, "original": { From e39fef275c2eee50708080e932ae48bb1845c997 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 27 Nov 2024 12:05:41 +0000 Subject: [PATCH 1426/1588] nixos: services: paperless: use 'environmentFile' That way I don't have to configure all services to make use of it. Someday I'll find the will to add the `postgresql.service` dependency upstream, truly removing the need to configure any service at all. --- modules/nixos/services/paperless/default.nix | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index 321dfa3..c8967e1 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -84,43 +84,30 @@ in # Admin password passwordFile = cfg.passwordFile; + + # Secret key + environmentFile = cfg.secretKeyFile; }; systemd.services = { paperless-scheduler = { requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; - - serviceConfig = { - EnvironmentFile = cfg.secretKeyFile; - }; }; paperless-consumer = { requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; - - serviceConfig = { - EnvironmentFile = cfg.secretKeyFile; - }; }; paperless-web = { requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; - - serviceConfig = { - EnvironmentFile = cfg.secretKeyFile; - }; }; paperless-task-queue = { requires = [ "postgresql.service" ]; after = [ "postgresql.service" ]; - - serviceConfig = { - EnvironmentFile = cfg.secretKeyFile; - }; }; }; From f2168378fc1b658eeb24ec364953c4160de041f7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 27 Nov 2024 15:12:10 +0000 Subject: [PATCH 1427/1588] home: direnv: lib: also watch '.python-version' It's used by `uv` as a kind of configuration file, so watch it as well. --- modules/home/direnv/lib/python.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/direnv/lib/python.sh b/modules/home/direnv/lib/python.sh index 780fbe6..b4b2bce 100644 --- a/modules/home/direnv/lib/python.sh +++ b/modules/home/direnv/lib/python.sh @@ -53,4 +53,5 @@ layout_uv() { PATH_add "$VIRTUAL_ENV/bin" watch_file pyproject.toml watch_file uv.lock + watch_file .python-version } From 83da7ba9c8c8d54b8fd7585ee009505e9a36dafa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Nov 2024 11:24:30 +0000 Subject: [PATCH 1428/1588] home: tmux: explicitly disable mouse support It's disabled by default, but make it explicit :-). --- modules/home/tmux/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 71ce4ca..dc7fed1 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -47,6 +47,7 @@ in clock24 = true; # I'm one of those heathens escapeTime = 0; # Let vim do its thing instead historyLimit = 100000; # Bigger buffer + mouse = false; # I dislike mouse support terminal = "tmux-256color"; # I want accurate termcap info plugins = with pkgs.tmuxPlugins; [ From e8a41187e75b84cee2aae14663bb4fd5229e256d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Nov 2024 12:05:45 +0000 Subject: [PATCH 1429/1588] home: xdg: create 'HISTFILE' parent directory In fbd3b70d61bd733af033545d4cfe4809fbb068a3, I forgot to modify the `.keep` file to be created in `$XDG_STATE_HOME/bash/`. --- modules/home/xdg/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index 270200e..e4c1887 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -30,11 +30,11 @@ in }; # A tidy home is a tidy mind dataFile = { - "bash/.keep".text = ""; "gdb/.keep".text = ""; "tig/.keep".text = ""; }; stateFile = { + "bash/.keep".text = ""; "python/.keep".text = ""; }; }; From 8b61af1ac3cff8450234534b29420a51aa4b9de5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Nov 2024 12:07:07 +0000 Subject: [PATCH 1430/1588] home: xdg: remove 'gdb' directory I have an actual module to configure `gdb`, and it uses `$XDG_STATE_HOME` anyway... --- modules/home/xdg/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index e4c1887..479ba1e 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -30,7 +30,6 @@ in }; # A tidy home is a tidy mind dataFile = { - "gdb/.keep".text = ""; "tig/.keep".text = ""; }; stateFile = { From da3c29bbafe60b2e30172a6c5da452b2efeb8a34 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Nov 2024 12:07:50 +0000 Subject: [PATCH 1431/1588] home: xdg: add comment about 'tig' To explain why I didn't modify it as part of my `$XDG_STATE_HOME` migration in fbd3b70d61bd733af033545d4cfe4809fbb068a3. --- modules/home/xdg/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/xdg/default.nix b/modules/home/xdg/default.nix index 479ba1e..803167f 100644 --- a/modules/home/xdg/default.nix +++ b/modules/home/xdg/default.nix @@ -30,7 +30,7 @@ in }; # A tidy home is a tidy mind dataFile = { - "tig/.keep".text = ""; + "tig/.keep".text = ""; # `tig` uses `XDG_DATA_HOME` specifically... }; stateFile = { "bash/.keep".text = ""; From b38658405ad50a54876c5c7537e6f1815542c83c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Nov 2024 12:17:31 +0000 Subject: [PATCH 1432/1588] home: tmux: add binding to refresh configuration Don't rely on `tmux-sensible` to set it up. --- modules/home/tmux/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index dc7fed1..23dff05 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -81,6 +81,9 @@ in ]; extraConfig = '' + # Refresh configuration + bind-key -N "Source tmux.conf" R source-file ${config.xdg.configHome}/tmux/tmux.conf \; display-message "Sourced tmux.conf!" + # Better vim mode bind-key -T copy-mode-vi 'v' send -X begin-selection ${ From 98c90d77c51b74dc5888c7e0647fdd9f35511964 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Nov 2024 12:50:29 +0000 Subject: [PATCH 1433/1588] home: tmux: add sloppy window switching bindings Another set of bindings which were setup by `tmux-sensible`, that I want to enable explicitly to avoid issues when it is disabled by default. --- modules/home/tmux/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 23dff05..bb23b44 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -84,6 +84,10 @@ in # Refresh configuration bind-key -N "Source tmux.conf" R source-file ${config.xdg.configHome}/tmux/tmux.conf \; display-message "Sourced tmux.conf!" + # Accept sloppy Ctrl key when switching windows, on top of default mapping + bind-key -N "Select the previous window" C-p previous-window + bind-key -N "Select the next window" C-n next-window + # Better vim mode bind-key -T copy-mode-vi 'v' send -X begin-selection ${ From c74acda957fb2fb86560e7507390b482b2705ebf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 28 Nov 2024 19:58:50 +0000 Subject: [PATCH 1434/1588] nixos: system: packages: remove 'wget' --- modules/nixos/system/packages/default.nix | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/nixos/system/packages/default.nix b/modules/nixos/system/packages/default.nix index ebea06f..6a78ff6 100644 --- a/modules/nixos/system/packages/default.nix +++ b/modules/nixos/system/packages/default.nix @@ -1,5 +1,5 @@ # Common packages -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.my.system.packages; in @@ -13,10 +13,6 @@ in }; config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - wget - ]; - programs = { vim = { enable = true; From 3ac85b87623fb4d64c93c996d21ffac7fd832979 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 29 Nov 2024 14:29:32 +0000 Subject: [PATCH 1435/1588] home: packages: add 'tree' --- modules/home/packages/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/packages/default.nix b/modules/home/packages/default.nix index 1362a06..b0f8d67 100644 --- a/modules/home/packages/default.nix +++ b/modules/home/packages/default.nix @@ -26,6 +26,7 @@ in fd file ripgrep + tree ] ++ cfg.additionalPackages); nixpkgs.config = { From baa853477d78bfd63cbed78c1d9e703a4d8c3d9d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 2 Dec 2024 20:36:37 +0000 Subject: [PATCH 1436/1588] nixos: hardware: sound: remove ALSA `sound.enable` was removed from the latest release, and is unnecessary with PulseAudio. --- modules/nixos/hardware/sound/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/nixos/hardware/sound/default.nix b/modules/nixos/hardware/sound/default.nix index e8ba7f7..1cf12cb 100644 --- a/modules/nixos/hardware/sound/default.nix +++ b/modules/nixos/hardware/sound/default.nix @@ -54,9 +54,6 @@ in # Pulseaudio setup (lib.mkIf cfg.pulse.enable { - # ALSA - sound.enable = true; - hardware.pulseaudio.enable = true; }) ]); From ad1cfbd6f03e0b38f690d8563af02c1c04d8b731 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 3 Dec 2024 10:43:09 +0000 Subject: [PATCH 1437/1588] flake: bump inputs Allow-list the build inputs for `sonarr` until the package is fixed upstream [1]. [1]: https://github.com/NixOS/nixpkgs/issues/360592 --- flake.lock | 18 +++++++++--------- modules/nixos/services/servarr/default.nix | 10 ++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index cd3f50c..0aeab37 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1732482255, - "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=", + "lastModified": 1733175814, + "narHash": "sha256-zFOtOaqjzZfPMsm1mwu98syv3y+jziAq5DfWygaMtLg=", "owner": "nix-community", "repo": "home-manager", - "rev": "a9953635d7f34e7358d5189751110f87e3ac17da", + "rev": "bf23fe41082aa0289c209169302afd3397092f22", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732521221, - "narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=", + "lastModified": 1733015953, + "narHash": "sha256-t4BBVpwG9B4hLgc6GUBuj3cjU7lP/PJfpTHuSqE+crk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d", + "rev": "ac35b104800bff9028425fec3b6e8a41de2bbfff", "type": "github" }, "original": { @@ -168,11 +168,11 @@ }, "nur": { "locked": { - "lastModified": 1732704680, - "narHash": "sha256-x3NlO2qzuobU9BrynzydX7X9oskJpysv7BI7DJ5cVSE=", + "lastModified": 1733215745, + "narHash": "sha256-RIlhnKlObJ1sEdzBP6Nuy4jLUiQnmWWXVsRHRbv6SzY=", "owner": "nix-community", "repo": "NUR", - "rev": "31a30f0862fd8b5f88a6597382bb09197356b19e", + "rev": "251d756a74e67bda25d89327b01a3da19dddabae", "type": "github" }, "original": { diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index e25d9cf..4aa0de7 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -96,5 +96,15 @@ in # Sonarr for shows (mkFullConfig "sonarr") (mkFail2Ban "sonarr") + + # HACK: until https://github.com/NixOS/nixpkgs/issues/360592 is resolved + (lib.mkIf cfg.sonarr.enable { + nixpkgs.config.permittedInsecurePackages = [ + "aspnetcore-runtime-6.0.36" + "aspnetcore-runtime-wrapped-6.0.36" + "dotnet-sdk-6.0.428" + "dotnet-sdk-wrapped-6.0.428" + ]; + }) ]); } From 35c547a090afdf77a1fb42125170649ef1247ab8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 3 Dec 2024 10:43:33 +0000 Subject: [PATCH 1438/1588] home: tmux: enable focus events Since `tmux-sensible` was disabled by default, we should enable this explicitly now. --- modules/home/tmux/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index bb23b44..ae8b8f0 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -48,6 +48,7 @@ in escapeTime = 0; # Let vim do its thing instead historyLimit = 100000; # Bigger buffer mouse = false; # I dislike mouse support + focusEvents = true; # Report focus events terminal = "tmux-256color"; # I want accurate termcap info plugins = with pkgs.tmuxPlugins; [ From 19120bca2943d5a03d9116bc547f89197059694b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 8 Dec 2024 16:08:48 -0500 Subject: [PATCH 1439/1588] nixos: hardware: graphics: use 'initrd' option --- modules/nixos/hardware/graphics/default.nix | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/nixos/hardware/graphics/default.nix b/modules/nixos/hardware/graphics/default.nix index 89bb1cd..7d8b359 100644 --- a/modules/nixos/hardware/graphics/default.nix +++ b/modules/nixos/hardware/graphics/default.nix @@ -33,9 +33,8 @@ in # AMD GPU (lib.mkIf (cfg.gpuFlavor == "amd") { - boot.initrd.kernelModules = lib.mkIf cfg.amd.enableKernelModule [ "amdgpu" ]; - hardware.amdgpu = { + initrd.enable = cfg.amd.enableKernelModule; # Vulkan amdvlk = lib.mkIf cfg.amd.amdvlk { enable = true; From cb5eb68d35ce1a70c8d7b8560b23586f065c79e1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 11 Dec 2024 00:46:47 +0100 Subject: [PATCH 1440/1588] flake: bump inputs And fix deprecated NUR overlay attribute. --- flake.lock | 60 +++++++++++++++++++++++++++++++----------- flake.nix | 4 +++ flake/home-manager.nix | 2 +- flake/nixos.nix | 2 +- 4 files changed, 51 insertions(+), 17 deletions(-) diff --git a/flake.lock b/flake.lock index 0aeab37..0db428a 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1730504689, - "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "506278e768c2a08bec68eb62932193e341f55c90", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1733175814, - "narHash": "sha256-zFOtOaqjzZfPMsm1mwu98syv3y+jziAq5DfWygaMtLg=", + "lastModified": 1733873195, + "narHash": "sha256-dTosiZ3sZ/NKoLKQ++v8nZdEHya0eTNEsaizNp+MUPM=", "owner": "nix-community", "repo": "home-manager", - "rev": "bf23fe41082aa0289c209169302afd3397092f22", + "rev": "f26aa4b76fb7606127032d33ac73d7d507d82758", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733015953, - "narHash": "sha256-t4BBVpwG9B4hLgc6GUBuj3cjU7lP/PJfpTHuSqE+crk=", + "lastModified": 1733759999, + "narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ac35b104800bff9028425fec3b6e8a41de2bbfff", + "rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56", "type": "github" }, "original": { @@ -167,12 +167,21 @@ } }, "nur": { + "inputs": { + "flake-parts": [ + "flake-parts" + ], + "nixpkgs": [ + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, "locked": { - "lastModified": 1733215745, - "narHash": "sha256-RIlhnKlObJ1sEdzBP6Nuy4jLUiQnmWWXVsRHRbv6SzY=", + "lastModified": 1733873876, + "narHash": "sha256-6YHWh0+E74hBiH0N+LeZPSWRvbmudF6mtEtFpRo3LWc=", "owner": "nix-community", "repo": "NUR", - "rev": "251d756a74e67bda25d89327b01a3da19dddabae", + "rev": "77c8486c65517272727884ca62b9322092f4f643", "type": "github" }, "original": { @@ -194,11 +203,11 @@ ] }, "locked": { - "lastModified": 1732021966, - "narHash": "sha256-mnTbjpdqF0luOkou8ZFi2asa1N3AA2CchR/RqCNmsGE=", + "lastModified": 1733665616, + "narHash": "sha256-+XTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd+lh2A=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "3308484d1a443fc5bc92012435d79e80458fe43c", + "rev": "d8c02f0ffef0ef39f6063731fc539d8c71eb463a", "type": "github" }, "original": { @@ -235,6 +244,27 @@ "repo": "default", "type": "github" } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index a07ee15..f0bb79c 100644 --- a/flake.nix +++ b/flake.nix @@ -55,6 +55,10 @@ owner = "nix-community"; repo = "NUR"; ref = "master"; + inputs = { + flake-parts.follows = "flake-parts"; + nixpkgs.follows = "nixpkgs"; + }; }; pre-commit-hooks = { diff --git a/flake/home-manager.nix b/flake/home-manager.nix index 34af375..add889e 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -25,7 +25,7 @@ let inherit system; overlays = (lib.attrValues self.overlays) ++ [ - inputs.nur.overlay + inputs.nur.overlays.default ]; }; diff --git a/flake/nixos.nix b/flake/nixos.nix index b48b551..fa656dc 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -7,7 +7,7 @@ let } { nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ - inputs.nur.overlay + inputs.nur.overlays.default ]; } # Include generic settings From c5a375d1657cac9ed2b2aa449c9380298a390ad7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 11 Dec 2024 00:48:54 +0100 Subject: [PATCH 1441/1588] nixos: services: paperless: use automatic DB setup That way I don't have to worry about the `postgresql.service` dependency anymore :-). --- modules/nixos/services/paperless/default.nix | 40 ++------------------ 1 file changed, 3 insertions(+), 37 deletions(-) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index c8967e1..63f456b 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -61,11 +61,6 @@ in PAPERLESS_ENABLE_HTTP_REMOTE_USER = true; PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME = "HTTP_X_USER"; - # Use PostgreSQL - PAPERLESS_DBHOST = "/run/postgresql"; - PAPERLESS_DBUSER = "paperless"; - PAPERLESS_DBNAME = "paperless"; - # Security settings PAPERLESS_ALLOWED_HOSTS = paperlessDomain; PAPERLESS_CORS_ALLOWED_HOSTS = "https://${paperlessDomain}"; @@ -87,40 +82,11 @@ in # Secret key environmentFile = cfg.secretKeyFile; - }; - systemd.services = { - paperless-scheduler = { - requires = [ "postgresql.service" ]; - after = [ "postgresql.service" ]; + # Automatic PostgreSQL provisioning + database = { + createLocally = true; }; - - paperless-consumer = { - requires = [ "postgresql.service" ]; - after = [ "postgresql.service" ]; - }; - - paperless-web = { - requires = [ "postgresql.service" ]; - after = [ "postgresql.service" ]; - }; - - paperless-task-queue = { - requires = [ "postgresql.service" ]; - after = [ "postgresql.service" ]; - }; - }; - - # Set-up database - services.postgresql = { - enable = true; - ensureDatabases = [ "paperless" ]; - ensureUsers = [ - { - name = "paperless"; - ensureDBOwnership = true; - } - ]; }; # Set-up media group From b2d2ff179840437f5659102c03356a112c2c24df Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 16 Dec 2024 00:19:31 +0100 Subject: [PATCH 1442/1588] nixos: services: postgres: fix renamed option --- modules/nixos/services/postgresql/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nixos/services/postgresql/default.nix b/modules/nixos/services/postgresql/default.nix index bbe46d4..3dcf6d1 100644 --- a/modules/nixos/services/postgresql/default.nix +++ b/modules/nixos/services/postgresql/default.nix @@ -27,11 +27,11 @@ in oldPackage = if pgCfg.enableJIT then pgCfg.package.withJIT else pgCfg.package; oldData = pgCfg.dataDir; - oldBin = "${if pgCfg.extraPlugins == [] then oldPackage else oldPackage.withPackages pgCfg.extraPlugins}/bin"; + oldBin = "${if pgCfg.extensions == [] then oldPackage else oldPackage.withPackages pgCfg.extensions}/bin"; newPackage = if pgCfg.enableJIT then newPackage'.withJIT else newPackage'; newData = "/var/lib/postgresql/${newPackage.psqlSchema}"; - newBin = "${if pgCfg.extraPlugins == [] then newPackage else newPackage.withPackages pgCfg.extraPlugins}/bin"; + newBin = "${if pgCfg.extensions == [] then newPackage else newPackage.withPackages pgCfg.extensions}/bin"; in [ (pkgs.writeScriptBin "upgrade-pg-cluster" '' From dec5dabf02ed6a901f9f9feb97ffcd8973e54237 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 16 Dec 2024 00:20:18 +0100 Subject: [PATCH 1443/1588] modules: services: postgres: upgrade version --- modules/nixos/services/postgresql/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nixos/services/postgresql/default.nix b/modules/nixos/services/postgresql/default.nix index 3dcf6d1..1dca164 100644 --- a/modules/nixos/services/postgresql/default.nix +++ b/modules/nixos/services/postgresql/default.nix @@ -14,7 +14,7 @@ in # Let other services enable postgres when they need it (lib.mkIf cfg.enable { services.postgresql = { - package = pkgs.postgresql_13; + package = pkgs.postgresql_17; }; }) @@ -23,7 +23,7 @@ in environment.systemPackages = let pgCfg = config.services.postgresql; - newPackage' = pkgs.postgresql_13; + newPackage' = pkgs.postgresql_17; oldPackage = if pgCfg.enableJIT then pgCfg.package.withJIT else pgCfg.package; oldData = pgCfg.dataDir; From 747b344b766e22ac7bb3ba4152db60de49cd12be Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 15 Dec 2024 17:50:43 -0500 Subject: [PATCH 1444/1588] pkgs: remove 'cgt-calc' It's been merged upstream. --- pkgs/cgt-calc/default.nix | 47 --------------------------------------- pkgs/default.nix | 2 -- 2 files changed, 49 deletions(-) delete mode 100644 pkgs/cgt-calc/default.nix diff --git a/pkgs/cgt-calc/default.nix b/pkgs/cgt-calc/default.nix deleted file mode 100644 index 9966944..0000000 --- a/pkgs/cgt-calc/default.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ lib -, fetchFromGitHub -, python3Packages -, withTeXLive ? true -, texliveSmall -}: -python3Packages.buildPythonApplication rec { - pname = "cgt-calc"; - version = "1.13.0"; - pyproject = true; - - src = fetchFromGitHub { - owner = "KapJI"; - repo = "capital-gains-calculator"; - rev = "v${version}"; - hash = "sha256-y/Y05wG89nccXyxfjqazyPJhd8dOkfwRJre+Rzx97Hw="; - }; - - build-system = with python3Packages; [ - poetry-core - ]; - - dependencies = with python3Packages; [ - defusedxml - jinja2 - pandas - requests - types-requests - yfinance - ]; - - makeWrapperArgs = lib.optionals withTeXLive [ - "--prefix" - "PATH" - ":" - "${lib.getBin texliveSmall}/bin" - ]; - - meta = with lib; { - description = "UK capital gains tax calculator"; - homepage = "https://github.com/KapJI/capital-gains-calculator"; - license = with licenses; [ mit ]; - mainProgram = "cgt-calc"; - maintainers = with maintainers; [ ambroisie ]; - platforms = platforms.unix; - }; -} diff --git a/pkgs/default.nix b/pkgs/default.nix index 949bcf7..6b7fce1 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -2,8 +2,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: { bw-pass = pkgs.callPackage ./bw-pass { }; - cgt-calc = pkgs.callPackage ./cgt-calc { }; - change-audio = pkgs.callPackage ./change-audio { }; change-backlight = pkgs.callPackage ./change-backlight { }; From 92e5fbe7df0c74a33baccfdb9fc82859217e0b3a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Dec 2024 20:12:46 -0500 Subject: [PATCH 1445/1588] overlays: add 'lsp-format-nvim-indentation' To fix the issue I reported upstream [1]. [1]: https://github.com/lukas-reineke/lsp-format.nvim/issues/94 --- overlays/lsp-format-nvim-indentation/default.nix | 4 ++++ overlays/lsp-format-nvim-indentation/generated.nix | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 overlays/lsp-format-nvim-indentation/default.nix create mode 100644 overlays/lsp-format-nvim-indentation/generated.nix diff --git a/overlays/lsp-format-nvim-indentation/default.nix b/overlays/lsp-format-nvim-indentation/default.nix new file mode 100644 index 0000000..832e71d --- /dev/null +++ b/overlays/lsp-format-nvim-indentation/default.nix @@ -0,0 +1,4 @@ +self: prev: +{ + vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); +} diff --git a/overlays/lsp-format-nvim-indentation/generated.nix b/overlays/lsp-format-nvim-indentation/generated.nix new file mode 100644 index 0000000..1902207 --- /dev/null +++ b/overlays/lsp-format-nvim-indentation/generated.nix @@ -0,0 +1,14 @@ +{ fetchpatch, ... }: + +_final: prev: { + lsp-format-nvim = prev.lsp-format-nvim.overrideAttrs (oa: { + patches = (oa.patches or [ ]) ++ [ + # https://github.com/lukas-reineke/lsp-format.nvim/issues/94 + (fetchpatch { + name = "use-effective-indentation"; + url = "https://github.com/liskin/lsp-format.nvim/commit/3757ac443bdf5bd166673833794553229ee8d939.patch"; + hash = "sha256-Dv+TvXrU/IrrPxz2MSPbLmRxch+qkHbI3AyFMj/ssDk="; + }) + ]; + }); +} From 322fbc970b12c187eb32a3c6ea57fe81cb4625db Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Dec 2024 20:14:16 -0500 Subject: [PATCH 1446/1588] home: vim: lsp: rely on 'bashls' formatting I finally figured out why I was getting the wrong indentation, turns out it was an issue in `lsp-format.nvim`. With that fixed/worked around, I can now rely completely on `bash-language-server` for formatting. I'll also rely on `shfmt` automatically detecting the type of file, as (Neo)Vim cannot be made to reliably set `ft=bash` for Bash scripts and `ft=sh` for POSIX shell. Finally, I removed spaces after redirections, I've now come around to liking the default (no spaces) better. --- .../home/vim/plugin/settings/lspconfig.lua | 10 +++++++ modules/home/vim/plugin/settings/null-ls.lua | 26 ------------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index 9e9425c..1f9abfd 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -74,6 +74,16 @@ if utils.is_executable("bash-language-server") then filetypes = { "bash", "sh", "zsh" }, capabilities = capabilities, on_attach = lsp.on_attach, + settings = { + bashIde = { + shfmt = { + -- Simplify the code + simplifyCode = true, + -- Indent switch cases + caseIndent = true, + }, + }, + }, }) end diff --git a/modules/home/vim/plugin/settings/null-ls.lua b/modules/home/vim/plugin/settings/null-ls.lua index eadf16a..258a209 100644 --- a/modules/home/vim/plugin/settings/null-ls.lua +++ b/modules/home/vim/plugin/settings/null-ls.lua @@ -46,29 +46,3 @@ null_ls.register({ condition = utils.is_executable_condition("isort"), }), }) - --- Shell (non-POSIX) -null_ls.register({ - null_ls.builtins.formatting.shfmt.with({ - -- Indent with 4 spaces, simplify the code, indent switch cases, - -- add space after redirection, use bash dialect - extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "bash" }, - -- Restrict to bash and zsh - filetypes = { "bash", "zsh" }, - -- Only used if available - condition = utils.is_executable_condition("shfmt"), - }), -}) - --- Shell (POSIX) -null_ls.register({ - null_ls.builtins.formatting.shfmt.with({ - -- Indent with 4 spaces, simplify the code, indent switch cases, - -- add space after redirection, use POSIX - extra_args = { "-i", "4", "-s", "-ci", "-sr", "-ln", "posix" }, - -- Restrict to POSIX sh - filetypes = { "sh" }, - -- Only used if available - condition = utils.is_executable_condition("shfmt"), - }), -}) From f4f1aad1c08bc232908cb8ce3e3ee2a0b6c38645 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Dec 2024 20:33:22 -0500 Subject: [PATCH 1447/1588] pkgs: fix shell formatting Ran `shfmt --write --indent 4 --simplify --case-indent`, in accordance with my editor settings. --- pkgs/bw-pass/bw-pass | 2 +- pkgs/change-audio/change-audio | 2 +- pkgs/diff-flake/diff-flake | 14 +++++++------- pkgs/osc52/osc52 | 2 +- pkgs/osc777/osc777 | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkgs/bw-pass/bw-pass b/pkgs/bw-pass/bw-pass index 124714a..0e974b7 100755 --- a/pkgs/bw-pass/bw-pass +++ b/pkgs/bw-pass/bw-pass @@ -66,7 +66,7 @@ query_password() { printf '%s\n' "$PASSWORD" } -if [ $# -lt 1 ] || [ $# -gt 2 ]; then +if [ $# -lt 1 ] || [ $# -gt 2 ]; then usage exit 1 fi diff --git a/pkgs/change-audio/change-audio b/pkgs/change-audio/change-audio index 612fecf..5a1fb9c 100755 --- a/pkgs/change-audio/change-audio +++ b/pkgs/change-audio/change-audio @@ -62,7 +62,7 @@ do_toggle() { } case "$1" in - up|down) + up | down) do_change_volume "$@" ;; toggle) diff --git a/pkgs/diff-flake/diff-flake b/pkgs/diff-flake/diff-flake index 0572b4e..a2a3513 100755 --- a/pkgs/diff-flake/diff-flake +++ b/pkgs/diff-flake/diff-flake @@ -81,23 +81,23 @@ parse_args() { shift case "$opt" in - -h|--help) + -h | --help) usage exit ;; - -f|--flake-output) + -f | --flake-output) FLAKE_OUTPUTS+=("$1") shift ;; - -o|--output) + -o | --output) OUTPUT_FILE="$1" shift ;; - -n|--new-rev) + -n | --new-rev) NEW_REV="$(git rev-parse "$1")" shift ;; - -p|--previous-rev) + -p | --previous-rev) PREVIOUS_REV="$(git rev-parse "$1")" shift ;; @@ -157,7 +157,7 @@ list_dev_shells() { } diff_output() { - local PREV NEW; + local PREV NEW PREV="$(mktemp --dry-run)" NEW="$(mktemp --dry-run)" @@ -169,7 +169,7 @@ diff_output() { printf 'Closure diff for `%s`:\n```\n' "$1" nix store diff-closures "$PREV" "$NEW" | sanitize_output printf '```\n\n' - } >> "$OUTPUT_FILE" + } >>"$OUTPUT_FILE" } parse_args "$@" diff --git a/pkgs/osc52/osc52 b/pkgs/osc52/osc52 index f64ccb6..de3a982 100755 --- a/pkgs/osc52/osc52 +++ b/pkgs/osc52/osc52 @@ -15,7 +15,7 @@ usage() { exec 1>&2 fi - cat << EOF + cat <<EOF Usage: $0 [options] [string] Send an arbitrary string to the terminal clipboard using the OSC 52 escape sequence as specified in xterm: diff --git a/pkgs/osc777/osc777 b/pkgs/osc777/osc777 index 83d066f..9bcac03 100755 --- a/pkgs/osc777/osc777 +++ b/pkgs/osc777/osc777 @@ -13,7 +13,7 @@ usage() { exec 1>&2 fi - cat << EOF + cat <<EOF Usage: $0 [options] <title> <message> Send a notification (title and message) to the host system using the OSC 777 escape sequence: From c75a307c58f3280fa326f764a1517a04e37898ec Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Dec 2024 20:39:15 -0500 Subject: [PATCH 1448/1588] home: wm: i3: fix 'pavucontrol' float --- modules/home/wm/i3/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/wm/i3/default.nix b/modules/home/wm/i3/default.nix index c432864..ec4f87f 100644 --- a/modules/home/wm/i3/default.nix +++ b/modules/home/wm/i3/default.nix @@ -127,7 +127,7 @@ in { class = "^Blueman-.*$"; } { title = "^htop$"; } { class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; } - { class = "^Pavucontrol.*$"; } + { class = "^pavucontrol.*$"; } { class = "^Arandr$"; } { class = ".?blueman-manager.*$"; } ]; From ead8101b8d94e88dd648a694d117bc8f4f10fcd7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Dec 2024 20:45:52 -0500 Subject: [PATCH 1449/1588] home: wm: i3: match 'blueman' float explicitly This is more of a work-around due to the wrapper in nixpkgs' packaging of that application, so might as well make that explicit and narrow. --- modules/home/wm/i3/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/wm/i3/default.nix b/modules/home/wm/i3/default.nix index ec4f87f..92d1381 100644 --- a/modules/home/wm/i3/default.nix +++ b/modules/home/wm/i3/default.nix @@ -129,7 +129,7 @@ in { class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; } { class = "^pavucontrol.*$"; } { class = "^Arandr$"; } - { class = ".?blueman-manager.*$"; } + { class = "^\\.blueman-manager-wrapped$"; } ]; }; From b7b6705391fccf00ca277f57bb8b730fc0e78bf1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 18 Dec 2024 20:47:24 -0500 Subject: [PATCH 1450/1588] home: wm: i3: make 'arandr' float Another work-around due to a wrapper in nixpkgs. --- modules/home/wm/i3/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/wm/i3/default.nix b/modules/home/wm/i3/default.nix index 92d1381..029a14b 100644 --- a/modules/home/wm/i3/default.nix +++ b/modules/home/wm/i3/default.nix @@ -130,6 +130,7 @@ in { class = "^pavucontrol.*$"; } { class = "^Arandr$"; } { class = "^\\.blueman-manager-wrapped$"; } + { class = "^\\.arandr-wrapped$"; } ]; }; From 5cae5632d31be145211fb927eed6af24216db3b8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 21 Dec 2024 17:06:37 -0500 Subject: [PATCH 1451/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 0db428a..bc1d34b 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1733873195, - "narHash": "sha256-dTosiZ3sZ/NKoLKQ++v8nZdEHya0eTNEsaizNp+MUPM=", + "lastModified": 1734808199, + "narHash": "sha256-MxlUcLjE8xLbrI1SJ2B2jftlg4wdutEILa3fgqwA98I=", "owner": "nix-community", "repo": "home-manager", - "rev": "f26aa4b76fb7606127032d33ac73d7d507d82758", + "rev": "f342df3ad938f205a913973b832f52c12546aac6", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733759999, - "narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=", + "lastModified": 1734424634, + "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56", + "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", "type": "github" }, "original": { @@ -177,11 +177,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1733873876, - "narHash": "sha256-6YHWh0+E74hBiH0N+LeZPSWRvbmudF6mtEtFpRo3LWc=", + "lastModified": 1734810357, + "narHash": "sha256-Oa6d+y1/PVaPrZ/GYwvmTK9kSrc5Qx/8D3DFN2TzpVA=", "owner": "nix-community", "repo": "NUR", - "rev": "77c8486c65517272727884ca62b9322092f4f643", + "rev": "e7b7b92a7c97a91f1465ab433bbdf6d00df1db8e", "type": "github" }, "original": { @@ -203,11 +203,11 @@ ] }, "locked": { - "lastModified": 1733665616, - "narHash": "sha256-+XTFXYlFJBxohhMGLDpYdEnhUNdxN8dyTA8WAd+lh2A=", + "lastModified": 1734797603, + "narHash": "sha256-ulZN7ps8nBV31SE+dwkDvKIzvN6hroRY8sYOT0w+E28=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "d8c02f0ffef0ef39f6063731fc539d8c71eb463a", + "rev": "f0f0dc4920a903c3e08f5bdb9246bb572fcae498", "type": "github" }, "original": { From e65b3ed1fc7977b9214c5bdbe1369c3decc96454 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 23 Dec 2024 22:42:42 -0500 Subject: [PATCH 1452/1588] home: vim: ftplugin: add query --- modules/home/vim/after/ftplugin/query.vim | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 modules/home/vim/after/ftplugin/query.vim diff --git a/modules/home/vim/after/ftplugin/query.vim b/modules/home/vim/after/ftplugin/query.vim new file mode 100644 index 0000000..fd2ac73 --- /dev/null +++ b/modules/home/vim/after/ftplugin/query.vim @@ -0,0 +1,6 @@ +" Create the `b:undo_ftplugin` variable if it doesn't exist +call ftplugined#check_undo_ft() + +" Use a small indentation value on query files +setlocal shiftwidth=2 +let b:undo_ftplugin.='|setlocal shiftwidth<' From 2996481327151763beece5cc24acb7913c2a5399 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 28 Dec 2024 13:24:21 -0500 Subject: [PATCH 1453/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index bc1d34b..a1385ba 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1734808199, - "narHash": "sha256-MxlUcLjE8xLbrI1SJ2B2jftlg4wdutEILa3fgqwA98I=", + "lastModified": 1735381016, + "narHash": "sha256-CyCZFhMUkuYbSD6bxB/r43EdmDE7hYeZZPTCv0GudO4=", "owner": "nix-community", "repo": "home-manager", - "rev": "f342df3ad938f205a913973b832f52c12546aac6", + "rev": "10e99c43cdf4a0713b4e81d90691d22c6a58bdf2", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1734424634, - "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", + "lastModified": 1735291276, + "narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", + "rev": "634fd46801442d760e09493a794c4f15db2d0cbb", "type": "github" }, "original": { @@ -177,11 +177,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1734810357, - "narHash": "sha256-Oa6d+y1/PVaPrZ/GYwvmTK9kSrc5Qx/8D3DFN2TzpVA=", + "lastModified": 1735408823, + "narHash": "sha256-1VjQeMQer5nXNYtw+BG+s78ucaEoxO5oqj+yRmM8MMs=", "owner": "nix-community", "repo": "NUR", - "rev": "e7b7b92a7c97a91f1465ab433bbdf6d00df1db8e", + "rev": "8283ea92deac8cdb6fd63ff04049ac9e879bf5eb", "type": "github" }, "original": { From 9c50691ede84ad83e1d7fa4dc3334f38cee08630 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 28 Dec 2024 13:28:03 -0500 Subject: [PATCH 1454/1588] nixos: services: nginx: sso: use upstream module It's finally been merged, so let's get rid of this module. --- modules/nixos/services/nginx/default.nix | 4 - modules/nixos/services/nginx/sso/default.nix | 84 -------------------- 2 files changed, 88 deletions(-) delete mode 100644 modules/nixos/services/nginx/sso/default.nix diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index 3bba9f4..cb27604 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -87,10 +87,6 @@ let }); in { - imports = [ - ./sso - ]; - options.my.services.nginx = with lib; { enable = mkEnableOption "Nginx"; diff --git a/modules/nixos/services/nginx/sso/default.nix b/modules/nixos/services/nginx/sso/default.nix deleted file mode 100644 index d60e31b..0000000 --- a/modules/nixos/services/nginx/sso/default.nix +++ /dev/null @@ -1,84 +0,0 @@ -# I must override the module to allow having runtime secrets -{ config, lib, pkgs, utils, ... }: -let - cfg = config.services.nginx.sso; - pkg = lib.getBin cfg.package; - confPath = "/var/lib/nginx-sso/config.json"; -in -{ - disabledModules = [ "services/security/nginx-sso.nix" ]; - - - options.services.nginx.sso = with lib; { - enable = mkEnableOption "nginx-sso service"; - - package = mkOption { - type = types.package; - default = pkgs.nginx-sso; - defaultText = "pkgs.nginx-sso"; - description = '' - The nginx-sso package that should be used. - ''; - }; - - configuration = mkOption { - type = types.attrsOf types.unspecified; - default = { }; - example = literalExample '' - { - listen = { addr = "127.0.0.1"; port = 8080; }; - - providers.token.tokens = { - myuser = "MyToken"; - }; - - acl = { - rule_sets = [ - { - rules = [ { field = "x-application"; equals = "MyApp"; } ]; - allow = [ "myuser" ]; - } - ]; - }; - } - ''; - description = '' - nginx-sso configuration - (<link xlink:href="https://github.com/Luzifer/nginx-sso/wiki/Main-Configuration">documentation</link>) - as a Nix attribute set. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - systemd.services.nginx-sso = { - description = "Nginx SSO Backend"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - StateDirectory = "nginx-sso"; - WorkingDirectory = "/var/lib/nginx-sso"; - # The files to be merged might not have the correct permissions - ExecStartPre = pkgs.writeShellScript "merge-nginx-sso-config" '' - rm -f '${confPath}' - ${utils.genJqSecretsReplacementSnippet cfg.configuration confPath} - ''; - ExecStart = lib.mkForce '' - ${lib.getExe pkg} \ - --config ${confPath} \ - --frontend-dir ${pkg}/share/frontend - ''; - Restart = "always"; - User = "nginx-sso"; - Group = "nginx-sso"; - }; - }; - - users.users.nginx-sso = { - isSystemUser = true; - group = "nginx-sso"; - }; - - users.groups.nginx-sso = { }; - }; -} From debf061dd2f03d166b543da5a182b2645d90a6b5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 13 Jan 2025 17:35:20 +0000 Subject: [PATCH 1455/1588] treewide: add 'shell=bash' for '.envrc' files Looks like the `shellcheck` pre-commit hook starting running on those files as well. --- .envrc | 1 + templates/c++-cmake/.envrc | 1 + templates/c++-meson/.envrc | 1 + templates/rust-cargo/.envrc | 1 + 4 files changed, 4 insertions(+) mode change 100644 => 100755 templates/c++-cmake/.envrc diff --git a/.envrc b/.envrc index f5141c2..a6b1f81 100644 --- a/.envrc +++ b/.envrc @@ -1,3 +1,4 @@ +# shellcheck shell=bash if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" fi diff --git a/templates/c++-cmake/.envrc b/templates/c++-cmake/.envrc old mode 100644 new mode 100755 index de77fcb..390d06d --- a/templates/c++-cmake/.envrc +++ b/templates/c++-cmake/.envrc @@ -1,3 +1,4 @@ +# shellcheck shell=bash if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" fi diff --git a/templates/c++-meson/.envrc b/templates/c++-meson/.envrc index de77fcb..390d06d 100644 --- a/templates/c++-meson/.envrc +++ b/templates/c++-meson/.envrc @@ -1,3 +1,4 @@ +# shellcheck shell=bash if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" fi diff --git a/templates/rust-cargo/.envrc b/templates/rust-cargo/.envrc index de77fcb..390d06d 100644 --- a/templates/rust-cargo/.envrc +++ b/templates/rust-cargo/.envrc @@ -1,3 +1,4 @@ +# shellcheck shell=bash if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" fi From 2cf14c92d33bf47db9856932e9cb4a6ce92ad4fc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 13 Jan 2025 17:37:07 +0000 Subject: [PATCH 1456/1588] flake: bump inputs --- flake.lock | 33 +++++++++++++++------------------ flake.nix | 1 - 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/flake.lock b/flake.lock index a1385ba..a95fb34 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "lastModified": 1736143030, + "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1735381016, - "narHash": "sha256-CyCZFhMUkuYbSD6bxB/r43EdmDE7hYeZZPTCv0GudO4=", + "lastModified": 1736785676, + "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=", "owner": "nix-community", "repo": "home-manager", - "rev": "10e99c43cdf4a0713b4e81d90691d22c6a58bdf2", + "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1735291276, - "narHash": "sha256-NYVcA06+blsLG6wpAbSPTCyLvxD/92Hy4vlY9WxFI1M=", + "lastModified": 1736701207, + "narHash": "sha256-jG/+MvjVY7SlTakzZ2fJ5dC3V1PrKKrUEOEE30jrOKA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "634fd46801442d760e09493a794c4f15db2d0cbb", + "rev": "ed4a395ea001367c1f13d34b1e01aa10290f67d6", "type": "github" }, "original": { @@ -177,11 +177,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1735408823, - "narHash": "sha256-1VjQeMQer5nXNYtw+BG+s78ucaEoxO5oqj+yRmM8MMs=", + "lastModified": 1736786866, + "narHash": "sha256-JaWZU7wFWsI4rGAemVciyhTxadaZyubJpLqupKLZUtI=", "owner": "nix-community", "repo": "NUR", - "rev": "8283ea92deac8cdb6fd63ff04049ac9e879bf5eb", + "rev": "16ff3063cb4a4cf6fb5f48ca7dc55c27f2ea4891", "type": "github" }, "original": { @@ -197,17 +197,14 @@ "gitignore": "gitignore", "nixpkgs": [ "nixpkgs" - ], - "nixpkgs-stable": [ - "nixpkgs" ] }, "locked": { - "lastModified": 1734797603, - "narHash": "sha256-ulZN7ps8nBV31SE+dwkDvKIzvN6hroRY8sYOT0w+E28=", + "lastModified": 1735882644, + "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "f0f0dc4920a903c3e08f5bdb9246bb572fcae498", + "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index f0bb79c..afd3c80 100644 --- a/flake.nix +++ b/flake.nix @@ -68,7 +68,6 @@ ref = "master"; inputs = { nixpkgs.follows = "nixpkgs"; - nixpkgs-stable.follows = "nixpkgs"; }; }; From 9f2ed2ae5a5348cd2c97acc95be795a24d0bbe14 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 13 Jan 2025 17:37:41 +0000 Subject: [PATCH 1457/1588] nixos: hardware: fix renamed 'pulseaudio' config --- modules/nixos/hardware/bluetooth/default.nix | 2 +- modules/nixos/hardware/sound/default.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/nixos/hardware/bluetooth/default.nix b/modules/nixos/hardware/bluetooth/default.nix index e9b1991..b14ac21 100644 --- a/modules/nixos/hardware/bluetooth/default.nix +++ b/modules/nixos/hardware/bluetooth/default.nix @@ -20,7 +20,7 @@ in # Support for additional bluetooth codecs (lib.mkIf cfg.loadExtraCodecs { - hardware.pulseaudio = { + services.pulseaudio = { extraModules = [ pkgs.pulseaudio-modules-bt ]; package = pkgs.pulseaudioFull; }; diff --git a/modules/nixos/hardware/sound/default.nix b/modules/nixos/hardware/sound/default.nix index 1cf12cb..cd453de 100644 --- a/modules/nixos/hardware/sound/default.nix +++ b/modules/nixos/hardware/sound/default.nix @@ -54,7 +54,7 @@ in # Pulseaudio setup (lib.mkIf cfg.pulse.enable { - hardware.pulseaudio.enable = true; + services.pulseaudio.enable = true; }) ]); } From c99b5b2532cc1654a38bca9cd2ad7460f35aa278 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 13 Jan 2025 17:38:05 +0000 Subject: [PATCH 1458/1588] nixos: services: komga: use 'settings' --- modules/nixos/services/komga/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/nixos/services/komga/default.nix b/modules/nixos/services/komga/default.nix index e1dc780..160d6ce 100644 --- a/modules/nixos/services/komga/default.nix +++ b/modules/nixos/services/komga/default.nix @@ -21,10 +21,10 @@ in inherit (cfg) port; group = "media"; - }; - systemd.services.komga.environment = { - LOGGING_LEVEL_ORG_GOTSON_KOMGA = "DEBUG"; # Needed for fail2ban + settings = { + logging.level.org.gotson.komga = "DEBUG"; # Needed for fail2ban + }; }; # Set-up media group From f08787625b73ce88487303814e13e7355721dddd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 28 Jan 2025 12:34:20 +0000 Subject: [PATCH 1459/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index a95fb34..8884f79 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1723293904, - "narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=", + "lastModified": 1736955230, + "narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=", "owner": "ryantm", "repo": "agenix", - "rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41", + "rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1736785676, - "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=", + "lastModified": 1737968762, + "narHash": "sha256-xiPARGKwocaMtv+U/rgi+h2g56CZZEmrcl7ldRaslq8=", "owner": "nix-community", "repo": "home-manager", - "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d", + "rev": "e1ae908bcc30af792b0bb0a52e53b03d2577255e", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736701207, - "narHash": "sha256-jG/+MvjVY7SlTakzZ2fJ5dC3V1PrKKrUEOEE30jrOKA=", + "lastModified": 1737885589, + "narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ed4a395ea001367c1f13d34b1e01aa10290f67d6", + "rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8", "type": "github" }, "original": { @@ -177,11 +177,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1736786866, - "narHash": "sha256-JaWZU7wFWsI4rGAemVciyhTxadaZyubJpLqupKLZUtI=", + "lastModified": 1738059992, + "narHash": "sha256-VeNLLucQTlED2cqD3uofh968tm7u7UgwCdY5+jo/BSc=", "owner": "nix-community", "repo": "NUR", - "rev": "16ff3063cb4a4cf6fb5f48ca7dc55c27f2ea4891", + "rev": "c46c836963685acbd2430439f859b60f230b3643", "type": "github" }, "original": { @@ -200,11 +200,11 @@ ] }, "locked": { - "lastModified": 1735882644, - "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { From 1540483955f38bb57af7706c7e458378028e36f4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 30 Jan 2025 13:06:49 +0100 Subject: [PATCH 1460/1588] nixos: services: komga: fix deprecated option --- modules/nixos/services/komga/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/komga/default.nix b/modules/nixos/services/komga/default.nix index 160d6ce..9af3cd1 100644 --- a/modules/nixos/services/komga/default.nix +++ b/modules/nixos/services/komga/default.nix @@ -18,11 +18,11 @@ in config = lib.mkIf cfg.enable { services.komga = { enable = true; - inherit (cfg) port; group = "media"; settings = { + server.port = cfg.port; logging.level.org.gotson.komga = "DEBUG"; # Needed for fail2ban }; }; From 533e3b9a9f198d1a8168060db694f3a6ae6464b0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 29 Jan 2025 19:14:54 +0100 Subject: [PATCH 1461/1588] nixos: services: add homebox --- modules/nixos/services/default.nix | 1 + modules/nixos/services/homebox/default.nix | 42 ++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 modules/nixos/services/homebox/default.nix diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 651f3f8..3992385 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -14,6 +14,7 @@ ./forgejo ./gitea ./grocy + ./homebox ./indexers ./jellyfin ./komga diff --git a/modules/nixos/services/homebox/default.nix b/modules/nixos/services/homebox/default.nix new file mode 100644 index 0000000..d79e331 --- /dev/null +++ b/modules/nixos/services/homebox/default.nix @@ -0,0 +1,42 @@ +# Home inventory made easy +{ config, lib, ... }: +let + cfg = config.my.services.homebox; +in +{ + options.my.services.homebox = with lib; { + enable = mkEnableOption "Homebox home inventory"; + + port = mkOption { + type = types.port; + default = 7745; + example = 8080; + description = "Internal port for webui"; + }; + }; + + config = lib.mkIf cfg.enable { + services.homebox = { + enable = true; + + settings = { + # FIXME: mailer? + HBOX_WEB_PORT = toString cfg.port; + }; + }; + + my.services.nginx.virtualHosts = { + homebox = { + inherit (cfg) port; + }; + }; + + my.services.backup = { + paths = [ + config.services.homebox.settings.HBOX_STORAGE_DATA + ]; + }; + + # NOTE: unfortunately homebox does not log connection failures for fail2ban + }; +} From 2cbcbb7b3a6819a66c7e2fb84a623e6bea087d35 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 4 Feb 2025 15:15:28 +0000 Subject: [PATCH 1462/1588] home: secrets: fix path to 'keys' --- modules/home/secrets/secrets.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/secrets/secrets.nix b/modules/home/secrets/secrets.nix index f474342..27cdb4e 100644 --- a/modules/home/secrets/secrets.nix +++ b/modules/home/secrets/secrets.nix @@ -1,6 +1,6 @@ # Common secrets let - keys = import ../../keys; + keys = import ../../../keys; all = builtins.attrValues keys.users; in From 9c4d853037aaca039709c7bd013738b5528e31fe Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 6 Feb 2025 11:28:27 +0000 Subject: [PATCH 1463/1588] home: secrets: github: update token --- modules/home/secrets/github/token.age | Bin 369 -> 253 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modules/home/secrets/github/token.age b/modules/home/secrets/github/token.age index 1d36ccdc3cc89a5b9c5bd9df4e8b62445fe4b3b0..3e8bb5a8329daf21e005a46c76ade14a887d5952 100644 GIT binary patch delta 217 zcmey!^p|mhPJO9wfw_@)QdN0wwn1o$iD_`MPquGrqD5eZwnt=ogkNHcrDcY;t7THQ zFPCqzYm`%&fs3WThev@yg-ft$REC*}p?+?0MMZ`|NL5LoS5$JTS4Mt*B$uwPu7YEx zn{i%RYEYhwWnN@KRgR^PTUbV9eoC5aZlYO=SypmIL{Mdjxk-U@peGk^#jIn8)9!jl zD=c=X^7Ym#tkv=mzIfc}u-Q)8ry`Fp%Cxecmb~(l>&(K)4JmrZW=LuO*_m_GTgBny T^33`v>=u2U1}$?cyY#C8DZ^1= delta 334 zcmey%_>pOXPJKpUxwlJVUanhtPOxD_rb)S{n?Y5MNuIlpb6#+2q@jyRm`hSpfk|>j zHdkbDP*spmzGYHXj+s|Usb`6&V`;9Zk%g0aqCr(^rJJdfn`KtEr&FO(AeXM4LSaf- zS!Ax6ZhBE_VsWa1l7Y2?k)=YQf`7gaSGGyITe5p{czu#dXhEP~Mq*BgV{u|?QfgkF zxrd{3RAgkKv42^KQCMlYSxI3*uz{0fq?fOYiFU3*sE12RMm|?YcxsMch*_$8VS#^C zYCup?KslGLuC9W4R$57(b9hQrj-gR;L~==XRc=LYv9?c%r+c<jh`(E<k$XsDNqLoD znE{stulrHA!@MRZV+CwQcP%jg5p?j~XF<CSLZ2qxf4}efiqb3V(`*k&RNhIGSWw5` h(p}m8O)=@}z7rEo<&RFQkYQkL;9SJ|<kZcoUI1JWdPM*L From b6d58a274abaa3dd77fb339b729ef5936f387bc7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 12 Feb 2025 14:26:07 +0000 Subject: [PATCH 1464/1588] pkgs: lohr: use 'useFetchCargoVendor' The previous fetcher is in the process of being deprecated. --- pkgs/lohr/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix index b89ccff..aeb13b1 100644 --- a/pkgs/lohr/default.nix +++ b/pkgs/lohr/default.nix @@ -10,7 +10,8 @@ rustPlatform.buildRustPackage rec { hash = "sha256-dunQgtap+XCK5LoSyOqIY/6p6HizBeiyPWNuCffwjDU="; }; - cargoHash = "sha256-EUhyrhPe+mUgMmm4o+bxRIiSNReJRfw+/O1fPr8r7lo="; + useFetchCargoVendor = true; + cargoHash = "sha256-R3/N/43+bGx6acE/rhBcrk6kS5zQu8NJ1sVvKJJkK9w="; meta = with lib; { description = "Git mirroring daemon"; From 40a841031fe465b7225927d1d493627e547cab59 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 12 Feb 2025 14:27:15 +0000 Subject: [PATCH 1465/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 8884f79..b7ca708 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1736143030, - "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "lastModified": 1738453229, + "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1737968762, - "narHash": "sha256-xiPARGKwocaMtv+U/rgi+h2g56CZZEmrcl7ldRaslq8=", + "lastModified": 1739314552, + "narHash": "sha256-ggVf2BclyIW3jexc/uvgsgJH4e2cuG6Nyg54NeXgbFI=", "owner": "nix-community", "repo": "home-manager", - "rev": "e1ae908bcc30af792b0bb0a52e53b03d2577255e", + "rev": "83bd3a26ac0526ae04fa74df46738bb44b89dcdd", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737885589, - "narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=", + "lastModified": 1739214665, + "narHash": "sha256-26L8VAu3/1YRxS8MHgBOyOM8xALdo6N0I04PgorE7UM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8", + "rev": "64e75cd44acf21c7933d61d7721e812eac1b5a0a", "type": "github" }, "original": { @@ -177,11 +177,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1738059992, - "narHash": "sha256-VeNLLucQTlED2cqD3uofh968tm7u7UgwCdY5+jo/BSc=", + "lastModified": 1739229047, + "narHash": "sha256-sSTgA86wdk8d544c2+gzrfvVPHQF4mbsomvLOW2thn0=", "owner": "nix-community", "repo": "NUR", - "rev": "c46c836963685acbd2430439f859b60f230b3643", + "rev": "8348d89f30598a73fee7efb4b5d34c3de201e71b", "type": "github" }, "original": { From 374886a63f01f2f736ce4502e61ba017403a77fc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 12 Feb 2025 14:30:00 +0000 Subject: [PATCH 1466/1588] nixos: services: servarr: remove build work-around It's been fixed upstream. This partially reverts commit ad1cfbd6f03e0b38f690d8563af02c1c04d8b731. --- modules/nixos/services/servarr/default.nix | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index 4aa0de7..e25d9cf 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -96,15 +96,5 @@ in # Sonarr for shows (mkFullConfig "sonarr") (mkFail2Ban "sonarr") - - # HACK: until https://github.com/NixOS/nixpkgs/issues/360592 is resolved - (lib.mkIf cfg.sonarr.enable { - nixpkgs.config.permittedInsecurePackages = [ - "aspnetcore-runtime-6.0.36" - "aspnetcore-runtime-wrapped-6.0.36" - "dotnet-sdk-6.0.428" - "dotnet-sdk-wrapped-6.0.428" - ]; - }) ]); } From 80b4c9ffcd8e610e39e473a6425001e9e939386f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 12 Feb 2025 14:31:20 +0000 Subject: [PATCH 1467/1588] home: mail: accounts: use 'migadu' flavor --- modules/home/mail/accounts/default.nix | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/modules/home/mail/accounts/default.nix b/modules/home/mail/accounts/default.nix index 202b9bc..5216ad5 100644 --- a/modules/home/mail/accounts/default.nix +++ b/modules/home/mail/accounts/default.nix @@ -26,20 +26,7 @@ let }; migaduConfig = { - imap = { - host = "imap.migadu.com"; - port = 993; - tls = { - enable = true; - }; - }; - smtp = { - host = "smtp.migadu.com"; - port = 465; - tls = { - enable = true; - }; - }; + flavor = "migadu.com"; }; gmailConfig = { From f474c033d5d89d9cf84bbc18f878eb1bb9fed4d3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 13 Feb 2025 14:40:39 +0000 Subject: [PATCH 1468/1588] nixos: services: nginx: remove zstd compression The zstd module is unmaintained and buggy, remove it preventively. The option itself will probably be removed soon [1]. [1]: https://github.com/NixOS/nixpkgs/pull/381678 --- modules/nixos/services/nginx/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/nixos/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix index cb27604..1e9e38a 100644 --- a/modules/nixos/services/nginx/default.nix +++ b/modules/nixos/services/nginx/default.nix @@ -253,7 +253,6 @@ in recommendedOptimisation = true; recommendedProxySettings = true; recommendedTlsSettings = true; - recommendedZstdSettings = true; virtualHosts = let From 8f5be69a4e297c8289399ae09b805090042ebfcc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 17 Feb 2025 15:33:40 +0100 Subject: [PATCH 1469/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index b7ca708..c4ae7ba 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1739314552, - "narHash": "sha256-ggVf2BclyIW3jexc/uvgsgJH4e2cuG6Nyg54NeXgbFI=", + "lastModified": 1739790043, + "narHash": "sha256-4gK4zdNDQ4PyGFs7B6zp9iPIBy9E+bVJiZ0XAmncvgQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "83bd3a26ac0526ae04fa74df46738bb44b89dcdd", + "rev": "c1ea92cdfb85bd7b0995b550581d9fd1c3370bf9", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1739214665, - "narHash": "sha256-26L8VAu3/1YRxS8MHgBOyOM8xALdo6N0I04PgorE7UM=", + "lastModified": 1739580444, + "narHash": "sha256-+/bSz4EAVbqz8/HsIGLroF8aNaO8bLRL7WfACN+24g4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "64e75cd44acf21c7933d61d7721e812eac1b5a0a", + "rev": "8bb37161a0488b89830168b81c48aed11569cb93", "type": "github" }, "original": { @@ -177,11 +177,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1739229047, - "narHash": "sha256-sSTgA86wdk8d544c2+gzrfvVPHQF4mbsomvLOW2thn0=", + "lastModified": 1739796551, + "narHash": "sha256-XcTK29rOc0WxcSJDHUK8JQege9CzSVVAcjHdswOVFPA=", "owner": "nix-community", "repo": "NUR", - "rev": "8348d89f30598a73fee7efb4b5d34c3de201e71b", + "rev": "827aa6eeaf92cc085f84947f6c32002792b67497", "type": "github" }, "original": { From 1237ef41742323d88d639877d38cd6ec05d9cf91 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 21 Feb 2025 16:22:00 +0000 Subject: [PATCH 1470/1588] home: git: include local configuration properly Using `includes` ensures that the local configuration is included at the end of the configuration file. --- modules/home/git/default.nix | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix index 1bb2215..8791cb2 100644 --- a/modules/home/git/default.nix +++ b/modules/home/git/default.nix @@ -123,11 +123,6 @@ in defaultBranch = "main"; }; - # Local configuration, not-versioned - include = { - path = "config.local"; - }; - merge = { conflictStyle = "zdiff3"; }; @@ -167,8 +162,8 @@ in }; }; - # Multiple identities includes = [ + # Multiple identities { condition = "gitdir:~/git/EPITA/"; contents = { @@ -187,6 +182,10 @@ in }; }; } + # Local configuration, not-versioned + { + path = "config.local"; + } ]; ignores = From 337d7309c61e39bd77db6537acde9a301dade42f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 21 Feb 2025 16:41:54 +0000 Subject: [PATCH 1471/1588] home: git: use 'mkAfter' for config includes This should ensure that they will be included at the very end of the configuration, even if other modules add more includes. Notably, this ensures that the local configuration can override any other setting. --- modules/home/git/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix index 8791cb2..c88008f 100644 --- a/modules/home/git/default.nix +++ b/modules/home/git/default.nix @@ -162,7 +162,7 @@ in }; }; - includes = [ + includes = lib.mkAfter [ # Multiple identities { condition = "gitdir:~/git/EPITA/"; From d3a953247c270ca2e771bac5343123c4239c0da3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 24 Feb 2025 14:15:01 +0000 Subject: [PATCH 1472/1588] home: packages: disable on 'useGlobalPkgs' It doesn't do anything when `useGlobalPkgs` is set, and has started warning about its upcoming deprecation. --- modules/home/packages/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/home/packages/default.nix b/modules/home/packages/default.nix index b0f8d67..43f7111 100644 --- a/modules/home/packages/default.nix +++ b/modules/home/packages/default.nix @@ -1,6 +1,7 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, osConfig, ... }: let cfg = config.my.home.packages; + useGlobalPkgs = osConfig.home-manager.useGlobalPkgs or false; in { options.my.home.packages = with lib; { @@ -29,7 +30,7 @@ in tree ] ++ cfg.additionalPackages); - nixpkgs.config = { + nixpkgs.config = lib.mkIf (!useGlobalPkgs) { inherit (cfg) allowAliases allowUnfree; }; }; From 852696409a4319a9767814c4483072d4bb9cbd61 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 24 Feb 2025 17:07:43 +0000 Subject: [PATCH 1473/1588] home: pager: remove 'LESSKEY' It should do the lookup in `$XDG_CONFIG_HOME/lesskey` automatically now. --- modules/home/pager/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/home/pager/default.nix b/modules/home/pager/default.nix index 1119440..a35da2c 100644 --- a/modules/home/pager/default.nix +++ b/modules/home/pager/default.nix @@ -16,7 +16,6 @@ in LESS = "-R -+X -c"; # Better XDG compliance LESSHISTFILE = "${config.xdg.stateHome}/less/history"; - LESSKEY = "${config.xdg.configHome}/less/lesskey"; }; }; } From e43570fe5bfa8a6258d11c3eb8f7738cb045a5ce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 24 Feb 2025 17:04:21 +0000 Subject: [PATCH 1474/1588] home: pager: allow quitting without screen clear --- modules/home/pager/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/home/pager/default.nix b/modules/home/pager/default.nix index a35da2c..e84dcb7 100644 --- a/modules/home/pager/default.nix +++ b/modules/home/pager/default.nix @@ -17,5 +17,10 @@ in # Better XDG compliance LESSHISTFILE = "${config.xdg.stateHome}/less/history"; }; + + xdg.configFile."lesskey".text = '' + # Quit without clearing the screen on `Q` + Q toggle-option -!^Predraw-on-quit\nq + ''; }; } From 84f1186b6c6888ed3ebc1fb6072a259e509b3271 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 25 Feb 2025 13:38:07 +0000 Subject: [PATCH 1475/1588] home: tmux: add 'enableResurrect' To be used on the cloudtop with its frequent reboots. --- modules/home/tmux/default.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index ae8b8f0..5371643 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -20,6 +20,8 @@ in enablePassthrough = mkEnableOption "tmux DCS passthrough sequence"; + enableResurrect = mkEnableOption "tmux-resurrect plugin"; + terminalFeatures = mkOption { type = with types; attrsOf (submodule { options = { @@ -51,7 +53,7 @@ in focusEvents = true; # Report focus events terminal = "tmux-256color"; # I want accurate termcap info - plugins = with pkgs.tmuxPlugins; [ + plugins = with pkgs.tmuxPlugins; builtins.filter (attr: attr != { }) [ # Open high-lighted files in copy mode open # Better pane management @@ -79,6 +81,13 @@ in set -g status-right '#{prefix_highlight} %a %Y-%m-%d %H:%M' ''; } + # Resurrect sessions + (lib.optionalAttrs cfg.enableResurrect { + plugin = resurrect; + extraConfig = '' + set -g @resurrect-dir '${config.xdg.stateHome}/tmux/resurrect' + ''; + }) ]; extraConfig = '' From 105bcbd53a30d349bb68276249a77793ec5f2d19 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 25 Feb 2025 13:39:46 +0000 Subject: [PATCH 1476/1588] hosts: home: mousqueton: enable 'tmux-resurrect' --- hosts/homes/ambroisie@mousqueton/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 44e62e6..37884d7 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -15,6 +15,9 @@ # I use scripts that use the passthrough sequence often on this host enablePassthrough = true; + # Frequent reboots mean that session persistence can be handy + enableResurrect = true; + terminalFeatures = { # HTerm uses `xterm-256color` as its `$TERM`, so use that here xterm-256color = { }; From edeb67238bc24dc982075bb5f6787d8035b578b3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 25 Feb 2025 13:58:02 +0000 Subject: [PATCH 1477/1588] home: tmux: enable aggressive resize Generally useful, rarely gets in the way, I'd rather have it enabled by default. --- modules/home/tmux/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 5371643..08b9202 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -52,6 +52,7 @@ in mouse = false; # I dislike mouse support focusEvents = true; # Report focus events terminal = "tmux-256color"; # I want accurate termcap info + aggressiveResize = true; # Automatic resize when switching client size plugins = with pkgs.tmuxPlugins; builtins.filter (attr: attr != { }) [ # Open high-lighted files in copy mode From 0dc8ac443313724285d54447330311f3b2e0856b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 27 Feb 2025 12:36:10 +0000 Subject: [PATCH 1478/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index c4ae7ba..bd5cf0a 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1739790043, - "narHash": "sha256-4gK4zdNDQ4PyGFs7B6zp9iPIBy9E+bVJiZ0XAmncvgQ=", + "lastModified": 1740624780, + "narHash": "sha256-8TP61AI3QBQsjzVUQFIV8NoB5nbYfJB3iHczhBikDkU=", "owner": "nix-community", "repo": "home-manager", - "rev": "c1ea92cdfb85bd7b0995b550581d9fd1c3370bf9", + "rev": "b8869e4ead721bbd4f0d6b927e8395705d4f16e6", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1739580444, - "narHash": "sha256-+/bSz4EAVbqz8/HsIGLroF8aNaO8bLRL7WfACN+24g4=", + "lastModified": 1740560979, + "narHash": "sha256-Vr3Qi346M+8CjedtbyUevIGDZW8LcA1fTG0ugPY/Hic=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8bb37161a0488b89830168b81c48aed11569cb93", + "rev": "5135c59491985879812717f4c9fea69604e7f26f", "type": "github" }, "original": { @@ -177,11 +177,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1739796551, - "narHash": "sha256-XcTK29rOc0WxcSJDHUK8JQege9CzSVVAcjHdswOVFPA=", + "lastModified": 1740655932, + "narHash": "sha256-BSTcgL2C74x0TgVdVEWfIz2SHkwIFMN0Dvv1lCoOhCA=", "owner": "nix-community", "repo": "NUR", - "rev": "827aa6eeaf92cc085f84947f6c32002792b67497", + "rev": "1ca8ff37f33a560c4a292ed83774434854f0b39a", "type": "github" }, "original": { From 88c00bb83d7d83d9af480f9de8027175bdd32ec7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 27 Feb 2025 12:44:10 +0000 Subject: [PATCH 1479/1588] home: firefox: fix deprecated option --- modules/home/firefox/default.nix | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/modules/home/firefox/default.nix b/modules/home/firefox/default.nix index 02c74f2..6346dc9 100644 --- a/modules/home/firefox/default.nix +++ b/modules/home/firefox/default.nix @@ -61,19 +61,21 @@ in "ui.systemUsesDarkTheme" = true; # Dark mode }; - extensions = with pkgs.nur.repos.rycee.firefox-addons; ([ - bitwarden - consent-o-matic - form-history-control - reddit-comment-collapser - reddit-enhancement-suite - refined-github - sponsorblock - ublock-origin - ] - ++ lib.optional (cfg.tridactyl.enable) tridactyl - ++ lib.optional (cfg.ff2mpv.enable) ff2mpv - ); + extensions = { + packages = with pkgs.nur.repos.rycee.firefox-addons; ([ + bitwarden + consent-o-matic + form-history-control + reddit-comment-collapser + reddit-enhancement-suite + refined-github + sponsorblock + ublock-origin + ] + ++ lib.optional (cfg.tridactyl.enable) tridactyl + ++ lib.optional (cfg.ff2mpv.enable) ff2mpv + ); + }; }; }; }; From ca618b53ccef400567eef305c634854ca16529fb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 27 Feb 2025 16:59:15 +0000 Subject: [PATCH 1480/1588] home: vim: oil: explicitly remove icons They started appearing on the latest bump, it looks like my configuration started including `nvim-web-devicons` (see [1]). I'll probably remove this configuration on the next nixpkgs bump (it's a good canary to check that I *never* include icons in the future). [1]: https://github.com/NixOS/nixpkgs/pull/382668 --- modules/home/vim/plugin/settings/oil.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/home/vim/plugin/settings/oil.lua b/modules/home/vim/plugin/settings/oil.lua index a160725..74d5007 100644 --- a/modules/home/vim/plugin/settings/oil.lua +++ b/modules/home/vim/plugin/settings/oil.lua @@ -4,6 +4,8 @@ local wk = require("which-key") local detail = false oil.setup({ + -- Don't show icons + columns = {}, view_options = { -- Show files and directories that start with "." by default show_hidden = true, From dc4221fc17fc3d36e75f4d47b6e1a552969ab29f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 17 Mar 2025 13:02:02 +0000 Subject: [PATCH 1481/1588] flake: bump inputs And remove the overlay for `lsp-format.nvim`, which has been fixed. This reverts commit 92e5fbe7df0c74a33baccfdb9fc82859217e0b3a. --- flake.lock | 30 +++++++++---------- .../lsp-format-nvim-indentation/default.nix | 4 --- .../lsp-format-nvim-indentation/generated.nix | 14 --------- 3 files changed, 15 insertions(+), 33 deletions(-) delete mode 100644 overlays/lsp-format-nvim-indentation/default.nix delete mode 100644 overlays/lsp-format-nvim-indentation/generated.nix diff --git a/flake.lock b/flake.lock index bd5cf0a..6db188a 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1738453229, - "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1740624780, - "narHash": "sha256-8TP61AI3QBQsjzVUQFIV8NoB5nbYfJB3iHczhBikDkU=", + "lastModified": 1741955947, + "narHash": "sha256-2lbURKclgKqBNm7hVRtWh0A7NrdsibD0EaWhahUVhhY=", "owner": "nix-community", "repo": "home-manager", - "rev": "b8869e4ead721bbd4f0d6b927e8395705d4f16e6", + "rev": "4e12151c9e014e2449e0beca2c0e9534b96a26b4", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1740560979, - "narHash": "sha256-Vr3Qi346M+8CjedtbyUevIGDZW8LcA1fTG0ugPY/Hic=", + "lastModified": 1742069588, + "narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5135c59491985879812717f4c9fea69604e7f26f", + "rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5", "type": "github" }, "original": { @@ -177,11 +177,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1740655932, - "narHash": "sha256-BSTcgL2C74x0TgVdVEWfIz2SHkwIFMN0Dvv1lCoOhCA=", + "lastModified": 1741294988, + "narHash": "sha256-3408u6q615kVTb23WtDriHRmCBBpwX7iau6rvfipcu4=", "owner": "nix-community", "repo": "NUR", - "rev": "1ca8ff37f33a560c4a292ed83774434854f0b39a", + "rev": "b30c245e2c44c7352a27485bfd5bc483df660f0e", "type": "github" }, "original": { @@ -200,11 +200,11 @@ ] }, "locked": { - "lastModified": 1737465171, - "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "lastModified": 1742058297, + "narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a", "type": "github" }, "original": { diff --git a/overlays/lsp-format-nvim-indentation/default.nix b/overlays/lsp-format-nvim-indentation/default.nix deleted file mode 100644 index 832e71d..0000000 --- a/overlays/lsp-format-nvim-indentation/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -self: prev: -{ - vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { }); -} diff --git a/overlays/lsp-format-nvim-indentation/generated.nix b/overlays/lsp-format-nvim-indentation/generated.nix deleted file mode 100644 index 1902207..0000000 --- a/overlays/lsp-format-nvim-indentation/generated.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ fetchpatch, ... }: - -_final: prev: { - lsp-format-nvim = prev.lsp-format-nvim.overrideAttrs (oa: { - patches = (oa.patches or [ ]) ++ [ - # https://github.com/lukas-reineke/lsp-format.nvim/issues/94 - (fetchpatch { - name = "use-effective-indentation"; - url = "https://github.com/liskin/lsp-format.nvim/commit/3757ac443bdf5bd166673833794553229ee8d939.patch"; - hash = "sha256-Dv+TvXrU/IrrPxz2MSPbLmRxch+qkHbI3AyFMj/ssDk="; - }) - ]; - }); -} From 5ae2eacd49042d3c00e3d2e666c355bcb89e10d1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 19 Mar 2025 11:45:07 +0000 Subject: [PATCH 1482/1588] home: git: add 'ignoreRevsFile' I'm surprised I hadn't configured it already. `.git-blame-ignore-revs` is the usual name, as most forges automatically detect and use it. --- modules/home/git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix index c88008f..bd085b8 100644 --- a/modules/home/git/default.nix +++ b/modules/home/git/default.nix @@ -75,6 +75,7 @@ in # Makes it a bit more readable blame = { coloring = "repeatedLines"; + ignoreRevsFile = ".git-blame-ignore-revs"; markIgnoredLines = true; markUnblamables = true; }; From 9156a8211d6388e274698e834d010710d727d425 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 24 Mar 2025 11:47:59 +0000 Subject: [PATCH 1483/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 6db188a..2eff24a 100644 --- a/flake.lock +++ b/flake.lock @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1741955947, - "narHash": "sha256-2lbURKclgKqBNm7hVRtWh0A7NrdsibD0EaWhahUVhhY=", + "lastModified": 1742771635, + "narHash": "sha256-HQHzQPrg+g22tb3/K/4tgJjPzM+/5jbaujCZd8s2Mls=", "owner": "nix-community", "repo": "home-manager", - "rev": "4e12151c9e014e2449e0beca2c0e9534b96a26b4", + "rev": "ad0614a1ec9cce3b13169e20ceb7e55dfaf2a818", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1742069588, - "narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=", + "lastModified": 1742669843, + "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5", + "rev": "1e5b653dff12029333a6546c11e108ede13052eb", "type": "github" }, "original": { @@ -200,11 +200,11 @@ ] }, "locked": { - "lastModified": 1742058297, - "narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=", + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", "type": "github" }, "original": { From 6fc81e45e98bcb4190641c53aad62a28cb782367 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 24 Mar 2025 11:58:56 +0000 Subject: [PATCH 1484/1588] home: zsh: migrate to 'initContent' This also fixes a small ordering issue: my alias definitions used to be defined at the very end of the file, they're now slotted _before_ the `zshrc.local` import. --- modules/home/zsh/default.nix | 40 +++++++++++++++++------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index 11b6cb2..f4092d8 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -87,28 +87,26 @@ in # Modal editing is life, but CLI benefits from emacs gymnastics defaultKeymap = "emacs"; - # Make those happen early to avoid doing double the work - initExtraFirst = lib.mkBefore '' - ${ - lib.optionalString cfg.launchTmux '' - # Launch tmux unless already inside one - if [ -z "$TMUX" ]; then - exec tmux new-session - fi - '' - } - ''; + initContent = lib.mkMerge [ + # Make those happen early to avoid doing double the work + (lib.mkBefore (lib.optionalString cfg.launchTmux '' + # Launch tmux unless already inside one + if [ -z "$TMUX" ]; then + exec tmux new-session + fi + '')) - initExtra = lib.mkAfter '' - source ${./completion-styles.zsh} - source ${./extra-mappings.zsh} - source ${./options.zsh} + (lib.mkAfter '' + source ${./completion-styles.zsh} + source ${./extra-mappings.zsh} + source ${./options.zsh} - # Source local configuration - if [ -f "$ZDOTDIR/zshrc.local" ]; then - source "$ZDOTDIR/zshrc.local" - fi - ''; + # Source local configuration + if [ -f "$ZDOTDIR/zshrc.local" ]; then + source "$ZDOTDIR/zshrc.local" + fi + '') + ]; localVariables = { # I like having the full path @@ -151,7 +149,7 @@ in }; # Use OSC-777 to send the notification through SSH - initExtra = lib.mkIf cfg.notify.ssh.useOsc777 '' + initContent = lib.mkIf cfg.notify.ssh.useOsc777 '' done_send_notification() { local exit_status="$1" local title="$2" From b2758839e8a0fe5cb613542172d6bfd36ba088ee Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 24 Mar 2025 16:51:45 +0000 Subject: [PATCH 1485/1588] home: vim: lspconfig: add 'harper' Support for more languages is upcoming, I also need to check how to handle custom words/dictionaries. --- modules/home/vim/plugin/settings/lspconfig.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index 1f9abfd..f8e65d8 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -96,6 +96,13 @@ if utils.is_executable("starpls") then end -- Generic +if utils.is_executable("harper-ls") then + lspconfig.harper_ls.setup({ + capabilities = capabilities, + on_attach = lsp.on_attach, + }) +end + if utils.is_executable("typos-lsp") then lspconfig.typos_lsp.setup({ capabilities = capabilities, From abec0dd226d765a54976be0a07442c4ce45b3cdb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 25 Mar 2025 14:30:07 +0000 Subject: [PATCH 1486/1588] home: git: remove 'ignoreRevsFile' I remember why I didn't set it globally now, it's because `git blame` complains and errors out, rather than silently ignoring the setting, when the file doesn't exist in a repo... This reverts commit 5ae2eacd49042d3c00e3d2e666c355bcb89e10d1. --- modules/home/git/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix index bd085b8..c88008f 100644 --- a/modules/home/git/default.nix +++ b/modules/home/git/default.nix @@ -75,7 +75,6 @@ in # Makes it a bit more readable blame = { coloring = "repeatedLines"; - ignoreRevsFile = ".git-blame-ignore-revs"; markIgnoredLines = true; markUnblamables = true; }; From 458ea144c447cb15ed07351992f9cbe8f74489db Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 25 Mar 2025 16:52:58 +0000 Subject: [PATCH 1487/1588] home: vim: remove 'fastfold' configuration I missed it in the original commit that removed the plug-in from my configuration... --- modules/home/vim/plugin/settings/fastfold.lua | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 modules/home/vim/plugin/settings/fastfold.lua diff --git a/modules/home/vim/plugin/settings/fastfold.lua b/modules/home/vim/plugin/settings/fastfold.lua deleted file mode 100644 index 78ee937..0000000 --- a/modules/home/vim/plugin/settings/fastfold.lua +++ /dev/null @@ -1,5 +0,0 @@ --- Intercept all fold commands --- stylua: ignore -vim.g.fastfold_fold_command_suffixes = { - "x", "X", "a", "A", "o", "O", "c", "C", "r", "R", "m", "M", "i", "n", "N", -} From 1841ff391d13eb31b3ff670b9c9f4563ecc7140b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 28 Mar 2025 15:27:21 +0000 Subject: [PATCH 1488/1588] flake: dev-shells: remove redundant 'pre-commit' It's already being installed by the shell hook. --- flake/dev-shells.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake/dev-shells.nix b/flake/dev-shells.nix index d5f5989..87464a4 100644 --- a/flake/dev-shells.nix +++ b/flake/dev-shells.nix @@ -6,7 +6,6 @@ name = "NixOS-config"; nativeBuildInputs = with pkgs; [ - gitAndTools.pre-commit nixpkgs-fmt ]; From 37e88c2707072bc4cc244669c084dccb74b52ab3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 29 Mar 2025 14:41:21 +0000 Subject: [PATCH 1489/1588] flake: bump inputs And fix the small `jq` breakage. --- flake.lock | 18 +++++++++--------- modules/home/jq/default.nix | 1 + 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 2eff24a..a2d931a 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1741352980, - "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", "type": "github" }, "original": { @@ -136,11 +136,11 @@ ] }, "locked": { - "lastModified": 1742771635, - "narHash": "sha256-HQHzQPrg+g22tb3/K/4tgJjPzM+/5jbaujCZd8s2Mls=", + "lastModified": 1743607567, + "narHash": "sha256-kTzKPDFmNzwO1cK4fiJgPB/iSw7HgBAmknRTeAPJAeI=", "owner": "nix-community", "repo": "home-manager", - "rev": "ad0614a1ec9cce3b13169e20ceb7e55dfaf2a818", + "rev": "49748c74cdbae03d70381f150b810f92617f23aa", "type": "github" }, "original": { @@ -152,11 +152,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1742669843, - "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=", + "lastModified": 1743448293, + "narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1e5b653dff12029333a6546c11e108ede13052eb", + "rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", "type": "github" }, "original": { diff --git a/modules/home/jq/default.nix b/modules/home/jq/default.nix index 57e266f..53e5986 100644 --- a/modules/home/jq/default.nix +++ b/modules/home/jq/default.nix @@ -17,6 +17,7 @@ in strings = "0;32"; arrays = "1;39"; objects = "1;39"; + objectKeys = "1;34"; }; }; } From dfb3c353ecc6e2152dfc2440544db2ffbd99a20b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 29 Mar 2025 16:15:04 +0000 Subject: [PATCH 1490/1588] home: vim: remove 'lsp_lines' It's been upstreamed! --- modules/home/vim/default.nix | 1 - modules/home/vim/plugin/settings/lsp-lines.lua | 3 --- 2 files changed, 4 deletions(-) delete mode 100644 modules/home/vim/plugin/settings/lsp-lines.lua diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index 8e6bd5c..b65e935 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -59,7 +59,6 @@ in # LSP and linting nvim-lspconfig # Easy LSP configuration lsp-format-nvim # Simplified formatting configuration - lsp_lines-nvim # Show diagnostics *over* regions none-ls-nvim # LSP integration for linters and formatters nvim-treesitter.withAllGrammars # Better highlighting nvim-treesitter-textobjects # More textobjects diff --git a/modules/home/vim/plugin/settings/lsp-lines.lua b/modules/home/vim/plugin/settings/lsp-lines.lua deleted file mode 100644 index 9c79818..0000000 --- a/modules/home/vim/plugin/settings/lsp-lines.lua +++ /dev/null @@ -1,3 +0,0 @@ -local lsp_lines = require("lsp_lines") - -lsp_lines.setup() From 274d143031cbc350673c8bed520fa0f2522319c0 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 29 Mar 2025 16:17:59 +0000 Subject: [PATCH 1491/1588] home: vim: fix deprecated calls --- modules/home/vim/lua/ambroisie/lsp.lua | 17 +++++++---------- modules/home/vim/lua/ambroisie/utils.lua | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua index eb53da6..3989202 100644 --- a/modules/home/vim/lua/ambroisie/lsp.lua +++ b/modules/home/vim/lua/ambroisie/lsp.lua @@ -5,14 +5,15 @@ local lsp_format = require("lsp-format") --- Move to the next/previous diagnostic, automatically showing the diagnostics --- float if necessary. ---- @param forward bool whether to go forward or backwards -local function goto_diagnostic(forward) +--- @param count number whether to go count or backwards +local function goto_diagnostic(count) vim.validate({ - forward = { forward, "boolean" }, + count = { count, "number" }, }) local opts = { float = false, + count = count, } -- Only show floating diagnostics if they are otherwise not displayed @@ -21,23 +22,19 @@ local function goto_diagnostic(forward) opts.float = true end - if forward then - vim.diagnostic.goto_next(opts) - else - vim.diagnostic.goto_prev(opts) - end + vim.diagnostic.jump(opts) end --- Move to the next diagnostic, automatically showing the diagnostics float if --- necessary. M.goto_next_diagnostic = function() - goto_diagnostic(true) + goto_diagnostic(1) end --- Move to the previous diagnostic, automatically showing the diagnostics float --- if necessary. M.goto_prev_diagnostic = function() - goto_diagnostic(false) + goto_diagnostic(-1) end --- shared LSP configuration callback diff --git a/modules/home/vim/lua/ambroisie/utils.lua b/modules/home/vim/lua/ambroisie/utils.lua index c9e9292..0ee7c83 100644 --- a/modules/home/vim/lua/ambroisie/utils.lua +++ b/modules/home/vim/lua/ambroisie/utils.lua @@ -38,7 +38,7 @@ end --- @param bufnr int? buffer number --- @return table all active LSP client names M.list_lsp_clients = function(bufnr) - local clients = vim.lsp.get_active_clients({ bufnr = bufnr }) + local clients = vim.lsp.get_clients({ bufnr = bufnr }) local names = {} for _, client in ipairs(clients) do From 4ef1b08f4ee444ab9dcb1513421cf78a79449242 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 29 Mar 2025 16:55:00 +0000 Subject: [PATCH 1492/1588] home: vim: lualine: use built-in 'branch' It now supports worktrees correctly (or at least I can't figure out which issue I used to have with it...). As a bonus, it also supports showing the correct branch for an `oil` buffer. This reverts commit 481d5f6f53e1e6ff1d8f29d3ac996af723be2381. --- modules/home/vim/plugin/settings/lualine.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/vim/plugin/settings/lualine.lua b/modules/home/vim/plugin/settings/lualine.lua index 5219a95..31ad3c4 100644 --- a/modules/home/vim/plugin/settings/lualine.lua +++ b/modules/home/vim/plugin/settings/lualine.lua @@ -30,7 +30,7 @@ lualine.setup({ { "mode" }, }, lualine_b = { - { "FugitiveHead" }, + { "branch" }, { "filename", symbols = { readonly = "🔒" } }, }, lualine_c = { From c1efc4316d7fe2bedd222d02e148e9ec8f7f6707 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 29 Mar 2025 16:44:00 +0000 Subject: [PATCH 1493/1588] home: vim: lualine: add custom 'oil' extension I don't like the built-in one. --- modules/home/vim/plugin/settings/lualine.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/home/vim/plugin/settings/lualine.lua b/modules/home/vim/plugin/settings/lualine.lua index 31ad3c4..bbe4647 100644 --- a/modules/home/vim/plugin/settings/lualine.lua +++ b/modules/home/vim/plugin/settings/lualine.lua @@ -1,4 +1,5 @@ local lualine = require("lualine") +local oil = require("oil") local utils = require("ambroisie.utils") local function list_spell_languages() @@ -57,5 +58,21 @@ lualine.setup({ extensions = { "fugitive", "quickfix", + { + sections = { + lualine_a = { + { "mode" }, + }, + lualine_b = { + { "branch" }, + }, + lualine_c = { + function() + return vim.fn.fnamemodify(oil.get_current_dir(), ":~") + end, + }, + }, + filetypes = { "oil" }, + }, }, }) From 262dc48425c2b62305b5202abad20f71cf92aaed Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 2 Apr 2025 20:02:33 +0100 Subject: [PATCH 1494/1588] home: vim: use default 'diffopt:linematch' It's now been defaulted to `linematch:40` on v0.11. --- modules/home/vim/init.vim | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/home/vim/init.vim b/modules/home/vim/init.vim index 0b54676..39ef32e 100644 --- a/modules/home/vim/init.vim +++ b/modules/home/vim/init.vim @@ -68,8 +68,6 @@ set listchars=tab:>─,trail:·,nbsp:¤ " Use patience diff set diffopt+=algorithm:patience -" Align similar lines in each hunk -set diffopt+=linematch:50 " Don't redraw when executing macros set lazyredraw From 2583cc6c12817a9f1012ba24bfe32aeb4b7794a3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 3 Apr 2025 21:16:58 +0100 Subject: [PATCH 1495/1588] home: vim: lua: lsp: add count to diagnostic maps --- modules/home/vim/lua/ambroisie/lsp.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua index 3989202..e57bdaf 100644 --- a/modules/home/vim/lua/ambroisie/lsp.lua +++ b/modules/home/vim/lua/ambroisie/lsp.lua @@ -28,13 +28,13 @@ end --- Move to the next diagnostic, automatically showing the diagnostics float if --- necessary. M.goto_next_diagnostic = function() - goto_diagnostic(1) + goto_diagnostic(vim.v.count1) end --- Move to the previous diagnostic, automatically showing the diagnostics float --- if necessary. M.goto_prev_diagnostic = function() - goto_diagnostic(-1) + goto_diagnostic(-vim.v.count1) end --- shared LSP configuration callback From 36aa641ec0d861b7abffc8204b6538b7dc0367a2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 3 Apr 2025 21:23:30 +0100 Subject: [PATCH 1496/1588] home: vim: rely on built-in diagnostic jump config This reduces the surface area of my configuration. --- .../vim/after/plugin/mappings/unimpaired.lua | 4 -- modules/home/vim/lua/ambroisie/lsp.lua | 38 ++----------------- .../home/vim/plugin/settings/lspconfig.lua | 4 ++ 3 files changed, 8 insertions(+), 38 deletions(-) diff --git a/modules/home/vim/after/plugin/mappings/unimpaired.lua b/modules/home/vim/after/plugin/mappings/unimpaired.lua index 82aab05..765b6b1 100644 --- a/modules/home/vim/after/plugin/mappings/unimpaired.lua +++ b/modules/home/vim/after/plugin/mappings/unimpaired.lua @@ -31,8 +31,6 @@ local keys = { { "[u", desc = "URL encode" }, { "[x", desc = "XML encode" }, { "[y", desc = "C string encode" }, - -- Custom - { "[d", lsp.goto_prev_diagnostic, desc = "Previous diagnostic" }, -- Next { "]", group = "Next" }, @@ -62,8 +60,6 @@ local keys = { { "]u", desc = "URL decode" }, { "]x", desc = "XML decode" }, { "]y", desc = "C string decode" }, - -- Custom - { "]d", lsp.goto_next_diagnostic, desc = "Next diagnostic" }, -- Enable option { "[o", group = "Enable option" }, diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua index e57bdaf..e48de12 100644 --- a/modules/home/vim/lua/ambroisie/lsp.lua +++ b/modules/home/vim/lua/ambroisie/lsp.lua @@ -3,40 +3,6 @@ local M = {} -- Simplified LSP formatting configuration local lsp_format = require("lsp-format") ---- Move to the next/previous diagnostic, automatically showing the diagnostics ---- float if necessary. ---- @param count number whether to go count or backwards -local function goto_diagnostic(count) - vim.validate({ - count = { count, "number" }, - }) - - local opts = { - float = false, - count = count, - } - - -- Only show floating diagnostics if they are otherwise not displayed - local config = vim.diagnostic.config() - if not (config.virtual_text or config.virtual_lines) then - opts.float = true - end - - vim.diagnostic.jump(opts) -end - ---- Move to the next diagnostic, automatically showing the diagnostics float if ---- necessary. -M.goto_next_diagnostic = function() - goto_diagnostic(vim.v.count1) -end - ---- Move to the previous diagnostic, automatically showing the diagnostics float ---- if necessary. -M.goto_prev_diagnostic = function() - goto_diagnostic(-vim.v.count1) -end - --- shared LSP configuration callback --- @param client native client configuration --- @param bufnr int? buffer number of the attached client @@ -76,6 +42,10 @@ M.on_attach = function(client, bufnr) vim.diagnostic.config({ virtual_text = text, virtual_lines = lines, + jump = { + -- Show float on jump if no diagnostic text is otherwise shown + float = not (text or lines), + }, }) end diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/modules/home/vim/plugin/settings/lspconfig.lua index f8e65d8..7817d4c 100644 --- a/modules/home/vim/plugin/settings/lspconfig.lua +++ b/modules/home/vim/plugin/settings/lspconfig.lua @@ -16,6 +16,10 @@ vim.diagnostic.config({ update_in_insert = false, -- Show highest severity first severity_sort = true, + jump = { + -- Show float on diagnostic jumps + float = true, + }, }) -- Inform servers we are able to do completion, snippets, etc... From d48d5c45e04b67e7642ac5f36c5fd1c81f7cd19d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 4 Apr 2025 15:24:43 +0000 Subject: [PATCH 1497/1588] home: vim: remove 'friendly-snippets' I never use them... --- modules/home/vim/default.nix | 1 - modules/home/vim/plugin/settings/luasnip.lua | 1 - 2 files changed, 2 deletions(-) delete mode 100644 modules/home/vim/plugin/settings/luasnip.lua diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index b65e935..20a74ff 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -66,7 +66,6 @@ in # Completion luasnip # Snippet manager compatible with LSP - friendly-snippets # LSP snippets collection nvim-cmp # Completion engine cmp-async-path # More responsive path completion cmp-buffer # Words from open buffers diff --git a/modules/home/vim/plugin/settings/luasnip.lua b/modules/home/vim/plugin/settings/luasnip.lua deleted file mode 100644 index 80309d7..0000000 --- a/modules/home/vim/plugin/settings/luasnip.lua +++ /dev/null @@ -1 +0,0 @@ -require("luasnip.loaders.from_vscode").lazy_load() From 53569f17a6850d00856ad4788516ff947f8907ad Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 5 Apr 2025 18:27:04 +0100 Subject: [PATCH 1498/1588] treewide: pre-commit-hooks.nix renaming --- flake.lock | 50 +++++++++++++++++----------------- flake.nix | 4 +-- flake/checks.nix | 2 +- templates/c++-cmake/flake.nix | 8 +++--- templates/c++-meson/flake.nix | 8 +++--- templates/rust-cargo/flake.nix | 8 +++--- 6 files changed, 40 insertions(+), 40 deletions(-) diff --git a/flake.lock b/flake.lock index a2d931a..353a392 100644 --- a/flake.lock +++ b/flake.lock @@ -108,10 +108,33 @@ "type": "github" } }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "master", + "repo": "git-hooks.nix", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ - "pre-commit-hooks", + "git-hooks", "nixpkgs" ] }, @@ -191,38 +214,15 @@ "type": "github" } }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", - "type": "github" - }, - "original": { - "owner": "cachix", - "ref": "master", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, "root": { "inputs": { "agenix": "agenix", "flake-parts": "flake-parts", "futils": "futils", + "git-hooks": "git-hooks", "home-manager": "home-manager", "nixpkgs": "nixpkgs", "nur": "nur", - "pre-commit-hooks": "pre-commit-hooks", "systems": "systems" } }, diff --git a/flake.nix b/flake.nix index afd3c80..5076729 100644 --- a/flake.nix +++ b/flake.nix @@ -61,10 +61,10 @@ }; }; - pre-commit-hooks = { + git-hooks = { type = "github"; owner = "cachix"; - repo = "pre-commit-hooks.nix"; + repo = "git-hooks.nix"; ref = "master"; inputs = { nixpkgs.follows = "nixpkgs"; diff --git a/flake/checks.nix b/flake/checks.nix index 98e49bd..73e64d5 100644 --- a/flake/checks.nix +++ b/flake/checks.nix @@ -1,7 +1,7 @@ { inputs, ... }: { imports = [ - inputs.pre-commit-hooks.flakeModule + inputs.git-hooks.flakeModule ]; perSystem = { ... }: { diff --git a/templates/c++-cmake/flake.nix b/templates/c++-cmake/flake.nix index db3b35c..36fd5ad 100644 --- a/templates/c++-cmake/flake.nix +++ b/templates/c++-cmake/flake.nix @@ -16,10 +16,10 @@ ref = "nixos-unstable"; }; - pre-commit-hooks = { + git-hooks = { type = "github"; owner = "cachix"; - repo = "pre-commit-hooks.nix"; + repo = "git-hooks.nix"; ref = "master"; inputs = { flake-utils.follows = "futils"; @@ -28,7 +28,7 @@ }; }; - outputs = { self, futils, nixpkgs, pre-commit-hooks }: + outputs = { self, futils, nixpkgs, git-hooks }: { overlays = { default = final: _prev: { @@ -69,7 +69,7 @@ ]; }; - pre-commit = pre-commit-hooks.lib.${system}.run { + pre-commit = git-hooks.lib.${system}.run { src = self; hooks = { diff --git a/templates/c++-meson/flake.nix b/templates/c++-meson/flake.nix index 5957c62..961ba1f 100644 --- a/templates/c++-meson/flake.nix +++ b/templates/c++-meson/flake.nix @@ -16,10 +16,10 @@ ref = "nixos-unstable"; }; - pre-commit-hooks = { + git-hooks = { type = "github"; owner = "cachix"; - repo = "pre-commit-hooks.nix"; + repo = "git-hooks.nix"; ref = "master"; inputs = { flake-utils.follows = "futils"; @@ -28,7 +28,7 @@ }; }; - outputs = { self, futils, nixpkgs, pre-commit-hooks }: + outputs = { self, futils, nixpkgs, git-hooks }: { overlays = { default = final: _prev: { @@ -69,7 +69,7 @@ ]; }; - pre-commit = pre-commit-hooks.lib.${system}.run { + pre-commit = git-hooks.lib.${system}.run { src = self; hooks = { diff --git a/templates/rust-cargo/flake.nix b/templates/rust-cargo/flake.nix index 6d50369..b9031d9 100644 --- a/templates/rust-cargo/flake.nix +++ b/templates/rust-cargo/flake.nix @@ -16,10 +16,10 @@ ref = "nixos-unstable"; }; - pre-commit-hooks = { + git-hooks = { type = "github"; owner = "cachix"; - repo = "pre-commit-hooks.nix"; + repo = "git-hooks.nix"; ref = "master"; inputs = { flake-utils.follows = "futils"; @@ -28,7 +28,7 @@ }; }; - outputs = { self, futils, nixpkgs, pre-commit-hooks }: + outputs = { self, futils, nixpkgs, git-hooks }: { overlays = { default = final: _prev: { @@ -60,7 +60,7 @@ ]; }; - pre-commit = pre-commit-hooks.lib.${system}.run { + pre-commit = git-hooks.lib.${system}.run { src = self; hooks = { From 418494004b3479f0e523d3f72eb995aab8dddf41 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 5 Apr 2025 18:29:51 +0100 Subject: [PATCH 1499/1588] templates: use 'pre-commit.enabledPackages' --- templates/c++-cmake/flake.nix | 6 +++--- templates/c++-meson/flake.nix | 6 +++--- templates/rust-cargo/flake.nix | 7 +++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/templates/c++-cmake/flake.nix b/templates/c++-cmake/flake.nix index 36fd5ad..eecb007 100644 --- a/templates/c++-cmake/flake.nix +++ b/templates/c++-cmake/flake.nix @@ -92,12 +92,12 @@ devShells = { default = pkgs.mkShell { - inputsFrom = with self.packages.${system}; [ - project + inputsFrom = [ + self.packages.${system}.project ]; packages = with pkgs; [ - clang-tools + self.checks.${system}.pre-commit.enabledPackages ]; inherit (pre-commit) shellHook; diff --git a/templates/c++-meson/flake.nix b/templates/c++-meson/flake.nix index 961ba1f..a435777 100644 --- a/templates/c++-meson/flake.nix +++ b/templates/c++-meson/flake.nix @@ -92,12 +92,12 @@ devShells = { default = pkgs.mkShell { - inputsFrom = with self.packages.${system}; [ - project + inputsFrom = [ + self.packages.${system}.project ]; packages = with pkgs; [ - clang-tools + self.checks.${system}.pre-commit.enabledPackages ]; inherit (pre-commit) shellHook; diff --git a/templates/rust-cargo/flake.nix b/templates/rust-cargo/flake.nix index b9031d9..502d902 100644 --- a/templates/rust-cargo/flake.nix +++ b/templates/rust-cargo/flake.nix @@ -88,14 +88,13 @@ devShells = { default = pkgs.mkShell { - inputsFrom = with self.packages.${system}; [ - project + inputsFrom = [ + self.packages.${system}.project ]; packages = with pkgs; [ - clippy rust-analyzer - rustfmt + self.checks.${system}.pre-commit.enabledPackages ]; RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; From 62ddec5c2346959e395b42775fbd82284bc8886f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 5 Apr 2025 18:46:14 +0100 Subject: [PATCH 1500/1588] templates: remove unused 'follows' --- templates/c++-cmake/flake.nix | 1 - templates/c++-meson/flake.nix | 1 - templates/rust-cargo/flake.nix | 1 - 3 files changed, 3 deletions(-) diff --git a/templates/c++-cmake/flake.nix b/templates/c++-cmake/flake.nix index eecb007..7796f5e 100644 --- a/templates/c++-cmake/flake.nix +++ b/templates/c++-cmake/flake.nix @@ -22,7 +22,6 @@ repo = "git-hooks.nix"; ref = "master"; inputs = { - flake-utils.follows = "futils"; nixpkgs.follows = "nixpkgs"; }; }; diff --git a/templates/c++-meson/flake.nix b/templates/c++-meson/flake.nix index a435777..cb14eb5 100644 --- a/templates/c++-meson/flake.nix +++ b/templates/c++-meson/flake.nix @@ -22,7 +22,6 @@ repo = "git-hooks.nix"; ref = "master"; inputs = { - flake-utils.follows = "futils"; nixpkgs.follows = "nixpkgs"; }; }; diff --git a/templates/rust-cargo/flake.nix b/templates/rust-cargo/flake.nix index 502d902..efd8358 100644 --- a/templates/rust-cargo/flake.nix +++ b/templates/rust-cargo/flake.nix @@ -22,7 +22,6 @@ repo = "git-hooks.nix"; ref = "master"; inputs = { - flake-utils.follows = "futils"; nixpkgs.follows = "nixpkgs"; }; }; From ca98b8367c2ae384acd56271696f9a57de7f82f8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 5 Apr 2025 18:18:06 +0100 Subject: [PATCH 1501/1588] templates: add python-uv --- templates/default.nix | 4 + templates/python-uv/.envrc | 6 ++ templates/python-uv/.gitignore | 6 ++ templates/python-uv/.woodpecker/check.yml | 31 ++++++ templates/python-uv/flake.nix | 112 ++++++++++++++++++++ templates/python-uv/pyproject.toml | 17 +++ templates/python-uv/src/project/__init__.py | 2 + 7 files changed, 178 insertions(+) create mode 100644 templates/python-uv/.envrc create mode 100644 templates/python-uv/.gitignore create mode 100644 templates/python-uv/.woodpecker/check.yml create mode 100644 templates/python-uv/flake.nix create mode 100644 templates/python-uv/pyproject.toml create mode 100644 templates/python-uv/src/project/__init__.py diff --git a/templates/default.nix b/templates/default.nix index 44db753..51864cd 100644 --- a/templates/default.nix +++ b/templates/default.nix @@ -7,6 +7,10 @@ path = ./c++-meson; description = "A C++ project using Meson"; }; + "python-uv" = { + path = ./python-uv; + description = "A Python project using uv"; + }; "rust-cargo" = { path = ./rust-cargo; description = "A Rust project using Cargo"; diff --git a/templates/python-uv/.envrc b/templates/python-uv/.envrc new file mode 100644 index 0000000..390d06d --- /dev/null +++ b/templates/python-uv/.envrc @@ -0,0 +1,6 @@ +# shellcheck shell=bash +if ! has nix_direnv_version || ! nix_direnv_version 3.0.0; then + source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=" +fi + +use flake diff --git a/templates/python-uv/.gitignore b/templates/python-uv/.gitignore new file mode 100644 index 0000000..c79d1e8 --- /dev/null +++ b/templates/python-uv/.gitignore @@ -0,0 +1,6 @@ +# Virtual environments +.venv + +# Nix generated files +/.pre-commit-config.yaml +/result diff --git a/templates/python-uv/.woodpecker/check.yml b/templates/python-uv/.woodpecker/check.yml new file mode 100644 index 0000000..272c0e4 --- /dev/null +++ b/templates/python-uv/.woodpecker/check.yml @@ -0,0 +1,31 @@ +labels: + backend: local + +steps: +- name: pre-commit check + image: bash + commands: + - nix develop --command pre-commit run --all + +- name: nix flake check + image: bash + commands: + - nix flake check + +- name: notify + image: bash + environment: + ADDRESS: + from_secret: matrix_homeserver + ROOM: + from_secret: matrix_roomid + USER: + from_secret: matrix_username + PASS: + from_secret: matrix_password + commands: + - nix run github:ambroisie/matrix-notifier + when: + status: + - failure + - success diff --git a/templates/python-uv/flake.nix b/templates/python-uv/flake.nix new file mode 100644 index 0000000..5059e64 --- /dev/null +++ b/templates/python-uv/flake.nix @@ -0,0 +1,112 @@ +{ + description = "A Python project"; + + inputs = { + futils = { + type = "github"; + owner = "numtide"; + repo = "flake-utils"; + ref = "main"; + }; + + nixpkgs = { + type = "github"; + owner = "NixOS"; + repo = "nixpkgs"; + ref = "nixos-unstable"; + }; + + git-hooks = { + type = "github"; + owner = "cachix"; + repo = "git-hooks.nix"; + ref = "master"; + inputs = { + nixpkgs.follows = "nixpkgs"; + }; + }; + }; + + outputs = { self, futils, nixpkgs, git-hooks }: + { + overlays = { + default = final: _prev: { + project = with final; python3.pkgs.buildPythonApplication { + pname = "project"; + version = (final.lib.importTOML ./pyproject.toml).project.version; + pyproject = true; + + src = self; + + build-system = with python3.pkgs; [ setuptools ]; + + pythonImportsCheck = [ "project" ]; + + meta = with lib; { + description = "A Python project"; + homepage = "https://git.belanyi.fr/ambroisie/project"; + license = licenses.mit; + maintainers = with maintainers; [ ambroisie ]; + }; + }; + }; + }; + } // futils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + overlays = [ + self.overlays.default + ]; + }; + + pre-commit = git-hooks.lib.${system}.run { + src = self; + + hooks = { + mypy = { + enable = true; + }; + + nixpkgs-fmt = { + enable = true; + }; + + ruff = { + enable = true; + }; + + ruff-format = { + enable = true; + }; + }; + }; + in + { + checks = { + inherit (self.packages.${system}) project; + + inherit pre-commit; + }; + + devShells = { + default = pkgs.mkShell { + inputsFrom = [ + self.packages.${system}.project + ]; + + packages = with pkgs; [ + uv + self.checks.${system}.pre-commit.enabledPackages + ]; + + inherit (pre-commit) shellHook; + }; + }; + + packages = futils.lib.flattenTree { + default = pkgs.project; + inherit (pkgs) project; + }; + }); +} diff --git a/templates/python-uv/pyproject.toml b/templates/python-uv/pyproject.toml new file mode 100644 index 0000000..7b2d896 --- /dev/null +++ b/templates/python-uv/pyproject.toml @@ -0,0 +1,17 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + + +[project] +name = "project" +version = "0.0.0" +description = "project description" +requires-python = ">=3.12" +dependencies = [] + +[project.scripts] +project = "project:main" + +[dependency-groups] +dev = [] diff --git a/templates/python-uv/src/project/__init__.py b/templates/python-uv/src/project/__init__.py new file mode 100644 index 0000000..b06117d --- /dev/null +++ b/templates/python-uv/src/project/__init__.py @@ -0,0 +1,2 @@ +def main() -> None: + print("Hello, world!") From 7791ad09073529a8b01e534928fc0c61da139d53 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 11:00:10 +0000 Subject: [PATCH 1502/1588] nixos: services: servarr: fix 'enableAll' logic I renamed the option and refactored how it worked to make it more explicit that it enables the entire suite by default, with explicit opt-out of individual components (or fine-grained opt-in as an alternative). --- hosts/nixos/porthos/services.nix | 2 +- modules/nixos/services/servarr/default.nix | 20 +++++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index ffd150a..021a6ae 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -144,7 +144,7 @@ in sabnzbd.enable = true; # The whole *arr software suite servarr = { - enable = true; + enableAll = true; # ... But not Lidarr because I don't care for music that much lidarr = { enable = false; diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index e25d9cf..65c409a 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -19,6 +19,8 @@ let enable = true; group = "media"; }; + # Set-up media group + users.groups.media = { }; }; mkRedirection = service: { @@ -54,34 +56,30 @@ let in { options.my.services.servarr = { - enable = lib.mkEnableOption "Media automation"; + enableAll = lib.mkEnableOption "media automation suite"; bazarr = { - enable = lib.my.mkDisableOption "Bazarr"; + enable = lib.mkEnableOption "Bazarr" // { default = cfg.enableAll; };; }; lidarr = { - enable = lib.my.mkDisableOption "Lidarr"; + enable = lib.mkEnableOption "Lidarr" // { default = cfg.enableAll; }; }; radarr = { - enable = lib.my.mkDisableOption "Radarr"; + enable = lib.mkEnableOption "Radarr" // { default = cfg.enableAll; }; }; readarr = { - enable = lib.my.mkDisableOption "Readarr"; + enable = lib.mkEnableOption "Readarr" // { default = cfg.enableAll; }; }; sonarr = { - enable = lib.my.mkDisableOption "Sonarr"; + enable = lib.mkEnableOption "Sonarr" // { default = cfg.enableAll; }; }; }; - config = lib.mkIf cfg.enable (lib.mkMerge [ - { - # Set-up media group - users.groups.media = { }; - } + config = (lib.mkMerge [ # Bazarr does not log authentication failures... (mkFullConfig "bazarr") # Lidarr for music From 860c13ab1f456bc37ef092453c75c09ee08fc950 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 10:51:21 +0000 Subject: [PATCH 1503/1588] nixos: services: servarr: extract bazarr It's not an actual *arr package, but closely related to them. Extract its configuration to a sub-module. --- modules/nixos/services/servarr/bazarr.nix | 29 ++++++++++++++++++++++ modules/nixos/services/servarr/default.nix | 11 +++----- 2 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 modules/nixos/services/servarr/bazarr.nix diff --git a/modules/nixos/services/servarr/bazarr.nix b/modules/nixos/services/servarr/bazarr.nix new file mode 100644 index 0000000..2d27c95 --- /dev/null +++ b/modules/nixos/services/servarr/bazarr.nix @@ -0,0 +1,29 @@ +{ config, lib, ... }: +let + cfg = config.my.services.servarr.bazarr; +in +{ + options.my.services.servarr.bazarr = with lib; { + enable = lib.mkEnableOption "Bazarr" // { + default = config.my.services.servarr.enableAll; + }; + }; + + config = lib.mkIf cfg.enable { + services.bazarr = { + enable = true; + group = "media"; + }; + + # Set-up media group + users.groups.media = { }; + + my.services.nginx.virtualHosts = { + bazarr = { + port = 6767; + }; + }; + + # Bazarr does not log authentication failures... + }; +} diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index 65c409a..53fd14b 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -7,7 +7,6 @@ let cfg = config.my.services.servarr; ports = { - bazarr = 6767; lidarr = 8686; radarr = 7878; readarr = 8787; @@ -55,13 +54,13 @@ let ]); in { + imports = [ + ./bazarr.nix + ]; + options.my.services.servarr = { enableAll = lib.mkEnableOption "media automation suite"; - bazarr = { - enable = lib.mkEnableOption "Bazarr" // { default = cfg.enableAll; };; - }; - lidarr = { enable = lib.mkEnableOption "Lidarr" // { default = cfg.enableAll; }; }; @@ -80,8 +79,6 @@ in }; config = (lib.mkMerge [ - # Bazarr does not log authentication failures... - (mkFullConfig "bazarr") # Lidarr for music (mkFullConfig "lidarr") (mkFail2Ban "lidarr") From 1f876d3e214081aa3bd006a9b78fe5772473c382 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 10:53:32 +0000 Subject: [PATCH 1504/1588] nixos: services: servarr: bazarr: add 'port' --- modules/nixos/services/servarr/bazarr.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/nixos/services/servarr/bazarr.nix b/modules/nixos/services/servarr/bazarr.nix index 2d27c95..637da0c 100644 --- a/modules/nixos/services/servarr/bazarr.nix +++ b/modules/nixos/services/servarr/bazarr.nix @@ -7,12 +7,20 @@ in enable = lib.mkEnableOption "Bazarr" // { default = config.my.services.servarr.enableAll; }; + + port = mkOption { + type = types.port; + default = 6767; + example = 8080; + description = "Internal port for webui"; + }; }; config = lib.mkIf cfg.enable { services.bazarr = { enable = true; group = "media"; + listenPort = cfg.port; }; # Set-up media group @@ -20,7 +28,7 @@ in my.services.nginx.virtualHosts = { bazarr = { - port = 6767; + inherit (cfg) port; }; }; From 8e6be43817d1337df7a5169bf62ae7d05e5689fb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 11:07:21 +0000 Subject: [PATCH 1505/1588] nixox: services: servarr: refactor starr config Makes it slightly DRY-er and more readable. --- modules/nixos/services/servarr/default.nix | 87 ++-------------------- modules/nixos/services/servarr/starr.nix | 51 +++++++++++++ 2 files changed, 56 insertions(+), 82 deletions(-) create mode 100644 modules/nixos/services/servarr/starr.nix diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index 53fd14b..398461b 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -2,94 +2,17 @@ # Relevant link [1]. # # [1]: https://youtu.be/I26Ql-uX6AM -{ config, lib, ... }: -let - cfg = config.my.services.servarr; - - ports = { - lidarr = 8686; - radarr = 7878; - readarr = 8787; - sonarr = 8989; - }; - - mkService = service: { - services.${service} = { - enable = true; - group = "media"; - }; - # Set-up media group - users.groups.media = { }; - }; - - mkRedirection = service: { - my.services.nginx.virtualHosts = { - ${service} = { - port = ports.${service}; - }; - }; - }; - - mkFail2Ban = service: lib.mkIf cfg.${service}.enable { - services.fail2ban.jails = { - ${service} = '' - enabled = true - filter = ${service} - action = iptables-allports - ''; - }; - - environment.etc = { - "fail2ban/filter.d/${service}.conf".text = '' - [Definition] - failregex = ^.*\|Warn\|Auth\|Auth-Failure ip <HOST> username .*$ - journalmatch = _SYSTEMD_UNIT=${service}.service - ''; - }; - }; - - mkFullConfig = service: lib.mkIf cfg.${service}.enable (lib.mkMerge [ - (mkService service) - (mkRedirection service) - ]); -in +{ lib, ... }: { imports = [ ./bazarr.nix + (import ./starr.nix "lidarr") + (import ./starr.nix "radarr") + (import ./starr.nix "readarr") + (import ./starr.nix "sonarr") ]; options.my.services.servarr = { enableAll = lib.mkEnableOption "media automation suite"; - - lidarr = { - enable = lib.mkEnableOption "Lidarr" // { default = cfg.enableAll; }; - }; - - radarr = { - enable = lib.mkEnableOption "Radarr" // { default = cfg.enableAll; }; - }; - - readarr = { - enable = lib.mkEnableOption "Readarr" // { default = cfg.enableAll; }; - }; - - sonarr = { - enable = lib.mkEnableOption "Sonarr" // { default = cfg.enableAll; }; - }; }; - - config = (lib.mkMerge [ - # Lidarr for music - (mkFullConfig "lidarr") - (mkFail2Ban "lidarr") - # Radarr for movies - (mkFullConfig "radarr") - (mkFail2Ban "radarr") - # Readarr for books - (mkFullConfig "readarr") - (mkFail2Ban "readarr") - # Sonarr for shows - (mkFullConfig "sonarr") - (mkFail2Ban "sonarr") - ]); } diff --git a/modules/nixos/services/servarr/starr.nix b/modules/nixos/services/servarr/starr.nix new file mode 100644 index 0000000..e9c84f9 --- /dev/null +++ b/modules/nixos/services/servarr/starr.nix @@ -0,0 +1,51 @@ +# Templated *arr configuration +starr: +{ config, lib, ... }: +let + cfg = config.my.services.servarr.${starr}; + ports = { + lidarr = 8686; + radarr = 7878; + readarr = 8787; + sonarr = 8989; + }; +in +{ + options.my.services.servarr.${starr} = with lib; { + enable = lib.mkEnableOption (lib.toSentenceCase starr) // { + default = config.my.services.servarr.enableAll; + }; + }; + + config = lib.mkIf cfg.enable { + services.${starr} = { + enable = true; + group = "media"; + }; + + # Set-up media group + users.groups.media = { }; + + my.services.nginx.virtualHosts = { + ${starr} = { + port = ports.${starr}; + }; + }; + + services.fail2ban.jails = { + ${starr} = '' + enabled = true + filter = ${starr} + action = iptables-allports + ''; + }; + + environment.etc = { + "fail2ban/filter.d/${starr}.conf".text = '' + [Definition] + failregex = ^.*\|Warn\|Auth\|Auth-Failure ip <HOST> username .*$ + journalmatch = _SYSTEMD_UNIT=${starr}.service + ''; + }; + }; +} From d783b5f5ee598ddd82e585c12d8e397c55a1e3b1 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 11:12:16 +0000 Subject: [PATCH 1506/1588] nixos: services: servarr: starr: add 'port' Now that declarative configurations are supported for those applications. --- modules/nixos/services/servarr/starr.nix | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/nixos/services/servarr/starr.nix b/modules/nixos/services/servarr/starr.nix index e9c84f9..2bf7c11 100644 --- a/modules/nixos/services/servarr/starr.nix +++ b/modules/nixos/services/servarr/starr.nix @@ -15,12 +15,25 @@ in enable = lib.mkEnableOption (lib.toSentenceCase starr) // { default = config.my.services.servarr.enableAll; }; + + port = mkOption { + type = types.port; + default = ports.${starr}; + example = 8080; + description = "Internal port for webui"; + }; }; config = lib.mkIf cfg.enable { services.${starr} = { enable = true; group = "media"; + + settings = { + server = { + port = cfg.port; + }; + }; }; # Set-up media group @@ -28,7 +41,7 @@ in my.services.nginx.virtualHosts = { ${starr} = { - port = ports.${starr}; + port = cfg.port; }; }; From f825d047b5f17cdff8cd096660abf48ed79e7f72 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 11:21:24 +0000 Subject: [PATCH 1507/1588] nixos: services: servarr: migrate prowlarr The configuration doesn't have `group`, so it's a slightly different configuration to the rest of the *arr services. I also want to move the other two indexer modules under `servarr`, as they are all closely related. --- hosts/nixos/porthos/services.nix | 4 -- modules/nixos/services/indexers/default.nix | 30 ------------ modules/nixos/services/servarr/default.nix | 1 + modules/nixos/services/servarr/prowlarr.nix | 53 +++++++++++++++++++++ 4 files changed, 54 insertions(+), 34 deletions(-) create mode 100644 modules/nixos/services/servarr/prowlarr.nix diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 021a6ae..9017894 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -51,10 +51,6 @@ in passwordFile = secrets."forgejo/mail-password".path; }; }; - # Meta-indexers - indexers = { - prowlarr.enable = true; - }; # Jellyfin media server jellyfin.enable = true; # Gitea mirrorig service diff --git a/modules/nixos/services/indexers/default.nix b/modules/nixos/services/indexers/default.nix index 8a42345..00bf316 100644 --- a/modules/nixos/services/indexers/default.nix +++ b/modules/nixos/services/indexers/default.nix @@ -5,13 +5,11 @@ let jackettPort = 9117; nzbhydraPort = 5076; - prowlarrPort = 9696; in { options.my.services.indexers = with lib; { jackett.enable = mkEnableOption "Jackett torrent meta-indexer"; nzbhydra.enable = mkEnableOption "NZBHydra2 usenet meta-indexer"; - prowlarr.enable = mkEnableOption "Prowlarr torrent & usenet meta-indexer"; }; config = lib.mkMerge [ @@ -46,33 +44,5 @@ in }; }; }) - - (lib.mkIf cfg.prowlarr.enable { - services.prowlarr = { - enable = true; - }; - - my.services.nginx.virtualHosts = { - prowlarr = { - port = prowlarrPort; - }; - }; - - services.fail2ban.jails = { - prowlarr = '' - enabled = true - filter = prowlarr - action = iptables-allports - ''; - }; - - environment.etc = { - "fail2ban/filter.d/prowlarr.conf".text = '' - [Definition] - failregex = ^.*\|Warn\|Auth\|Auth-Failure ip <HOST> username .*$ - journalmatch = _SYSTEMD_UNIT=prowlarr.service - ''; - }; - }) ]; } diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index 398461b..1bca773 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -6,6 +6,7 @@ { imports = [ ./bazarr.nix + ./prowlarr.nix (import ./starr.nix "lidarr") (import ./starr.nix "radarr") (import ./starr.nix "readarr") diff --git a/modules/nixos/services/servarr/prowlarr.nix b/modules/nixos/services/servarr/prowlarr.nix new file mode 100644 index 0000000..ce044c6 --- /dev/null +++ b/modules/nixos/services/servarr/prowlarr.nix @@ -0,0 +1,53 @@ +# Torrent and NZB indexer +{ config, lib, ... }: +let + cfg = config.my.services.servarr.prowlarr; +in +{ + options.my.services.servarr.prowlarr = with lib; { + enable = lib.mkEnableOption "Prowlarr" // { + default = config.my.services.servarr.enableAll; + }; + + port = mkOption { + type = types.port; + default = 9696; + example = 8080; + description = "Internal port for webui"; + }; + }; + + config = lib.mkIf cfg.enable { + services.prowlarr = { + enable = true; + + settings = { + server = { + port = cfg.port; + }; + }; + }; + + my.services.nginx.virtualHosts = { + prowlarr = { + inherit (cfg) port; + }; + }; + + services.fail2ban.jails = { + prowlarr = '' + enabled = true + filter = prowlarr + action = iptables-allports + ''; + }; + + environment.etc = { + "fail2ban/filter.d/prowlarr.conf".text = '' + [Definition] + failregex = ^.*\|Warn\|Auth\|Auth-Failure ip <HOST> username .*$ + journalmatch = _SYSTEMD_UNIT=prowlarr.service + ''; + }; + }; +} From 950cf4dd059e74d87084747b25e70138753b82d5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 11:27:18 +0000 Subject: [PATCH 1508/1588] nixos: services: servarr: migrate jackett --- hosts/nixos/porthos/services.nix | 4 +++ modules/nixos/services/indexers/default.nix | 22 -------------- modules/nixos/services/servarr/default.nix | 1 + modules/nixos/services/servarr/jackett.nix | 33 +++++++++++++++++++++ 4 files changed, 38 insertions(+), 22 deletions(-) create mode 100644 modules/nixos/services/servarr/jackett.nix diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 9017894..d45846a 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -145,6 +145,10 @@ in lidarr = { enable = false; }; + # I only use Prowlarr nowadays + jackett = { + enable = false; + }; }; # Because I still need to play sysadmin ssh-server.enable = true; diff --git a/modules/nixos/services/indexers/default.nix b/modules/nixos/services/indexers/default.nix index 00bf316..5d81079 100644 --- a/modules/nixos/services/indexers/default.nix +++ b/modules/nixos/services/indexers/default.nix @@ -3,36 +3,14 @@ let cfg = config.my.services.indexers; - jackettPort = 9117; nzbhydraPort = 5076; in { options.my.services.indexers = with lib; { - jackett.enable = mkEnableOption "Jackett torrent meta-indexer"; nzbhydra.enable = mkEnableOption "NZBHydra2 usenet meta-indexer"; }; config = lib.mkMerge [ - (lib.mkIf cfg.jackett.enable { - services.jackett = { - enable = true; - }; - - # Jackett wants to eat *all* my RAM if left to its own devices - systemd.services.jackett = { - serviceConfig = { - MemoryHigh = "15%"; - MemoryMax = "25%"; - }; - }; - - my.services.nginx.virtualHosts = { - jackett = { - port = jackettPort; - }; - }; - }) - (lib.mkIf cfg.nzbhydra.enable { services.nzbhydra2 = { enable = true; diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index 1bca773..06a1cef 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -6,6 +6,7 @@ { imports = [ ./bazarr.nix + ./jackett.nix ./prowlarr.nix (import ./starr.nix "lidarr") (import ./starr.nix "radarr") diff --git a/modules/nixos/services/servarr/jackett.nix b/modules/nixos/services/servarr/jackett.nix new file mode 100644 index 0000000..756df9b --- /dev/null +++ b/modules/nixos/services/servarr/jackett.nix @@ -0,0 +1,33 @@ +{ config, lib, ... }: +let + cfg = config.my.services.servarr.jackett; +in +{ + options.my.services.servarr.jackett = with lib; { + enable = lib.mkEnableOption "Jackett" // { + default = config.my.services.servarr.enableAll; + }; + }; + + config = lib.mkIf cfg.enable { + services.jackett = { + enable = true; + }; + + # Jackett wants to eat *all* my RAM if left to its own devices + systemd.services.jackett = { + serviceConfig = { + MemoryHigh = "15%"; + MemoryMax = "25%"; + }; + }; + + my.services.nginx.virtualHosts = { + jackett = { + port = 9117; + }; + }; + + # Jackett does not log authentication failures... + }; +} From c823edf58415c1f07eebd03a21617c09447cafbb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 11:28:04 +0000 Subject: [PATCH 1509/1588] nixos: services: servarr: jackett: add 'port' --- modules/nixos/services/servarr/jackett.nix | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/nixos/services/servarr/jackett.nix b/modules/nixos/services/servarr/jackett.nix index 756df9b..481cd3d 100644 --- a/modules/nixos/services/servarr/jackett.nix +++ b/modules/nixos/services/servarr/jackett.nix @@ -7,11 +7,19 @@ in enable = lib.mkEnableOption "Jackett" // { default = config.my.services.servarr.enableAll; }; + + port = mkOption { + type = types.port; + default = 9117; + example = 8080; + description = "Internal port for webui"; + }; }; config = lib.mkIf cfg.enable { services.jackett = { enable = true; + inherit (cfg) port; }; # Jackett wants to eat *all* my RAM if left to its own devices @@ -24,7 +32,7 @@ in my.services.nginx.virtualHosts = { jackett = { - port = 9117; + inherit (cfg) port; }; }; From b1ade723837cbffcfc8a1ac24fa96566392e5e3d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 11:32:39 +0000 Subject: [PATCH 1510/1588] nixos: services: servarr: migrate nzbhydra --- hosts/nixos/porthos/services.nix | 3 +++ modules/nixos/services/default.nix | 1 - modules/nixos/services/indexers/default.nix | 26 --------------------- modules/nixos/services/servarr/default.nix | 1 + modules/nixos/services/servarr/nzbhydra.nix | 25 ++++++++++++++++++++ 5 files changed, 29 insertions(+), 27 deletions(-) delete mode 100644 modules/nixos/services/indexers/default.nix create mode 100644 modules/nixos/services/servarr/nzbhydra.nix diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index d45846a..7efddfa 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -149,6 +149,9 @@ in jackett = { enable = false; }; + nzbhydra = { + enable = false; + }; }; # Because I still need to play sysadmin ssh-server.enable = true; diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 3992385..27f8765 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -15,7 +15,6 @@ ./gitea ./grocy ./homebox - ./indexers ./jellyfin ./komga ./lohr diff --git a/modules/nixos/services/indexers/default.nix b/modules/nixos/services/indexers/default.nix deleted file mode 100644 index 5d81079..0000000 --- a/modules/nixos/services/indexers/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -# Torrent and usenet meta-indexers -{ config, lib, ... }: -let - cfg = config.my.services.indexers; - - nzbhydraPort = 5076; -in -{ - options.my.services.indexers = with lib; { - nzbhydra.enable = mkEnableOption "NZBHydra2 usenet meta-indexer"; - }; - - config = lib.mkMerge [ - (lib.mkIf cfg.nzbhydra.enable { - services.nzbhydra2 = { - enable = true; - }; - - my.services.nginx.virtualHosts = { - nzbhydra = { - port = nzbhydraPort; - }; - }; - }) - ]; -} diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index 06a1cef..23838fd 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -7,6 +7,7 @@ imports = [ ./bazarr.nix ./jackett.nix + ./nzbhydra.nix ./prowlarr.nix (import ./starr.nix "lidarr") (import ./starr.nix "radarr") diff --git a/modules/nixos/services/servarr/nzbhydra.nix b/modules/nixos/services/servarr/nzbhydra.nix new file mode 100644 index 0000000..4112c30 --- /dev/null +++ b/modules/nixos/services/servarr/nzbhydra.nix @@ -0,0 +1,25 @@ +{ config, lib, ... }: +let + cfg = config.my.services.servarr.nzbhydra; +in +{ + options.my.services.servarr.nzbhydra = with lib; { + enable = lib.mkEnableOption "NZBHydra2" // { + default = config.my.services.servarr.enableAll; + }; + }; + + config = lib.mkIf cfg.enable { + services.nzbhydra2 = { + enable = true; + }; + + my.services.nginx.virtualHosts = { + nzbhydra = { + port = 5076; + }; + }; + + # NZBHydra2 does not log authentication failures... + }; +} From ec965800e4a1cd0d8a26f7e2ba50d31e85aaf9b9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 11:34:25 +0000 Subject: [PATCH 1511/1588] nixos: services: servarr: nzbhydra: fix websockets From what I could read, NZBHydra2 *might* require proxying websockets in new versions (better safe than sorry). --- modules/nixos/services/servarr/nzbhydra.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/nixos/services/servarr/nzbhydra.nix b/modules/nixos/services/servarr/nzbhydra.nix index 4112c30..7b63986 100644 --- a/modules/nixos/services/servarr/nzbhydra.nix +++ b/modules/nixos/services/servarr/nzbhydra.nix @@ -17,6 +17,7 @@ in my.services.nginx.virtualHosts = { nzbhydra = { port = 5076; + websocketsLocations = [ "/" ]; }; }; From 351026418678281890d469c7d183516f34bba445 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 31 Mar 2025 22:49:11 +0200 Subject: [PATCH 1512/1588] flake: bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 353a392..d86d6b5 100644 --- a/flake.lock +++ b/flake.lock @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1743607567, - "narHash": "sha256-kTzKPDFmNzwO1cK4fiJgPB/iSw7HgBAmknRTeAPJAeI=", + "lastModified": 1743869639, + "narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "49748c74cdbae03d70381f150b810f92617f23aa", + "rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1743448293, - "narHash": "sha256-bmEPmSjJakAp/JojZRrUvNcDX2R5/nuX6bm+seVaGhs=", + "lastModified": 1743689281, + "narHash": "sha256-y7Hg5lwWhEOgflEHRfzSH96BOt26LaYfrYWzZ+VoVdg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "77b584d61ff80b4cef9245829a6f1dfad5afdfa3", + "rev": "2bfc080955153be0be56724be6fa5477b4eefabb", "type": "github" }, "original": { From 215eb4c91ac722b8da4bb38c6791695021c3b516 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 13 Feb 2025 22:59:51 +0100 Subject: [PATCH 1513/1588] nixos: services: servarr: add autobrr --- hosts/nixos/porthos/services.nix | 3 ++ modules/nixos/services/servarr/autobrr.nix | 62 ++++++++++++++++++++++ modules/nixos/services/servarr/default.nix | 1 + 3 files changed, 66 insertions(+) create mode 100644 modules/nixos/services/servarr/autobrr.nix diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 7efddfa..cb77fbe 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -141,6 +141,9 @@ in # The whole *arr software suite servarr = { enableAll = true; + autobrr = { + enable = false; + }; # ... But not Lidarr because I don't care for music that much lidarr = { enable = false; diff --git a/modules/nixos/services/servarr/autobrr.nix b/modules/nixos/services/servarr/autobrr.nix new file mode 100644 index 0000000..afb07f4 --- /dev/null +++ b/modules/nixos/services/servarr/autobrr.nix @@ -0,0 +1,62 @@ +# IRC-based +{ config, lib, ... }: +let + cfg = config.my.services.servarr.autobrr; +in +{ + options.my.services.servarr.autobrr = with lib; { + enable = mkEnableOption "autobrr IRC announce tracker" // { + default = config.my.services.servarr.enableAll; + }; + + port = mkOption { + type = types.port; + default = 7474; + example = 8080; + description = "Internal port for webui"; + }; + + sessionSecretFile = mkOption { + type = types.str; + example = "/run/secrets/autobrr-secret.txt"; + description = '' + File containing the session secret. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.autobrr = { + enable = true; + + settings = { + inherit (cfg) port; + checkForUpdates = false; + }; + + secretFile = cfg.sessionSecretFile; + }; + + my.services.nginx.virtualHosts = { + autobrr = { + inherit (cfg) port; + }; + }; + + services.fail2ban.jails = { + autobrr = '' + enabled = true + filter = autobrr + action = iptables-allports + ''; + }; + + environment.etc = { + "fail2ban/filter.d/autobrr.conf".text = '' + [Definition] + failregex = ^.*Auth: invalid login \[.*\] from: <HOST>$ + journalmatch = _SYSTEMD_UNIT=autobrr.service + ''; + }; + }; +} diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index 23838fd..409fcdc 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -5,6 +5,7 @@ { lib, ... }: { imports = [ + ./autobrr.nix ./bazarr.nix ./jackett.nix ./nzbhydra.nix From 979814e9dea51880a2ed2c3f37033b994160441d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 13 Feb 2025 21:58:19 +0000 Subject: [PATCH 1514/1588] hosts: nixos: porthos: secrets: add autobrr --- hosts/nixos/porthos/secrets/secrets.nix | 2 ++ .../porthos/secrets/servarr/autobrr/session-secret.age | 7 +++++++ 2 files changed, 9 insertions(+) create mode 100644 hosts/nixos/porthos/secrets/servarr/autobrr/session-secret.age diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 68e90f2..425756c 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -80,6 +80,8 @@ in "pyload/credentials.age".publicKeys = all; + "servarr/autobrr/session-secret.age".publicKeys = all; + "sso/auth-key.age" = { owner = "nginx-sso"; publicKeys = all; diff --git a/hosts/nixos/porthos/secrets/servarr/autobrr/session-secret.age b/hosts/nixos/porthos/secrets/servarr/autobrr/session-secret.age new file mode 100644 index 0000000..e98b94a --- /dev/null +++ b/hosts/nixos/porthos/secrets/servarr/autobrr/session-secret.age @@ -0,0 +1,7 @@ +age-encryption.org/v1 +-> ssh-ed25519 cKojmg bu09lB+fjaPP31cUQZP6EqSPuseucgNK7k9vAS08iS0 ++NGL+b2QD/qGo6hqHvosAXzHZtDvfodmPdcgnrKlD1o +-> ssh-ed25519 jPowng QDCdRBGWhtdvvMCiDH52cZHz1/W7aomhTatZ4+9IKwI +Ou3jjV/O55G1CPgGS33l3eWhhYWrVdwVNPSiE14d5rE +--- q0ssmpG50OX1WaNSInc2hbtH3DbTwQGDU74VGEoMh94 +mCƑ'hK./Xu(g$'M{fK !MZoR՝͟;yb \ No newline at end of file From b8c649d5bff68813cb8589c776cf39a17cef91ea Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 30 Mar 2025 20:22:01 +0200 Subject: [PATCH 1515/1588] hosts: nixos: porthos: services: enable autobrr --- hosts/nixos/porthos/services.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index cb77fbe..784eb31 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -142,7 +142,7 @@ in servarr = { enableAll = true; autobrr = { - enable = false; + sessionSecretFile = secrets."servarr/autobrr/session-secret".path; }; # ... But not Lidarr because I don't care for music that much lidarr = { From 08f7c2bd7912696047e815adbb92adf89f4e47c7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 5 Apr 2025 20:24:21 +0200 Subject: [PATCH 1516/1588] nixos: services: nextcloud: bump to 31 --- modules/nixos/services/nextcloud/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index fe94177..cf1b876 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -35,7 +35,7 @@ in config = lib.mkIf cfg.enable { services.nextcloud = { enable = true; - package = pkgs.nextcloud30; + package = pkgs.nextcloud31; hostName = "nextcloud.${config.networking.domain}"; home = "/var/lib/nextcloud"; maxUploadSize = cfg.maxSize; From 01529075369d01274302efaaa8df55aac77b1a21 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 7 Apr 2025 10:19:30 +0000 Subject: [PATCH 1517/1588] flake: nixos: use 'self.dirtyRev' if available --- flake/nixos.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake/nixos.nix b/flake/nixos.nix index fa656dc..bf9eac8 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -3,7 +3,7 @@ let defaultModules = [ { # Let 'nixos-version --json' know about the Git revision - system.configurationRevision = self.rev or "dirty"; + system.configurationRevision = self.rev or self.dirtyRev or "dirty"; } { nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ From a1cab7f60649123658bb8df098c5eff934d0364b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 7 Apr 2025 15:50:22 +0000 Subject: [PATCH 1518/1588] flake: home-manager: set overlays in module I need to inherit `lib` to make sure it picks up my version, not the one from `pkgs`. I can't use `extraSpecialArgs` like NixOS, due to it missing from upstream [1]. [1]: https://github.com/nix-community/home-manager/pull/3969 --- flake/home-manager.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/flake/home-manager.nix b/flake/home-manager.nix index add889e..093ae8c 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -3,6 +3,11 @@ let defaultModules = [ # Include generic settings "${self}/modules/home" + { + nixpkgs.overlays = (lib.attrValues self.overlays) ++ [ + inputs.nur.overlays.default + ]; + } { # Basic user information defaults home.username = lib.mkDefault "ambroisie"; @@ -21,18 +26,15 @@ let # * not letting me set `lib` as an extraSpecialArgs # * not respecting `nixpkgs.overlays` [1] # [1]: https://github.com/nix-community/home-manager/issues/2954 - pkgs = import inputs.nixpkgs { - inherit system; - - overlays = (lib.attrValues self.overlays) ++ [ - inputs.nur.overlays.default - ]; - }; + pkgs = inputs.nixpkgs.legacyPackages.${system}; modules = defaultModules ++ [ "${self}/hosts/homes/${name}" ]; + # Use my extended lib in NixOS configuration + inherit (self) lib; + extraSpecialArgs = { # Inject inputs to use them in global registry inherit inputs; From e5bf5a3ba1ce7c6d2aa09658303dcabf72bb09b9 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 9 Apr 2025 11:41:07 +0200 Subject: [PATCH 1519/1588] flake: bump inputs --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index d86d6b5..9e61219 100644 --- a/flake.lock +++ b/flake.lock @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1743689281, - "narHash": "sha256-y7Hg5lwWhEOgflEHRfzSH96BOt26LaYfrYWzZ+VoVdg=", + "lastModified": 1744174375, + "narHash": "sha256-oxI9TLgnQbQ/WL0tIwVSIooLbXq4PW1QUhf5aQmXFgk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2bfc080955153be0be56724be6fa5477b4eefabb", + "rev": "ef3a956f697525883b77192cbe208233ea0f8f79", "type": "github" }, "original": { From 439a6bc930ea7eabb372824c71d4a9174d4588b5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 9 Apr 2025 12:26:04 +0200 Subject: [PATCH 1520/1588] nixos: services: homebox: use postgres --- modules/nixos/services/homebox/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/nixos/services/homebox/default.nix b/modules/nixos/services/homebox/default.nix index d79e331..bde59e6 100644 --- a/modules/nixos/services/homebox/default.nix +++ b/modules/nixos/services/homebox/default.nix @@ -19,6 +19,11 @@ in services.homebox = { enable = true; + # Automatic PostgreSQL provisioning + database = { + createLocally = true; + }; + settings = { # FIXME: mailer? HBOX_WEB_PORT = toString cfg.port; From 1dd1dbb917b17da7864a4ac20a977869ff752ac2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 9 Apr 2025 12:26:42 +0200 Subject: [PATCH 1521/1588] nixos: services: homebox: proxy websockets Should avoid a bunch of error logs, and ensure that e.g: adding a label does not require a refresh to show it in a list. --- modules/nixos/services/homebox/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/nixos/services/homebox/default.nix b/modules/nixos/services/homebox/default.nix index bde59e6..8ed5d77 100644 --- a/modules/nixos/services/homebox/default.nix +++ b/modules/nixos/services/homebox/default.nix @@ -33,6 +33,7 @@ in my.services.nginx.virtualHosts = { homebox = { inherit (cfg) port; + websocketsLocations = [ "/api" ]; }; }; From bd55ecc016eb49eca60b98ab0d2a22eca49a95ce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 9 Apr 2025 12:27:51 +0200 Subject: [PATCH 1522/1588] hosts: nixos: porthos: services: enable homebox --- hosts/nixos/porthos/services.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 784eb31..561da27 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -51,6 +51,10 @@ in passwordFile = secrets."forgejo/mail-password".path; }; }; + # Home inventory + homebox = { + enable = true; + }; # Jellyfin media server jellyfin.enable = true; # Gitea mirrorig service From a28295da27b96301bba49cd68cb6ae017be4be76 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 11 Apr 2025 19:01:08 +0200 Subject: [PATCH 1523/1588] nixos: services: servarr: autobrr: fix comment --- modules/nixos/services/servarr/autobrr.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/servarr/autobrr.nix b/modules/nixos/services/servarr/autobrr.nix index afb07f4..4465a78 100644 --- a/modules/nixos/services/servarr/autobrr.nix +++ b/modules/nixos/services/servarr/autobrr.nix @@ -1,4 +1,4 @@ -# IRC-based +# IRC-based indexer { config, lib, ... }: let cfg = config.my.services.servarr.autobrr; From a0473a5c6cd191ea649c250dc7e8f6094e74adba Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 12 Apr 2025 11:27:47 +0200 Subject: [PATCH 1524/1588] nixos: services: servarr: autobrr: fix fail2ban The log line for authentication failures has been updated since the original PR. It also happens to be logged in JSON, and I'm a bit too lazy to match it more properly than this. --- modules/nixos/services/servarr/autobrr.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/servarr/autobrr.nix b/modules/nixos/services/servarr/autobrr.nix index 4465a78..398e878 100644 --- a/modules/nixos/services/servarr/autobrr.nix +++ b/modules/nixos/services/servarr/autobrr.nix @@ -54,7 +54,7 @@ in environment.etc = { "fail2ban/filter.d/autobrr.conf".text = '' [Definition] - failregex = ^.*Auth: invalid login \[.*\] from: <HOST>$ + failregex = "message":"Auth: Failed login attempt username: \[.*\] ip: <HOST>" journalmatch = _SYSTEMD_UNIT=autobrr.service ''; }; From e82ae4a2192191e2894969fe3107fdbcd36c8c92 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 14 Apr 2025 10:19:57 +0000 Subject: [PATCH 1525/1588] home: vim: numbertoggle: remove 'TermOpen' event It's now part of upstream's default setup. --- modules/home/vim/plugin/numbertoggle.lua | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/modules/home/vim/plugin/numbertoggle.lua b/modules/home/vim/plugin/numbertoggle.lua index 8042710..b1e3df2 100644 --- a/modules/home/vim/plugin/numbertoggle.lua +++ b/modules/home/vim/plugin/numbertoggle.lua @@ -22,13 +22,3 @@ vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "WinLeave" end end, }) - --- Never show the sign column in a terminal buffer -vim.api.nvim_create_autocmd({ "TermOpen" }, { - pattern = "*", - group = numbertoggle, - callback = function() - vim.opt.number = false - vim.opt.relativenumber = false - end, -}) From 67936af4c73f8664448efc80b072f40c568517c6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 14 Apr 2025 10:19:57 +0000 Subject: [PATCH 1526/1588] home: vim: signtoggle: remove 'TermOpen' event It's now part of upstream's default setup. --- modules/home/vim/plugin/signtoggle.lua | 9 --------- 1 file changed, 9 deletions(-) diff --git a/modules/home/vim/plugin/signtoggle.lua b/modules/home/vim/plugin/signtoggle.lua index 9765a81..6a7640c 100644 --- a/modules/home/vim/plugin/signtoggle.lua +++ b/modules/home/vim/plugin/signtoggle.lua @@ -15,12 +15,3 @@ vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "WinLeave" }, { vim.opt.signcolumn = "no" end, }) - --- Never show the sign column in a terminal buffer -vim.api.nvim_create_autocmd({ "TermOpen" }, { - pattern = "*", - group = signtoggle, - callback = function() - vim.opt.signcolumn = "no" - end, -}) From 6f5ac4e55f644a5e5a473e9fda752fbebdec7455 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 14 Apr 2025 10:24:30 +0000 Subject: [PATCH 1527/1588] home: vim: signtoggle: only show signs if 'number' If a buffer doesn't show a number column, I probably also don't want a sign column to be toggled on/off in there. --- modules/home/vim/plugin/signtoggle.lua | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/home/vim/plugin/signtoggle.lua b/modules/home/vim/plugin/signtoggle.lua index 6a7640c..3deca34 100644 --- a/modules/home/vim/plugin/signtoggle.lua +++ b/modules/home/vim/plugin/signtoggle.lua @@ -1,17 +1,21 @@ local signtoggle = vim.api.nvim_create_augroup("signtoggle", { clear = true }) --- Only show sign column for the currently focused buffer +-- Only show sign column for the currently focused buffer, if it has a number column vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "WinEnter" }, { pattern = "*", group = signtoggle, callback = function() - vim.opt.signcolumn = "yes" + if vim.opt.number:get() then + vim.opt.signcolumn = "yes" + end end, }) vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "WinLeave" }, { pattern = "*", group = signtoggle, callback = function() - vim.opt.signcolumn = "no" + if vim.opt.number:get() then + vim.opt.signcolumn = "no" + end end, }) From 26ee59ef6e4f28ccbdbcf87eb28bb4074a87c840 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 14 Apr 2025 13:54:52 +0000 Subject: [PATCH 1528/1588] home: atuin: use 'uk' dialect for dates This should be for date *parsing*, from my looking at the code. Unlikely to be relevant, but might as well set it to the saner of the two options. --- modules/home/atuin/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/home/atuin/default.nix b/modules/home/atuin/default.nix index 3f06263..8c02e69 100644 --- a/modules/home/atuin/default.nix +++ b/modules/home/atuin/default.nix @@ -21,6 +21,8 @@ in ]; settings = { + # Reasonable date format + dialect = "uk"; # The package is managed by Nix update_check = false; # I don't care for the fancy display From c69aaa7adb604593d20d38d0037caaf24cb41f3e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 16 Apr 2025 15:25:18 +0200 Subject: [PATCH 1529/1588] nixos: services: servarr: autobrr: fix websockets I found some logs complaining about websockets before enabling this. --- modules/nixos/services/servarr/autobrr.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/nixos/services/servarr/autobrr.nix b/modules/nixos/services/servarr/autobrr.nix index 398e878..c3370cb 100644 --- a/modules/nixos/services/servarr/autobrr.nix +++ b/modules/nixos/services/servarr/autobrr.nix @@ -40,6 +40,7 @@ in my.services.nginx.virtualHosts = { autobrr = { inherit (cfg) port; + websocketsLocations = [ "/api" ]; }; }; From e4bc0444bfe7fdc7a43afcbda1ec7379f8286301 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 16 Apr 2025 15:29:10 +0200 Subject: [PATCH 1530/1588] nixos: services: transmission: fix umask I want downloads to be readable by the `media` group. The permissions weren't correctly applied without `umask`. --- modules/nixos/services/transmission/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/transmission/default.nix b/modules/nixos/services/transmission/default.nix index ac8b24d..16d51e3 100644 --- a/modules/nixos/services/transmission/default.nix +++ b/modules/nixos/services/transmission/default.nix @@ -65,6 +65,8 @@ in # Proxied behind Nginx. rpc-whitelist-enabled = true; rpc-whitelist = "127.0.0.1"; + + umask = "002"; # To go with `downloadDirPermissions` }; }; From 1b6a48d6c27a88c98c6c99cbe642ee681c362cbd Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 16 Apr 2025 17:07:23 +0200 Subject: [PATCH 1531/1588] flake: bump inputs --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 9e61219..65b8f04 100644 --- a/flake.lock +++ b/flake.lock @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744174375, - "narHash": "sha256-oxI9TLgnQbQ/WL0tIwVSIooLbXq4PW1QUhf5aQmXFgk=", + "lastModified": 1744777043, + "narHash": "sha256-O6jgTxz9BKUiaJl03JsVHvSjtCOC8gHfDvC2UCfcLMc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ef3a956f697525883b77192cbe208233ea0f8f79", + "rev": "7a6f7f4c1c69eee05641beaa40e7f85da8e69fb0", "type": "github" }, "original": { From c40090d17607efbec1d58cefa95f0745ab0806b7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 12 Apr 2025 14:51:46 +0200 Subject: [PATCH 1532/1588] nixos: services: servarr: add cross-seed --- hosts/nixos/porthos/services.nix | 3 + modules/nixos/services/servarr/cross-seed.nix | 96 +++++++++++++++++++ modules/nixos/services/servarr/default.nix | 1 + 3 files changed, 100 insertions(+) create mode 100644 modules/nixos/services/servarr/cross-seed.nix diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index 561da27..a95840a 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -148,6 +148,9 @@ in autobrr = { sessionSecretFile = secrets."servarr/autobrr/session-secret".path; }; + cross-seed = { + enable = false; + }; # ... But not Lidarr because I don't care for music that much lidarr = { enable = false; diff --git a/modules/nixos/services/servarr/cross-seed.nix b/modules/nixos/services/servarr/cross-seed.nix new file mode 100644 index 0000000..74f216a --- /dev/null +++ b/modules/nixos/services/servarr/cross-seed.nix @@ -0,0 +1,96 @@ +# Automatic cross-seeding for video media +{ config, lib, ... }: +let + cfg = config.my.services.servarr.cross-seed; +in +{ + options.my.services.servarr.cross-seed = with lib; { + enable = mkEnableOption "cross-seed daemon" // { + default = config.my.services.servarr.enableAll; + }; + + port = mkOption { + type = types.port; + default = 2468; + example = 8080; + description = "Internal port for daemon"; + }; + + linkDirectory = mkOption { + type = types.str; + default = "/data/downloads/complete/links"; + example = "/var/lib/cross-seed/links"; + description = "Link directory"; + }; + + secretSettingsFile = mkOption { + type = types.str; + example = "/run/secrets/cross-seed-secrets.json"; + description = '' + File containing secret settings. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.cross-seed = { + enable = true; + group = "media"; + + # Rely on recommended defaults for tracker snatches etc... + useGenConfigDefaults = true; + + settings = { + inherit (cfg) port; + host = "127.0.0.1"; + + # Inject torrents to client directly + action = "inject"; + # Query the client for torrents to match + useClientTorrents = true; + # Use hardlinks + linkType = "hardlink"; + # Use configured link directory + linkDirs = [ cfg.linkDirectory ]; + # Match as many torrents as possible + matchMode = "partial"; + # Cross-seed full season if at least 50% of episodes are already downloaded + seasonFromEpisodes = 0.5; + }; + + settingsFile = cfg.secretSettingsFile; + }; + + systemd.services.cross-seed = { + serviceConfig = { + # Loose umask to make cross-seed links readable by `media` + UMask = "0002"; + }; + }; + + # Set-up media group + users.groups.media = { }; + + my.services.nginx.virtualHosts = { + cross-seed = { + inherit (cfg) port; + }; + }; + + services.fail2ban.jails = { + cross-seed = '' + enabled = true + filter = cross-seed + action = iptables-allports + ''; + }; + + environment.etc = { + "fail2ban/filter.d/cross-seed.conf".text = '' + [Definition] + failregex = ^.*Unauthorized API access attempt to .* from <HOST>$ + journalmatch = _SYSTEMD_UNIT=cross-seed.service + ''; + }; + }; +} diff --git a/modules/nixos/services/servarr/default.nix b/modules/nixos/services/servarr/default.nix index 409fcdc..dca57cf 100644 --- a/modules/nixos/services/servarr/default.nix +++ b/modules/nixos/services/servarr/default.nix @@ -7,6 +7,7 @@ imports = [ ./autobrr.nix ./bazarr.nix + ./cross-seed.nix ./jackett.nix ./nzbhydra.nix ./prowlarr.nix From 058096079eadcf5fb488f00156dcd6d3a5489256 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 12 Apr 2025 14:52:10 +0200 Subject: [PATCH 1533/1588] hosts: nixos: porthos: secrets: add cross-seed --- hosts/nixos/porthos/secrets/secrets.nix | 1 + .../servarr/cross-seed/configuration.json.age | Bin 0 -> 1282 bytes 2 files changed, 1 insertion(+) create mode 100644 hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix index 425756c..b3812b4 100644 --- a/hosts/nixos/porthos/secrets/secrets.nix +++ b/hosts/nixos/porthos/secrets/secrets.nix @@ -81,6 +81,7 @@ in "pyload/credentials.age".publicKeys = all; "servarr/autobrr/session-secret.age".publicKeys = all; + "servarr/cross-seed/configuration.json.age".publicKeys = all; "sso/auth-key.age" = { owner = "nginx-sso"; diff --git a/hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age b/hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age new file mode 100644 index 0000000000000000000000000000000000000000..e9af03f472da8411b7106cf733ba1d389201263a GIT binary patch literal 1282 zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn_Ri1BO;^Y%D)lpW z_Vox$^UBlD_YJRfEOs*TaI7%TamjG@@%MBN_6+q4%rlBG4CFEk(T)lZswgWlj0|@T zOfI%GGIq@J$u08_b}~sxN^>zZ3kh=Z)~^WiGeNg4D<Ho-FI~aW$uz>R)FdraKP<?} z&oC;dGRM6vGSbhZ($vq~ys#{{FfrAzxWv@OF`FyAJVV<&z_ZZL*f2k+B)7;vJR(0o zGSMO+)7{b6!Ywq%tiaeguf)G3!+=XyS69I@s;r<i$W%Mg+cLx_GQiC=Eg;b;RJ%As z+uStKLp!lJBsVS3B*`n-(Sl3Nv-?a><MIrl(x*{bjP<sxbE2Gdw_Xrkr(%C|ap?a? z*4ol~;-*5+owM{z@1FYk<B)aL#?(CrYK<rES!w6U|JNmJcZJJWvHUZpzudiRmYMJU zvp@Rwq`);#<fot8G4;-;Rr@krUpfAHTx*peDK>>Q?&_key4;IpeNQjT-<rU%qA}a9 z=KuZtXr<E~f%(t>={NB3)O=pQ;MLzxPQS!o<z^}Phwwg0S}|{K;nl;E=W9&wHm}iL z)mCHqK6R<uu@>Ib3v^1Sri)Zs9eVB=lXAmyUEuZlJ%3cK^Gi!u7w2uv-`dOQZ$FXe z3*(03pW)Xgwfh=0Gjk-(y5bwTz)`wS;CJZJWp^yK``2&nXpHTb_<S?N*Za?kW@F7s zUYt+9PK)ADsY+r9nt1F+c6qz+^ot3yn+uJbG#<=glIrDWdn(ypVeb=L%dfEEv`fH$ z`G9PmYcINQdsYPYh)r*1H~z=SKEF{geYM<cmx5_mOA8Wat@_LSQ1<aM+h@hUUMByO zzP11G-z`hKxeg!scK>IM9_Qkgn(YnF5BSA*H`bfRnLD#;ukQR_DQvniFx=(b?Qj2! zjwJcLmRIPtk}o>ACGkbuS&frT;XOMSX2r>6bGA<`5MKBvH)cmpdxG$^g=^xroJ_lW zj8(z<=7Gg4?T`5IWK_04n)k`A_^6Ro?}Rfup7}iebiiEhj^WR)BYmZDuN1^h=f3NB z6c#wu{Eyn<b<1T{j^!xdSfYPcp3Pl#ON5p0xkilzIRgJGuYB>*Tra+3;%3F&h3x;{ z^$9+GF!jix1q_uog>SvI7|Yxv)Rh!9ZmoJe^Hct_oFjD>yg&T+$mUMnl<roY`rz_q zOZy@{>CH0>@~5aB{o`yCkb0pdG)BVZ)G22c?)L5Mi!54$;;YvkVqAOw@6QYkJHc+T zNuQ?QSKG(kYxG~eg5$-Dk9TiY9FCcs7awN$Li4RTlb1v|*GGSr=bP_ytXh#jaoPRb zwqIJFxK>UPFfTilIA`aV#ZKF@6J~T=_+H2N?wKE_+oI|3g2V15M&`b+lZ*TGd$II~ zp4Y!@)U{7*rY!nfB+ayF=43{`-Tk2xT8jLvukPx;c-d-lXH&IZ+b@X|F$b9DSJ}w? zn|)=Ec)*@~w|7Ctwy8c>9*bKP8$9m~Z2lAQOWRa0DSvOJ^E$QZQ65=0Z<x<8`6e-` zNK9;5b<Yf`!w;husPgHzeN+^7^;&v&re@*wPP>a0753*7ZutHTFF1He;Ff2n;b$@S zO@^oRdHR_y1$Hbr^txewUfIF>X6zzqJWZZTPgB_3-hUQrYkHDkaX$G8Gn2mmfp2fO a3$3o2qvJ8ZJ$CJ3_b3jI6I)+s@Bjd%=|BMh literal 0 HcmV?d00001 From ee1139713c908ab43cd86b86fc984f1824395ca2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 12 Apr 2025 14:52:38 +0200 Subject: [PATCH 1534/1588] hosts: nixos: porthos: services: enable cross-seed --- hosts/nixos/porthos/services.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix index a95840a..96f15d3 100644 --- a/hosts/nixos/porthos/services.nix +++ b/hosts/nixos/porthos/services.nix @@ -149,7 +149,7 @@ in sessionSecretFile = secrets."servarr/autobrr/session-secret".path; }; cross-seed = { - enable = false; + secretSettingsFile = secrets."servarr/cross-seed/configuration.json".path; }; # ... But not Lidarr because I don't care for music that much lidarr = { From 135cef25365c25a1efaa912489c960a5fe839663 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 16 Apr 2025 16:04:52 +0000 Subject: [PATCH 1535/1588] home: atuin: add daemon Enabled by default, I probably won't have a reason *not* to use it. --- modules/home/atuin/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/home/atuin/default.nix b/modules/home/atuin/default.nix index 8c02e69..dbd9690 100644 --- a/modules/home/atuin/default.nix +++ b/modules/home/atuin/default.nix @@ -8,6 +8,10 @@ in # I want the full experience by default package = mkPackageOption pkgs "atuin" { }; + + daemon = { + enable = my.mkDisableOption "atuin daemon"; + }; }; config = lib.mkIf cfg.enable { @@ -15,6 +19,10 @@ in enable = true; inherit (cfg) package; + daemon = lib.mkIf cfg.daemon.enable { + enable = true; + }; + flags = [ # I *despise* this hijacking of the up key, even though I use Ctrl-p "--disable-up-arrow" From 29b47d7f84c67428d44ccc1f385161f187702661 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 22 Apr 2025 13:04:36 +0000 Subject: [PATCH 1536/1588] home: tmux: rename 'mkTerminalFeature' This is a more accurate name to describe what the function is doing. --- modules/home/tmux/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 08b9202..82ceb3a 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -6,7 +6,7 @@ let (config.my.home.wm.windowManager != null) ]; - mkTerminalFlags = opt: flag: + mkTerminalFeature = opt: flag: let mkFlag = term: ''set -as terminal-features ",${term}:${flag}"''; enabledTerminals = lib.filterAttrs (_: v: v.${opt}) cfg.terminalFeatures; @@ -123,9 +123,9 @@ in } # Force OSC8 hyperlinks for each relevant $TERM - ${mkTerminalFlags "hyperlinks" "hyperlinks"} + ${mkTerminalFeature "hyperlinks" "hyperlinks"} # Force 24-bit color for each relevant $TERM - ${mkTerminalFlags "trueColor" "RGB"} + ${mkTerminalFeature "trueColor" "RGB"} ''; }; } From ec1c94676a727ee7b6e20c377ad0f7d05af9d69e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 22 Apr 2025 13:15:04 +0000 Subject: [PATCH 1537/1588] home: vim: highlight over-extended commit subjects --- modules/home/vim/after/queries/gitcommit/highlights.scm | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 modules/home/vim/after/queries/gitcommit/highlights.scm diff --git a/modules/home/vim/after/queries/gitcommit/highlights.scm b/modules/home/vim/after/queries/gitcommit/highlights.scm new file mode 100644 index 0000000..05162c9 --- /dev/null +++ b/modules/home/vim/after/queries/gitcommit/highlights.scm @@ -0,0 +1,6 @@ +; extends + +; Highlight over-extended subject lines (rely on wrapping for message body) +((subject) @comment.error + (#vim-match? @comment.error ".\{50,}") + (#offset! @comment.error 0 50 0 0)) From 946eab9ec00bfba393d1ed292a28f0f692048096 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 21 Feb 2025 16:26:39 +0000 Subject: [PATCH 1538/1588] home: git: extract 'delta' configuration I want to be able to re-use it between different source control systems (e.g: `jj`). As a first step, extract it to a proper module so that I can have it live in a single space. --- modules/home/default.nix | 1 + modules/home/delta/default.nix | 61 ++++++++++++++++++++++++++++++++++ modules/home/git/default.nix | 28 ---------------- 3 files changed, 62 insertions(+), 28 deletions(-) create mode 100644 modules/home/delta/default.nix diff --git a/modules/home/default.nix b/modules/home/default.nix index c8183cf..e642e87 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -8,6 +8,7 @@ ./bluetooth ./calibre ./comma + ./delta ./dircolors ./direnv ./discord diff --git a/modules/home/delta/default.nix b/modules/home/delta/default.nix new file mode 100644 index 0000000..e9350bb --- /dev/null +++ b/modules/home/delta/default.nix @@ -0,0 +1,61 @@ +{ config, pkgs, lib, ... }: +let + cfg = config.my.home.delta; +in +{ + options.my.home.delta = with lib; { + enable = my.mkDisableOption "delta configuration"; + + package = mkPackageOption pkgs "delta" { }; + + git = { + enable = my.mkDisableOption "git integration"; + }; + }; + + config = lib.mkIf cfg.enable { + assertions = [ + { + # For its configuration + assertion = cfg.enable -> cfg.git.enable; + message = '' + `config.my.home.delta` must enable `config.my.home.delta.git` to be + properly configured. + ''; + } + ]; + + home.packages = [ cfg.package ]; + + programs.git = lib.mkIf cfg.git.enable { + delta = { + enable = true; + inherit (cfg) package; + + options = { + features = "diff-highlight decorations"; + + # Less jarring style for `diff-highlight` emulation + diff-highlight = { + minus-style = "red"; + minus-non-emph-style = "red"; + minus-emph-style = "bold red 52"; + + plus-style = "green"; + plus-non-emph-style = "green"; + plus-emph-style = "bold green 22"; + + whitespace-error-style = "reverse red"; + }; + + # Personal preference for easier reading + decorations = { + commit-style = "raw"; # Do not recolor meta information + keep-plus-minus-markers = true; + paging = "always"; + }; + }; + }; + }; + }; +} diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix index c88008f..ca59a5f 100644 --- a/modules/home/git/default.nix +++ b/modules/home/git/default.nix @@ -42,34 +42,6 @@ in lfs.enable = true; - delta = { - enable = true; - - options = { - features = "diff-highlight decorations"; - - # Less jarring style for `diff-highlight` emulation - diff-highlight = { - minus-style = "red"; - minus-non-emph-style = "red"; - minus-emph-style = "bold red 52"; - - plus-style = "green"; - plus-non-emph-style = "green"; - plus-emph-style = "bold green 22"; - - whitespace-error-style = "reverse red"; - }; - - # Personal preference for easier reading - decorations = { - commit-style = "raw"; # Do not recolor meta information - keep-plus-minus-markers = true; - paging = "always"; - }; - }; - }; - # There's more extraConfig = { # Makes it a bit more readable From 2eb2a83dca68ffd2ff5380300fbaec23e8038e6a Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 24 Apr 2025 09:29:37 +0000 Subject: [PATCH 1539/1588] flake: bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 65b8f04..6bd45a8 100644 --- a/flake.lock +++ b/flake.lock @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1743869639, - "narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=", + "lastModified": 1745439012, + "narHash": "sha256-TwbdiH28QK7Da2JQTqFHdb+UCJq6QbF2mtf+RxHVzEA=", "owner": "nix-community", "repo": "home-manager", - "rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836", + "rev": "d31710fb2cd536b1966fee2af74e99a0816a61a8", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744777043, - "narHash": "sha256-O6jgTxz9BKUiaJl03JsVHvSjtCOC8gHfDvC2UCfcLMc=", + "lastModified": 1745469902, + "narHash": "sha256-+kHgeD+3+WZZcOaIsS6XwQWb+qbYYWYXzoEjdmdW6OY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7a6f7f4c1c69eee05641beaa40e7f85da8e69fb0", + "rev": "4975ac49a527b505803958595fcb191c9e889f60", "type": "github" }, "original": { From 89bc60609f07b4f3cff4cb4e0610f1b8243a9ad3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 24 Apr 2025 12:46:24 +0200 Subject: [PATCH 1540/1588] home: firefox: tridactyl: use 'replaceVars' --- modules/home/firefox/tridactyl/default.nix | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modules/home/firefox/tridactyl/default.nix b/modules/home/firefox/tridactyl/default.nix index 35b58c2..26ddfad 100644 --- a/modules/home/firefox/tridactyl/default.nix +++ b/modules/home/firefox/tridactyl/default.nix @@ -12,9 +12,7 @@ let in { config = lib.mkIf cfg.enable { - xdg.configFile."tridactyl/tridactylrc".source = pkgs.substituteAll { - src = ./tridactylrc; - + xdg.configFile."tridactyl/tridactylrc".source = pkgs.replaceVars ./tridactylrc { editorcmd = lib.concatStringsSep " " [ # Use my configured terminal term From bfda64288ead8796e1f3c8a5980fabb228f2e844 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 30 Apr 2025 21:05:22 +0100 Subject: [PATCH 1541/1588] nix: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 6bd45a8..584d942 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1736955230, - "narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=", + "lastModified": 1745630506, + "narHash": "sha256-bHCFgGeu8XjWlVuaWzi3QONjDW3coZDqSHvnd4l7xus=", "owner": "ryantm", "repo": "agenix", - "rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c", + "rev": "96e078c646b711aee04b82ba01aefbff87004ded", "type": "github" }, "original": { @@ -36,11 +36,11 @@ ] }, "locked": { - "lastModified": 1700795494, - "narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=", + "lastModified": 1744478979, + "narHash": "sha256-dyN+teG9G82G+m+PX/aSAagkC+vUv0SgUw3XkPhQodQ=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d", + "rev": "43975d782b418ebf4969e9ccba82466728c2851b", "type": "github" }, "original": { @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1745439012, - "narHash": "sha256-TwbdiH28QK7Da2JQTqFHdb+UCJq6QbF2mtf+RxHVzEA=", + "lastModified": 1746040799, + "narHash": "sha256-osgPX/SzIpkR50vev/rqoTEAVkEcOWXoQXmbzsaI4KU=", "owner": "nix-community", "repo": "home-manager", - "rev": "d31710fb2cd536b1966fee2af74e99a0816a61a8", + "rev": "5f217e5a319f6c186283b530f8c975e66c028433", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745469902, - "narHash": "sha256-+kHgeD+3+WZZcOaIsS6XwQWb+qbYYWYXzoEjdmdW6OY=", + "lastModified": 1745930157, + "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4975ac49a527b505803958595fcb191c9e889f60", + "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", "type": "github" }, "original": { From c5be292dfca50b740acf130bb0c3138fb4261a26 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 30 Apr 2025 21:34:11 +0100 Subject: [PATCH 1542/1588] nixos: profiles: wm: fix i3lock PAM service This was announced as a breaking change, and would lock me out if not set. I wish the transition went a bit slower, by first introducing the option for each PAM service, and *then* toggling it. Oh well. --- modules/nixos/profiles/wm/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/profiles/wm/default.nix b/modules/nixos/profiles/wm/default.nix index c227328..bca4d70 100644 --- a/modules/nixos/profiles/wm/default.nix +++ b/modules/nixos/profiles/wm/default.nix @@ -24,6 +24,8 @@ in my.home.udiskie.enable = true; # udiskie fails if it can't find this dbus service services.udisks2.enable = true; + # Ensure i3lock can actually unlock the session + security.pam.services.i3lock.enable = true; }) ]; } From 4b6f62b25ab9bccf84aa994ac8e8b79a42632e00 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 30 Apr 2025 21:36:50 +0100 Subject: [PATCH 1543/1588] home: gpg: fix deprecated config --- modules/home/gpg/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/gpg/default.nix b/modules/home/gpg/default.nix index 51c865a..2a00baf 100644 --- a/modules/home/gpg/default.nix +++ b/modules/home/gpg/default.nix @@ -17,7 +17,7 @@ in services.gpg-agent = { enable = true; enableSshSupport = true; # One agent to rule them all - pinentryPackage = cfg.pinentry; + pinentry.package = cfg.pinentry; extraConfig = '' allow-loopback-pinentry ''; From e3243ebe80d7c3e55337227d1e4177022d78ca05 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 2 May 2025 17:59:03 +0100 Subject: [PATCH 1544/1588] nixos: services: nextcloud: simplify DB handling I *think* the option didn't exist when I originally used this module. --- modules/nixos/services/nextcloud/default.nix | 22 +++++--------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix index cf1b876..d8d4fce 100644 --- a/modules/nixos/services/nextcloud/default.nix +++ b/modules/nixos/services/nextcloud/default.nix @@ -44,11 +44,15 @@ in adminuser = cfg.admin; adminpassFile = cfg.passwordFile; dbtype = "pgsql"; - dbhost = "/run/postgresql"; }; https = true; + # Automatic PostgreSQL provisioning + database = { + createLocally = true; + }; + settings = { overwriteprotocol = "https"; # Nginx only allows SSL }; @@ -60,22 +64,6 @@ in }; }; - services.postgresql = { - enable = true; - ensureDatabases = [ "nextcloud" ]; - ensureUsers = [ - { - name = "nextcloud"; - ensureDBOwnership = true; - } - ]; - }; - - systemd.services."nextcloud-setup" = { - requires = [ "postgresql.service" ]; - after = [ "postgresql.service" ]; - }; - # The service above configures the domain, no need for my wrapper services.nginx.virtualHosts."nextcloud.${config.networking.domain}" = { forceSSL = true; From 921d604ebea0d265815c76c60a85efa0929bc1ce Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 2 May 2025 22:35:33 +0100 Subject: [PATCH 1545/1588] hosts: nixos: porthos: secrets: update cross-seed --- .../servarr/cross-seed/configuration.json.age | Bin 1282 -> 1364 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age b/hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age index e9af03f472da8411b7106cf733ba1d389201263a..1499a56c21c9911f5a7111177b3458e418cb4b1c 100644 GIT binary patch delta 1337 zcmZqTy23R<r{2dsGAl1R&CsVf!`Ro~tfEpsDzP{tveLK6H?_bqBQV>~+#=N{Kdj6( zkju?CG(W`1q_`?PSKrs8&^6REIMFhosHDiCI6uQN-`^~&Dk-2MG@~>spG((Hp}06h zH#Nn`)YQ;YAuAxiJTF}#B-zj1%rDG1C(EQFDzM7fuRbiR%*Qjgytq`~%%sfKHQ2B) zIV&p6FxSX}%Pci3(7?>gG(SDeGd#u5&&15d(>chkDl^|Zr8Lzd-Q6ravLGxV#oR5D zOIKG{A*d>)D4@V8C#1Y6B-7Nm(juua&p*OE*Uccf#3SF)#LqI&&)hxRB`~p^Yxyd> zj1~K?AFEe4*c%Y58#y;-`z!&8)Tv=jGo`~r_eAP+vgUnQnY4O$&c(W!cUcYk)~Byu z7Vzw@$d$U!zGgcb()tRwY`S*Zy*t7{bAo+2mn5_5`<;szWvw3^-gZ;4wr6wbV}m{m zd#2gfbYzy8RB#p=DDJkBTcaa%;L*aG_3u~ATWG{_FFEEz{e{%6|2DLE)+t6^YG6z` z{A5PL1Fns#@q)XPE=n6m+~kVqJ@igxBk!iS4|MwPt~j;Y#z<rpf6y@v8|P)GXUg*H zPV83caLTFw)#u%JoJsY2<R1IKi2+~Umb6!!>|+*+yi>9=iQDHGtMxmlmx_$beugPX zC;Bt}=|BBkD}!4icUS!ciOom#Ivr*InYoqZI92{v^Vwc!8_chE_cKSY;`RSeWPFul z&X?ET`*duvY47@lcRoKh`e8Y7LgQ1NNpr*|*IP3%T(3NrlaO?fgQuS3;l0yGIg|F? z{!}L(zr@krBgDYT>E`5BUmn_sn!7X~3~^2tpJcLOcJqtK2^lfZ3r}Bjtbg}%_5#Dc zqDk?V!FnzapA{-pnoWw@EXX9*aZ2FU?%n@uHofl(KhksITjrT*E{~sAZ&>ZykP>k@ zhBG{FR`T)SXCGh595Gz;>=&N`r=!=ejvIe@x_`g<75JTLv5v#rE1e3rcP=`!Rz?4m zgj1iKWZ`x@qp2_DpQWy0WNDJ-Z8<-u{`0#QS+Dv2GkAP<MX&HpG~QUe^<~-iuY7Ig z>mM8Ix=voUBj3W$k#l{*-0QbL{ZE-J+QnJC>Fo*gsol04UVk^a``q54u_trU9f8|D zo0jM{s5;GNSTlFCVb7OefzKNq*{bHwf6q{&cXOiI)9pXkwKE>R=Mp=o=s-YT;TDy5 z^KNdbFDf}(SvHYtZ5jXevMiA!!7o^w**8>XUjFyP_wgz2<%gCmICJvImNvx*|6_Sc ztKTo5bYT83`FY!TEDjyWR=HIko%HP2pJ^whY?PS)`5ONVx_xf*(=~mX3m+^yw_&OO zPnYN248r+y*$z+f+OWn`%%DuxQ`vk+S&!fq$Jt+Zm?w4Bx4zE1EjJ_2EP26Uj$>}E zf99q5{9E+3{kYq<)s=;t{-jy0yYsvL)+|#|)k_`I)&<@vSC=ThFPfPa+kXGa|C?3& zyXVAA<7!)|wXdxFcrr(Oit`Rm|2HR}Z#wv<O7_V&*K>8p3Vh4tLYSxJDgG{VwPHIo zeaf^J!vop2KROTB)y=Hm{d)H6ef$D;Onn{)&aNpaKY#K<lKnNO-Ps9mqUN=BF5g|X ze|g(U4{7cw-`zzk-`6czc>9d)G5+8AQE#OR7#0Z4=(_&r^bDJ`Uv34fERD`MG{=0+ zDWQe(h2f6cGk8CDwcdR7)oJG4PdmRPvwmBt)u|BJa&&H(RXdxa_pF@k=V?Y+|39{5 zpRZXh*QprkDgDa!?(xIv(!ZNuYX=;<!?^yMSJ#Q<vF;|SaaSxB^<1j_bD1Fo00>`p A&j0`b delta 1254 zcmcb@)x<SHr#`2s)X&`6*CQ;=D^EY)H@woZ*vZJlvBEsZCBxar-_tqRGt@6I&nUt$ zkjpGYJ1RJ+qO8O)GTb#Vx!BUk*fGl|x6D7-$s{Ey&Bf3xB*?{Ezaq%bgiF^>p}06h zH#Nn`)YQ;YAuAxiJTG0r(aAKzuhb+hQ$H-o$<Ht<r@k`By(}`)&!f`R&)mGQEVnQ* z)v&n4)WtEIE4(~I+dROt(9hT~Kd2<P$Ui(HKR+_jA|TV<(bvK)G{>yK*g3Dnza+ze zOIKG{!7{3>pft!-JJH)R#3wSq%``0_(J55BI78dqG|@vlu{b0*Ezcy$E7;M3OU$$T zOi$zTjC!Hcr%_pq^|q{YqMUTMUJzZUVt;dS=>JF7+R}RBrb5r1v-C{wp8EOYkag9@ z)IA4kjVJC|Y3IoQ*ClIrh09m5{4=J%+`Vg-neY9xKl=8hz%@_gr=Qy~_0FeN`!ZZ# zIsSQEYn31=Hib3r>Y}T<+>2#>PcO^gn!vE4G25=@|NZ>vdZp7Hf%(t>={NB3)O=pQ z;MLzxPQS!o<z^}Phwwg0S}|{K;nl;E=W9&wHm}iL)mCHqK6R<uu@>Ib3v^1Sri)Zs z9eVB=lXAmyUEuZlJ%3cK^Gi!u7w2uv-`dOQZ$FXe3*(03pW)Xgwfh=0Gjk-(y5bwT zz)`wS;CJZJWp^yK``6cR?P!ecm-u`$!`J)Iie_WYNnV^!zD|qcP^n5{2%328Ms|6- z@AQiavYQKyn=~HGV3O+PXL~ByUSaPOTg$Jo;j~M@fBArHo@+0<Z+lh*_J~byW;g!F z$UeVOFnzV$YnOs)S4#^LX07_m{80AsGTUdxzg{N)lfJe8@ZT*<ySWY@ssDEWXN?}` z;+C524bBhv#dkN>o5q<tvudyI{9Y++x-l@^<=pLW|BH?!`Ms7`=(UnBI=ChAMcY}8 zlTG10I~Qif$z^l4Pb?5#_$N1JM^1Z!@U(?%;<lVjyL*gP!TRQb#VhTP`0!*@wm+Kp z$*uUPkyP)5GdrI7JpFXQT<(tH&#oi&eWh`)6vR#EzUz1t7C6=XkJ{mN%VkxL<tX1+ zqJLJN&0Td%gq82PMvVnI0{<$neDTp-FTP{qX2sow?El{N2|j%=^~j+G43##8Z@sh_ z%iJT>l@v8@t$IB3Q~tA@BXt(MKm7N|=1$#|?pB@p;PPcl`yxH*%`*$~r>GtM<7^X< zdZE50G)BVZ)G22c?)L5Mi!54$;;YvkVqAOw@6QYkJHc+TNuQ?QSKG(kYxG~eg5$-D zk9TiY9FCcs7awN$Li4RTlb1v|*GGSr=bP_ytXh#jaoPRbwqIJFxK>UPFfTilIA`aV z#ZKF@6J~T=_+H2N?wKE_+oI|3g2V15M&`b+lZ*TGyMD3sho0BJY}B<+Yo;vvTO`f2 zXy#-_zTN$y6IzP=tgr6szIfSca%WSuUE42-6EO#v=2zLs{F{Ack9feIe7AQ&#<r<G zS00O76dOG64Q&1s@JriNFDZX-rSm$q=}{h8H*c8FF!?4isYpz0S#{40slyMW7pU^- zw|!I;cJ*3%ccx~1;q^|tixn02=M!%D{tPcTcu3%uXQ$z3G4@S{r}TOHnJxu(EI9PK zVSZlO!TV<HB56ELo=Q(s*xcTK7HeyIl3;N@`3W<VzW;%5Z?_Aru9~CcF~2=_?P2#Q M4vrIBUuf_E0F5*_k^lez From 22f97b4ac7d6e0285935f5236686c789e712ff04 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 3 May 2025 13:56:12 +0100 Subject: [PATCH 1546/1588] home: vim: lua: lsp: configure inlay hints --- modules/home/vim/lua/ambroisie/lsp.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua index e48de12..fef0487 100644 --- a/modules/home/vim/lua/ambroisie/lsp.lua +++ b/modules/home/vim/lua/ambroisie/lsp.lua @@ -53,6 +53,10 @@ M.on_attach = function(client, bufnr) vim.diagnostic.open_float(nil, { scope = "buffer" }) end + local function toggle_inlay_hints() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) + end + local keys = { buffer = bufnr, -- LSP navigation @@ -67,6 +71,7 @@ M.on_attach = function(client, bufnr) { "<leader>ca", vim.lsp.buf.code_action, desc = "Code actions" }, { "<leader>cd", cycle_diagnostics_display, desc = "Cycle diagnostics display" }, { "<leader>cD", show_buffer_diagnostics, desc = "Show buffer diagnostics" }, + { "<leader>ch", toggle_inlay_hints, desc = "Toggle inlay hints" }, { "<leader>cr", vim.lsp.buf.rename, desc = "Rename symbol" }, { "<leader>cs", vim.lsp.buf.signature_help, desc = "Show signature" }, { "<leader>ct", vim.lsp.buf.type_definition, desc = "Go to type definition" }, From d2a8894eb298a2fbdee409b20995c51d6dcbaf4e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 5 May 2025 18:06:41 +0100 Subject: [PATCH 1547/1588] home: wm: i3: make 'firefox' history float --- modules/home/wm/i3/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/wm/i3/default.nix b/modules/home/wm/i3/default.nix index 029a14b..5f22bbe 100644 --- a/modules/home/wm/i3/default.nix +++ b/modules/home/wm/i3/default.nix @@ -127,6 +127,7 @@ in { class = "^Blueman-.*$"; } { title = "^htop$"; } { class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; } + { class = "^firefox$"; instance = "Places"; window_role = "Organizer"; } { class = "^pavucontrol.*$"; } { class = "^Arandr$"; } { class = "^\\.blueman-manager-wrapped$"; } From a9ba93f834db067e9d791c4299ceab483c8ef6f8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 May 2025 11:27:12 +0000 Subject: [PATCH 1548/1588] home: delta: assert git is enabled --- modules/home/delta/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/home/delta/default.nix b/modules/home/delta/default.nix index e9350bb..58ee031 100644 --- a/modules/home/delta/default.nix +++ b/modules/home/delta/default.nix @@ -23,6 +23,13 @@ in properly configured. ''; } + { + assertion = cfg.enable -> config.programs.git.enable; + message = '' + `config.my.home.delta` relies on `config.programs.git` to be + enabled. + ''; + } ]; home.packages = [ cfg.package ]; From 07d8f5a03fbc5a1e36e6425953ad30f2c7037287 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 May 2025 17:25:28 +0200 Subject: [PATCH 1549/1588] flake: nixos: use 'nixpkgs.hostPlatform' This is the proper way to set `system` nowadays. --- flake/nixos.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/flake/nixos.nix b/flake/nixos.nix index bf9eac8..0fbd3a6 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -15,8 +15,10 @@ let ]; buildHost = name: system: lib.nixosSystem { - inherit system; modules = defaultModules ++ [ + { + nixpkgs.hostPlatform = system; + } "${self}/hosts/nixos/${name}" ]; specialArgs = { From 8a8e4f93a513ad3aaafdbeced14a61d5f961ff1d Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 7 May 2025 17:16:44 +0000 Subject: [PATCH 1550/1588] flake: home-manager: remove obsolete comment --- flake/home-manager.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/flake/home-manager.nix b/flake/home-manager.nix index 093ae8c..88a74e8 100644 --- a/flake/home-manager.nix +++ b/flake/home-manager.nix @@ -22,10 +22,6 @@ let ]; mkHome = name: system: inputs.home-manager.lib.homeManagerConfiguration { - # Work-around for home-manager - # * not letting me set `lib` as an extraSpecialArgs - # * not respecting `nixpkgs.overlays` [1] - # [1]: https://github.com/nix-community/home-manager/issues/2954 pkgs = inputs.nixpkgs.legacyPackages.${system}; modules = defaultModules ++ [ From 77839ab2ef3003c38324cade0810b41d1c84cc8c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 8 May 2025 13:29:35 +0000 Subject: [PATCH 1551/1588] flake: bump inputs --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 584d942..ef7aba8 100644 --- a/flake.lock +++ b/flake.lock @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745930157, - "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", + "lastModified": 1746683680, + "narHash": "sha256-+5zk+UbG0+GQlKt+gIKm+OhlYvHmkAHFXvf7hl1HDeM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", + "rev": "16762245d811fdd74b417cc922223dc8eb741e8b", "type": "github" }, "original": { From 0c5836bc56e9048e27db4081595ff7cb566f9c31 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 8 May 2025 23:22:11 +0200 Subject: [PATCH 1552/1588] nixos: services: paperless: use 'PAPERLESS_URL' --- modules/nixos/services/paperless/default.nix | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index 63f456b..9cdac38 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -53,17 +53,13 @@ in mediaDir = lib.mkIf (cfg.documentPath != null) cfg.documentPath; settings = - let - paperlessDomain = "paperless.${config.networking.domain}"; - in { # Use SSO PAPERLESS_ENABLE_HTTP_REMOTE_USER = true; PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME = "HTTP_X_USER"; # Security settings - PAPERLESS_ALLOWED_HOSTS = paperlessDomain; - PAPERLESS_CORS_ALLOWED_HOSTS = "https://${paperlessDomain}"; + PAPERLESS_URL = "https://paperless.${config.networking.domain}"; # OCR settings PAPERLESS_OCR_LANGUAGE = "fra+eng"; From a997d36964830a96b13c99175c51165614686edf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 8 May 2025 23:22:35 +0200 Subject: [PATCH 1553/1588] nixos: services: paperless: fix formatting --- modules/nixos/services/paperless/default.nix | 32 ++++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index 9cdac38..f345e8a 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -52,26 +52,26 @@ in mediaDir = lib.mkIf (cfg.documentPath != null) cfg.documentPath; - settings = - { - # Use SSO - PAPERLESS_ENABLE_HTTP_REMOTE_USER = true; - PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME = "HTTP_X_USER"; + settings = { + # Use SSO + PAPERLESS_ENABLE_HTTP_REMOTE_USER = true; + PAPERLESS_ENABLE_HTTP_REMOTE_USER_API = true; + PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME = "HTTP_X_USER"; - # Security settings - PAPERLESS_URL = "https://paperless.${config.networking.domain}"; + # Security settings + PAPERLESS_URL = "https://paperless.${config.networking.domain}"; - # OCR settings - PAPERLESS_OCR_LANGUAGE = "fra+eng"; + # OCR settings + PAPERLESS_OCR_LANGUAGE = "fra+eng"; - # Workers - PAPERLESS_TASK_WORKERS = 3; - PAPERLESS_THREADS_PER_WORKER = 4; + # Workers + PAPERLESS_TASK_WORKERS = 3; + PAPERLESS_THREADS_PER_WORKER = 4; - # Misc - PAPERLESS_TIME_ZONE = config.time.timeZone; - PAPERLESS_ADMIN_USER = cfg.username; - }; + # Misc + PAPERLESS_TIME_ZONE = config.time.timeZone; + PAPERLESS_ADMIN_USER = cfg.username; + }; # Admin password passwordFile = cfg.passwordFile; From 1dc65a37e7dc8041ee639dac882c5e2503708170 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Thu, 8 May 2025 23:29:30 +0200 Subject: [PATCH 1554/1588] nixos: services: paperless: set proxy settings --- modules/nixos/services/paperless/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index f345e8a..b6965ca 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -60,6 +60,8 @@ in # Security settings PAPERLESS_URL = "https://paperless.${config.networking.domain}"; + PAPERLESS_USE_X_FORWARD_HOST = true; + PAPERLESS_PROXY_SSL_HEADER = ''["HTTP_X_FORWARDED_PROTO", "https"]''; # OCR settings PAPERLESS_OCR_LANGUAGE = "fra+eng"; From 5b545a28f10c90d07f0442fb8c5823b1cb53f2f3 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 9 May 2025 00:02:07 +0200 Subject: [PATCH 1555/1588] nixos: services: mealie: use automatic DB setup --- modules/nixos/services/mealie/default.nix | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/modules/nixos/services/mealie/default.nix b/modules/nixos/services/mealie/default.nix index 664d5ba..3b4d4f7 100644 --- a/modules/nixos/services/mealie/default.nix +++ b/modules/nixos/services/mealie/default.nix @@ -38,27 +38,13 @@ in # Make it work with socket auth POSTGRES_URL_OVERRIDE = "postgresql://mealie:@/mealie?host=/run/postgresql"; }; - }; - systemd.services = { - mealie = { - after = [ "postgresql.service" ]; - requires = [ "postgresql.service" ]; + # Automatic PostgreSQL provisioning + database = { + createLocally = true; }; }; - # Set-up database - services.postgresql = { - enable = true; - ensureDatabases = [ "mealie" ]; - ensureUsers = [ - { - name = "mealie"; - ensureDBOwnership = true; - } - ]; - }; - my.services.nginx.virtualHosts = { mealie = { inherit (cfg) port; From f14f5c7f8aa3e87cb025e04b3f8cac2b1315d596 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 14 May 2025 18:51:12 +0000 Subject: [PATCH 1556/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index ef7aba8..b90b54a 100644 --- a/flake.lock +++ b/flake.lock @@ -117,11 +117,11 @@ ] }, "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "lastModified": 1746537231, + "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", "type": "github" }, "original": { @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1746040799, - "narHash": "sha256-osgPX/SzIpkR50vev/rqoTEAVkEcOWXoQXmbzsaI4KU=", + "lastModified": 1747225851, + "narHash": "sha256-4IbmZrNOdXP143kZEUzxBS5SqyxUlaSHLgdpeJfP2ZU=", "owner": "nix-community", "repo": "home-manager", - "rev": "5f217e5a319f6c186283b530f8c975e66c028433", + "rev": "6bf057fc8326e83bda05a669fc08d106547679fb", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746683680, - "narHash": "sha256-+5zk+UbG0+GQlKt+gIKm+OhlYvHmkAHFXvf7hl1HDeM=", + "lastModified": 1746904237, + "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "16762245d811fdd74b417cc922223dc8eb741e8b", + "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", "type": "github" }, "original": { From 97bcc5f34ed0b7154829f4bd0a43b485f16205b7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 18 May 2025 02:14:36 +0200 Subject: [PATCH 1557/1588] hosts: nixos: porthos: secrets: update cross-seed --- .../servarr/cross-seed/configuration.json.age | Bin 1364 -> 1528 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age b/hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age index 1499a56c21c9911f5a7111177b3458e418cb4b1c..e319f3a823c4eb4c84b15f6630ea5fbf42f9092b 100644 GIT binary patch delta 1502 zcmcb@^@DqYPJM)-VR?CgkBPZawo9aGMoCdYRk>4OQGumFMo6W5x^rP=Mt)AETV`3V z1(#E4QAJ@+N^qv5r>~)BvQubgdVynQWKwEazOiRuRf$n@d4RJ~l2Kr;1(&X!LUD11 zZfc5=si~o*LRLV2d0x7LTcA^FQMP_+ScYYkbCiF2Kz*uLx|y4Yvy+>npMhItskXmS zqIsZaWtO7}muXf=R=J;Zl8HxhR8p98WpSjBN1#htPF{*xP+m@HvU6p4X<2GTMrw)$ zm#(g^f>}hNuTxT<rJrknPiDHQrITAksefgfzl%X`c#>JMdzPPBsB^Mmo>ycf*D2@n z37;fCdeuv+?>w+R<0Yeo{}QfuMmN)!+&k=0a;^TSYwE4IY0U~Q?{9Yfw0X#~C0&SF zX}+aS((K$VJ-bblR?1ZG`JdIke`#ik!jg~Af1G*t+V950$FnqoQUr|mohx^EF@65T z!^>7rb@N!fc}v>LkM#>r%T@8aynXUz(Vrc1N_9sTE>E4Nw7mX$h0l{u+OqtM1bTj@ z{(q8F`{LD`c_O|u&izgQ`QeY>?OCTZ*t+M1PUGCN>2JW}-2Va(cQ3Qqb*%S#`^L*J zG+q`LyViT9Zd*R-NA%IVo*yc{RKzX66}P)FtGzy)v4%Z9f!XkKo!$0ChYdC^i?TxQ zn;!e4|M;`7(CJ-Ed03yy+^*NF)SaH%BJzKE^2OXKtanWAHZ%#J&b~Tv%d`CgUAeXM zmqgG0v{sNa#44C8s9yZV?WjFxZhl>tDqUQvv?~1K4ePy1>-d}J>u|1KJ8x&IqfYo+ zv*Wuy^8DMJ_IAY~9#8ikC1JDBo^u^VY~lYmh;NKyxvQY*wpb@t-T7Qi$XnlQ^#W44 zZ`SP8{vYOUcPhZZFKDgXN`tTQ-^=Rxdu|@>URiWR^t<<$J0G5AKAz@imKnqS{_7*H z#FFImH@qBwus*nwkZR2-_kL^j^KWZC&P&xjDY@4u!1R1$kMd!|Dd)3Oj?a-1@bQuJ zGhz?e+$&-I#Jc~q!JT&{OXn-=ZTu><_0+@qFGA5bx1N1jc_%AC@a99t6+hbVFjPD* zlbM&YU~#<HhQo6+o;?&u+xum^-K1^PgFjAe4B_1D@NSQ&{W90JbDsQpcYP0QQSZMp zgHKZ~ZBxAO8zV90SM6^8ttTd_RIgWCCwhll*=`-<TfV6`&3|4}sE%lGiu#*h*6n^c z+CuKeq1UGM^Vgc_zdMvJ_^x}`v~!CTZkZ(?NIe_&!1TJ^mAA#5@6T`KUObD{C%ao9 zsQB~7!<(6IU(H{#H9Dqx_vb*lm0fSPuw86^tHkj8n|=t}hjgx6>mT=C-yyD6{*CAU zbAcA213k_z6ZG$z|4<gzztNDix8}QS@5kQvK89TL_b%#HTPs=LcBIEBULelv^W8&N z3UUv6)c=&d^rzzFmB-iSRD8F!tv$bSuk>sdxvnDiormsueVi3I=hEAwk9|GFUKP*( zmVCWq#*6=IN3OVUo_;VjW9z5BgI6P(MYo&%yc#j-Pdb0amK!C$A9UOt4%p@|(ERo= zklTIkm2$WJ$%@ynyzZJ(QCwgD<iX4brkhtNe>r_KO<~sq1K!1b7eBA@YG1o_ZS9v8 z<^gMpl?pxQNNIoN50~D4D9GRL(1pc$?pxUA*sb!4%qx!Ga!2Fh)W#z7ZdRxIg}XfB zp55k34$-Wbeo<fMjXQIsWI1P8O_Y-U&Tk=W418)C{k67PNq8RS$XLIIb8kt-z54j| z8F^vPbc6T2QdN5Tnjw0@g`*Dlk^}bl-S~C==Zl}QeqwXOe8mja>Q+va{*q&I@m&wc zd^er?vXJvLKbtK3YbrlQ;`sKm-4o}XlD+TIschDg_~GD{&rUZ^itg#_SzfzD;_Y=d zZS&;ktru!-w(1*&1`97TayHfcbHvdhOU!CRc)|p!BKv182~T_$y*_L?x3<D%(x<;U zwa=8wx2}p(n4MXm=J5G*WLemfRV#O2deXk`w~dnbt|g4MjmEM@N&hzMKJN<n$g*GV UK&(_lF5l0Z#GsIGl7St<0Qrd6V*mgE delta 1337 zcmeyteT8d+PQ8zNWL92snxRi|hOw`|Sw*FORAO;PWTkJBZ)$;KMqsv|xkai^eps1n zAeWnOXnu&1NpV$puD-8Fp=+pTaH3^EQAv?OaejtlzQ0*kRZ>7jXhvyNK9{bYLUD11 zZfc5=si~o*LRLV2d0x6gNV1>1nO~T3PL@eURA7~{Uwv3snU7~~d2y+}nMs+eYp`Kq za#mEBVXlz{msx67pn;i}X?}W`XLyRApNW}^r*n{7Rc5|-N@=P^y1Q9;WI<R!in&`P zm#(g^LQqvoQ9yxHPDpuCNT#WArA1O<o_~aSuA4z{iATPpiJxVlpSgRsOJHI-*YZ_% z87uZ(KUS}9us0x9H*#*w_E`cFsZ+z6W=e;L?updtWX=1qGHLbhoQric@3I>7txsRS zEa2H)kt=ndea&_>r1ceU*>vr+dv}C^<^=n4E=gw9_d6Fc%341-yzQo7ZO`V=#|C{C z_Dr*{>BuZGso*R$P~2@Lw?;?kz@vpV>))@Kx6p{=UUJNb`U|OB|7~dTtW%7-)WDc> z_{off2V5If;{|soU6eMCxXBgId+43YM&3<tAL#VoU2$r)jgiPI{-9$THqOgV&y?lY zo!G6?;gnPVtIxadIFsu4$UXLd69c}yEorYd*~cstd8cG$61UGWR_k|8FBKV={R~r( zPV{H`(|`K8RtC33?ymX?5}S|ebvnxaGjl7+ajN{U=Ci%dHke=S?q`l(#q0l{$oMM9 zoG-7v_vzST)86$9?|go2^uu!EgvO^jljev`uD51jxL$cKCn4z|2Twi6!+WQXawhG& z{i#koeu<;KM~H!w)6L1NzC5%MHFs$~7~-5PKFMUm?B*Ad6Eb3+7oNW6SpV+j>;;B> zMU&z!gY{e<J}XqHG@BH)S&&Jr<CMUy-MjzSY<k}nex&EZx6CusTpmBK-mu!YAtmB+ z3}<-UtmNat&py7AIbyix*)Ki?PDig_9XI~+bpL+yEATthVjYLKS2`7L?_6|dt&09B z38y|e$-?b+MpIwPKTBQ1$kHUu+j4$R{pWWrvR?E3XYly!ieBNHXuPp_>&vq3U-{a~ z*FQGab)CFyN4|xhBj@^rxz}%h`kyjcw2QNN)7ul~Q@d?9y#8)-_qn}8V^8LyI|8?R zHZ9R@P<5Kkux9RN!=5j{0-rZJvQ^EU|DK^l@8(3ar`vz7YiB%s&n0$F(Sd-x!YwNA z=H1*<UsQ6ovTP#P+A{v_WmzIef?u#Uvu~)(y!`Kn@8eV4%MUGCaOUKZEp3Vs{>So? zR=;09>A?J7^7FRwSR6W#t#Ye8I_cT3KhsW1*(fpp^ELh#bo<=qr)&B&7d}{aZo^Xl zpDxe48HDravK^k{wPB5?m_eDWr?UBuvL3-Jj<dh+Fi+~LZ+)G2TW&_4S@MFz9LL;R z|IADA`M2n6`*F8zt1AmP{YkT0cjtHgty!j`s+T&ZtqZ(Ut}ao0Uo<l<w*CH-|2M1l zch8BL#?`h^YhPLU@nnwn6z3hB{%=k`-*oUzmF$ymuIK8G75J9Pg)mRcQ~X`#YQ=VF z`jlxch6l23e{>$MtD9NB`}OSC`}hUynEE^poLy5;e*WZzB>QVlyR#GCM9pjMT)w+% z|MIqz9@5-VzPpQ7zOP%b@b($oWBkAKquxptFf0(7(RKaL=@~X>zuXE|SsI;jXpZ@s zQ$h>n3&S0?XYhXRYQ6dDtJBQ8pLTvpX8pEOt5YGc<>=fnt9CX;?^!w7&(n;u{(o%A zK3}t1u2V76Q~H(d-Q$PTrGGcS)($vyhjINiudWlzW8F<u<E~gN>bX?;=Q2YG0CoF! AMgRZ+ From c1e2114c57e9e0027b3e17b7fbf48253b22fb651 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 23 May 2025 22:56:19 +0100 Subject: [PATCH 1558/1588] flake: bump inputs --- flake.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index b90b54a..e0456b8 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1745630506, - "narHash": "sha256-bHCFgGeu8XjWlVuaWzi3QONjDW3coZDqSHvnd4l7xus=", + "lastModified": 1747575206, + "narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=", "owner": "ryantm", "repo": "agenix", - "rev": "96e078c646b711aee04b82ba01aefbff87004ded", + "rev": "4835b1dc898959d8547a871ef484930675cb47f1", "type": "github" }, "original": { @@ -117,11 +117,11 @@ ] }, "locked": { - "lastModified": 1746537231, - "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "type": "github" }, "original": { @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1747225851, - "narHash": "sha256-4IbmZrNOdXP143kZEUzxBS5SqyxUlaSHLgdpeJfP2ZU=", + "lastModified": 1747978958, + "narHash": "sha256-pQQnbxWpY3IiZqgelXHIe/OAE/Yv4NSQq7fch7M6nXQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "6bf057fc8326e83bda05a669fc08d106547679fb", + "rev": "7419250703fd5eb50e99bdfb07a86671939103ea", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746904237, - "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", + "lastModified": 1747744144, + "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", + "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f", "type": "github" }, "original": { From 24407448d498d637b94d04d9b06816f432c9197b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 27 May 2025 11:16:46 +0000 Subject: [PATCH 1559/1588] hosts: homes: mousqueton: disable 'atuin' package The system-provided package is built without its sync functionality. To ensure the module works as written, I can't use `pkgs.emptyDirectory` for this unfortunately... --- hosts/homes/ambroisie@mousqueton/default.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix index 37884d7..1383618 100644 --- a/hosts/homes/ambroisie@mousqueton/default.nix +++ b/hosts/homes/ambroisie@mousqueton/default.nix @@ -7,6 +7,20 @@ services.gpg-agent.enable = lib.mkForce false; my.home = { + atuin = { + package = pkgs.stdenv.mkDerivation { + pname = "atuin"; + version = "18.4.0"; + + buildCommand = '' + mkdir -p $out/bin + ln -s /usr/bin/atuin $out/bin/atuin + ''; + + meta.mainProgram = "atuin"; + }; + }; + git = { package = pkgs.emptyDirectory; }; From 9751fdb888d0d72801bff0c0381b057e0431f2a8 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 27 May 2025 11:39:15 +0000 Subject: [PATCH 1560/1588] hosts: homes: bazin: disable 'atuin' package Same as on `mousqueton`. --- hosts/homes/ambroisie@bazin/default.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix index f52fbce..365b70d 100644 --- a/hosts/homes/ambroisie@bazin/default.nix +++ b/hosts/homes/ambroisie@bazin/default.nix @@ -4,6 +4,20 @@ services.gpg-agent.enable = lib.mkForce false; my.home = { + atuin = { + package = pkgs.stdenv.mkDerivation { + pname = "atuin"; + version = "18.4.0"; + + buildCommand = '' + mkdir -p $out/bin + ln -s /usr/bin/atuin $out/bin/atuin + ''; + + meta.mainProgram = "atuin"; + }; + }; + git = { package = pkgs.emptyDirectory; }; From a67a54bda27092c9f89e60bf3ce75839e914f9b4 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 24 May 2025 22:33:21 +0200 Subject: [PATCH 1561/1588] nixos: services: paperless: use structured setting The module should stringify it to JSON automatically, so might as well use the more readable option. --- modules/nixos/services/paperless/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix index b6965ca..1195977 100644 --- a/modules/nixos/services/paperless/default.nix +++ b/modules/nixos/services/paperless/default.nix @@ -61,7 +61,7 @@ in # Security settings PAPERLESS_URL = "https://paperless.${config.networking.domain}"; PAPERLESS_USE_X_FORWARD_HOST = true; - PAPERLESS_PROXY_SSL_HEADER = ''["HTTP_X_FORWARDED_PROTO", "https"]''; + PAPERLESS_PROXY_SSL_HEADER = [ "HTTP_X_FORWARDED_PROTO" "https" ]; # OCR settings PAPERLESS_OCR_LANGUAGE = "fra+eng"; From 98d39717e2aa0306865982191afa200b5914426b Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 31 May 2025 22:37:21 +0100 Subject: [PATCH 1562/1588] home: direnv: lib: don't erase pre-existing venv Turns out `uv venv` isn't idempotent, it removes the existing virtual environment by default. Thankfully, there's a flag to fix it. --- modules/home/direnv/lib/python.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/direnv/lib/python.sh b/modules/home/direnv/lib/python.sh index b4b2bce..b1be8a9 100644 --- a/modules/home/direnv/lib/python.sh +++ b/modules/home/direnv/lib/python.sh @@ -46,7 +46,7 @@ layout_uv() { fi # create venv if it doesn't exist - uv venv -q + uv venv -q --allow-existing export VIRTUAL_ENV export UV_ACTIVE=1 From 151570cccaf8511688769ee0665868340054ba30 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 9 Jun 2025 10:36:33 +0000 Subject: [PATCH 1563/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index e0456b8..219d87d 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "lastModified": 1749398372, + "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", "type": "github" }, "original": { @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1747978958, - "narHash": "sha256-pQQnbxWpY3IiZqgelXHIe/OAE/Yv4NSQq7fch7M6nXQ=", + "lastModified": 1749400020, + "narHash": "sha256-0nTmHO8AYgRYk5v6zw5oZ3x9nh+feb+Isn7WNe318M0=", "owner": "nix-community", "repo": "home-manager", - "rev": "7419250703fd5eb50e99bdfb07a86671939103ea", + "rev": "2835e8ba0ad99ba86d4a5e497a962ec9fa35e48f", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747744144, - "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=", + "lastModified": 1749285348, + "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f", + "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", "type": "github" }, "original": { From 971f90581397286a3ffb424970cb5c1e9471a203 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Mon, 9 Jun 2025 13:52:29 +0200 Subject: [PATCH 1564/1588] nixos: services: mealie: remove DB settings Looks like I missed them in the original commit to migrate to `database.createLocally`. --- modules/nixos/services/mealie/default.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/nixos/services/mealie/default.nix b/modules/nixos/services/mealie/default.nix index 3b4d4f7..8c02398 100644 --- a/modules/nixos/services/mealie/default.nix +++ b/modules/nixos/services/mealie/default.nix @@ -32,11 +32,6 @@ in BASE_URL = "https://mealie.${config.networking.domain}"; TZ = config.time.timeZone; ALLOw_SIGNUP = "false"; - - # Use PostgreSQL - DB_ENGINE = "postgres"; - # Make it work with socket auth - POSTGRES_URL_OVERRIDE = "postgresql://mealie:@/mealie?host=/run/postgresql"; }; # Automatic PostgreSQL provisioning From 1b275e1a8a8291b3ed9789d25c2592ba52b8d9ec Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 17 Jun 2025 09:29:24 +0000 Subject: [PATCH 1565/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 219d87d..94ab916 100644 --- a/flake.lock +++ b/flake.lock @@ -117,11 +117,11 @@ ] }, "locked": { - "lastModified": 1747372754, - "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "lastModified": 1749636823, + "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "rev": "623c56286de5a3193aa38891a6991b28f9bab056", "type": "github" }, "original": { @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1749400020, - "narHash": "sha256-0nTmHO8AYgRYk5v6zw5oZ3x9nh+feb+Isn7WNe318M0=", + "lastModified": 1750127463, + "narHash": "sha256-K2xFtlD3PcKAZriOE3LaBLYmVfGQu+rIF4Jr1RFYR0Q=", "owner": "nix-community", "repo": "home-manager", - "rev": "2835e8ba0ad99ba86d4a5e497a962ec9fa35e48f", + "rev": "28eef8722d1af18ca13e687dbf485e1c653a0402", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749285348, - "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { From 112e3403615f65807dfcc28929b2b8a19656859e Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 17 Jun 2025 09:26:09 +0000 Subject: [PATCH 1566/1588] home: do not hard-code username The flake module already sets it with `mkDefault`, making it easier to override it for a specific host. --- modules/home/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/home/default.nix b/modules/home/default.nix index e642e87..1c40377 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -51,9 +51,6 @@ # First sane reproducible version home.stateVersion = "20.09"; - # Who am I? - home.username = "ambroisie"; - # Start services automatically systemd.user.startServices = "sd-switch"; } From 03bb62777079b4a8ecc755570cc04a45095ca013 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 2 Jul 2025 13:23:34 +0200 Subject: [PATCH 1567/1588] flake: bump inputs --- flake.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 94ab916..a4da84d 100644 --- a/flake.lock +++ b/flake.lock @@ -14,11 +14,11 @@ ] }, "locked": { - "lastModified": 1747575206, - "narHash": "sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY+D81k=", + "lastModified": 1750173260, + "narHash": "sha256-9P1FziAwl5+3edkfFcr5HeGtQUtrSdk/MksX39GieoA=", "owner": "ryantm", "repo": "agenix", - "rev": "4835b1dc898959d8547a871ef484930675cb47f1", + "rev": "531beac616433bac6f9e2a19feb8e99a22a66baf", "type": "github" }, "original": { @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1749398372, - "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "lastModified": 1751413152, + "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", "type": "github" }, "original": { @@ -117,11 +117,11 @@ ] }, "locked": { - "lastModified": 1749636823, - "narHash": "sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4=", + "lastModified": 1750779888, + "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "623c56286de5a3193aa38891a6991b28f9bab056", + "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", "type": "github" }, "original": { @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1750127463, - "narHash": "sha256-K2xFtlD3PcKAZriOE3LaBLYmVfGQu+rIF4Jr1RFYR0Q=", + "lastModified": 1751429452, + "narHash": "sha256-4s5vRtaqdNhVBnbOWOzBNKrRa0ShQTLoEPjJp3joeNI=", "owner": "nix-community", "repo": "home-manager", - "rev": "28eef8722d1af18ca13e687dbf485e1c653a0402", + "rev": "df12269039dcf752600b1bcc176bacf2786ec384", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", + "lastModified": 1751271578, + "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", + "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", "type": "github" }, "original": { From d61840651698e3ad05325039e9aa2a6cf9ad6aa2 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 2 Jul 2025 13:24:16 +0200 Subject: [PATCH 1568/1588] nixos: services: use 'postgresql.target' This is now the more correct dependency to use in service definitions, to guarantee read-write access with users and permissions. --- modules/nixos/services/drone/server/default.nix | 4 ++-- modules/nixos/services/tandoor-recipes/default.nix | 4 ++-- modules/nixos/services/woodpecker/server/default.nix | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/nixos/services/drone/server/default.nix b/modules/nixos/services/drone/server/default.nix index a3a1e49..d6148f4 100644 --- a/modules/nixos/services/drone/server/default.nix +++ b/modules/nixos/services/drone/server/default.nix @@ -6,8 +6,8 @@ in config = lib.mkIf cfg.enable { systemd.services.drone-server = { wantedBy = [ "multi-user.target" ]; - after = [ "postgresql.service" ]; - requires = [ "postgresql.service" ]; + after = [ "postgresql.target" ]; + requires = [ "postgresql.target" ]; serviceConfig = { EnvironmentFile = [ cfg.secretFile diff --git a/modules/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix index 3447bee..169eec8 100644 --- a/modules/nixos/services/tandoor-recipes/default.nix +++ b/modules/nixos/services/tandoor-recipes/default.nix @@ -49,8 +49,8 @@ in systemd.services = { tandoor-recipes = { - after = [ "postgresql.service" ]; - requires = [ "postgresql.service" ]; + after = [ "postgresql.target" ]; + requires = [ "postgresql.target" ]; serviceConfig = { EnvironmentFile = cfg.secretKeyFile; diff --git a/modules/nixos/services/woodpecker/server/default.nix b/modules/nixos/services/woodpecker/server/default.nix index adf533e..caf0179 100644 --- a/modules/nixos/services/woodpecker/server/default.nix +++ b/modules/nixos/services/woodpecker/server/default.nix @@ -24,8 +24,8 @@ in }; systemd.services.woodpecker-server = { - after = [ "postgresql.service" ]; - requires = [ "postgresql.service" ]; + after = [ "postgresql.target" ]; + requires = [ "postgresql.target" ]; serviceConfig = { # Set username for DB access From 5d8722397010e1c1ddbc4d59abe53b7a6bd55584 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 2 Jul 2025 13:26:22 +0200 Subject: [PATCH 1569/1588] nixos: services: transmission: use 'trgui-ng' I like it much better than the built-in UI. --- modules/nixos/services/transmission/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/nixos/services/transmission/default.nix b/modules/nixos/services/transmission/default.nix index 16d51e3..ddd77d4 100644 --- a/modules/nixos/services/transmission/default.nix +++ b/modules/nixos/services/transmission/default.nix @@ -47,6 +47,7 @@ in enable = true; package = pkgs.transmission_4; group = "media"; + webHome = pkgs.trgui-ng-web; downloadDirPermissions = "775"; From 66ec807dc6729a8aabd7cb5f42797e246f36befa Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Wed, 2 Jul 2025 14:01:15 +0200 Subject: [PATCH 1570/1588] hosts: nixos: aramis: home: use 'trgui-ng' It looks and works much better than the old one. Unfortunately, it's a Tauri app. --- hosts/nixos/aramis/home.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix index 64b63ce..221b1ea 100644 --- a/hosts/nixos/aramis/home.nix +++ b/hosts/nixos/aramis/home.nix @@ -20,7 +20,7 @@ element-desktop # Matrix client jellyfin-media-player # Wraps the webui and mpv together pavucontrol # Audio mixer GUI - transgui # Transmission remote + trgui-ng # Transmission remote ]; # Minimal video player mpv.enable = true; From 8d809e3ac3c05eb9ca6de3279fee2a8c72cdd293 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 8 Jul 2025 10:40:08 +0000 Subject: [PATCH 1571/1588] flake: bump inputs --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index a4da84d..dc32e95 100644 --- a/flake.lock +++ b/flake.lock @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751271578, - "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", + "lastModified": 1751952840, + "narHash": "sha256-SIkjQb9PPGvR/EcZAU8UZEnO9dwY2Z/BrDWgtyZd7OA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", + "rev": "27278798fe68d7f81131dd7ab62b8ea2b795cd56", "type": "github" }, "original": { From b093faf00d8066e19d144c34533a32602a4fb8f7 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 8 Jul 2025 10:42:13 +0000 Subject: [PATCH 1572/1588] nixos: services: tandoor-recipes: use automatic DB --- .../services/tandoor-recipes/default.nix | 25 +++---------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/modules/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix index 169eec8..4b4ed1a 100644 --- a/modules/nixos/services/tandoor-recipes/default.nix +++ b/modules/nixos/services/tandoor-recipes/default.nix @@ -26,18 +26,16 @@ in services.tandoor-recipes = { enable = true; + database = { + createLocally = true; + }; + port = cfg.port; extraConfig = let tandoorRecipesDomain = "recipes.${config.networking.domain}"; in { - # Use PostgreSQL - DB_ENGINE = "django.db.backends.postgresql"; - POSTGRES_HOST = "/run/postgresql"; - POSTGRES_USER = "tandoor_recipes"; - POSTGRES_DB = "tandoor_recipes"; - # Security settings ALLOWED_HOSTS = tandoorRecipesDomain; CSRF_TRUSTED_ORIGINS = "https://${tandoorRecipesDomain}"; @@ -49,27 +47,12 @@ in systemd.services = { tandoor-recipes = { - after = [ "postgresql.target" ]; - requires = [ "postgresql.target" ]; - serviceConfig = { EnvironmentFile = cfg.secretKeyFile; }; }; }; - # Set-up database - services.postgresql = { - enable = true; - ensureDatabases = [ "tandoor_recipes" ]; - ensureUsers = [ - { - name = "tandoor_recipes"; - ensureDBOwnership = true; - } - ]; - }; - my.services.nginx.virtualHosts = { recipes = { inherit (cfg) port; From 2473bca1671ddaab0ce6de70d5471bf304133af6 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 11 Jul 2025 14:24:23 +0000 Subject: [PATCH 1573/1588] home: vim: telescope: remove LSP handlers The plug-in was broken with the update to 0.11, and I would like to try using the built-in quickfixlist-based handlers for a while. This reverts commit 8d4a1e61b4f26f7443f7c8b0b65643f0bd312e9f. --- modules/home/vim/default.nix | 1 - modules/home/vim/plugin/settings/telescope.lua | 1 - 2 files changed, 2 deletions(-) diff --git a/modules/home/vim/default.nix b/modules/home/vim/default.nix index 20a74ff..930a853 100644 --- a/modules/home/vim/default.nix +++ b/modules/home/vim/default.nix @@ -80,7 +80,6 @@ in nvim-surround # Deal with pairs, now in Lua oil-nvim # Better alternative to NetrW telescope-fzf-native-nvim # Use 'fzf' fuzzy matching algorithm - telescope-lsp-handlers-nvim # Use 'telescope' for various LSP actions telescope-nvim # Fuzzy finder interface which-key-nvim # Show available mappings ]; diff --git a/modules/home/vim/plugin/settings/telescope.lua b/modules/home/vim/plugin/settings/telescope.lua index 1a23928..810d51c 100644 --- a/modules/home/vim/plugin/settings/telescope.lua +++ b/modules/home/vim/plugin/settings/telescope.lua @@ -23,7 +23,6 @@ telescope.setup({ }) telescope.load_extension("fzf") -telescope.load_extension("lsp_handlers") local keys = { { "<leader>f", group = "Fuzzy finder" }, From 979ae901c4057308ce1da3bbf2388e2addd99d7f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 15 Jul 2025 09:52:21 +0000 Subject: [PATCH 1574/1588] flake: bump inputs --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index dc32e95..0f205ab 100644 --- a/flake.lock +++ b/flake.lock @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1751429452, - "narHash": "sha256-4s5vRtaqdNhVBnbOWOzBNKrRa0ShQTLoEPjJp3joeNI=", + "lastModified": 1752467539, + "narHash": "sha256-4kaR+xmng9YPASckfvIgl5flF/1nAZOplM+Wp9I5SMI=", "owner": "nix-community", "repo": "home-manager", - "rev": "df12269039dcf752600b1bcc176bacf2786ec384", + "rev": "1e54837569e0b80797c47be4720fab19e0db1616", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751952840, - "narHash": "sha256-SIkjQb9PPGvR/EcZAU8UZEnO9dwY2Z/BrDWgtyZd7OA=", + "lastModified": 1752644555, + "narHash": "sha256-oeRcp4VEyZ/3ZgfRRoq60/08l2zy0K53l8MdfSIYd24=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "27278798fe68d7f81131dd7ab62b8ea2b795cd56", + "rev": "9100a4f6bf446603b9575927c8585162f9ec9aa6", "type": "github" }, "original": { From 13b61346f5cca39d1ba2c66717e14a6d01b99acc Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 15 Jul 2025 09:54:23 +0000 Subject: [PATCH 1575/1588] home: tmux: increase history scrollback Even *longer*. --- modules/home/tmux/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/home/tmux/default.nix b/modules/home/tmux/default.nix index 82ceb3a..3ea047a 100644 --- a/modules/home/tmux/default.nix +++ b/modules/home/tmux/default.nix @@ -48,7 +48,7 @@ in keyMode = "vi"; # Home-row keys and other niceties clock24 = true; # I'm one of those heathens escapeTime = 0; # Let vim do its thing instead - historyLimit = 100000; # Bigger buffer + historyLimit = 1000000; # Bigger buffer mouse = false; # I dislike mouse support focusEvents = true; # Report focus events terminal = "tmux-256color"; # I want accurate termcap info From add796768567599e9d6b2a54c80baac84d7681b5 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 27 Jul 2025 20:49:24 +0100 Subject: [PATCH 1576/1588] flake: bump inputs --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 0f205ab..e96a7a0 100644 --- a/flake.lock +++ b/flake.lock @@ -73,11 +73,11 @@ ] }, "locked": { - "lastModified": 1751413152, - "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", + "lastModified": 1753121425, + "narHash": "sha256-TVcTNvOeWWk1DXljFxVRp+E0tzG1LhrVjOGGoMHuXio=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", + "rev": "644e0fc48951a860279da645ba77fe4a6e814c5e", "type": "github" }, "original": { @@ -159,11 +159,11 @@ ] }, "locked": { - "lastModified": 1752467539, - "narHash": "sha256-4kaR+xmng9YPASckfvIgl5flF/1nAZOplM+Wp9I5SMI=", + "lastModified": 1753617834, + "narHash": "sha256-WEVfKrdIdu5CpppJ0Va3vzP0DKlS+ZTLbBjugMO2Drg=", "owner": "nix-community", "repo": "home-manager", - "rev": "1e54837569e0b80797c47be4720fab19e0db1616", + "rev": "72cc1e3134a35005006f06640724319caa424737", "type": "github" }, "original": { @@ -175,11 +175,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752644555, - "narHash": "sha256-oeRcp4VEyZ/3ZgfRRoq60/08l2zy0K53l8MdfSIYd24=", + "lastModified": 1753429684, + "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9100a4f6bf446603b9575927c8585162f9ec9aa6", + "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", "type": "github" }, "original": { From 2a515754a2c8bb87fe756d9862d3bb04c6be2bbb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 27 Jul 2025 20:48:06 +0100 Subject: [PATCH 1577/1588] home: zsh: use absolute path to 'XDG_CONFIG_HOME' The path handling has been fixed upstream, which makes this module more readable. --- modules/home/zsh/default.nix | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/modules/home/zsh/default.nix b/modules/home/zsh/default.nix index f4092d8..08b4101 100644 --- a/modules/home/zsh/default.nix +++ b/modules/home/zsh/default.nix @@ -1,14 +1,6 @@ { config, pkgs, lib, ... }: let cfg = config.my.home.zsh; - - # Have a nice relative path for XDG_CONFIG_HOME, without leading `/` - relativeXdgConfig = - let - noHome = lib.removePrefix config.home.homeDirectory; - noSlash = lib.removePrefix "/"; - in - noSlash (noHome config.xdg.configHome); in { options.my.home.zsh = with lib; { @@ -57,7 +49,7 @@ in programs.zsh = { enable = true; - dotDir = "${relativeXdgConfig}/zsh"; # Don't clutter $HOME + dotDir = "${config.xdg.configHome}/zsh"; # Don't clutter $HOME enableCompletion = true; history = { From 4b7c6c1f5eb7cbd7254a8f69050b17c9d4723837 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Tue, 29 Jul 2025 16:13:58 +0000 Subject: [PATCH 1578/1588] pkgs: comma: fix 'nix-locate' invocation --- pkgs/comma/comma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/comma/comma b/pkgs/comma/comma index 4367a26..857b9c9 100755 --- a/pkgs/comma/comma +++ b/pkgs/comma/comma @@ -12,7 +12,7 @@ usage() { find_program() { local CANDIDATE - CANDIDATE="$(nix-locate --top-level --minimal --at-root --whole-name "/bin/$1")" + CANDIDATE="$(nix-locate --minimal --at-root --whole-name "/bin/$1")" if [ "$(printf '%s\n' "$CANDIDATE" | wc -l)" -gt 1 ]; then CANDIDATE="$(printf '%s' "$CANDIDATE" | fzf-tmux)" fi From 7bef96197f22a2c54eb4b3b84649d48029a9b545 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Fri, 25 Jul 2025 17:57:07 +0200 Subject: [PATCH 1579/1588] hosts: nixos: porthos: secrets: update cross-seed --- .../servarr/cross-seed/configuration.json.age | Bin 1528 -> 1774 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age b/hosts/nixos/porthos/secrets/servarr/cross-seed/configuration.json.age index e319f3a823c4eb4c84b15f6630ea5fbf42f9092b..7a836c36b482dff72d9c8503976285e62a79f23c 100644 GIT binary patch delta 1750 zcmeyt{f>8nPJM}2Zl!N&aA2jAYmixvds(4tS($TzPg-S!g^7tvK}v3_XMSO6Szf+# zB$t1tmur!~g<+Vvub*F`TcNAFVMVg3n}>(Lp^=e~g;R2hUrLg(Np^m|0hg|wLUD11 zZfc5=si~o*LRLV2d0x7LwzrwTnO9Q2g-=vewqsaYetl+Ws-b?azF$a@bA~~=i&<n~ zMv1m_wy{AuS4pZ@VqvCBiD8y;Mv+Tms98};ZdjU|n}0y5e^x<xs8^v`L5`87b9jL- zm#(g^LO@A@W4L*4L_kJ{iKDZVtA0w7x2cCkid(+9lVN&cVoFs~PI_gwcDiFS7t>$Q z^!SSvN%eo{1+94K(eh+kMGAXL`;L2F-~Q`!J1u(CK2_RDK>wcagVdw8{@R=y<9>a* zDl09mp8b5v`m}nL6PEWDraiy*bb`jrg%jT$IC#}vCGF^gQ#>CJd~;_$xI1I|r_2wf zmdxhq6SsNte{VME+U_u=MpBT=#G&kZJG0qGp@}SU+Np}}^~v{F|L@UWYV&Pz^s_ro z-3NDEFA4CKbtzzt*lV{!U*dY`hPcS58b@|*+w}W=WTkCb;6d{w`^D?dZ`pKb_vH7R zZ*MDA`ub<?l?Q+B>Gregitk9;W-s|?SFecN$vLY%ZbvURHow03<7tDx?XUlxjs6>| zQ+Z*MM7c;6ugF)0Px3t?_1C`NXnD8ikmS9ijrZMbQxiW#SOrVY2z$ZGa)9Cdlx^z{ z@AT_f@AuWnxrg^i=Ydcb>4m?nz9xMs|KoYhS|iv)W|c(Zs*~S)x=hTnua(cq{rze2 zpVgx0-h4XnR!Bi<zMz<l(}9V1jDrI&ZL2#IGQ)n^<5jy#Z6CD$S@@cb|F6Q?`tz!> z<u&rmt+Uo}PQSUlIxDGLTw0KM(_XI(!w(*xFSDI_x?YX(#QQ~#++|HO)_)U_c~%wm z^w?X5=TDAL;ayrQS|;t<>$H8ISV_wF<XdyR3RgZd&3`4eNFuA<a_cYKbJv%s9Z{b8 z!O;2j#A7$BlD@EuUQa(3S@8A!zD4>W3LT;KD*aO>-u-;>;r0FfGH)ia9a9b2|BX9e zO>D#4_WkFyrcPo^?NIrAHeD#6FMrY%Z_W2Re=)H=ysNJjHu2JZt+Us+PLIn!SI<y! z`j^pz<P{8FE2diIDwRL|a%zg!ictAk%d!?}*u?hK8Gh0^^z8<>*L-*R9@W3o{;BZV z9&~JEzVxSFKefW?yPR_R-Gxq3a+*CIYiGOO^nC6Se4}Jy*xPo+v#EKaHzRYHt{%C1 zsACS>T)#)0KHROW>B@5btFIqmS+t<<$1+*&g>QbVPjePJ{Z^pH#=q3i!o%xM2rpyS zf64DB%0ty2*j(h{+Ox^<aGUEoKAi_;2mFJ)&dpS~)y&s*r#>J)cK<d0Q+aP=Ki&2e z`l`!Vm|P`RAfM#KlB&{hKHJ-0M6#i(-s@o`>xm~3zg6z0ADQQDoV8iK^@r#Cvua<R zd9NM6d)Kz)Os7esz`bKlDJR#?N{nn;7FyY|pGofZf|ZkY_+PYE+7}pnYe9bazoa9Y zajy@5)BCgT*}-F>63g1_c};9<GS3Na_ee>rP|G&@&F30EQGSVdzi@hh2j{P8Coa|& zGSwfAv<%F+@AGrA)Si7o=ApsKH=TDVaI7$s_V)WH+F7t)#AwQPo&S<IPMXN%G4gB9 zS7qR8WMf=)Q}CzwoV}{?u@XwbQp{Tp+w{jJ9Z?8%_!6}AMxpQ2$?XmH_3FPTZ_D~R zHEB+il;C>1E2j)zabDeUXQ!d$|Hd~$!Yif1V%JtH^2A2<d|tObYw3%~mkmB%FOF?7 zSgV@ueB1fu7U5(A?#nzm#>!{A^6$1qNJhS#G)FGs)au@qiT<x#o}2jjCQXm|WYu+k zPR+L}t4aUZwH{wmspihoym!g)=c~;691eC}%{JzuNv4*w=hSOFF)g2Cw_Mn4Y0~%2 zw|)h0_V&C#t?=&*LBoX`tgPqVf0<c&jpN>0Ia}MuvOd2nid}Ao`?DA)vR~;C?R&Co zf^uas-{Vt;3HJ9=I5_*hu9Ioy`H^dUxc>Kio=>T_@}}RdjXwQ*hv=&s`AG4&pLumZ zYwK_P3U65zIpNBk$(oa2D7XsDkq_=R{CT*4lhdkVu2REu_gqU_4!&|^*u@uD<;s@c zWqNscvY(%gOX#u*7dn!>%rzQk$^JUp{@p)&)hWiMUej7_x73J>Ic$kltPpfJJ>XV1 zmt(C*zgxGChSQ!!TbyPGe600;{%_F=MI(uN6IKO(3EkpZ*BKet7A;YzVe^(+bi?l2 zHg=busp(o-`!}7_?Bvu|*fz~{MoQY2Uh9;5wf1~5Qg>PdpQfyxcHc(Ee3y)3VlwYh P1Gy)sY9^+bro9IM@>nR= delta 1502 zcmaFI`-6LePJM)-VR?CgkBPZawo9aGMoCdYRk>4OQGumFMo6W5x^rP=Mt)AETV`3V z1(#E4QAJ@+N^qv5r>~)BvQubgdVynQWKwEazOiRuRf$n@d4RJ~l2Kr;1(&X!LUD11 zZfc5=si~o*LRLV2d0x7LTcA^FQMP_+ScYYkbCiF2Kz*uLx|y4Yvy+>npMhItskXmS zqIsZaWtO7}muXf=R=J;Zl8HxhR8p98WpSjBN1#htPF{*xP+m@HvU6p4X<2GTMrw)$ zm#(g^f>}hNuTxT<rJrknPiDHQrITAksefgfzl%X`c#>JMdzPPBsB^Mmo>ycf*D2@n z37;fCdeuv+?>w+R<0Yeo{}QfuMmN)!+&k=0a;^TSYwE4IY0U~Q?{9Yfw0X#~C0&SF zX}+aS((K$VJ-bblR?1ZG`JdIke`#ik!jg~Af1G*t+V950$FnqoQUr|mohx^EF@65T z!^>7rb@N!fc}v>LkM#>r%T@8aynXUz(Vrc1N_9sTE>E4Nw7mX$h0l{u+OqtM1bTj@ z{(q8F`{LD`c_O|u&izgQ`QeY>?OCTZ*t+M1PUGCN>2JW}-2Va(cQ3Qqb*%S#`^L*J zG+q`LyViT9Zd*R-NA%IVo*yc{RKzX66}P)FtGzy)v4%Z9f!XkKo!$0ChYdC^i?TxQ zn;!e4|M;`7(CJ-Ed03yy+^*NF)SaH%BJzKE^2OXKtanWAHZ%#J&b~Tv%d`CgUAeXM zmqgG0v{sNa#44C8s9yZV?WjFxZhl>tDqUQvv?~1K4ePy1>-d}J>u|1KJ8x&IqfYo+ zv*Wuy^8DMJ_IAY~9#8ikC1JDBo^u^VY~lYmh;NKyxvQY*wpb@t-T7Qi$XnlQ^#W44 zZ`SP8{vYOUcPhZZFKDgXN`tTQ-^=Rxdu|@>URiWR^t<<$J0G5AKAz@imKnqS{_7*H z#FFImH@qBwus*nwkZR2-_kL^j^KWZC&P&xjDY@4u!1R1$kMd!|Dd)3Oj?a-1@bQuJ zGhz?e+$&-I#Jc~q!JT&{OXn-=ZTu><_0+@qFGA5bx1N1jc_%AC@a99t6+hbVFjPD* zlbM&YU~#<HhQo6+o;?&u+xum^-K1^PgFjAe4B_1D@NSQ&{W90JbDsQpcYP0QQSZMp zgHKZ~ZBxAO8zV90SM6^8ttTd_RIgWCCwhll*=`-<TfV6`&3|4}sE%lGiu#*h*6n^c z+CuKeq1UGM^Vgc_zdMvJ_^x}`v~!CTZkZ(?NIe_&!1TJ^mAA#5@6T`KUObD{C%ao9 zsQB~7!<(6IU(H{#H9Dqx_vb*lm0fSPuw86^tHkj8n|=t}hjgx6>mT=C-yyD6{*CAU zbAcA213k_z6ZG$z|4<gzztNDix8}QS@5kQvK89TL_b%#HTPs=LcBIEBULelv^W8&N z3UUv6)c=&d^rzzFmB-iSRD8F!tv$bSuk>sdxvnDiormsueVi3I=hEAwk9|GFUKP*( zmVCWq#*6=IN3OVUo_;VjW9z5BgI6P(MYo&%yc#j-Pdb0amK!C$A9UOt4%p@|(ERo= zklTIkm2$WJ$%@ynyzZJ(QCwgD<iX4brkhtNe>r_KO<~sq1K!1b7eBA@YG1o_ZS9v8 z<^gMpl?pxQNNIoN50~D4D9GRL(1pc$?pxUA*sb!4%qx!Ga!2Fh)W#z7ZdRxIg}XfB zp55k34$-Wbeo<fMjXQIsWI1P8O_Y-U&Tk=W418)C{k67PNq8RS$XLIIb8kt-z54j| z8F^vPbc6T2QdN5Tnjw0@g`*Dlk^}bl-S~C==Zl}QeqwXOe8mja>Q+va{*q&I@m&wc zd^er?vXJvLKbtK3YbrlQ;`sKm-4o}XlD+TIschDg_~GD{&rUZ^itg#_SzfzD;_Y=d zZS&;ktru!-w(1*&1`97TayHfcbHvdhOU!CRc)|p!BKv182~T_$y*_L?x3<D%(x<;U zwa=8wx2}p(n4MXm=J5G*WLemfRV#O2deXk`w~dnbt|g4MjmEM@N&hzMKJN<n$g*GV UK&(_lF5l0Z#GsIGl7St<0HeCtfB*mh From f2e263ff8243228a88a8990cb613f03142288f64 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Aug 2025 00:11:26 +0200 Subject: [PATCH 1580/1588] nixos: services: matrix: refactor well-knowns --- modules/nixos/services/matrix/default.nix | 54 ++++++++++------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index f423834..b43dbcc 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -14,6 +14,26 @@ let clientPort = { public = 443; private = 11339; }; domain = config.networking.domain; matrixDomain = "matrix.${domain}"; + + serverConfig = { + "m.server" = "${matrixDomain}:${toString federationPort.public}"; + }; + clientConfig = { + "m.homeserver" = { + "base_url" = "https://${matrixDomain}"; + "server_name" = domain; + }; + "m.identity_server" = { + "base_url" = "https://vector.im"; + }; + }; + + # ACAO required to allow element-web on any URL to request this json file + mkWellKnown = data: '' + default_type application/json; + add_header Access-Control-Allow-Origin *; + return 200 '${builtins.toJSON data}'; + ''; in { options.my.services.matrix = with lib; { @@ -96,15 +116,7 @@ in chat = { root = pkgs.element-web.override { conf = { - default_server_config = { - "m.homeserver" = { - "base_url" = "https://${matrixDomain}"; - "server_name" = domain; - }; - "m.identity_server" = { - "base_url" = "https://vector.im"; - }; - }; + default_server_config = clientConfig; showLabsSettings = true; defaultCountryCode = "FR"; # cocorico roomDirectory = { @@ -176,28 +188,8 @@ in forceSSL = true; useACMEHost = domain; - locations."= /.well-known/matrix/server".extraConfig = - let - server = { "m.server" = "${matrixDomain}:${toString federationPort.public}"; }; - in - '' - add_header Content-Type application/json; - return 200 '${builtins.toJSON server}'; - ''; - - locations."= /.well-known/matrix/client".extraConfig = - let - client = { - "m.homeserver" = { "base_url" = "https://${matrixDomain}"; }; - "m.identity_server" = { "base_url" = "https://vector.im"; }; - }; - # ACAO required to allow element-web on any URL to request this json file - in - '' - add_header Content-Type application/json; - add_header Access-Control-Allow-Origin *; - return 200 '${builtins.toJSON client}'; - ''; + locations."= /.well-known/matrix/server".extraConfig = mkWellKnown serverConfig; + locations."= /.well-known/matrix/client".extraConfig = mkWellKnown clientConfig; }; }; From dc3f5c28d8758040998fa64230b85db8909f89ee Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Aug 2025 00:34:40 +0200 Subject: [PATCH 1581/1588] nixos: services: matrix: fix element-web config --- modules/nixos/services/matrix/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index b43dbcc..42f7b4e 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -117,10 +117,11 @@ in root = pkgs.element-web.override { conf = { default_server_config = clientConfig; - showLabsSettings = true; - defaultCountryCode = "FR"; # cocorico - roomDirectory = { + show_labs_settings = true; + default_country_code = "FR"; # cocorico + room_directory = { "servers" = [ + domain "matrix.org" "mozilla.org" ]; From f3964b07a0a3941845e3fb4dab452fd2cd78b475 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Aug 2025 10:39:55 +0200 Subject: [PATCH 1582/1588] nixos: services: matrix: simplify listeners --- modules/nixos/services/matrix/default.nix | 93 ++++++++--------------- 1 file changed, 30 insertions(+), 63 deletions(-) diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index 42f7b4e..83dac7c 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -10,13 +10,11 @@ let cfg = config.my.services.matrix; - federationPort = { public = 8448; private = 11338; }; - clientPort = { public = 443; private = 11339; }; domain = config.networking.domain; matrixDomain = "matrix.${domain}"; serverConfig = { - "m.server" = "${matrixDomain}:${toString federationPort.public}"; + "m.server" = "${matrixDomain}:443"; }; clientConfig = { "m.homeserver" = { @@ -39,6 +37,13 @@ in options.my.services.matrix = with lib; { enable = mkEnableOption "Matrix Synapse"; + port = mkOption { + type = types.port; + default = 8448; + example = 8008; + description = "Internal port for listeners"; + }; + secretFile = mkOption { type = with types; nullOr str; default = null; @@ -78,22 +83,22 @@ in enable_registration = false; listeners = [ - # Federation { + inherit (cfg) port; bind_addresses = [ "::1" ]; - port = federationPort.private; - tls = false; # Terminated by nginx. + type = "http"; + tls = false; x_forwarded = true; - resources = [{ names = [ "federation" ]; compress = false; }]; - } - - # Client - { - bind_addresses = [ "::1" ]; - port = clientPort.private; - tls = false; # Terminated by nginx. - x_forwarded = true; - resources = [{ names = [ "client" ]; compress = false; }]; + resources = [ + { + names = [ "client" ]; + compress = true; + } + { + names = [ "federation" ]; + compress = false; + } + ]; } ]; @@ -130,11 +135,8 @@ in }; }; # Dummy VHosts for port collision detection - matrix-federation = { - port = federationPort.private; - }; - matrix-client = { - port = clientPort.private; + matrix-dummy = { + inherit (cfg) port; }; }; @@ -144,45 +146,15 @@ in onlySSL = true; useACMEHost = domain; - locations = - let - proxyToClientPort = { - proxyPass = "http://[::1]:${toString clientPort.private}"; - }; - in - { - # Or do a redirect instead of the 404, or whatever is appropriate - # for you. But do not put a Matrix Web client here! See the - # Element web section below. - "/".return = "404"; + locations = { + # Or do a redirect instead of the 404, or whatever is appropriate + # for you. But do not put a Matrix Web client here! See the + # Element web section below. + "/".return = "404"; - "/_matrix" = proxyToClientPort; - "/_synapse/client" = proxyToClientPort; - }; - - listen = [ - { addr = "0.0.0.0"; port = clientPort.public; ssl = true; } - { addr = "[::]"; port = clientPort.public; ssl = true; } - ]; - - }; - - # same as above, but listening on the federation port - "${matrixDomain}_federation" = { - onlySSL = true; - serverName = matrixDomain; - useACMEHost = domain; - - locations."/".return = "404"; - - locations."/_matrix" = { - proxyPass = "http://[::1]:${toString federationPort.private}"; + "/_matrix".proxyPass = "http://[::1]:${toString cfg.port}"; + "/_synapse/client".proxyPass = "http://[::1]:${toString cfg.port}"; }; - - listen = [ - { addr = "0.0.0.0"; port = federationPort.public; ssl = true; } - { addr = "[::]"; port = federationPort.public; ssl = true; } - ]; }; "${domain}" = { @@ -197,11 +169,6 @@ in # For administration tools. environment.systemPackages = [ pkgs.matrix-synapse ]; - networking.firewall.allowedTCPPorts = [ - clientPort.public - federationPort.public - ]; - my.services.backup = { paths = [ config.services.matrix-synapse.dataDir From 25106bee3c23cd59adeb3d282d495fcf85d1ba35 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Aug 2025 10:42:23 +0200 Subject: [PATCH 1583/1588] nixos: services: matrix: simplify VHost --- modules/nixos/services/matrix/default.nix | 31 ++++++++++------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index 83dac7c..763d9b1 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -134,29 +134,26 @@ in }; }; }; - # Dummy VHosts for port collision detection - matrix-dummy = { + matrix = { + # Somewhat unused, but necessary for port collision detection inherit (cfg) port; + + extraConfig = { + locations = { + # Or do a redirect instead of the 404, or whatever is appropriate + # for you. But do not put a Matrix Web client here! See the + # Element web section below. + "/".return = "404"; + + "/_matrix".proxyPass = "http://[::1]:${toString cfg.port}"; + "/_synapse/client".proxyPass = "http://[::1]:${toString cfg.port}"; + }; + }; }; }; # Those are too complicated to use my wrapper... services.nginx.virtualHosts = { - ${matrixDomain} = { - onlySSL = true; - useACMEHost = domain; - - locations = { - # Or do a redirect instead of the 404, or whatever is appropriate - # for you. But do not put a Matrix Web client here! See the - # Element web section below. - "/".return = "404"; - - "/_matrix".proxyPass = "http://[::1]:${toString cfg.port}"; - "/_synapse/client".proxyPass = "http://[::1]:${toString cfg.port}"; - }; - }; - "${domain}" = { forceSSL = true; useACMEHost = domain; From f907c97ccfd0567dcd9a6b56258d88419f7f8fcb Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Aug 2025 11:06:04 +0200 Subject: [PATCH 1584/1588] nixos: services: matrix: fix proxy to synapse I want to make use of the `/_synapse/matrix/` sub-path, so just proxy the whole of `/_synapse/`. --- modules/nixos/services/matrix/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index 763d9b1..dfd5b50 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -146,7 +146,7 @@ in "/".return = "404"; "/_matrix".proxyPass = "http://[::1]:${toString cfg.port}"; - "/_synapse/client".proxyPass = "http://[::1]:${toString cfg.port}"; + "/_synapse".proxyPass = "http://[::1]:${toString cfg.port}"; }; }; }; From 0032beb7ec116f683b43061ae7ec48e8ad4c4d2c Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Aug 2025 11:07:37 +0200 Subject: [PATCH 1585/1588] nixos: services: matrix: add admin interface --- modules/nixos/services/matrix/default.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index dfd5b50..837d150 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -10,6 +10,8 @@ let cfg = config.my.services.matrix; + adminPkg = pkgs.synapse-admin-etkecc; + domain = config.networking.domain; matrixDomain = "matrix.${domain}"; @@ -147,6 +149,22 @@ in "/_matrix".proxyPass = "http://[::1]:${toString cfg.port}"; "/_synapse".proxyPass = "http://[::1]:${toString cfg.port}"; + + "= /admin".return = "307 /admin/"; + "/admin/" = { + alias = "${adminPkg}/"; + priority = 500; + tryFiles = "$uri $uri/ /index.html"; + }; + "~ ^/admin/.*\\.(?:css|js|jpg|jpeg|gif|png|svg|ico|woff|woff2|ttf|eot|webp)$" = { + priority = 400; + root = adminPkg; + extraConfig = '' + rewrite ^/admin/(.*)$ /$1 break; + expires 30d; + more_set_headers "Cache-Control: public"; + ''; + }; }; }; }; From 619010970bacf07a961d055e259d0aa899ee14cf Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Aug 2025 20:06:40 +0200 Subject: [PATCH 1586/1588] nixos: services: matrix: remove obsolete comment --- modules/nixos/services/matrix/default.nix | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index 837d150..483a72a 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -1,10 +1,4 @@ -# Matrix homeserver setup, using different endpoints for federation and client -# traffic. The main trick for this is defining two nginx servers endpoints for -# matrix.domain.com, each listening on different ports. -# -# Configuration shamelessly stolen from [1] -# -# [1]: https://github.com/alarsyo/nixos-config/blob/main/services/matrix.nix +# Matrix homeserver setup. { config, lib, pkgs, ... }: let From 6d9ed122b0908f80fac166235024b8c435d9651f Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sun, 3 Aug 2025 22:28:22 +0200 Subject: [PATCH 1587/1588] nixos: services: matrix: add Facebook bridge I probably won't actually use it, after test-driving it quickly. But now that the effort has been expanded, might as well keep it if only as a future reference. --- modules/nixos/services/matrix/bridges.nix | 143 ++++++++++++++++++++++ modules/nixos/services/matrix/default.nix | 4 + 2 files changed, 147 insertions(+) create mode 100644 modules/nixos/services/matrix/bridges.nix diff --git a/modules/nixos/services/matrix/bridges.nix b/modules/nixos/services/matrix/bridges.nix new file mode 100644 index 0000000..70f4118 --- /dev/null +++ b/modules/nixos/services/matrix/bridges.nix @@ -0,0 +1,143 @@ +# Matrix bridges for some services I use +{ config, lib, ... }: +let + cfg = config.my.services.matrix.bridges; + synapseCfg = config.services.matrix-synapse; + + domain = config.networking.domain; + serverName = synapseCfg.settings.server_name; + + mkBridgeOption = n: lib.mkEnableOption "${n} bridge" // { default = cfg.enable; }; + mkPortOption = n: default: lib.mkOption { + type = lib.types.port; + inherit default; + example = 8080; + description = "${n} bridge port"; + }; + mkEnvironmentFileOption = n: lib.mkOption { + type = lib.types.str; + example = "/run/secret/matrix/${lib.toLower n}-bridge-secrets.env"; + description = '' + Path to a file which should contain the secret values for ${n} bridge. + + Using through the following format: + + ``` + MATRIX_APPSERVICE_AS_TOKEN=<the_as_value> + MATRIX_APPSERVICE_HS_TOKEN=<the_hs_value> + ``` + + Each bridge should use a different set of secrets, as they each register + their own independent double-puppetting appservice. + ''; + }; +in +{ + options.my.services.matrix.bridges = with lib; { + enable = mkEnableOption "bridges configuration"; + + admin = mkOption { + type = types.str; + default = "ambroisie"; + example = "admin"; + description = "Local username for the admin"; + }; + + facebook = { + enable = mkBridgeOption "Facebook"; + + port = mkPortOption "Facebook" 29321; + + environmentFile = mkEnvironmentFileOption "Facebook"; + }; + }; + + config = lib.mkMerge [ + (lib.mkIf cfg.facebook.enable { + services.mautrix-meta.instances.facebook = { + enable = true; + # Automatically register the bridge with synapse + registerToSynapse = true; + + # Provide `AS_TOKEN`, `HS_TOKEN` + inherit (cfg.facebook) environmentFile; + + settings = { + homeserver = { + domain = serverName; + address = "http://localhost:${toString config.my.services.matrix.port}"; + }; + + appservice = { + hostname = "localhost"; + inherit (cfg.facebook) port; + address = "http://localhost:${toString cfg.facebook.port}"; + public_address = "https://facebook-bridge.${domain}"; + + as_token = "$MATRIX_APPSERVICE_AS_TOKEN"; + hs_token = "$MATRIX_APPSERVICE_HS_TOKEN"; + + bot = { + username = "fbbot"; + }; + }; + + backfill = { + enabled = true; + }; + + bridge = { + delivery_receipts = true; + permissions = { + "*" = "relay"; + ${serverName} = "user"; + "@${cfg.admin}:${serverName}" = "admin"; + }; + }; + + database = { + type = "postgres"; + uri = "postgres:///mautrix-meta-facebook?host=/var/run/postgresql/"; + }; + + double_puppet = { + secrets = { + ${serverName} = "as_token:$MATRIX_APPSERVICE_AS_TOKEN"; + }; + }; + + network = { + # Don't be picky on Facebook/Messenger + allow_messenger_com_on_fb = true; + displayname_template = ''{{or .DisplayName .Username "Unknown user"}} (FB)''; + }; + + provisioning = { + shared_secret = "disable"; + }; + }; + }; + + services.postgresql = { + enable = true; + ensureDatabases = [ "mautrix-meta-facebook" ]; + ensureUsers = [{ + name = "mautrix-meta-facebook"; + ensureDBOwnership = true; + }]; + }; + + systemd.services.mautrix-meta-facebook = { + wants = [ "postgres.service" ]; + after = [ "postgres.service" ]; + }; + + my.services.nginx.virtualHosts = { + # Proxy to the bridge + "facebook-bridge" = { + inherit (cfg.facebook) port; + }; + }; + }) + ]; +} diff --git a/modules/nixos/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix index 483a72a..04d24a0 100644 --- a/modules/nixos/services/matrix/default.nix +++ b/modules/nixos/services/matrix/default.nix @@ -30,6 +30,10 @@ let ''; in { + imports = [ + ./bridges.nix + ]; + options.my.services.matrix = with lib; { enable = mkEnableOption "Matrix Synapse"; From 2bf5ae32cf9bc369123f618a9a76ae083a8f6667 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI <bruno@belanyi.fr> Date: Sat, 2 Aug 2025 14:46:32 +0200 Subject: [PATCH 1588/1588] nixos: services: add thelounge --- modules/nixos/services/default.nix | 1 + modules/nixos/services/thelounge/default.nix | 59 ++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 modules/nixos/services/thelounge/default.nix diff --git a/modules/nixos/services/default.nix b/modules/nixos/services/default.nix index 27f8765..e03eca1 100644 --- a/modules/nixos/services/default.nix +++ b/modules/nixos/services/default.nix @@ -38,6 +38,7 @@ ./servarr ./ssh-server ./tandoor-recipes + ./thelounge ./tlp ./transmission ./vikunja diff --git a/modules/nixos/services/thelounge/default.nix b/modules/nixos/services/thelounge/default.nix new file mode 100644 index 0000000..e224839 --- /dev/null +++ b/modules/nixos/services/thelounge/default.nix @@ -0,0 +1,59 @@ +# Web IRC client +{ config, lib, ... }: +let + cfg = config.my.services.thelounge; +in +{ + options.my.services.thelounge = with lib; { + enable = mkEnableOption "The Lounge, a self-hosted web IRC client"; + + port = mkOption { + type = types.port; + default = 9050; + example = 4242; + description = "The port on which The Lounge will listen for incoming HTTP traffic."; + }; + }; + + config = lib.mkIf cfg.enable { + services.thelounge = { + enable = true; + inherit (cfg) port; + + extraConfig = { + reverseProxy = true; + }; + }; + + my.services.nginx.virtualHosts = { + irc = { + inherit (cfg) port; + # Proxy websockets for RPC + websocketsLocations = [ "/" ]; + + extraConfig = { + locations."/".extraConfig = '' + proxy_read_timeout 1d; + ''; + }; + }; + }; + + services.fail2ban.jails = { + thelounge = '' + enabled = true + filter = thelounge + port = http,https + ''; + }; + + environment.etc = { + "fail2ban/filter.d/thelounge.conf".text = '' + [Definition] + failregex = Authentication failed for user .* from <HOST>$ + Authentication for non existing user attempted from <HOST>$ + journalmatch = _SYSTEMD_UNIT=thelounge.service + ''; + }; + }; +}