diff --git a/.envrc b/.envrc
index 95ed6fb..f5141c2 100644
--- a/.envrc
+++ b/.envrc
@@ -1,10 +1,8 @@
-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 3.0.0; then
+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg="
fi
-use flake
-
watch_file ./flake/checks.nix
watch_file ./flake/dev-shells.nix
-eval "$shellHooks"
+use flake
diff --git a/.woodpecker/check.yml b/.woodpecker/check.yml
index c3b00ef..aff6e84 100644
--- a/.woodpecker/check.yml
+++ b/.woodpecker/check.yml
@@ -1,7 +1,7 @@
labels:
- type: exec
+ backend: local
-pipeline:
+steps:
- name: nix flake check
image: bash
commands:
diff --git a/bootstrap.sh b/bootstrap.sh
index b1c418e..db1662e 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
@@ -10,7 +11,6 @@ BOLD_GREEN="\e[0;1;32m"
RESET="\e[0m"
-DEST="$HOME/.config/nixpkgs"
BW_SESSION=""
warn() {
diff --git a/flake.lock b/flake.lock
index cf667c4..4773d30 100644
--- a/flake.lock
+++ b/flake.lock
@@ -8,14 +8,17 @@
],
"nixpkgs": [
"nixpkgs"
+ ],
+ "systems": [
+ "systems"
]
},
"locked": {
- "lastModified": 1683866323,
- "narHash": "sha256-M2bEuh2jr0Ec13GnP5f8unD8q0AcPt2fHSUynOZJ8No=",
+ "lastModified": 1703433843,
+ "narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=",
"owner": "ryantm",
"repo": "agenix",
- "rev": "92197270a1eedd142a4aff853e4cc6d1e838c22f",
+ "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": {
@@ -50,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": {
@@ -70,11 +73,11 @@
]
},
"locked": {
- "lastModified": 1683560683,
- "narHash": "sha256-XAygPMN5Xnk/W2c1aW0jyEa6lfMDZWlQgiNtmHXytPc=",
+ "lastModified": 1706830856,
+ "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=",
"owner": "hercules-ci",
"repo": "flake-parts",
- "rev": "006c75898cf814ef9497252b022e91c946ba8e17",
+ "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f",
"type": "github"
},
"original": {
@@ -86,14 +89,16 @@
},
"futils": {
"inputs": {
- "systems": "systems"
+ "systems": [
+ "systems"
+ ]
},
"locked": {
- "lastModified": 1681202837,
- "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
+ "lastModified": 1705309234,
+ "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
+ "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
@@ -111,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": {
@@ -131,11 +136,11 @@
]
},
"locked": {
- "lastModified": 1683883222,
- "narHash": "sha256-Tow+8GKwNNk2NvXoBwS/VBP8lpOdqIeeJ46ZU2fw5QU=",
+ "lastModified": 1707175763,
+ "narHash": "sha256-0MKHC6tQ4KEuM5rui6DjKZ/VNiSANB4E+DJ/+wPS1PU=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "a835096fd2bcc369f57b76b9b17cc00348f595f5",
+ "rev": "f99eace7c167b8a6a0871849493b1c613d0f1b80",
"type": "github"
},
"original": {
@@ -147,11 +152,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1683408522,
- "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
+ "lastModified": 1707092692,
+ "narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
+ "rev": "faf912b086576fd1a15fca610166c98d47bc667e",
"type": "github"
},
"original": {
@@ -163,11 +168,11 @@
},
"nur": {
"locked": {
- "lastModified": 1683884754,
- "narHash": "sha256-o3JF2SZJIwnz2YXwS0tb+CZqfXTABZDTdCjOG6fahIA=",
+ "lastModified": 1707234300,
+ "narHash": "sha256-D+LdA8g0Tq+KE9EmJMmn8EGRO5jZ2nLe/W0Fr5EIsdg=",
"owner": "nix-community",
"repo": "NUR",
- "rev": "ee3497fa69c9c48ec7e4c0ffc1610ea543497633",
+ "rev": "59fceae769455455ef44c1dfb63bbae1ecddc41d",
"type": "github"
},
"original": {
@@ -192,11 +197,11 @@
]
},
"locked": {
- "lastModified": 1682596858,
- "narHash": "sha256-Hf9XVpqaGqe/4oDGr30W8HlsWvJXtMsEPHDqHZA6dDg=",
+ "lastModified": 1706424699,
+ "narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
- "rev": "fb58866e20af98779017134319b5663b8215d912",
+ "rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf",
"type": "github"
},
"original": {
@@ -214,7 +219,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 +234,7 @@
},
"original": {
"owner": "nix-systems",
+ "ref": "main",
"repo": "default",
"type": "github"
}
diff --git a/flake.nix b/flake.nix
index 8e46ea3..9c29183 100644
--- a/flake.nix
+++ b/flake.nix
@@ -9,6 +9,7 @@
inputs = {
home-manager.follows = "home-manager";
nixpkgs.follows = "nixpkgs";
+ systems.follows = "systems";
};
};
@@ -27,6 +28,9 @@
owner = "numtide";
repo = "flake-utils";
ref = "main";
+ inputs = {
+ systems.follows = "systems";
+ };
};
home-manager = {
@@ -64,6 +68,13 @@
nixpkgs-stable.follows = "nixpkgs";
};
};
+
+ systems = {
+ type = "github";
+ owner = "nix-systems";
+ repo = "default";
+ ref = "main";
+ };
};
# Can't eta-reduce a flake outputs...
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; [
diff --git a/flake/home-manager.nix b/flake/home-manager.nix
index c55c8dd..34af375 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";
@@ -39,8 +39,9 @@ let
};
};
- hosts = {
- "ambroisie@ambroisie" = "x86_64-linux"; # Unfortunate naming here...
+ homes = {
+ "ambroisie@bazin" = "x86_64-linux";
+ "ambroisie@mousqueton" = "x86_64-linux";
};
in
{
@@ -49,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;
};
};
}
diff --git a/flake/nixos.nix b/flake/nixos.nix
index 9eb6388..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
@@ -13,9 +11,7 @@ let
];
}
# Include generic settings
- "${self}/modules"
- # Include bundles of settings
- "${self}/profiles"
+ "${self}/modules/nixos"
];
buildHost = name: system: lib.nixosSystem {
@@ -25,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;
};
diff --git a/home/comma/default.nix b/home/comma/default.nix
deleted file mode 100644
index cc6a0ad..0000000
--- a/home/comma/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
- cfg = config.my.home.comma;
-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;
- };
- };
-}
diff --git a/home/default.nix b/home/default.nix
deleted file mode 100644
index 8af9240..0000000
--- a/home/default.nix
+++ /dev/null
@@ -1,53 +0,0 @@
-{ ... }:
-{
- imports = [
- ./aliases
- ./atuin
- ./bat
- ./bluetooth
- ./comma
- ./dircolors
- ./direnv
- ./discord
- ./documentation
- ./feh
- ./firefox
- ./flameshot
- ./fzf
- ./gammastep
- ./gdb
- ./git
- ./gpg
- ./gtk
- ./htop
- ./jq
- ./mail
- ./mpv
- ./nix
- ./nix-index
- ./nm-applet
- ./packages
- ./pager
- ./power-alert
- ./secrets
- ./ssh
- ./terminal
- ./tmux
- ./udiskie
- ./vim
- ./wm
- ./x
- ./xdg
- ./zathura
- ./zsh
- ];
-
- # First sane reproducible version
- home.stateVersion = "20.09";
-
- # Who am I?
- home.username = "ambroisie";
-
- # Start services automatically
- systemd.user.startServices = "sd-switch";
-}
diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh
deleted file mode 100644
index 2d40b20..0000000
--- a/home/direnv/lib/nix.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#shellcheck shell=bash
-
-use_pkgs() {
- if ! has nix; then
- # shellcheck disable=2016
- log_error 'use_pkgs: `nix` is not in PATH'
- return 1
- fi
-
- # 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
- 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
-}
diff --git a/home/secrets/secrets.nix b/home/secrets/secrets.nix
deleted file mode 100644
index eb9745f..0000000
--- a/home/secrets/secrets.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-# Common secrets
-let
- keys = import ../../keys;
-
- # deadnix: skip
- all = keys.users;
-in
-{
- # Add secrets here
-}
diff --git a/home/ssh/default.nix b/home/ssh/default.nix
deleted file mode 100644
index 123190f..0000000
--- a/home/ssh/default.nix
+++ /dev/null
@@ -1,54 +0,0 @@
-{ config, lib, ... }:
-let
- cfg = config.my.home.ssh;
-in
-{
- options.my.home.ssh = with lib; {
- enable = my.mkDisableOption "ssh configuration";
- };
-
- config.programs.ssh = lib.mkIf cfg.enable {
- enable = true;
-
- includes = [
- # Local configuration, not-versioned
- "config.local"
- ];
-
- 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
- '';
- };
-}
diff --git a/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix
deleted file mode 100644
index 5a561f7..0000000
--- a/hosts/homes/ambroisie@ambroisie/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-# Google Cloudtop configuration
-{ ... }:
-{
- # Google specific configuration
- home.homeDirectory = "/usr/local/google/home/ambroisie";
-
- # 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";
- };
-
- systemd.user.sessionVariables = {
- LD_PRELOAD = "/lib/x86_64-linux-gnu/libnss_cache.so.2\${LD_PRELOAD:+:}$LD_PRELOAD";
- };
-}
diff --git a/hosts/homes/ambroisie@bazin/default.nix b/hosts/homes/ambroisie@bazin/default.nix
new file mode 100644
index 0000000..a969d8a
--- /dev/null
+++ b/hosts/homes/ambroisie@bazin/default.nix
@@ -0,0 +1,25 @@
+# Google Laptop configuration
+{ lib, pkgs, ... }:
+{
+ 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;
+
+ # HTerm uses `xterm-256color` as its `$TERM`, so use that here
+ trueColorTerminals = [ "xterm-256color" ];
+ };
+
+ ssh = {
+ mosh = {
+ package = pkgs.emptyDirectory;
+ };
+ };
+ };
+}
diff --git a/hosts/homes/ambroisie@mousqueton/default.nix b/hosts/homes/ambroisie@mousqueton/default.nix
new file mode 100644
index 0000000..5c0a963
--- /dev/null
+++ b/hosts/homes/ambroisie@mousqueton/default.nix
@@ -0,0 +1,22 @@
+# Google Cloudtop configuration
+{ lib, pkgs, ... }:
+{
+ # Google specific configuration
+ home.homeDirectory = "/usr/local/google/home/ambroisie";
+
+ 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;
+
+ # HTerm uses `xterm-256color` as its `$TERM`, so use that here
+ trueColorTerminals = [ "xterm-256color" ];
+ };
+ };
+}
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/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 = {
diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix
index cdacf04..66a0892 100644
--- a/hosts/nixos/aramis/home.nix
+++ b/hosts/nixos/aramis/home.nix
@@ -1,6 +1,10 @@
{ pkgs, ... }:
{
my.home = {
+ # Use graphical pinentry
+ bitwarden.pinentry = "gtk2";
+ # Ebook library
+ calibre.enable = true;
# Some amount of social life
discord.enable = true;
# Image viewver
@@ -16,7 +20,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
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/hosts/nixos/porthos/boot.nix b/hosts/nixos/porthos/boot.nix
index 3b56eb9..fbc5db7 100644
--- a/hosts/nixos/porthos/boot.nix
+++ b/hosts/nixos/porthos/boot.nix
@@ -6,9 +6,8 @@
# 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";
+ device = "/dev/disk/by-id/ata-HGST_HUS724020ALA640_PN2181P6J58M1P";
};
initrd = {
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/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;
};
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
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 ssh-ed25519 cKojmg bQFr9oAnbo1rI/MpUV8wQz/Xj7iZY4ZU+Swf0nSIQFw
+zama2XJ0gdvUlD2GHMhmZqHSxHe+dKSfXnHoWDcSw7Y
+-> ssh-ed25519 jPowng gitUwSKTNKWLSxnwa185O7x/u0ul93g8wPESdZaKRk8
+uvBIfAUkZp5sg6rfeEGvL5ZDV8m2uSEotW02kjPN3Hw
+--- SZxe5f/CUZBvPQa2Sz/UBY3L68rMkIGGRuZPk7YE+Vg
+r&{~v?}=
+}+
SQM[]kMAtmM/Ls|ޅmCiYC}x
\ No newline at end of file
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/backup/credentials.age b/hosts/nixos/porthos/secrets/backup/credentials.age
index b8ea008..63f0d32 100644
Binary files a/hosts/nixos/porthos/secrets/backup/credentials.age and b/hosts/nixos/porthos/secrets/backup/credentials.age differ
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 90ff83b..6b68503 100644
Binary files a/hosts/nixos/porthos/secrets/drone/gitea.age and b/hosts/nixos/porthos/secrets/drone/gitea.age differ
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!߇'Tad5U:[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 0211701..737777d 100644
Binary files a/hosts/nixos/porthos/secrets/drone/ssh/private-key.age and b/hosts/nixos/porthos/secrets/drone/ssh/private-key.age differ
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 fa310b4..1d9c5ba 100644
Binary files a/hosts/nixos/porthos/secrets/lohr/secret.age and b/hosts/nixos/porthos/secrets/lohr/secret.age differ
diff --git a/hosts/nixos/porthos/secrets/lohr/ssh-key.age b/hosts/nixos/porthos/secrets/lohr/ssh-key.age
index 30a5e25..477a4d1 100644
Binary files a/hosts/nixos/porthos/secrets/lohr/ssh-key.age and b/hosts/nixos/porthos/secrets/lohr/ssh-key.age differ
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 539c33e..2c8852d 100644
Binary files a/hosts/nixos/porthos/secrets/matrix/secret.age and b/hosts/nixos/porthos/secrets/matrix/secret.age differ
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..e938cfa
--- /dev/null
+++ b/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age
@@ -0,0 +1,8 @@
+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=wBUpJClOș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 9790159..00d89a4 100644
Binary files a/hosts/nixos/porthos/secrets/miniflux/credentials.age and b/hosts/nixos/porthos/secrets/miniflux/credentials.age differ
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ɞ.hwwq%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
ssh-ed25519 cKojmg uz/Zf2uv+q7f3CVEoDuThHdqKE12lgHMDaORjZR/R2M
+HqsqZouRxocuHOic08c2oURw2I95BM9CzgEv7FPsWwM
+-> ssh-ed25519 jPowng N0HG0fB19MUa2fOIdpKxOZOWjdUgEmKOjIP4hkx1JFo
+MAgTWh9d5d75iuzfA2eQ5P8ltSXZJ42dAT82YLGy0hs
+--- g9KaXbUtmB05NWkGDSyWxEzo9woQaHHb+TtpvXfcpM4
+cX ȧ5 b2-"RSI&Qt[QZFk.PO ?LSt-Kj
\ No newline at end of file
diff --git a/hosts/nixos/porthos/secrets/nextcloud/password.age b/hosts/nixos/porthos/secrets/nextcloud/password.age
index 9fd3c53..9039eea 100644
Binary files a/hosts/nixos/porthos/secrets/nextcloud/password.age and b/hosts/nixos/porthos/secrets/nextcloud/password.age differ
diff --git a/hosts/nixos/porthos/secrets/nix-cache/cache-key.age b/hosts/nixos/porthos/secrets/nix-cache/cache-key.age
new file mode 100644
index 0000000..17732ed
--- /dev/null
+++ b/hosts/nixos/porthos/secrets/nix-cache/cache-key.age
@@ -0,0 +1,7 @@
+age-encryption.org/v1
+-> ssh-ed25519 cKojmg 8hV+BAKLsq8H/cxsklzuK2Q0/CqwjW6q8xMMJ0EaMDI
+LUjA2/qZAAeYjW6TtvmifBUo/WGigKwed6p7RnGjRyA
+-> ssh-ed25519 jPowng wrJBGPfY2a8HLoqO12/YIzCB40tZmbAlFTVrDrxrCnE
+9ARASO4ZPEyQoBIrs/u8FovkzugQ4fIrZObUVBZ+UAs
+--- WKMVJ4dhRAUelxXc7bJ6+UNOSrHxI4LhPo3i0RaHk7A
+˯9Q5
Ji)TS8+3|&"qFF+vɂWj˖MOV'\vK$52ھ,l,̹OgڬL78!QR$ićͰ8>BФbфfDc/qWD'g9
\ No newline at end of file
diff --git a/hosts/nixos/porthos/secrets/nix-serve/cache-key.age b/hosts/nixos/porthos/secrets/nix-serve/cache-key.age
deleted file mode 100644
index e0fb5be..0000000
Binary files a/hosts/nixos/porthos/secrets/nix-serve/cache-key.age and /dev/null differ
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/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_ 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ܞm2u~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
new file mode 100644
index 0000000..864e5be
--- /dev/null
+++ b/hosts/nixos/porthos/secrets/vikunja/mail.age
@@ -0,0 +1,9 @@
+age-encryption.org/v1
+-> ssh-ed25519 cKojmg o5UoCsI4rvzJ84AQsumbyEngllUcSQB0lZw9F0zK82A
+xRcqV+QOqvpeMZiNCdWVhiRaEBayf3cv65xcrIKTfyI
+-> ssh-ed25519 jPowng zFZTStqeaFy+HJGN3EV29+Qtf+oaXTKsZNnhetvlNz4
+5dsAyBzbJ3If1KO9vvrO5UHvFfKq154xTvQbu50TFGc
+--- /MjYRy6PXkzAcTMMqt84/+SkKFcuGbdFZ3BXHZ15yzY
+/\Q'K0
+5]QzO\ޕLf^<+Cv )"6ڷ?soHx7}v1&" F%%|'#dVU)?p}odS|T;ɋ]fMx>h3{W.1&L)߱=k0SSb|V)TB:.lrIf8!~Je<3?;k$Hk +6`#VOt0
+
\ No newline at end of file
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 e6ede6c..11817ff 100644
Binary files a/hosts/nixos/porthos/secrets/woodpecker/gitea.age and b/hosts/nixos/porthos/secrets/woodpecker/gitea.age differ
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 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 [ ];
}
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/modules/home/bitwarden/default.nix b/modules/home/bitwarden/default.nix
new file mode 100644
index 0000000..c709f7b
--- /dev/null
+++ b/modules/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/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/modules/home/calibre/default.nix b/modules/home/calibre/default.nix
new file mode 100644
index 0000000..6edf654
--- /dev/null
+++ b/modules/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
+ ];
+ };
+}
diff --git a/modules/home/comma/default.nix b/modules/home/comma/default.nix
new file mode 100644
index 0000000..60de863
--- /dev/null
+++ b/modules/home/comma/default.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/modules/home/default.nix b/modules/home/default.nix
index 1e0e0aa..c8183cf 100644
--- a/modules/home/default.nix
+++ b/modules/home/default.nix
@@ -1,29 +1,58 @@
-{ config, inputs, lib, ... }:
-let
- actualPath = [ "home-manager" "users" config.my.user.name "my" "home" ];
- aliasPath = [ "my" "home" ];
-
- cfg = config.my.user.home;
-in
+{ ... }:
{
imports = [
- inputs.home-manager.nixosModules.home-manager # enable home-manager options
- (lib.mkAliasOptionModule aliasPath actualPath) # simplify setting home options
+ ./aliases
+ ./atuin
+ ./bat
+ ./bitwarden
+ ./bluetooth
+ ./calibre
+ ./comma
+ ./dircolors
+ ./direnv
+ ./discord
+ ./documentation
+ ./feh
+ ./firefox
+ ./flameshot
+ ./fzf
+ ./gammastep
+ ./gdb
+ ./git
+ ./gpg
+ ./gtk
+ ./htop
+ ./jq
+ ./keyboard
+ ./mail
+ ./mpv
+ ./nix
+ ./nix-index
+ ./nixpkgs
+ ./nm-applet
+ ./packages
+ ./pager
+ ./power-alert
+ ./secrets
+ ./ssh
+ ./terminal
+ ./tmux
+ ./udiskie
+ ./vim
+ ./wget
+ ./wm
+ ./x
+ ./xdg
+ ./zathura
+ ./zsh
];
- 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;
+ # First sane reproducible version
+ home.stateVersion = "20.09";
- # Nix Flakes compatibility
- useGlobalPkgs = true;
- useUserPackages = true;
+ # Who am I?
+ home.username = "ambroisie";
- # Forward inputs to home-manager configuration
- extraSpecialArgs = {
- inherit inputs;
- };
- };
- };
+ # Start services automatically
+ systemd.user.startServices = "sd-switch";
}
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/modules/home/direnv/lib/android.sh b/modules/home/direnv/lib/android.sh
new file mode 100644
index 0000000..fa2f856
--- /dev/null
+++ b/modules/home/direnv/lib/android.sh
@@ -0,0 +1,57 @@
+#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_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_NDK_HOME="$ANDROID_HOME/ndk/$ndk_version"
+ export ANDROID_ROOT="$ANDROID_HOME"
+ export ANDROID_SDK_ROOT="$ANDROID_HOME"
+ export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME"
+
+ PATH_add "$ANDROID_NDK_HOME"
+ PATH_add "$ANDROID_HOME/build-tools/$build_tools_version"
+}
diff --git a/modules/home/direnv/lib/nix.sh b/modules/home/direnv/lib/nix.sh
new file mode 100644
index 0000000..a65eb31
--- /dev/null
+++ b/modules/home/direnv/lib/nix.sh
@@ -0,0 +1,69 @@
+#shellcheck shell=bash
+
+use_pkgs() {
+ if ! has nix; then
+ # shellcheck disable=2016
+ log_error 'use_pkgs: `nix` is not in PATH'
+ return 1
+ fi
+
+ # 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
+ case "$1" in
+ -b|--broken)
+ args+=(--impure)
+ export NIXPKGS_ALLOW_BROKEN=1
+ shift
+ ;;
+ -f|--flake)
+ DEFAULT_FLAKE="$2"
+ shift 2
+ ;;
+ -i|--impure)
+ args+=(--impure)
+ shift
+ ;;
+ -s|--insecure)
+ args+=(--impure)
+ export NIXPKGS_ALLOW_INSECURE=1
+ shift
+ ;;
+ -u|--unfree)
+ args+=(--impure)
+ export NIXPKGS_ALLOW_UNFREE=1
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ break
+ ;;
+ esac
+ done
+
+
+ # 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 "${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
+}
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 92%
rename from home/firefox/default.nix
rename to modules/home/firefox/default.nix
index 61c8d64..02c74f2 100644
--- a/home/firefox/default.nix
+++ b/modules/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.ff2mpv-go
);
};
@@ -57,8 +54,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
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 87%
rename from home/firefox/tridactyl/tridactylrc
rename to modules/home/firefox/tridactyl/tridactylrc
index 31d3cb7..4dc53cf 100644
--- a/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"]
@@ -69,8 +69,6 @@ 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 {{{
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 91%
rename from home/gdb/default.nix
rename to modules/home/gdb/default.nix
index c498048..ab51938 100644
--- a/home/gdb/default.nix
+++ b/modules/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
];
})
- ];
+ ]);
}
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 96%
rename from home/git/default.nix
rename to modules/home/git/default.nix
index 4dba01e..9c10257 100644
--- a/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";
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/x/keyboard/default.nix b/modules/home/keyboard/default.nix
similarity index 50%
rename from home/x/keyboard/default.nix
rename to modules/home/keyboard/default.nix
index 40af800..2216a08 100644
--- a/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/home/mail/accounts/default.nix b/modules/home/mail/accounts/default.nix
similarity index 93%
rename from home/mail/accounts/default.nix
rename to modules/home/mail/accounts/default.nix
index f513605..8886139 100644
--- a/home/mail/accounts/default.nix
+++ b/modules/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.rbw-pass) "Mail" passName ];
address = mkMailAddress address domain;
aliases = builtins.map (lib.flip mkMailAddress domain) aliases;
@@ -18,8 +18,6 @@ let
himalaya = {
enable = cfg.himalaya.enable;
# FIXME: try to actually configure it at some point
- backend = "imap";
- sender = "smtp";
};
msmtp = {
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 88%
rename from home/mail/himalaya/default.nix
rename to modules/home/mail/himalaya/default.nix
index c2d3b05..849a415 100644
--- a/home/mail/himalaya/default.nix
+++ b/modules/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/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 74%
rename from home/mpv/default.nix
rename to modules/home/mpv/default.nix
index 9aef379..8af394c 100644
--- a/home/mpv/default.nix
+++ b/modules/home/mpv/default.nix
@@ -13,6 +13,8 @@ in
scripts = [
pkgs.mpvScripts.mpris # Allow controlling using media keys
+ pkgs.mpvScripts.mpv-cheatsheet # Show some simple mappings on '?'
+ pkgs.mpvScripts.uosc # Nicer UI
];
};
};
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 92%
rename from home/nix/default.nix
rename to modules/home/nix/default.nix
index 9ccbdc5..8e777da 100644
--- a/home/nix/default.nix
+++ b/modules/home/nix/default.nix
@@ -48,7 +48,11 @@ in
nix = {
package = lib.mkDefault pkgs.nix; # NixOS module sets it unconditionally
+ # FIXME: waiting on https://github.com/nix-community/home-manager/pull/3876
settings = {
+ # I like XDG-compliance
+ use-xdg-base-directories = true;
+
experimental-features = [ "nix-command" "flakes" ];
};
};
diff --git a/modules/home/nixpkgs/default.nix b/modules/home/nixpkgs/default.nix
new file mode 100644
index 0000000..720fc9b
--- /dev/null
+++ b/modules/home/nixpkgs/default.nix
@@ -0,0 +1,20 @@
+{ 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}")'';
+ GITHUB_API_TOKEN = ''$(cat "${config.age.secrets."github/token".path}")'';
+ };
+ };
+}
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 52%
rename from home/packages/default.nix
rename to modules/home/packages/default.nix
index 0cfa3b3..1362a06 100644
--- a/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 = [ ];
@@ -17,10 +21,15 @@ in
};
};
- config.home.packages = with pkgs; lib.mkIf cfg.enable ([
- fd
- file
- mosh
- ripgrep
- ] ++ cfg.additionalPackages);
+ config = lib.mkIf cfg.enable {
+ home.packages = with pkgs; ([
+ fd
+ file
+ ripgrep
+ ] ++ cfg.additionalPackages);
+
+ nixpkgs.config = {
+ inherit (cfg) allowAliases allowUnfree;
+ };
+ };
}
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/modules/home/secrets/github/token.age b/modules/home/secrets/github/token.age
new file mode 100644
index 0000000..1d36ccd
Binary files /dev/null and b/modules/home/secrets/github/token.age differ
diff --git a/modules/home/secrets/secrets.nix b/modules/home/secrets/secrets.nix
new file mode 100644
index 0000000..f474342
--- /dev/null
+++ b/modules/home/secrets/secrets.nix
@@ -0,0 +1,9 @@
+# Common secrets
+let
+ keys = import ../../keys;
+
+ all = builtins.attrValues keys.users;
+in
+{
+ "github/token.age".publicKeys = all;
+}
diff --git a/modules/home/ssh/default.nix b/modules/home/ssh/default.nix
new file mode 100644
index 0000000..674cf6a
--- /dev/null
+++ b/modules/home/ssh/default.nix
@@ -0,0 +1,70 @@
+{ 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 [
+ {
+ programs.ssh = {
+ enable = true;
+
+ includes = [
+ # Local configuration, not-versioned
+ "config.local"
+ ];
+
+ 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
+ '';
+ };
+ }
+
+ (lib.mkIf cfg.mosh.enable {
+ home.packages = [
+ cfg.mosh.package
+ ];
+ })
+ ]);
+}
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 71%
rename from home/tmux/default.nix
rename to modules/home/tmux/default.nix
index 8e673b1..08aeb55 100644
--- a/home/tmux/default.nix
+++ b/modules/home/tmux/default.nix
@@ -10,7 +10,20 @@ 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";
+
+ 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 {
@@ -66,12 +79,23 @@ 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 ''
+ lib.optionalString cfg.enablePassthrough ''
# Allow any application to use the tmux DCS for passthrough
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
+ }
'';
};
}
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 60%
rename from home/vim/after/ftplugin/gitcommit.vim
rename to modules/home/vim/after/ftplugin/gitcommit.vim
index f785ff8..29d182c 100644
--- a/home/vim/after/ftplugin/gitcommit.vim
+++ b/modules/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<'
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/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<'
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/modules/home/vim/after/ftplugin/python.vim b/modules/home/vim/after/ftplugin/python.vim
new file mode 100644
index 0000000..e7232a8
--- /dev/null
+++ b/modules/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<'
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 96%
rename from home/vim/after/plugin/mappings/unimpaired.lua
rename to modules/home/vim/after/plugin/mappings/unimpaired.lua
index f39a8c0..f502056 100644
--- a/home/vim/after/plugin/mappings/unimpaired.lua
+++ b/modules/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/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 96%
rename from home/vim/default.nix
rename to modules/home/vim/default.nix
index 1aad3c1..871bf40 100644
--- a/home/vim/default.nix
+++ b/modules/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
@@ -77,10 +77,10 @@ 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
- cmp-path # Path name suggestions
cmp-under-comparator # Sort items that start with '_' lower
cmp_luasnip # Snippet suggestions from LuaSnip
diff --git a/home/vim/ftdetect/automake.lua b/modules/home/vim/ftdetect/automake.lua
similarity index 50%
rename from home/vim/ftdetect/automake.lua
rename to modules/home/vim/ftdetect/automake.lua
index cfa15d2..68a30ed 100644
--- a/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",
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/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",
+ },
+})
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",
+ },
+})
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 98%
rename from home/vim/init.vim
rename to modules/home/vim/init.vim
index ad332d2..bd63d25 100644
--- a/home/vim/init.vim
+++ b/modules/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
diff --git a/home/vim/lua/ambroisie/lsp.lua b/modules/home/vim/lua/ambroisie/lsp.lua
similarity index 70%
rename from home/vim/lua/ambroisie/lsp.lua
rename to modules/home/vim/lua/ambroisie/lsp.lua
index b682d27..99d8dab 100644
--- a/home/vim/lua/ambroisie/lsp.lua
+++ b/modules/home/vim/lua/ambroisie/lsp.lua
@@ -3,26 +3,47 @@ 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
-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,
+--- 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
+M.on_attach = function(client, bufnr)
-- Format on save
lsp_format.on_attach(client, bufnr)
diff --git a/home/vim/lua/ambroisie/utils.lua b/modules/home/vim/lua/ambroisie/utils.lua
similarity index 66%
rename from home/vim/lua/ambroisie/utils.lua
rename to modules/home/vim/lua/ambroisie/utils.lua
index 984c730..418e0d1 100644
--- a/home/vim/lua/ambroisie/utils.lua
+++ b/modules/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 = {}
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 97%
rename from home/vim/plugin/settings/completion.lua
rename to modules/home/vim/plugin/settings/completion.lua
index 2d150e8..0ed8c7f 100644
--- a/home/vim/plugin/settings/completion.lua
+++ b/modules/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 },
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 69%
rename from home/vim/plugin/settings/lspconfig.lua
rename to modules/home/vim/plugin/settings/lspconfig.lua
index 45be269..794a765 100644
--- a/home/vim/plugin/settings/lspconfig.lua
+++ b/modules/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()
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 96%
rename from home/vim/plugin/settings/tree-sitter.lua
rename to modules/home/vim/plugin/settings/tree-sitter.lua
index 0d84abd..5503857 100644
--- a/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,
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/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
+ '';
+ };
+}
diff --git a/home/wm/cursor/default.nix b/modules/home/wm/cursor/default.nix
similarity index 88%
rename from home/wm/cursor/default.nix
rename to modules/home/wm/cursor/default.nix
index 9426232..3b58b7b 100644
--- a/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 = {
diff --git a/home/wm/default.nix b/modules/home/wm/default.nix
similarity index 73%
rename from home/wm/default.nix
rename to modules/home/wm/default.nix
index fb9ecee..449918a 100644
--- a/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 = {
@@ -47,8 +72,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/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 96%
rename from home/wm/i3/default.nix
rename to modules/home/wm/i3/default.nix
index b5316f3..69246f0 100644
--- a/home/wm/i3/default.nix
+++ b/modules/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 =
@@ -61,8 +61,8 @@ 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
+ xdotool # Used by 'rofi-rbw', in a mapping
];
xsession.windowManager.i3 = {
@@ -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";
@@ -128,6 +129,7 @@ in
{ class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; }
{ class = "^Pavucontrol.*$"; }
{ class = "^Arandr$"; }
+ { class = ".?blueman-manager.*$"; }
];
};
@@ -188,13 +190,14 @@ 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
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
diff --git a/home/wm/i3bar/default.nix b/modules/home/wm/i3bar/default.nix
similarity index 67%
rename from home/wm/i3bar/default.nix
rename to modules/home/wm/i3bar/default.nix
index a2c9f3a..5ae0e7d 100644
--- a/home/wm/i3bar/default.nix
+++ b/modules/home/wm/i3bar/default.nix
@@ -17,25 +17,11 @@ 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
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";
@@ -43,12 +29,24 @@ 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";
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";
@@ -61,9 +59,22 @@ 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 ";
+ format = " $icon{| $ssid|}{| $ip|}{| $signal_strength|} ";
}
{
block = "backlight";
@@ -72,6 +83,7 @@ in
{
block = "battery";
format = " $icon $percentage{ ($time)|} ";
+ empty_format = " $icon $percentage{ ($time)|} ";
not_charging_format = " $icon $percentage ";
full_format = " $icon $percentage ";
}
@@ -93,7 +105,7 @@ in
format = " $icon $timestamp.datetime(f:'%F %T') ";
interval = 5;
}
- ];
+ ]);
};
};
};
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 94%
rename from home/wm/screen-lock/default.nix
rename to modules/home/wm/screen-lock/default.nix
index 95060b8..3b2ead6 100644
--- a/home/wm/screen-lock/default.nix
+++ b/modules/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/home/x/default.nix b/modules/home/x/default.nix
similarity index 88%
rename from home/x/default.nix
rename to modules/home/x/default.nix
index 0312bc4..c320e52 100644
--- a/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";
};
diff --git a/home/xdg/default.nix b/modules/home/xdg/default.nix
similarity index 85%
rename from home/xdg/default.nix
rename to modules/home/xdg/default.nix
index 3fd8dc9..6e49aa1 100644
--- a/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";
@@ -47,7 +48,11 @@ 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";
};
}
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 94%
rename from home/zsh/completion-styles.zsh
rename to modules/home/zsh/completion-styles.zsh
index 156bc2c..c3d664d 100644
--- a/home/zsh/completion-styles.zsh
+++ b/modules/home/zsh/completion-styles.zsh
@@ -1,4 +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'
@@ -21,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/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 86%
rename from home/zsh/extra-mappings.zsh
rename to modules/home/zsh/extra-mappings.zsh
index 2e9c18f..25c230d 100644
--- a/home/zsh/extra-mappings.zsh
+++ b/modules/home/zsh/extra-mappings.zsh
@@ -1,4 +1,4 @@
-# shellcheck disable=2154
+# shellcheck shell=bash
# Fix Ctrl+u killing from the cursor instead of the whole line
bindkey '^u' backward-kill-line
@@ -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
diff --git a/home/zsh/options.zsh b/modules/home/zsh/options.zsh
similarity index 96%
rename from home/zsh/options.zsh
rename to modules/home/zsh/options.zsh
index 82047ff..32da8d8 100644
--- a/home/zsh/options.zsh
+++ b/modules/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
diff --git a/modules/default.nix b/modules/nixos/default.nix
similarity index 96%
rename from modules/default.nix
rename to modules/nixos/default.nix
index 2eaa2e6..3648631 100644
--- a/modules/default.nix
+++ b/modules/nixos/default.nix
@@ -5,6 +5,7 @@
imports = [
./hardware
./home
+ ./profiles
./programs
./secrets
./services
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 82%
rename from modules/hardware/default.nix
rename to modules/nixos/hardware/default.nix
index 2a686f7..8e125ca 100644
--- a/modules/hardware/default.nix
+++ b/modules/nixos/hardware/default.nix
@@ -6,9 +6,10 @@
./bluetooth
./ergodox
./firmware
- ./mx-ergo
+ ./graphics
./networking
./sound
+ ./trackball
./upower
];
}
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/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
+ ];
+ };
+ })
+ ]);
+}
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/mx-ergo/default.nix b/modules/nixos/hardware/trackball/default.nix
similarity index 79%
rename from modules/hardware/mx-ergo/default.nix
rename to modules/nixos/hardware/trackball/default.nix
index e4e55a1..7a99247 100644
--- a/modules/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/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/nixos/home/default.nix b/modules/nixos/home/default.nix
new file mode 100644
index 0000000..fe00704
--- /dev/null
+++ b/modules/nixos/home/default.nix
@@ -0,0 +1,29 @@
+{ config, inputs, lib, ... }:
+let
+ actualPath = [ "home-manager" "users" config.my.user.name "my" "home" ];
+ aliasPath = [ "my" "home" ];
+
+ cfg = config.my.user.home;
+in
+{
+ imports = [
+ inputs.home-manager.nixosModules.home-manager # 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 "${inputs.self}/modules/home";
+
+ # Nix Flakes compatibility
+ useGlobalPkgs = true;
+ useUserPackages = true;
+
+ # Forward inputs to home-manager configuration
+ extraSpecialArgs = {
+ inherit inputs;
+ };
+ };
+ };
+}
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 92%
rename from profiles/default.nix
rename to modules/nixos/profiles/default.nix
index f7914a1..43d5a84 100644
--- a/profiles/default.nix
+++ b/modules/nixos/profiles/default.nix
@@ -6,7 +6,6 @@
./devices
./gtk
./laptop
- ./printing
./wm
./x
];
diff --git a/profiles/devices/default.nix b/modules/nixos/profiles/devices/default.nix
similarity index 91%
rename from profiles/devices/default.nix
rename to modules/nixos/profiles/devices/default.nix
index 7dbd299..7a84bd2 100644
--- a/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
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
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 74%
rename from modules/programs/steam/default.nix
rename to modules/nixos/programs/steam/default.nix
index f52effe..0c7f9da 100644
--- a/modules/programs/steam/default.nix
+++ b/modules/nixos/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; {
@@ -23,16 +25,14 @@ 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 ${pkgs.steam}/bin/steam "$@"
+ 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 ${pkgs.steam-run}/bin/steam-run "$@"
+ HOME="${cfg.dataDir}" exec ${lib.getExe steam.run} "$@"
'')
];
};
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/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/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 93%
rename from modules/services/blog/default.nix
rename to modules/nixos/services/blog/default.nix
index 4b646c3..3e68df2 100644
--- a/modules/services/blog/default.nix
+++ b/modules/nixos/services/blog/default.nix
@@ -5,11 +5,10 @@ let
domain = config.networking.domain;
makeHostInfo = subdomain: {
- inherit subdomain;
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/services/calibre-web/default.nix b/modules/nixos/services/calibre-web/default.nix
similarity index 93%
rename from modules/services/calibre-web/default.nix
rename to modules/nixos/services/calibre-web/default.nix
index 858851c..b7bf9df 100644
--- a/modules/services/calibre-web/default.nix
+++ b/modules/nixos/services/calibre-web/default.nix
@@ -40,12 +40,11 @@ in
# Set-up media group
users.groups.media = { };
- my.services.nginx.virtualHosts = [
- {
- subdomain = "library";
+ my.services.nginx.virtualHosts = {
+ library = {
inherit (cfg) port;
- }
- ];
+ };
+ };
my.services.backup = {
paths = [
diff --git a/modules/services/default.nix b/modules/nixos/services/default.nix
similarity index 86%
rename from modules/services/default.nix
rename to modules/nixos/services/default.nix
index 268a3a5..67504da 100644
--- a/modules/services/default.nix
+++ b/modules/nixos/services/default.nix
@@ -3,6 +3,7 @@
{
imports = [
./adblock
+ ./aria
./backup
./blog
./calibre-web
@@ -20,18 +21,21 @@
./navidrome
./nextcloud
./nginx
- ./nix-serve
+ ./nix-cache
./paperless
./pirate
./podgrab
./postgresql
./postgresql-backup
+ ./pyload
./quassel
./rss-bridge
./sabnzbd
./ssh-server
+ ./tandoor-recipes
./tlp
./transmission
+ ./vikunja
./wireguard
./woodpecker
];
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 89%
rename from modules/services/drone/runner-docker/default.nix
rename to modules/nixos/services/drone/runner-docker/default.nix
index 0f2e3b3..e53c608 100644
--- a/modules/services/drone/runner-docker/default.nix
+++ b/modules/nixos/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,14 +24,14 @@ 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";
};
};
# Make sure it is activated in that case
- virtualisation.docker.enable = true;
+ my.system.docker.enable = true;
users.users.drone-runner-docker = {
isSystemUser = true;
diff --git a/modules/services/drone/runner-exec/default.nix b/modules/nixos/services/drone/runner-exec/default.nix
similarity index 95%
rename from modules/services/drone/runner-exec/default.nix
rename to modules/nixos/services/drone/runner-exec/default.nix
index f0dddb9..a9bb563 100644
--- a/modules/services/drone/runner-exec/default.nix
+++ b/modules/nixos/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/drone/server/default.nix b/modules/nixos/services/drone/server/default.nix
similarity index 87%
rename from modules/services/drone/server/default.nix
rename to modules/nixos/services/drone/server/default.nix
index 1202010..a3a1e49 100644
--- a/modules/services/drone/server/default.nix
+++ b/modules/nixos/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
@@ -40,17 +41,14 @@ in
ensureDatabases = [ "drone" ];
ensureUsers = [{
name = "drone";
- ensurePermissions = {
- "DATABASE drone" = "ALL PRIVILEGES";
- };
+ ensureDBOwnership = true;
}];
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "drone";
+ my.services.nginx.virtualHosts = {
+ drone = {
inherit (cfg) port;
- }
- ];
+ };
+ };
};
}
diff --git a/modules/services/fail2ban/default.nix b/modules/nixos/services/fail2ban/default.nix
similarity index 84%
rename from modules/services/fail2ban/default.nix
rename to modules/nixos/services/fail2ban/default.nix
index ab80bda..be5f7da 100644
--- a/modules/services/fail2ban/default.nix
+++ b/modules/nixos/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;
@@ -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";
+ };
};
};
}
diff --git a/modules/services/flood/default.nix b/modules/nixos/services/flood/default.nix
similarity index 89%
rename from modules/services/flood/default.nix
rename to modules/nixos/services/flood/default.nix
index ae8e219..155e73d 100644
--- a/modules/services/flood/default.nix
+++ b/modules/nixos/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}"
];
@@ -40,11 +40,10 @@ in
};
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "flood";
+ my.services.nginx.virtualHosts = {
+ flood = {
inherit (cfg) port;
- }
- ];
+ };
+ };
};
}
diff --git a/modules/services/gitea/default.nix b/modules/nixos/services/gitea/default.nix
similarity index 95%
rename from modules/services/gitea/default.nix
rename to modules/nixos/services/gitea/default.nix
index 28a448d..4a8a3bb 100644
--- a/modules/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,
@@ -115,18 +116,16 @@ in
};
users.groups.git = { };
- my.services.nginx.virtualHosts = [
+ my.services.nginx.virtualHosts = {
# Proxy to Gitea
- {
- subdomain = "git";
+ git = {
inherit (cfg) port;
- }
+ };
# Redirect `gitea.` to actual forge subdomain
- {
- subdomain = "gitea";
+ gitea = {
redirect = config.services.gitea.settings.server.ROOT_URL;
- }
- ];
+ };
+ };
my.services.backup = {
paths = [
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 61%
rename from modules/services/indexers/default.nix
rename to modules/nixos/services/indexers/default.nix
index 66f1604..8a42345 100644
--- a/modules/services/indexers/default.nix
+++ b/modules/nixos/services/indexers/default.nix
@@ -28,12 +28,11 @@ in
};
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "jackett";
+ my.services.nginx.virtualHosts = {
+ jackett = {
port = jackettPort;
- }
- ];
+ };
+ };
})
(lib.mkIf cfg.nzbhydra.enable {
@@ -41,12 +40,11 @@ in
enable = true;
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "nzbhydra";
+ my.services.nginx.virtualHosts = {
+ nzbhydra = {
port = nzbhydraPort;
- }
- ];
+ };
+ };
})
(lib.mkIf cfg.prowlarr.enable {
@@ -54,12 +52,27 @@ in
enable = true;
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "prowlarr";
+ 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 username .*$
+ journalmatch = _SYSTEMD_UNIT=prowlarr.service
+ '';
+ };
})
];
}
diff --git a/modules/services/jellyfin/default.nix b/modules/nixos/services/jellyfin/default.nix
similarity index 73%
rename from modules/services/jellyfin/default.nix
rename to modules/nixos/services/jellyfin/default.nix
index 2fcf51e..f5aaa99 100644
--- a/modules/services/jellyfin/default.nix
+++ b/modules/nixos/services/jellyfin/default.nix
@@ -17,9 +17,15 @@ in
# Set-up media group
users.groups.media = { };
- my.services.nginx.virtualHosts = [
- {
- subdomain = "jellyfin";
+ systemd.services.jellyfin = {
+ serviceConfig = {
+ # Loose umask to make Jellyfin metadata more broadly readable
+ UMask = lib.mkForce "0002";
+ };
+ };
+
+ my.services.nginx.virtualHosts = {
+ jellyfin = {
port = 8096;
extraConfig = {
locations."/" = {
@@ -33,7 +39,7 @@ in
proxyWebsockets = true;
};
};
- }
- ];
+ };
+ };
};
}
diff --git a/modules/services/lohr/default.nix b/modules/nixos/services/lohr/default.nix
similarity index 93%
rename from modules/services/lohr/default.nix
rename to modules/nixos/services/lohr/default.nix
index f43bc40..dd4eea8 100644
--- a/modules/services/lohr/default.nix
+++ b/modules/nixos/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";
@@ -100,11 +98,10 @@ in
};
users.groups.lohr = { };
- my.services.nginx.virtualHosts = [
- {
- subdomain = "lohr";
+ my.services.nginx.virtualHosts = {
+ lohr = {
inherit (cfg) port;
- }
- ];
+ };
+ };
};
}
diff --git a/modules/services/matrix/default.nix b/modules/nixos/services/matrix/default.nix
similarity index 74%
rename from modules/services/matrix/default.nix
rename to modules/nixos/services/matrix/default.nix
index c73afed..b958f76 100644
--- a/modules/services/matrix/default.nix
+++ b/modules/nixos/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; {
@@ -25,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";
@@ -52,7 +68,7 @@ in
settings = {
server_name = domain;
- public_baseurl = "https://matrix.${domain}";
+ public_baseurl = "https://${matrixDomain}";
enable_registration = false;
@@ -90,20 +106,33 @@ in
] ++ lib.optional (cfg.secretFile != null) cfg.secretFile;
};
- my.services.nginx.virtualHosts = [
+ 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
- {
- subdomain = "chat";
+ chat = {
root = pkgs.element-web.override {
conf = {
default_server_config = {
"m.homeserver" = {
- "base_url" = "https://matrix.${domain}";
+ "base_url" = "https://${matrixDomain}";
"server_name" = domain;
};
"m.identity_server" = {
"base_url" = "https://vector.im";
};
+ "org.matrix.msc3575.proxy" = {
+ "url" = "https://matrix-sync.${domain}";
+ };
};
showLabsSettings = true;
defaultCountryCode = "FR"; # cocorico
@@ -115,12 +144,23 @@ in
};
};
};
- }
- ];
+ };
+ # Dummy VHosts for port collision detection
+ matrix-federation = {
+ port = federationPort.private;
+ };
+ matrix-client = {
+ port = clientPort.private;
+ };
+ # Sliding sync
+ matrix-sync = {
+ inherit (cfg.slidingSync) port;
+ };
+ };
# Those are too complicated to use my wrapper...
services.nginx.virtualHosts = {
- "matrix.${domain}" = {
+ ${matrixDomain} = {
onlySSL = true;
useACMEHost = domain;
@@ -138,6 +178,11 @@ 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 = [
@@ -148,9 +193,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 +216,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,8 +226,9 @@ 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"; };
+ "org.matrix.msc3575.proxy" = { "url" = "https://matrix-sync.${domain}"; };
};
# ACAO required to allow element-web on any URL to request this json file
in
diff --git a/modules/services/miniflux/default.nix b/modules/nixos/services/miniflux/default.nix
similarity index 92%
rename from modules/services/miniflux/default.nix
rename to modules/nixos/services/miniflux/default.nix
index 6d9ffc8..5104c8b 100644
--- a/modules/services/miniflux/default.nix
+++ b/modules/nixos/services/miniflux/default.nix
@@ -43,11 +43,10 @@ in
};
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "reader";
+ my.services.nginx.virtualHosts = {
+ reader = {
inherit (cfg) port;
- }
- ];
+ };
+ };
};
}
diff --git a/modules/services/monitoring/default.nix b/modules/nixos/services/monitoring/default.nix
similarity index 90%
rename from modules/services/monitoring/default.nix
rename to modules/nixos/services/monitoring/default.nix
index ece6cc1..49919c1 100644
--- a/modules/services/monitoring/default.nix
+++ b/modules/nixos/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}}";
};
};
@@ -118,11 +125,10 @@ in
];
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "monitoring";
+ my.services.nginx.virtualHosts = {
+ monitoring = {
inherit (cfg.grafana) port;
- }
- ];
+ };
+ };
};
}
diff --git a/modules/services/navidrome/default.nix b/modules/nixos/services/navidrome/default.nix
similarity index 92%
rename from modules/services/navidrome/default.nix
rename to modules/nixos/services/navidrome/default.nix
index 6c001fd..944a97a 100644
--- a/modules/services/navidrome/default.nix
+++ b/modules/nixos/services/navidrome/default.nix
@@ -47,11 +47,10 @@ in
};
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "music";
+ my.services.nginx.virtualHosts = {
+ music = {
inherit (cfg) port;
- }
- ];
+ };
+ };
};
}
diff --git a/modules/services/nextcloud/default.nix b/modules/nixos/services/nextcloud/default.nix
similarity index 83%
rename from modules/services/nextcloud/default.nix
rename to modules/nixos/services/nextcloud/default.nix
index cffa58d..51195df 100644
--- a/modules/services/nextcloud/default.nix
+++ b/modules/nixos/services/nextcloud/default.nix
@@ -31,17 +31,28 @@ in
config = lib.mkIf cfg.enable {
services.nextcloud = {
enable = true;
- package = pkgs.nextcloud26;
+ package = pkgs.nextcloud28;
hostName = "nextcloud.${config.networking.domain}";
home = "/var/lib/nextcloud";
maxUploadSize = cfg.maxSize;
- enableBrokenCiphersForSSE = false;
+ configureRedis = true;
config = {
adminuser = cfg.admin;
adminpassFile = cfg.passwordFile;
dbtype = "pgsql";
dbhost = "/run/postgresql";
- overwriteProtocol = "https"; # Nginx only allows SSL
+ };
+
+ https = true;
+
+ settings = {
+ 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;
};
};
@@ -51,7 +62,7 @@ in
ensureUsers = [
{
name = "nextcloud";
- ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES";
+ ensureDBOwnership = true;
}
];
};
diff --git a/modules/services/nginx/default.nix b/modules/nixos/services/nginx/default.nix
similarity index 90%
rename from modules/services/nginx/default.nix
rename to modules/nixos/services/nginx/default.nix
index 944cd18..7980ad9 100644
--- a/modules/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
@@ -22,7 +23,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 +40,16 @@ 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.
+ '';
+ };
+
+ socket = mkOption {
+ type = with types; nullOr path;
+ default = null;
+ example = "FIXME";
+ description = ''
+ The UNIX socket for this virtual host.
'';
};
@@ -65,7 +73,7 @@ let
'';
};
};
- };
+ });
in
{
imports = [
@@ -90,20 +98,18 @@ in
};
virtualHosts = mkOption {
- type = types.listOf virtualHostOption;
- default = [ ];
+ type = types.attrsOf virtualHostOption;
+ default = { };
example = litteralExample ''
- [
- {
- subdomain = "gitea";
+ {
+ gitea = {
+ subdomain = "git";
port = 8080;
- }
- {
- subdomain = "dev";
+ };
+ dev = {
root = "/var/www/dev";
- }
- {
- subdomain = "jellyfin";
+ };
+ jellyfin = {
port = 8096;
extraConfig = {
locations."/socket" = {
@@ -111,8 +117,8 @@ in
proxyWebsockets = true;
};
};
- }
- ]
+ };
+ }
'';
description = ''
List of virtual hosts to set-up using default settings.
@@ -183,9 +189,9 @@ 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" "redirect" ];
+ conflicts = [ "port" "root" "socket" "redirect" ];
optionsNotNull = builtins.map (v: args.${v} != null) conflicts;
optionsSet = lib.filter lib.id optionsNotNull;
in
@@ -202,7 +208,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;
@@ -214,7 +220,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;
@@ -260,6 +266,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";
@@ -313,7 +324,7 @@ in
])
);
in
- lib.my.genAttrs' cfg.virtualHosts mkVHost;
+ lib.my.genAttrs' (lib.attrValues cfg.virtualHosts) mkVHost;
sso = {
enable = true;
@@ -391,12 +402,11 @@ in
};
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "login";
+ my.services.nginx.virtualHosts = {
+ ${cfg.sso.subdomain} = {
inherit (cfg.sso) port;
- }
- ];
+ };
+ };
networking.firewall.allowedTCPPorts = [ 80 443 ];
diff --git a/modules/services/nginx/sso/default.nix b/modules/nixos/services/nginx/sso/default.nix
similarity index 94%
rename from modules/services/nginx/sso/default.nix
rename to modules/nixos/services/nginx/sso/default.nix
index 13292ec..4a78282 100644
--- a/modules/services/nginx/sso/default.nix
+++ b/modules/nixos/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" ''
- #!${pkgs.bash}/bin/bash
+ ExecStartPre = ''+${pkgs.writeShellScript "merge-nginx-sso-config" ''
rm -f '${confPath}'
${utils.genJqSecretsReplacementSnippet cfg.configuration confPath}
@@ -70,7 +69,7 @@ in
''
}'';
ExecStart = lib.mkForce ''
- ${pkg}/bin/nginx-sso \
+ ${lib.getExe pkg} \
--config ${confPath} \
--frontend-dir ${pkg}/share/frontend
'';
diff --git a/modules/services/nix-serve/default.nix b/modules/nixos/services/nix-cache/default.nix
similarity index 54%
rename from modules/services/nix-serve/default.nix
rename to modules/nixos/services/nix-cache/default.nix
index 0cf1573..1ce3161 100644
--- a/modules/services/nix-serve/default.nix
+++ b/modules/nixos/services/nix-cache/default.nix
@@ -1,11 +1,11 @@
-# Binary cache through nix-serve
-{ config, lib, pkgs, ... }:
+# Binary cache
+{ config, lib, ... }:
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";
};
@@ -32,26 +32,21 @@ 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 = [
- {
- subdomain = "cache";
+ my.services.nginx.virtualHosts = {
+ cache = {
inherit (cfg) port;
- }
- ];
+ };
+ };
};
}
diff --git a/modules/services/paperless/default.nix b/modules/nixos/services/paperless/default.nix
similarity index 91%
rename from modules/services/paperless/default.nix
rename to modules/nixos/services/paperless/default.nix
index c9d6220..f62879a 100644
--- a/modules/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
@@ -52,7 +52,7 @@ in
mediaDir = lib.mkIf (cfg.documentPath != null) cfg.documentPath;
- extraConfig =
+ settings =
let
paperlessDomain = "paperless.${config.networking.domain}";
in
@@ -73,9 +73,16 @@ 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;
+
+ # Fix classifier hangs
+ LD_LIBRARY_PATH = "${lib.getLib pkgs.mkl}/lib";
};
# Admin password
@@ -127,7 +134,7 @@ in
ensureUsers = [
{
name = "paperless";
- ensurePermissions."DATABASE paperless" = "ALL PRIVILEGES";
+ ensureDBOwnership = true;
}
];
};
@@ -139,9 +146,8 @@ in
extraGroups = [ "media" ];
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "paperless";
+ my.services.nginx.virtualHosts = {
+ paperless = {
inherit (cfg) port;
sso = {
enable = true;
@@ -151,8 +157,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
new file mode 100644
index 0000000..e500b54
--- /dev/null
+++ b/modules/nixos/services/pirate/default.nix
@@ -0,0 +1,92 @@
+# The total autonomous media delivery system.
+# Relevant link [1].
+#
+# [1]: https://youtu.be/I26Ql-uX6AM
+{ config, lib, ... }:
+let
+ cfg = config.my.services.pirate;
+
+ ports = {
+ bazarr = 6767;
+ lidarr = 8686;
+ radarr = 7878;
+ sonarr = 8989;
+ };
+
+ mkService = service: {
+ services.${service} = {
+ enable = true;
+ group = "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 username .*$
+ journalmatch = _SYSTEMD_UNIT=${service}.service
+ '';
+ };
+ };
+
+ 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 [
+ {
+ # Set-up media group
+ users.groups.media = { };
+ }
+ # 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")
+ ]);
+}
diff --git a/modules/services/podgrab/default.nix b/modules/nixos/services/podgrab/default.nix
similarity index 90%
rename from modules/services/podgrab/default.nix
rename to modules/nixos/services/podgrab/default.nix
index 9793d60..5ceebb6 100644
--- a/modules/services/podgrab/default.nix
+++ b/modules/nixos/services/podgrab/default.nix
@@ -31,11 +31,10 @@ in
inherit (cfg) passwordFile port;
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "podgrab";
+ my.services.nginx.virtualHosts = {
+ podgrab = {
inherit (cfg) port;
- }
- ];
+ };
+ };
};
}
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/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
+ };
+}
diff --git a/modules/services/quassel/default.nix b/modules/nixos/services/quassel/default.nix
similarity index 95%
rename from modules/services/quassel/default.nix
rename to modules/nixos/services/quassel/default.nix
index ec686e1..695f9e0 100644
--- a/modules/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/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 95%
rename from modules/services/sabnzbd/default.nix
rename to modules/nixos/services/sabnzbd/default.nix
index 7ab145f..9e0d9c3 100644
--- a/modules/services/sabnzbd/default.nix
+++ b/modules/nixos/services/sabnzbd/default.nix
@@ -18,12 +18,11 @@ in
# Set-up media group
users.groups.media = { };
- my.services.nginx.virtualHosts = [
- {
- subdomain = "sabnzbd";
+ my.services.nginx.virtualHosts = {
+ sabnzbd = {
inherit port;
- }
- ];
+ };
+ };
services.fail2ban.jails = {
sabnzbd = ''
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/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix
new file mode 100644
index 0000000..f5dc2db
--- /dev/null
+++ b/modules/nixos/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" ];
+ requires = [ "postgresql.service" ];
+
+ 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;
+ };
+ };
+ };
+}
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 93%
rename from modules/services/transmission/default.nix
rename to modules/nixos/services/transmission/default.nix
index dcba0aa..aeb88b7 100644
--- a/modules/services/transmission/default.nix
+++ b/modules/nixos/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";
@@ -79,12 +80,11 @@ in
# Default transmission webui, I prefer combustion but its development
# seems to have stalled
- my.services.nginx.virtualHosts = [
- {
- subdomain = "transmission";
+ my.services.nginx.virtualHosts = {
+ 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
new file mode 100644
index 0000000..9767d00
--- /dev/null
+++ b/modules/nixos/services/vikunja/default.nix
@@ -0,0 +1,122 @@
+# 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 = {
+ ${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";
+ ensureDBOwnership = true;
+ }
+ ];
+ };
+
+ my.services.backup = {
+ paths = [
+ config.services.vikunja.settings.files.basepath
+ ];
+ };
+ };
+}
diff --git a/modules/services/wireguard/default.nix b/modules/nixos/services/wireguard/default.nix
similarity index 86%
rename from modules/services/wireguard/default.nix
rename to modules/nixos/services/wireguard/default.nix
index fc5518d..26e54e0 100644
--- a/modules/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.
@@ -261,5 +263,36 @@ 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" ];
+ };
+ })
+
+ # 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;
+ }
+ }
+ }
+ }
+ });
+ '';
+ })
]);
}
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 83%
rename from modules/services/woodpecker/agent-docker/default.nix
rename to modules/nixos/services/woodpecker/agent-docker/default.nix
index 8b5307c..79d3299 100644
--- a/modules/services/woodpecker/agent-docker/default.nix
+++ b/modules/nixos/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";
@@ -27,10 +25,7 @@ in
};
# Make sure it is activated in that case
- virtualisation.docker.enable = true;
-
- # FIXME: figure out the issue
- services.unbound.resolveLocalQueries = false;
+ my.system.docker.enable = true;
# Adjust runner service for nix usage
systemd.services.woodpecker-agent-docker = {
diff --git a/modules/services/woodpecker/agent-exec/default.nix b/modules/nixos/services/woodpecker/agent-exec/default.nix
similarity index 84%
rename from modules/services/woodpecker/agent-exec/default.nix
rename to modules/nixos/services/woodpecker/agent-exec/default.nix
index d7adc4e..7ae21c8 100644
--- a/modules/services/woodpecker/agent-exec/default.nix
+++ b/modules/nixos/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";
@@ -23,6 +21,17 @@ in
PAGER = "cat";
};
+ path = with pkgs; [
+ woodpecker-plugin-git
+ bash
+ coreutils
+ git
+ git-lfs
+ gnutar
+ gzip
+ nix
+ ];
+
environmentFile = [ cfg.sharedSecretFile ];
};
};
@@ -32,17 +41,6 @@ in
# Might break deployment
restartIfChanged = false;
- path = with pkgs; [
- ambroisie.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";
@@ -54,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
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 78%
rename from modules/services/woodpecker/server/default.nix
rename to modules/nixos/services/woodpecker/server/default.nix
index 590f07c..f02a5c5 100644
--- a/modules/services/woodpecker/server/default.nix
+++ b/modules/nixos/services/woodpecker/server/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, pkgs, ... }:
+{ config, lib, ... }:
let
cfg = config.my.services.woodpecker;
in
@@ -7,14 +7,12 @@ in
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_ADMIN = cfg.admin;
WOODPECKER_SERVER_ADDR = ":${toString cfg.port}";
WOODPECKER_GRPC_ADDR = ":${toString cfg.rpcPort}";
@@ -26,6 +24,9 @@ in
};
systemd.services.woodpecker-server = {
+ after = [ "postgresql.service" ];
+ requires = [ "postgresql.service" ];
+
serviceConfig = {
# Set username for DB access
User = "woodpecker";
@@ -47,22 +48,18 @@ in
ensureDatabases = [ "woodpecker" ];
ensureUsers = [{
name = "woodpecker";
- ensurePermissions = {
- "DATABASE woodpecker" = "ALL PRIVILEGES";
- };
+ ensureDBOwnership = true;
}];
};
- my.services.nginx.virtualHosts = [
- {
- subdomain = "woodpecker";
+ my.services.nginx.virtualHosts = {
+ woodpecker = {
inherit (cfg) port;
- }
+ };
# I might want to be able to RPC from other hosts in the future
- {
- subdomain = "woodpecker-rpc";
+ woodpecker-rpc = {
port = cfg.rpcPort;
- }
- ];
+ };
+ };
};
}
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 78%
rename from modules/system/default.nix
rename to modules/nixos/system/default.nix
index 3c81cac..e6fb25b 100644
--- a/modules/system/default.nix
+++ b/modules/nixos/system/default.nix
@@ -4,11 +4,14 @@
{
imports = [
./boot
+ ./docker
./documentation
./language
./nix
./packages
./podman
+ ./polkit
+ ./printing
./users
];
}
diff --git a/modules/nixos/system/docker/default.nix b/modules/nixos/system/docker/default.nix
new file mode 100644
index 0000000..f051814
--- /dev/null
+++ b/modules/nixos/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"
+ ];
+ };
+ };
+ };
+}
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 91%
rename from modules/system/nix/default.nix
rename to modules/nixos/system/nix/default.nix
index 47d6499..365e84f 100644
--- a/modules/system/nix/default.nix
+++ b/modules/nixos/system/nix/default.nix
@@ -54,7 +54,12 @@ in
nix = {
package = pkgs.nix;
+ # FIXME: waiting on https://github.com/NixOS/nixpkgs/pull/146515
+ # FIXME: look at https://github.com/SuperSandro2000/nixos-modules/blob/master/modules/nix.nix
settings = {
+ # I like XDG-compliance
+ use-xdg-base-directories = true;
+
experimental-features = [ "nix-command" "flakes" ];
};
};
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 50%
rename from modules/system/podman/default.nix
rename to modules/nixos/system/podman/default.nix
index dd1b617..52630c7 100644
--- a/modules/system/podman/default.nix
+++ b/modules/nixos/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;
@@ -19,7 +29,20 @@ 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 = {
+ enable = true;
+
+ dates = "weekly";
+
+ flags = [
+ "--all"
+ ];
+ };
};
};
}
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;
+ };
+ };
+}
diff --git a/profiles/printing/default.nix b/modules/nixos/system/printing/default.nix
similarity index 89%
rename from profiles/printing/default.nix
rename to modules/nixos/system/printing/default.nix
index 9965797..0dfab0f 100644
--- a/profiles/printing/default.nix
+++ b/modules/nixos/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 [
@@ -63,7 +63,7 @@ in
enable = true;
openFirewall = true;
# Allow resolution of '.local' addresses
- nssmdns = true;
+ nssmdns4 = true;
};
};
}
diff --git a/modules/system/users/default.nix b/modules/nixos/system/users/default.nix
similarity index 87%
rename from modules/system/users/default.nix
rename to modules/nixos/system/users/default.nix
index 3fa5b2e..655b31e 100644
--- a/modules/system/users/default.nix
+++ b/modules/nixos/system/users/default.nix
@@ -17,16 +17,17 @@ 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;
extraGroups = groupsIfExist [
"audio" # sound control
+ "docker" # usage of `docker` socket
"media" # access to media files
"networkmanager" # wireless configuration
"plugdev" # usage of ZSA keyboard tools
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
diff --git a/modules/services/pirate/default.nix b/modules/services/pirate/default.nix
deleted file mode 100644
index 42dd12b..0000000
--- a/modules/services/pirate/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-# The total autonomous media delivery system.
-# Relevant link [1].
-#
-# [1]: https://youtu.be/I26Ql-uX6AM
-{ config, lib, ... }:
-let
- cfg = config.my.services.pirate;
-
- ports = {
- bazarr = 6767;
- lidarr = 8686;
- radarr = 7878;
- sonarr = 8989;
- };
-
- managers = with lib.attrsets;
- (mapAttrs
- (_: _: {
- enable = true;
- group = "media";
- })
- ports);
-
- redirections = lib.flip lib.mapAttrsToList ports
- (subdomain: port: { inherit subdomain port; });
-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 = { };
- };
-}
diff --git a/overlays/default.nix b/overlays/default.nix
index d24e60f..683e021 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -1,3 +1,6 @@
-{
- nix-serve-ng-initLibStore = import ./nix-serve-ng-initLibStore;
-}
+# Automatically import all overlays in the directory
+let
+ files = builtins.readDir ./.;
+ overlays = builtins.removeAttrs files [ "default.nix" ];
+in
+builtins.mapAttrs (name: _: import "${./.}/${name}") overlays
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
+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..82a18c2
--- /dev/null
+++ b/overlays/gruvbox-nvim-better-diff/generated.nix
@@ -0,0 +1,10 @@
+{ ... }:
+
+_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
+ ];
+ });
+}
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=";
+ };
+ });
+}
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=";
- };
- });
-}
diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix
index ef66f22..9b959f5 100644
--- a/pkgs/bw-pass/default.nix
+++ b/pkgs/bw-pass/default.nix
@@ -36,7 +36,8 @@ 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;
+ 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 f201a55..12814e1 100644
--- a/pkgs/change-audio/default.nix
+++ b/pkgs/change-audio/default.nix
@@ -35,7 +35,8 @@ stdenvNoCC.mkDerivation rec {
'';
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- platforms = platforms.linux;
+ 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 f9a1afd..1f8c88c 100644
--- a/pkgs/change-backlight/default.nix
+++ b/pkgs/change-backlight/default.nix
@@ -35,7 +35,8 @@ stdenvNoCC.mkDerivation rec {
'';
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- platforms = platforms.linux;
+ mainProgram = "change-backlight";
maintainers = with maintainers; [ ambroisie ];
+ platforms = platforms.linux;
};
}
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 "$@"
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/default.nix b/pkgs/default.nix
index 4a84b9c..6b7fce1 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -14,10 +14,6 @@ pkgs.lib.makeScope pkgs.newScope (pkgs: {
drone-rsync = pkgs.callPackage ./drone-rsync { };
- 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 { };
@@ -26,23 +22,11 @@ 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 { };
- unified-hosts-lists = pkgs.callPackage ./unified-hosts-lists { };
-
- vimix-cursors = pkgs.callPackage ./vimix-cursors { };
-
- 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-plugin-git = pkgs.callPackage ./woodpecker-plugin-git { };
-
- woodpecker-server = pkgs.callPackage ./woodpecker/server.nix { };
+ zsh-done = pkgs.callPackage ./zsh-done { };
})
diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix
index 55d9403..9cccd20 100644
--- a/pkgs/diff-flake/default.nix
+++ b/pkgs/diff-flake/default.nix
@@ -34,7 +34,8 @@ 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;
+ 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 0783ad1..a7c2cbc 100644
--- a/pkgs/drone-rsync/default.nix
+++ b/pkgs/drone-rsync/default.nix
@@ -34,7 +34,8 @@ 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;
+ mainProgram = "drone-rsync";
maintainers = with maintainers; [ ambroisie ];
+ platforms = platforms.unix;
};
}
diff --git a/pkgs/drone-scp/default.nix b/pkgs/drone-scp/default.nix
deleted file mode 100644
index 0affedb..0000000
--- a/pkgs/drone-scp/default.nix
+++ /dev/null
@@ -1,24 +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;
- };
-}
diff --git a/pkgs/ff2mpv-go/default.nix b/pkgs/ff2mpv-go/default.nix
index dcdb7f3..8c59bf5 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 = ''
@@ -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 a464091..2fc840d 100644
--- a/pkgs/i3-get-window-criteria/default.nix
+++ b/pkgs/i3-get-window-criteria/default.nix
@@ -35,7 +35,8 @@ 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;
+ 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 38892bb..ddeac7a 100644
--- a/pkgs/lohr/default.nix
+++ b/pkgs/lohr/default.nix
@@ -1,22 +1,23 @@
{ 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";
homepage = "https://github.com/alarsyo/lohr";
license = with licenses; [ mit asl20 ];
- platforms = platforms.unix;
+ mainProgram = "lohr";
maintainers = with maintainers; [ ambroisie ];
+ platforms = platforms.unix;
};
}
diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix
index 1762b62..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 = [
@@ -38,7 +38,8 @@ stdenvNoCC.mkDerivation rec {
'';
homepage = "https://git.belanyi.fr/ambroisie/${pname}";
license = licenses.mit;
- platforms = platforms.unix;
+ mainProgram = "matrix-notifier";
maintainers = with maintainers; [ ambroisie ];
+ platforms = platforms.unix;
};
}
diff --git a/pkgs/osc52/default.nix b/pkgs/osc52/default.nix
index 9e20eab..d4b0c08 100644
--- a/pkgs/osc52/default.nix
+++ b/pkgs/osc52/default.nix
@@ -34,7 +34,8 @@ stdenvNoCC.mkDerivation rec {
'';
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- platforms = platforms.linux;
+ mainProgram = "osc52";
maintainers = with maintainers; [ ambroisie ];
+ platforms = platforms.linux;
};
}
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]
+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 "$@"
diff --git a/pkgs/rbw-pass/default.nix b/pkgs/rbw-pass/default.nix
new file mode 100644
index 0000000..6f9ff0a
--- /dev/null
+++ b/pkgs/rbw-pass/default.nix
@@ -0,0 +1,41 @@
+{ 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 ];
+ mainProgram = "rbw-pass";
+ maintainers = with maintainers; [ ambroisie ];
+ platforms = platforms.linux;
+ };
+}
diff --git a/pkgs/rbw-pass/rbw-pass b/pkgs/rbw-pass/rbw-pass
new file mode 100755
index 0000000..23363dc
--- /dev/null
+++ b/pkgs/rbw-pass/rbw-pass
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+
+usage() {
+ printf '%s\n' "Usage: rbw-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 "$@"
diff --git a/pkgs/unbound-zones-adblock/default.nix b/pkgs/unbound-zones-adblock/default.nix
index 824a7d6..642ac41 100644
--- a/pkgs/unbound-zones-adblock/default.nix
+++ b/pkgs/unbound-zones-adblock/default.nix
@@ -1,16 +1,16 @@
-{ 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;
installPhase =
let
gawkCmd = lib.concatStringsSep " " [
- ''${gawk}/bin/awk''
+ (lib.getExe gawk)
'''{sub(/\r$/,"")}''
''{sub(/^127\.0\.0\.1/,"0.0.0.0")}''
''BEGIN { OFS = "" }''
@@ -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
'';
@@ -32,7 +34,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
deleted file mode 100644
index 1bafb03..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.12.15";
-
- 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;
- platforms = platforms.all;
- maintainers = with maintainers; [ ambroisie ];
- };
-}
diff --git a/pkgs/vimix-cursors/default.nix b/pkgs/vimix-cursors/default.nix
deleted file mode 100644
index 8f92595..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;
- platforms = platforms.linux;
- maintainers = with maintainers; [ ambroisie ];
- };
-}
diff --git a/pkgs/volantes-cursors/default.nix b/pkgs/volantes-cursors/default.nix
deleted file mode 100644
index 0a49912..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;
- platforms = platforms.linux;
- maintainers = with maintainers; [ ambroisie ];
- };
-}
diff --git a/pkgs/wifi-qr/default.nix b/pkgs/wifi-qr/default.nix
deleted file mode 100644
index c68eceb..0000000
--- a/pkgs/wifi-qr/default.nix
+++ /dev/null
@@ -1,80 +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 ];
- platforms = platforms.linux;
- maintainers = with maintainers; [ ambroisie ];
- };
-}
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;
- };
-}
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=="
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 ];
+ };
+}
diff --git a/templates/c++-cmake/.envrc b/templates/c++-cmake/.envrc
index 95ed6fb..de77fcb 100644
--- a/templates/c++-cmake/.envrc
+++ b/templates/c++-cmake/.envrc
@@ -1,10 +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 3.0.0; then
+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg="
fi
use flake
-
-watch_file ./flake/checks.nix
-watch_file ./flake/dev-shells.nix
-
-eval "$shellHooks"
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/.envrc b/templates/c++-meson/.envrc
index 95ed6fb..de77fcb 100644
--- a/templates/c++-meson/.envrc
+++ b/templates/c++-meson/.envrc
@@ -1,10 +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 3.0.0; then
+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.0/direnvrc" "sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg="
fi
use flake
-
-watch_file ./flake/checks.nix
-watch_file ./flake/dev-shells.nix
-
-eval "$shellHooks"
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: