diff --git a/.envrc b/.envrc
index f5141c2..95ed6fb 100644
--- a/.envrc
+++ b/.envrc
@@ -1,8 +1,10 @@
-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="
+if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
fi
+use flake
+
watch_file ./flake/checks.nix
watch_file ./flake/dev-shells.nix
-use flake
+eval "$shellHooks"
diff --git a/.woodpecker/check.yml b/.woodpecker/check.yml
index aff6e84..c3b00ef 100644
--- a/.woodpecker/check.yml
+++ b/.woodpecker/check.yml
@@ -1,7 +1,7 @@
labels:
- backend: local
+ type: exec
-steps:
+pipeline:
- name: nix flake check
image: bash
commands:
diff --git a/bootstrap.sh b/bootstrap.sh
index db1662e..b1c418e 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -1,6 +1,5 @@
#!/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
@@ -11,6 +10,7 @@ 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 4773d30..cf667c4 100644
--- a/flake.lock
+++ b/flake.lock
@@ -8,17 +8,14 @@
],
"nixpkgs": [
"nixpkgs"
- ],
- "systems": [
- "systems"
]
},
"locked": {
- "lastModified": 1703433843,
- "narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=",
+ "lastModified": 1683866323,
+ "narHash": "sha256-M2bEuh2jr0Ec13GnP5f8unD8q0AcPt2fHSUynOZJ8No=",
"owner": "ryantm",
"repo": "agenix",
- "rev": "417caa847f9383e111d1397039c9d4337d024bf0",
+ "rev": "92197270a1eedd142a4aff853e4cc6d1e838c22f",
"type": "github"
},
"original": {
@@ -36,11 +33,11 @@
]
},
"locked": {
- "lastModified": 1700795494,
- "narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
+ "lastModified": 1673295039,
+ "narHash": "sha256-AsdYgE8/GPwcelGgrntlijMg4t3hLFJFCRF3tL5WVjA=",
"owner": "lnl7",
"repo": "nix-darwin",
- "rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
+ "rev": "87b9d090ad39b25b2400029c64825fc2a8868943",
"type": "github"
},
"original": {
@@ -53,11 +50,11 @@
"flake-compat": {
"flake": false,
"locked": {
- "lastModified": 1696426674,
- "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+ "lastModified": 1673956053,
+ "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=",
"owner": "edolstra",
"repo": "flake-compat",
- "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+ "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9",
"type": "github"
},
"original": {
@@ -73,11 +70,11 @@
]
},
"locked": {
- "lastModified": 1706830856,
- "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=",
+ "lastModified": 1683560683,
+ "narHash": "sha256-XAygPMN5Xnk/W2c1aW0jyEa6lfMDZWlQgiNtmHXytPc=",
"owner": "hercules-ci",
"repo": "flake-parts",
- "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f",
+ "rev": "006c75898cf814ef9497252b022e91c946ba8e17",
"type": "github"
},
"original": {
@@ -89,16 +86,14 @@
},
"futils": {
"inputs": {
- "systems": [
- "systems"
- ]
+ "systems": "systems"
},
"locked": {
- "lastModified": 1705309234,
- "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
+ "lastModified": 1681202837,
+ "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
+ "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"type": "github"
},
"original": {
@@ -116,11 +111,11 @@
]
},
"locked": {
- "lastModified": 1703887061,
- "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
+ "lastModified": 1660459072,
+ "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
- "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
+ "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73",
"type": "github"
},
"original": {
@@ -136,11 +131,11 @@
]
},
"locked": {
- "lastModified": 1707175763,
- "narHash": "sha256-0MKHC6tQ4KEuM5rui6DjKZ/VNiSANB4E+DJ/+wPS1PU=",
+ "lastModified": 1683883222,
+ "narHash": "sha256-Tow+8GKwNNk2NvXoBwS/VBP8lpOdqIeeJ46ZU2fw5QU=",
"owner": "nix-community",
"repo": "home-manager",
- "rev": "f99eace7c167b8a6a0871849493b1c613d0f1b80",
+ "rev": "a835096fd2bcc369f57b76b9b17cc00348f595f5",
"type": "github"
},
"original": {
@@ -152,11 +147,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1707092692,
- "narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=",
+ "lastModified": 1683408522,
+ "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "faf912b086576fd1a15fca610166c98d47bc667e",
+ "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7",
"type": "github"
},
"original": {
@@ -168,11 +163,11 @@
},
"nur": {
"locked": {
- "lastModified": 1707234300,
- "narHash": "sha256-D+LdA8g0Tq+KE9EmJMmn8EGRO5jZ2nLe/W0Fr5EIsdg=",
+ "lastModified": 1683884754,
+ "narHash": "sha256-o3JF2SZJIwnz2YXwS0tb+CZqfXTABZDTdCjOG6fahIA=",
"owner": "nix-community",
"repo": "NUR",
- "rev": "59fceae769455455ef44c1dfb63bbae1ecddc41d",
+ "rev": "ee3497fa69c9c48ec7e4c0ffc1610ea543497633",
"type": "github"
},
"original": {
@@ -197,11 +192,11 @@
]
},
"locked": {
- "lastModified": 1706424699,
- "narHash": "sha256-Q3RBuOpZNH2eFA1e+IHgZLAOqDD9SKhJ/sszrL8bQD4=",
+ "lastModified": 1682596858,
+ "narHash": "sha256-Hf9XVpqaGqe/4oDGr30W8HlsWvJXtMsEPHDqHZA6dDg=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
- "rev": "7c54e08a689b53c8a1e5d70169f2ec9e2a68ffaf",
+ "rev": "fb58866e20af98779017134319b5663b8215d912",
"type": "github"
},
"original": {
@@ -219,8 +214,7 @@
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"nur": "nur",
- "pre-commit-hooks": "pre-commit-hooks",
- "systems": "systems"
+ "pre-commit-hooks": "pre-commit-hooks"
}
},
"systems": {
@@ -234,7 +228,6 @@
},
"original": {
"owner": "nix-systems",
- "ref": "main",
"repo": "default",
"type": "github"
}
diff --git a/flake.nix b/flake.nix
index 9c29183..8e46ea3 100644
--- a/flake.nix
+++ b/flake.nix
@@ -9,7 +9,6 @@
inputs = {
home-manager.follows = "home-manager";
nixpkgs.follows = "nixpkgs";
- systems.follows = "systems";
};
};
@@ -28,9 +27,6 @@
owner = "numtide";
repo = "flake-utils";
ref = "main";
- inputs = {
- systems.follows = "systems";
- };
};
home-manager = {
@@ -68,13 +64,6 @@
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 d5f5989..82d9581 100644
--- a/flake/dev-shells.nix
+++ b/flake/dev-shells.nix
@@ -2,7 +2,7 @@
{
perSystem = { config, pkgs, ... }: {
devShells = {
- default = pkgs.mkShellNoCC {
+ default = pkgs.mkShell {
name = "NixOS-config";
nativeBuildInputs = with pkgs; [
diff --git a/flake/home-manager.nix b/flake/home-manager.nix
index 34af375..c55c8dd 100644
--- a/flake/home-manager.nix
+++ b/flake/home-manager.nix
@@ -2,7 +2,7 @@
let
defaultModules = [
# Include generic settings
- "${self}/modules/home"
+ "${self}/home"
{
# Basic user information defaults
home.username = lib.mkDefault "ambroisie";
@@ -39,9 +39,8 @@ let
};
};
- homes = {
- "ambroisie@bazin" = "x86_64-linux";
- "ambroisie@mousqueton" = "x86_64-linux";
+ hosts = {
+ "ambroisie@ambroisie" = "x86_64-linux"; # Unfortunate naming here...
};
in
{
@@ -50,13 +49,13 @@ in
legacyPackages = {
homeConfigurations =
let
- filteredHomes = lib.filterAttrs (_: v: v == system) homes;
- allHomes = filteredHomes // {
+ filteredHosts = lib.filterAttrs (_: v: v == system) hosts;
+ allHosts = filteredHosts // {
# Default configuration
ambroisie = system;
};
in
- lib.mapAttrs mkHome allHomes;
+ lib.mapAttrs mkHome allHosts;
};
};
}
diff --git a/flake/nixos.nix b/flake/nixos.nix
index b48b551..9eb6388 100644
--- a/flake/nixos.nix
+++ b/flake/nixos.nix
@@ -1,5 +1,7 @@
-{ self, inputs, lib, ... }:
+{ self, inputs, ... }:
let
+ inherit (self) lib;
+
defaultModules = [
{
# Let 'nixos-version --json' know about the Git revision
@@ -11,7 +13,9 @@ let
];
}
# Include generic settings
- "${self}/modules/nixos"
+ "${self}/modules"
+ # Include bundles of settings
+ "${self}/profiles"
];
buildHost = name: system: lib.nixosSystem {
@@ -21,7 +25,7 @@ let
];
specialArgs = {
# Use my extended lib in NixOS configuration
- inherit (self) lib;
+ inherit lib;
# Inject inputs to use them in global registry
inherit inputs;
};
diff --git a/modules/home/aliases/default.nix b/home/aliases/default.nix
similarity index 100%
rename from modules/home/aliases/default.nix
rename to home/aliases/default.nix
diff --git a/modules/home/atuin/default.nix b/home/atuin/default.nix
similarity index 100%
rename from modules/home/atuin/default.nix
rename to home/atuin/default.nix
diff --git a/modules/home/bat/default.nix b/home/bat/default.nix
similarity index 100%
rename from modules/home/bat/default.nix
rename to home/bat/default.nix
diff --git a/modules/home/bluetooth/default.nix b/home/bluetooth/default.nix
similarity index 100%
rename from modules/home/bluetooth/default.nix
rename to home/bluetooth/default.nix
diff --git a/home/comma/default.nix b/home/comma/default.nix
new file mode 100644
index 0000000..cc6a0ad
--- /dev/null
+++ b/home/comma/default.nix
@@ -0,0 +1,29 @@
+{ 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
new file mode 100644
index 0000000..8af9240
--- /dev/null
+++ b/home/default.nix
@@ -0,0 +1,53 @@
+{ ... }:
+{
+ 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/modules/home/dircolors/default.nix b/home/dircolors/default.nix
similarity index 100%
rename from modules/home/dircolors/default.nix
rename to home/dircolors/default.nix
diff --git a/modules/home/direnv/default.nix b/home/direnv/default.nix
similarity index 100%
rename from modules/home/direnv/default.nix
rename to home/direnv/default.nix
diff --git a/home/direnv/lib/nix.sh b/home/direnv/lib/nix.sh
new file mode 100644
index 0000000..2d40b20
--- /dev/null
+++ b/home/direnv/lib/nix.sh
@@ -0,0 +1,32 @@
+#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/modules/home/direnv/lib/postgres.sh b/home/direnv/lib/postgres.sh
similarity index 100%
rename from modules/home/direnv/lib/postgres.sh
rename to home/direnv/lib/postgres.sh
diff --git a/modules/home/direnv/lib/python.sh b/home/direnv/lib/python.sh
similarity index 100%
rename from modules/home/direnv/lib/python.sh
rename to home/direnv/lib/python.sh
diff --git a/modules/home/discord/default.nix b/home/discord/default.nix
similarity index 100%
rename from modules/home/discord/default.nix
rename to home/discord/default.nix
diff --git a/modules/home/documentation/default.nix b/home/documentation/default.nix
similarity index 100%
rename from modules/home/documentation/default.nix
rename to home/documentation/default.nix
diff --git a/modules/home/feh/default.nix b/home/feh/default.nix
similarity index 100%
rename from modules/home/feh/default.nix
rename to home/feh/default.nix
diff --git a/modules/home/firefox/default.nix b/home/firefox/default.nix
similarity index 92%
rename from modules/home/firefox/default.nix
rename to home/firefox/default.nix
index 02c74f2..61c8d64 100644
--- a/modules/home/firefox/default.nix
+++ b/home/firefox/default.nix
@@ -33,10 +33,13 @@ in
enable = true;
package = pkgs.firefox.override {
- nativeMessagingHosts = ([ ]
- ++ lib.optional cfg.tridactyl.enable pkgs.tridactyl-native
+ cfg = {
+ enableTridactylNative = cfg.tridactyl.enable;
+ };
+
+ extraNativeMessagingHosts = with pkgs; ([ ]
# Watch videos using mpv
- ++ lib.optional cfg.ff2mpv.enable pkgs.ff2mpv-go
+ ++ lib.optional cfg.ff2mpv.enable ambroisie.ff2mpv-go
);
};
@@ -54,8 +57,8 @@ in
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false; # Disable pocket
"extensions.pocket.enabled" = false; # Disable pocket
"media.eme.enabled" = true; # Enable DRM
- "media.gmp-widevinecdm.enabled" = true; # Enable DRM
"media.gmp-widevinecdm.visible" = true; # Enable DRM
+ "media.gmp-widevinecdm.enabled" = true; # Enable DRM
"signon.autofillForms" = false; # Disable built-in form-filling
"signon.rememberSignons" = false; # Disable built-in password manager
"ui.systemUsesDarkTheme" = true; # Dark mode
diff --git a/modules/home/firefox/tridactyl/default.nix b/home/firefox/tridactyl/default.nix
similarity index 100%
rename from modules/home/firefox/tridactyl/default.nix
rename to home/firefox/tridactyl/default.nix
diff --git a/modules/home/firefox/tridactyl/tridactylrc b/home/firefox/tridactyl/tridactylrc
similarity index 87%
rename from modules/home/firefox/tridactyl/tridactylrc
rename to home/firefox/tridactyl/tridactylrc
index 4dc53cf..31d3cb7 100644
--- a/modules/home/firefox/tridactyl/tridactylrc
+++ b/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 a
-bindurl www.google.com F hint -Jbc #search a
+bindurl www.google.com f hint -Jc #search div:not(.action-menu) > a
+bindurl www.google.com F hint -Jbc #search div:not(.action-menu) > a
" Only hint search results on DuckDuckGo
bindurl ^https://duckduckgo.com f hint -Jc [data-testid="result-title-a"]
@@ -69,6 +69,8 @@ unbind
" Redirections {{{
" Always redirect Reddit to the old site
autocmd DocStart ^http(s?)://www.reddit.com js tri.excmds.urlmodify("-t", "www", "old")
+" Use a better Twitter front-end
+autocmd DocStart ^http(s?)://twitter.com js tri.excmds.urlmodify("-t", "twitter.com", "nitter.net")
" }}}
" Disabled websites {{{
diff --git a/modules/home/flameshot/default.nix b/home/flameshot/default.nix
similarity index 100%
rename from modules/home/flameshot/default.nix
rename to home/flameshot/default.nix
diff --git a/modules/home/fzf/default.nix b/home/fzf/default.nix
similarity index 100%
rename from modules/home/fzf/default.nix
rename to home/fzf/default.nix
diff --git a/modules/home/gammastep/default.nix b/home/gammastep/default.nix
similarity index 100%
rename from modules/home/gammastep/default.nix
rename to home/gammastep/default.nix
diff --git a/modules/home/gdb/default.nix b/home/gdb/default.nix
similarity index 91%
rename from modules/home/gdb/default.nix
rename to home/gdb/default.nix
index ab51938..c498048 100644
--- a/modules/home/gdb/default.nix
+++ b/home/gdb/default.nix
@@ -20,19 +20,19 @@ in
};
};
- config = lib.mkIf cfg.enable (lib.mkMerge [
- {
+ config = lib.mkMerge [
+ (lib.mkIf cfg.enable {
home.packages = with pkgs; [
gdb
];
xdg.configFile."gdb/gdbinit".source = ./gdbinit;
- }
+ })
(lib.mkIf cfg.rr.enable {
home.packages = [
cfg.rr.package
];
})
- ]);
+ ];
}
diff --git a/modules/home/gdb/gdbinit b/home/gdb/gdbinit
similarity index 100%
rename from modules/home/gdb/gdbinit
rename to home/gdb/gdbinit
diff --git a/modules/home/git/default.ignore b/home/git/default.ignore
similarity index 100%
rename from modules/home/git/default.ignore
rename to home/git/default.ignore
diff --git a/modules/home/git/default.nix b/home/git/default.nix
similarity index 96%
rename from modules/home/git/default.nix
rename to home/git/default.nix
index 9c10257..4dba01e 100644
--- a/modules/home/git/default.nix
+++ b/home/git/default.nix
@@ -7,9 +7,6 @@ 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 [
@@ -25,7 +22,8 @@ in
userEmail = mkMailAddress "bruno" "belanyi.fr";
userName = "Bruno BELANYI";
- inherit (cfg) package;
+ # I want the full experience
+ package = pkgs.gitFull;
aliases = {
git = "!git";
diff --git a/modules/home/gpg/default.nix b/home/gpg/default.nix
similarity index 100%
rename from modules/home/gpg/default.nix
rename to home/gpg/default.nix
diff --git a/modules/home/gtk/default.nix b/home/gtk/default.nix
similarity index 100%
rename from modules/home/gtk/default.nix
rename to home/gtk/default.nix
diff --git a/modules/home/htop/default.nix b/home/htop/default.nix
similarity index 100%
rename from modules/home/htop/default.nix
rename to home/htop/default.nix
diff --git a/modules/home/jq/default.nix b/home/jq/default.nix
similarity index 100%
rename from modules/home/jq/default.nix
rename to home/jq/default.nix
diff --git a/modules/home/mail/accounts/default.nix b/home/mail/accounts/default.nix
similarity index 93%
rename from modules/home/mail/accounts/default.nix
rename to home/mail/accounts/default.nix
index 8886139..f513605 100644
--- a/modules/home/mail/accounts/default.nix
+++ b/home/mail/accounts/default.nix
@@ -8,7 +8,7 @@ let
realName = lib.mkDefault "Bruno BELANYI";
userName = lib.mkDefault (mkMailAddress address domain);
passwordCommand =
- lib.mkDefault [ (lib.getExe pkgs.ambroisie.rbw-pass) "Mail" passName ];
+ lib.mkDefault [ "${pkgs.ambroisie.bw-pass}/bin/bw-pass" "Mail" passName ];
address = mkMailAddress address domain;
aliases = builtins.map (lib.flip mkMailAddress domain) aliases;
@@ -18,6 +18,8 @@ let
himalaya = {
enable = cfg.himalaya.enable;
# FIXME: try to actually configure it at some point
+ backend = "imap";
+ sender = "smtp";
};
msmtp = {
diff --git a/modules/home/mail/default.nix b/home/mail/default.nix
similarity index 100%
rename from modules/home/mail/default.nix
rename to home/mail/default.nix
diff --git a/modules/home/mail/himalaya/default.nix b/home/mail/himalaya/default.nix
similarity index 88%
rename from modules/home/mail/himalaya/default.nix
rename to home/mail/himalaya/default.nix
index 849a415..c2d3b05 100644
--- a/modules/home/mail/himalaya/default.nix
+++ b/home/mail/himalaya/default.nix
@@ -9,7 +9,7 @@ in
settings = {
notify-cmd =
let
- notify-send = lib.getExe pkgs.libnotify;
+ notify-send = "${pkgs.libnotify}/bin/notify-send";
in
pkgs.writeScript "mail-notifier" ''
SENDER="$1"
diff --git a/modules/home/mail/msmtp/default.nix b/home/mail/msmtp/default.nix
similarity index 100%
rename from modules/home/mail/msmtp/default.nix
rename to home/mail/msmtp/default.nix
diff --git a/modules/home/mpv/default.nix b/home/mpv/default.nix
similarity index 74%
rename from modules/home/mpv/default.nix
rename to home/mpv/default.nix
index 8af394c..9aef379 100644
--- a/modules/home/mpv/default.nix
+++ b/home/mpv/default.nix
@@ -13,8 +13,6 @@ 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/modules/home/nix-index/default.nix b/home/nix-index/default.nix
similarity index 100%
rename from modules/home/nix-index/default.nix
rename to home/nix-index/default.nix
diff --git a/modules/home/nix/default.nix b/home/nix/default.nix
similarity index 100%
rename from modules/home/nix/default.nix
rename to home/nix/default.nix
diff --git a/modules/home/nm-applet/default.nix b/home/nm-applet/default.nix
similarity index 100%
rename from modules/home/nm-applet/default.nix
rename to home/nm-applet/default.nix
diff --git a/modules/home/packages/default.nix b/home/packages/default.nix
similarity index 52%
rename from modules/home/packages/default.nix
rename to home/packages/default.nix
index 1362a06..0cfa3b3 100644
--- a/modules/home/packages/default.nix
+++ b/home/packages/default.nix
@@ -6,10 +6,6 @@ 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 = [ ];
@@ -21,15 +17,10 @@ in
};
};
- config = lib.mkIf cfg.enable {
- home.packages = with pkgs; ([
- fd
- file
- ripgrep
- ] ++ cfg.additionalPackages);
-
- nixpkgs.config = {
- inherit (cfg) allowAliases allowUnfree;
- };
- };
+ config.home.packages = with pkgs; lib.mkIf cfg.enable ([
+ fd
+ file
+ mosh
+ ripgrep
+ ] ++ cfg.additionalPackages);
}
diff --git a/modules/home/pager/default.nix b/home/pager/default.nix
similarity index 100%
rename from modules/home/pager/default.nix
rename to home/pager/default.nix
diff --git a/modules/home/power-alert/default.nix b/home/power-alert/default.nix
similarity index 100%
rename from modules/home/power-alert/default.nix
rename to home/power-alert/default.nix
diff --git a/modules/home/secrets/default.nix b/home/secrets/default.nix
similarity index 100%
rename from modules/home/secrets/default.nix
rename to home/secrets/default.nix
diff --git a/home/secrets/secrets.nix b/home/secrets/secrets.nix
new file mode 100644
index 0000000..eb9745f
--- /dev/null
+++ b/home/secrets/secrets.nix
@@ -0,0 +1,10 @@
+# Common secrets
+let
+ keys = import ../../keys;
+
+ # deadnix: skip
+ all = keys.users;
+in
+{
+ # Add secrets here
+}
diff --git a/home/ssh/default.nix b/home/ssh/default.nix
new file mode 100644
index 0000000..123190f
--- /dev/null
+++ b/home/ssh/default.nix
@@ -0,0 +1,54 @@
+{ 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/modules/home/terminal/alacritty/default.nix b/home/terminal/alacritty/default.nix
similarity index 100%
rename from modules/home/terminal/alacritty/default.nix
rename to home/terminal/alacritty/default.nix
diff --git a/modules/home/terminal/default.nix b/home/terminal/default.nix
similarity index 100%
rename from modules/home/terminal/default.nix
rename to home/terminal/default.nix
diff --git a/modules/home/terminal/termite/default.nix b/home/terminal/termite/default.nix
similarity index 100%
rename from modules/home/terminal/termite/default.nix
rename to home/terminal/termite/default.nix
diff --git a/modules/home/tmux/default.nix b/home/tmux/default.nix
similarity index 71%
rename from modules/home/tmux/default.nix
rename to home/tmux/default.nix
index 08aeb55..8e673b1 100644
--- a/modules/home/tmux/default.nix
+++ b/home/tmux/default.nix
@@ -10,20 +10,7 @@ in
options.my.home.tmux = with lib; {
enable = my.mkDisableOption "tmux terminal multiplexer";
- enablePassthrough = mkEnableOption "tmux DCS passthrough sequence";
-
- trueColorTerminals = mkOption {
- type = with types; listOf str;
- default = lib.my.nullableToList config.my.home.terminal.program;
- defaultText = ''
- `[ config.my.home.terminal.program ]` if it is non-null, otherwise an
- empty list.
- '';
- example = [ "xterm-256color" ];
- description = ''
- $TERM values which should be considered to always support 24-bit color.
- '';
- };
+ enabledPassthrough = mkEnableOption "tmux DCS passthrough sequence";
};
config.programs.tmux = lib.mkIf cfg.enable {
@@ -79,23 +66,12 @@ 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.enablePassthrough ''
+ lib.optionalString cfg.enabledPassthrough ''
# 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/modules/home/udiskie/default.nix b/home/udiskie/default.nix
similarity index 100%
rename from modules/home/udiskie/default.nix
rename to home/udiskie/default.nix
diff --git a/modules/home/vim/after/ftplugin/beancount.vim b/home/vim/after/ftplugin/beancount.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/beancount.vim
rename to home/vim/after/ftplugin/beancount.vim
diff --git a/modules/home/vim/after/ftplugin/cmake.vim b/home/vim/after/ftplugin/cmake.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/cmake.vim
rename to home/vim/after/ftplugin/cmake.vim
diff --git a/modules/home/vim/after/ftplugin/fugitive.vim b/home/vim/after/ftplugin/fugitive.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/fugitive.vim
rename to home/vim/after/ftplugin/fugitive.vim
diff --git a/modules/home/vim/after/ftplugin/gitcommit.vim b/home/vim/after/ftplugin/gitcommit.vim
similarity index 60%
rename from modules/home/vim/after/ftplugin/gitcommit.vim
rename to home/vim/after/ftplugin/gitcommit.vim
index 29d182c..f785ff8 100644
--- a/modules/home/vim/after/ftplugin/gitcommit.vim
+++ b/home/vim/after/ftplugin/gitcommit.vim
@@ -4,7 +4,3 @@ 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/modules/home/vim/after/ftplugin/gitconfig.vim b/home/vim/after/ftplugin/gitconfig.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/gitconfig.vim
rename to home/vim/after/ftplugin/gitconfig.vim
diff --git a/modules/home/vim/after/ftplugin/haskell.vim b/home/vim/after/ftplugin/haskell.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/haskell.vim
rename to home/vim/after/ftplugin/haskell.vim
diff --git a/modules/home/vim/after/ftplugin/help.vim b/home/vim/after/ftplugin/help.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/help.vim
rename to home/vim/after/ftplugin/help.vim
diff --git a/modules/home/vim/after/ftplugin/mail.vim b/home/vim/after/ftplugin/mail.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/mail.vim
rename to home/vim/after/ftplugin/mail.vim
diff --git a/modules/home/vim/after/ftplugin/make.vim b/home/vim/after/ftplugin/make.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/make.vim
rename to home/vim/after/ftplugin/make.vim
diff --git a/modules/home/vim/after/ftplugin/markdown.vim b/home/vim/after/ftplugin/markdown.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/markdown.vim
rename to home/vim/after/ftplugin/markdown.vim
diff --git a/modules/home/vim/after/ftplugin/netrw.vim b/home/vim/after/ftplugin/netrw.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/netrw.vim
rename to home/vim/after/ftplugin/netrw.vim
diff --git a/modules/home/vim/after/ftplugin/nix.vim b/home/vim/after/ftplugin/nix.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/nix.vim
rename to home/vim/after/ftplugin/nix.vim
diff --git a/modules/home/vim/after/ftplugin/rust.vim b/home/vim/after/ftplugin/rust.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/rust.vim
rename to home/vim/after/ftplugin/rust.vim
diff --git a/modules/home/vim/after/ftplugin/tex.vim b/home/vim/after/ftplugin/tex.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/tex.vim
rename to home/vim/after/ftplugin/tex.vim
diff --git a/modules/home/vim/after/ftplugin/tiger.vim b/home/vim/after/ftplugin/tiger.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/tiger.vim
rename to home/vim/after/ftplugin/tiger.vim
diff --git a/modules/home/vim/after/ftplugin/yaml.vim b/home/vim/after/ftplugin/yaml.vim
similarity index 100%
rename from modules/home/vim/after/ftplugin/yaml.vim
rename to home/vim/after/ftplugin/yaml.vim
diff --git a/modules/home/vim/after/plugin/mappings/commentary.lua b/home/vim/after/plugin/mappings/commentary.lua
similarity index 100%
rename from modules/home/vim/after/plugin/mappings/commentary.lua
rename to home/vim/after/plugin/mappings/commentary.lua
diff --git a/modules/home/vim/after/plugin/mappings/misc.lua b/home/vim/after/plugin/mappings/misc.lua
similarity index 100%
rename from modules/home/vim/after/plugin/mappings/misc.lua
rename to home/vim/after/plugin/mappings/misc.lua
diff --git a/modules/home/vim/after/plugin/mappings/telescope.lua b/home/vim/after/plugin/mappings/telescope.lua
similarity index 100%
rename from modules/home/vim/after/plugin/mappings/telescope.lua
rename to home/vim/after/plugin/mappings/telescope.lua
diff --git a/modules/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua b/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua
similarity index 100%
rename from modules/home/vim/after/plugin/mappings/tree-sitter-textobjects.lua
rename to home/vim/after/plugin/mappings/tree-sitter-textobjects.lua
diff --git a/modules/home/vim/after/plugin/mappings/unimpaired.lua b/home/vim/after/plugin/mappings/unimpaired.lua
similarity index 96%
rename from modules/home/vim/after/plugin/mappings/unimpaired.lua
rename to home/vim/after/plugin/mappings/unimpaired.lua
index f502056..f39a8c0 100644
--- a/modules/home/vim/after/plugin/mappings/unimpaired.lua
+++ b/home/vim/after/plugin/mappings/unimpaired.lua
@@ -1,7 +1,5 @@
local wk = require("which-key")
-local lsp = require("ambroisie.lsp")
-
local keys = {
-- Edition and navigation mappins
["["] = {
@@ -32,7 +30,7 @@ local keys = {
x = "XML encode",
y = "C string encode",
-- Custom
- d = { lsp.goto_prev_diagnostic, "Previous diagnostic" },
+ d = { vim.diagnostic.goto_prev, "Previous diagnostic" },
},
["]"] = {
name = "Next",
@@ -62,7 +60,7 @@ local keys = {
x = "XML decode",
y = "C string decode",
-- Custom
- d = { lsp.goto_next_diagnostic, "Next diagnostic" },
+ d = { vim.diagnostic.goto_next, "Next diagnostic" },
},
-- Option mappings
diff --git a/modules/home/vim/autoload/ftplugined.vim b/home/vim/autoload/ftplugined.vim
similarity index 100%
rename from modules/home/vim/autoload/ftplugined.vim
rename to home/vim/autoload/ftplugined.vim
diff --git a/modules/home/vim/default.nix b/home/vim/default.nix
similarity index 96%
rename from modules/home/vim/default.nix
rename to home/vim/default.nix
index 871bf40..1aad3c1 100644
--- a/modules/home/vim/default.nix
+++ b/home/vim/default.nix
@@ -67,7 +67,7 @@ in
nvim-lspconfig # Easy LSP configuration
lsp-format-nvim # Simplified formatting configuration
lsp_lines-nvim # Show diagnostics *over* regions
- none-ls-nvim # LSP integration for linters and formatters
+ null-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/modules/home/vim/ftdetect/automake.lua b/home/vim/ftdetect/automake.lua
similarity index 50%
rename from modules/home/vim/ftdetect/automake.lua
rename to home/vim/ftdetect/automake.lua
index 68a30ed..cfa15d2 100644
--- a/modules/home/vim/ftdetect/automake.lua
+++ b/home/vim/ftdetect/automake.lua
@@ -1,4 +1,4 @@
--- Use Automake filetype for `local.am` files
+-- Use Automake filetype for `local.am` files, explicit `set` to force override
vim.filetype.add({
filename = {
["local.am"] = "automake",
diff --git a/modules/home/vim/ftdetect/direnv.lua b/home/vim/ftdetect/direnv.lua
similarity index 100%
rename from modules/home/vim/ftdetect/direnv.lua
rename to home/vim/ftdetect/direnv.lua
diff --git a/modules/home/vim/ftdetect/kbuild.lua b/home/vim/ftdetect/kbuild.lua
similarity index 100%
rename from modules/home/vim/ftdetect/kbuild.lua
rename to home/vim/ftdetect/kbuild.lua
diff --git a/modules/home/vim/ftdetect/kconfig.lua b/home/vim/ftdetect/kconfig.lua
similarity index 100%
rename from modules/home/vim/ftdetect/kconfig.lua
rename to home/vim/ftdetect/kconfig.lua
diff --git a/modules/home/vim/ftdetect/tiger.lua b/home/vim/ftdetect/tiger.lua
similarity index 100%
rename from modules/home/vim/ftdetect/tiger.lua
rename to home/vim/ftdetect/tiger.lua
diff --git a/modules/home/vim/ftdetect/tikz.lua b/home/vim/ftdetect/tikz.lua
similarity index 100%
rename from modules/home/vim/ftdetect/tikz.lua
rename to home/vim/ftdetect/tikz.lua
diff --git a/modules/home/vim/init.vim b/home/vim/init.vim
similarity index 98%
rename from modules/home/vim/init.vim
rename to home/vim/init.vim
index bd63d25..ad332d2 100644
--- a/modules/home/vim/init.vim
+++ b/home/vim/init.vim
@@ -48,6 +48,8 @@ set noswapfile
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Set the minimal amount of lignes under and above the cursor for context
set scrolloff=5
+" More stable splits
+set splitkeep=screen
" Always show status line
set laststatus=2
" Enable Doxygen highlighting
diff --git a/modules/home/vim/lua/ambroisie/lsp.lua b/home/vim/lua/ambroisie/lsp.lua
similarity index 70%
rename from modules/home/vim/lua/ambroisie/lsp.lua
rename to home/vim/lua/ambroisie/lsp.lua
index 99d8dab..b682d27 100644
--- a/modules/home/vim/lua/ambroisie/lsp.lua
+++ b/home/vim/lua/ambroisie/lsp.lua
@@ -3,47 +3,26 @@ local M = {}
-- Simplified LSP formatting configuration
local lsp_format = require("lsp-format")
---- Move to the next/previous diagnostic, automatically showing the diagnostics
---- float if necessary.
---- @param forward whether to go forward or backwards
-local function goto_diagnostic(forward)
- vim.validate({
- forward = { forward, "boolean" },
+-- 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,
})
- 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/modules/home/vim/lua/ambroisie/utils.lua b/home/vim/lua/ambroisie/utils.lua
similarity index 66%
rename from modules/home/vim/lua/ambroisie/utils.lua
rename to home/vim/lua/ambroisie/utils.lua
index 418e0d1..984c730 100644
--- a/modules/home/vim/lua/ambroisie/utils.lua
+++ b/home/vim/lua/ambroisie/utils.lua
@@ -1,29 +1,29 @@
local M = {}
---- pretty print lua object
---- @param obj any object to pretty print
+-- pretty print lua object
+-- @param obj any object to pretty print
M.dump = function(obj)
print(vim.inspect(obj))
end
--- checks if a given command is executable
---- @param cmd string? command to check
---- @return boolean executable
+---@param cmd string? command to check
+---@return boolean executable
M.is_executable = function(cmd)
return cmd and vim.fn.executable(cmd) == 1
end
--- return a function that checks if a given command is executable
---- @param cmd string? command to check
---- @return fun(cmd: string): boolean executable
+---@param cmd string? command to check
+---@return fun(cmd: string): boolean executable
M.is_executable_condition = function(cmd)
return function()
return M.is_executable(cmd)
end
end
---- whether or not we are currently in an SSH connection
---- @return boolean ssh connection
+-- whether or not we are currently in an SSH connection
+-- @return boolean ssh connection
M.is_ssh = function()
local variables = {
"SSH_CONNECTION",
@@ -40,9 +40,9 @@ M.is_ssh = function()
return false
end
---- list all active LSP clients for current buffer
---- @param bufnr int? buffer number
---- @return table all active LSP client names
+-- list all active LSP clients for current buffer
+-- @param bufnr int? buffer number
+-- @return table all active LSP client names
M.list_lsp_clients = function(bufnr)
local clients = vim.lsp.buf_get_clients(bufnr)
local names = {}
diff --git a/modules/home/vim/plugin/abbreviations.lua b/home/vim/plugin/abbreviations.lua
similarity index 100%
rename from modules/home/vim/plugin/abbreviations.lua
rename to home/vim/plugin/abbreviations.lua
diff --git a/modules/home/vim/plugin/numbertoggle.lua b/home/vim/plugin/numbertoggle.lua
similarity index 100%
rename from modules/home/vim/plugin/numbertoggle.lua
rename to home/vim/plugin/numbertoggle.lua
diff --git a/modules/home/vim/plugin/settings/completion.lua b/home/vim/plugin/settings/completion.lua
similarity index 97%
rename from modules/home/vim/plugin/settings/completion.lua
rename to home/vim/plugin/settings/completion.lua
index 0ed8c7f..2d150e8 100644
--- a/modules/home/vim/plugin/settings/completion.lua
+++ b/home/vim/plugin/settings/completion.lua
@@ -37,7 +37,7 @@ cmp.setup({
entries = "native",
},
sources = {
- { name = "async_path", priority_weight = 110 },
+ { name = "path", priority_weight = 110 },
{ name = "nvim_lsp", priority_weight = 100 },
{ name = "nvim_lua", priority_weight = 90 },
{ name = "luasnip", priority_weight = 80 },
diff --git a/modules/home/vim/plugin/settings/dressing.lua b/home/vim/plugin/settings/dressing.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/dressing.lua
rename to home/vim/plugin/settings/dressing.lua
diff --git a/modules/home/vim/plugin/settings/fastfold.lua b/home/vim/plugin/settings/fastfold.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/fastfold.lua
rename to home/vim/plugin/settings/fastfold.lua
diff --git a/modules/home/vim/plugin/settings/formatting.lua b/home/vim/plugin/settings/formatting.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/formatting.lua
rename to home/vim/plugin/settings/formatting.lua
diff --git a/modules/home/vim/plugin/settings/git.lua b/home/vim/plugin/settings/git.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/git.lua
rename to home/vim/plugin/settings/git.lua
diff --git a/modules/home/vim/plugin/settings/lsp-lines.lua b/home/vim/plugin/settings/lsp-lines.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/lsp-lines.lua
rename to home/vim/plugin/settings/lsp-lines.lua
diff --git a/modules/home/vim/plugin/settings/lspconfig.lua b/home/vim/plugin/settings/lspconfig.lua
similarity index 69%
rename from modules/home/vim/plugin/settings/lspconfig.lua
rename to home/vim/plugin/settings/lspconfig.lua
index 794a765..45be269 100644
--- a/modules/home/vim/plugin/settings/lspconfig.lua
+++ b/home/vim/plugin/settings/lspconfig.lua
@@ -2,22 +2,6 @@ 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/modules/home/vim/plugin/settings/lualine.lua b/home/vim/plugin/settings/lualine.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/lualine.lua
rename to home/vim/plugin/settings/lualine.lua
diff --git a/modules/home/vim/plugin/settings/luasnip.lua b/home/vim/plugin/settings/luasnip.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/luasnip.lua
rename to home/vim/plugin/settings/luasnip.lua
diff --git a/modules/home/vim/plugin/settings/null-ls.lua b/home/vim/plugin/settings/null-ls.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/null-ls.lua
rename to home/vim/plugin/settings/null-ls.lua
diff --git a/modules/home/vim/plugin/settings/ssh.lua b/home/vim/plugin/settings/ssh.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/ssh.lua
rename to home/vim/plugin/settings/ssh.lua
diff --git a/modules/home/vim/plugin/settings/surround.lua b/home/vim/plugin/settings/surround.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/surround.lua
rename to home/vim/plugin/settings/surround.lua
diff --git a/modules/home/vim/plugin/settings/telescope.lua b/home/vim/plugin/settings/telescope.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/telescope.lua
rename to home/vim/plugin/settings/telescope.lua
diff --git a/modules/home/vim/plugin/settings/tree-sitter.lua b/home/vim/plugin/settings/tree-sitter.lua
similarity index 96%
rename from modules/home/vim/plugin/settings/tree-sitter.lua
rename to home/vim/plugin/settings/tree-sitter.lua
index 5503857..0d84abd 100644
--- a/modules/home/vim/plugin/settings/tree-sitter.lua
+++ b/home/vim/plugin/settings/tree-sitter.lua
@@ -8,6 +8,9 @@ ts_config.setup({
indent = {
enable = true,
},
+ context_commentstring = {
+ enable = true,
+ },
textobjects = {
select = {
enable = true,
diff --git a/modules/home/vim/plugin/settings/which-key.lua b/home/vim/plugin/settings/which-key.lua
similarity index 100%
rename from modules/home/vim/plugin/settings/which-key.lua
rename to home/vim/plugin/settings/which-key.lua
diff --git a/modules/home/vim/plugin/signtoggle.lua b/home/vim/plugin/signtoggle.lua
similarity index 100%
rename from modules/home/vim/plugin/signtoggle.lua
rename to home/vim/plugin/signtoggle.lua
diff --git a/modules/home/wm/cursor/default.nix b/home/wm/cursor/default.nix
similarity index 88%
rename from modules/home/wm/cursor/default.nix
rename to home/wm/cursor/default.nix
index 3b58b7b..9426232 100644
--- a/modules/home/wm/cursor/default.nix
+++ b/home/wm/cursor/default.nix
@@ -8,7 +8,7 @@ in
{
config = lib.mkIf cfg.enable {
home.pointerCursor = {
- package = pkgs.vimix-cursors;
+ package = pkgs.ambroisie.vimix-cursors;
name = "Vimix-cursors";
x11 = {
diff --git a/modules/home/wm/default.nix b/home/wm/default.nix
similarity index 73%
rename from modules/home/wm/default.nix
rename to home/wm/default.nix
index 449918a..fb9ecee 100644
--- a/modules/home/wm/default.nix
+++ b/home/wm/default.nix
@@ -36,31 +36,6 @@ 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 = {
@@ -72,8 +47,8 @@ in
command = mkOption {
type = types.str;
- default = "${lib.getExe pkgs.i3lock} -n -c 000000";
- example = "\${lib.getExe pkgs.i3lock} -n -i lock.png";
+ default = "${pkgs.i3lock}/bin/i3lock -n -c 000000";
+ example = "\${pkgs.i3lock}/bin/i3lock -n -i lock.png";
description = "Locker command to run";
};
diff --git a/modules/home/wm/dunst/default.nix b/home/wm/dunst/default.nix
similarity index 100%
rename from modules/home/wm/dunst/default.nix
rename to home/wm/dunst/default.nix
diff --git a/modules/home/wm/i3/default.nix b/home/wm/i3/default.nix
similarity index 96%
rename from modules/home/wm/i3/default.nix
rename to home/wm/i3/default.nix
index 69246f0..b5316f3 100644
--- a/modules/home/wm/i3/default.nix
+++ b/home/wm/i3/default.nix
@@ -27,13 +27,13 @@ let
genMovementBindings = f: addVimKeyBindings (lib.my.genAttrs' movementKeys f);
# Used in multiple scripts to show messages through keybindings
- notify-send = lib.getExe pkgs.libnotify;
+ notify-send = "${pkgs.libnotify}/bin/notify-send";
# Screen backlight management
- changeBacklight = lib.getExe pkgs.ambroisie.change-backlight;
+ changeBacklight = "${pkgs.ambroisie.change-backlight}/bin/change-backlight";
# Audio and volume management
- changeAudio = lib.getExe pkgs.ambroisie.change-audio;
+ changeAudio = "${pkgs.ambroisie.change-audio}/bin/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,7 +75,6 @@ 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";
@@ -129,7 +128,6 @@ in
{ class = "^Thunderbird$"; instance = "Mailnews"; window_role = "filterlist"; }
{ class = "^Pavucontrol.*$"; }
{ class = "^Arandr$"; }
- { class = ".?blueman-manager.*$"; }
];
};
@@ -190,14 +188,13 @@ 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} -i";
+ lib.mkIf enable "exec ${prog}";
})
(
# Changing container focus
diff --git a/modules/home/wm/i3bar/default.nix b/home/wm/i3bar/default.nix
similarity index 67%
rename from modules/home/wm/i3bar/default.nix
rename to home/wm/i3bar/default.nix
index 5ae0e7d..a2c9f3a 100644
--- a/modules/home/wm/i3bar/default.nix
+++ b/home/wm/i3bar/default.nix
@@ -17,11 +17,25 @@ in
top = {
icons = "awesome5";
- blocks = builtins.filter (attr: attr != { }) (lib.flatten [
+ blocks = builtins.filter (attr: attr != { }) [
{
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";
@@ -29,24 +43,12 @@ in
format = " $icon Boson{ $percentage|} ";
disconnected_format = "";
})
- (lib.optionalAttrs config.my.home.bluetooth.enable {
- block = "bluetooth";
- mac = "38:18:4C:BE:8E:97";
- format = " $icon Muon{ $percentage|} ";
- disconnected_format = "";
- })
(lib.optionalAttrs config.my.home.bluetooth.enable {
block = "bluetooth";
mac = "94:DB:56:00:EE:93";
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";
@@ -59,22 +61,9 @@ 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";
@@ -83,7 +72,6 @@ in
{
block = "battery";
format = " $icon $percentage{ ($time)|} ";
- empty_format = " $icon $percentage{ ($time)|} ";
not_charging_format = " $icon $percentage ";
full_format = " $icon $percentage ";
}
@@ -105,7 +93,7 @@ in
format = " $icon $timestamp.datetime(f:'%F %T') ";
interval = 5;
}
- ]);
+ ];
};
};
};
diff --git a/modules/home/wm/rofi/default.nix b/home/wm/rofi/default.nix
similarity index 100%
rename from modules/home/wm/rofi/default.nix
rename to home/wm/rofi/default.nix
diff --git a/modules/home/wm/screen-lock/default.nix b/home/wm/screen-lock/default.nix
similarity index 94%
rename from modules/home/wm/screen-lock/default.nix
rename to home/wm/screen-lock/default.nix
index 3b2ead6..95060b8 100644
--- a/modules/home/wm/screen-lock/default.nix
+++ b/home/wm/screen-lock/default.nix
@@ -5,7 +5,7 @@ let
notficationCmd =
let
duration = toString (cfg.notify.delay * 1000);
- notifyCmd = "${lib.getExe pkgs.libnotify} -u critical -t ${duration}";
+ notifyCmd = "${pkgs.libnotify}/bin/notify-send -u critical -t ${duration}";
in
# Needs to be surrounded by quotes for systemd to launch it correctly
''"${notifyCmd} -- 'Locking in ${toString cfg.notify.delay} seconds'"'';
diff --git a/modules/home/x/default.nix b/home/x/default.nix
similarity index 88%
rename from modules/home/x/default.nix
rename to home/x/default.nix
index c320e52..0312bc4 100644
--- a/modules/home/x/default.nix
+++ b/home/x/default.nix
@@ -3,6 +3,10 @@ let
cfg = config.my.home.x;
in
{
+ imports = [
+ ./keyboard
+ ];
+
options.my.home.x = with lib; {
enable = mkEnableOption "X server configuration";
};
diff --git a/modules/home/keyboard/default.nix b/home/x/keyboard/default.nix
similarity index 50%
rename from modules/home/keyboard/default.nix
rename to home/x/keyboard/default.nix
index 2216a08..40af800 100644
--- a/modules/home/keyboard/default.nix
+++ b/home/x/keyboard/default.nix
@@ -1,12 +1,8 @@
{ config, lib, ... }:
let
- cfg = config.my.home.keyboard;
+ cfg = config.my.home.x;
in
{
- options.my.home.keyboard = with lib; {
- enable = my.mkDisableOption "keyboard configuration";
- };
-
config = lib.mkIf cfg.enable {
home.keyboard = {
layout = "fr";
diff --git a/modules/home/xdg/default.nix b/home/xdg/default.nix
similarity index 85%
rename from modules/home/xdg/default.nix
rename to home/xdg/default.nix
index 6e49aa1..3fd8dc9 100644
--- a/modules/home/xdg/default.nix
+++ b/home/xdg/default.nix
@@ -39,7 +39,6 @@ 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";
@@ -48,11 +47,7 @@ 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/modules/home/zathura/default.nix b/home/zathura/default.nix
similarity index 100%
rename from modules/home/zathura/default.nix
rename to home/zathura/default.nix
diff --git a/modules/home/zsh/completion-styles.zsh b/home/zsh/completion-styles.zsh
similarity index 94%
rename from modules/home/zsh/completion-styles.zsh
rename to home/zsh/completion-styles.zsh
index c3d664d..156bc2c 100644
--- a/modules/home/zsh/completion-styles.zsh
+++ b/home/zsh/completion-styles.zsh
@@ -1,7 +1,4 @@
-# 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'
@@ -24,7 +21,6 @@ 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/modules/home/zsh/default.nix b/home/zsh/default.nix
similarity index 100%
rename from modules/home/zsh/default.nix
rename to home/zsh/default.nix
diff --git a/modules/home/zsh/extra-mappings.zsh b/home/zsh/extra-mappings.zsh
similarity index 86%
rename from modules/home/zsh/extra-mappings.zsh
rename to home/zsh/extra-mappings.zsh
index 25c230d..2e9c18f 100644
--- a/modules/home/zsh/extra-mappings.zsh
+++ b/home/zsh/extra-mappings.zsh
@@ -1,4 +1,4 @@
-# shellcheck shell=bash
+# shellcheck disable=2154
# Fix Ctrl+u killing from the cursor instead of the whole line
bindkey '^u' backward-kill-line
@@ -92,10 +92,6 @@ 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
@@ -103,10 +99,6 @@ 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
@@ -114,10 +106,6 @@ 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
@@ -125,8 +113,4 @@ 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/modules/home/zsh/options.zsh b/home/zsh/options.zsh
similarity index 96%
rename from modules/home/zsh/options.zsh
rename to home/zsh/options.zsh
index 32da8d8..82047ff 100644
--- a/modules/home/zsh/options.zsh
+++ b/home/zsh/options.zsh
@@ -1,5 +1,3 @@
-# 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/hosts/homes/ambroisie@ambroisie/default.nix b/hosts/homes/ambroisie@ambroisie/default.nix
new file mode 100644
index 0000000..5a561f7
--- /dev/null
+++ b/hosts/homes/ambroisie@ambroisie/default.nix
@@ -0,0 +1,15 @@
+# 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
deleted file mode 100644
index a969d8a..0000000
--- a/hosts/homes/ambroisie@bazin/default.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-# 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
deleted file mode 100644
index 5c0a963..0000000
--- a/hosts/homes/ambroisie@mousqueton/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-# 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 6e0304f..c72fb11 100644
--- a/hosts/nixos/aramis/default.nix
+++ b/hosts/nixos/aramis/default.nix
@@ -15,7 +15,6 @@
./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 99bc77e..c66b426 100644
--- a/hosts/nixos/aramis/hardware.nix
+++ b/hosts/nixos/aramis/hardware.nix
@@ -26,12 +26,6 @@
firmware = {
cpuFlavor = "intel";
};
-
- graphics = {
- enable = true;
-
- gpuFlavor = "intel";
- };
};
hardware = {
diff --git a/hosts/nixos/aramis/home.nix b/hosts/nixos/aramis/home.nix
index 66a0892..cdacf04 100644
--- a/hosts/nixos/aramis/home.nix
+++ b/hosts/nixos/aramis/home.nix
@@ -1,10 +1,6 @@
{ pkgs, ... }:
{
my.home = {
- # Use graphical pinentry
- bitwarden.pinentry = "gtk2";
- # Ebook library
- calibre.enable = true;
# Some amount of social life
discord.enable = true;
# Image viewver
@@ -20,6 +16,7 @@
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 4d2ac7d..d86da5a 100644
--- a/hosts/nixos/aramis/profiles.nix
+++ b/hosts/nixos/aramis/profiles.nix
@@ -9,6 +9,8 @@
gtk.enable = true;
# Laptop specific configuration
laptop.enable = true;
+ # Printers are hell, but so is the unability to print
+ printing.enable = true;
# i3 configuration
wm.windowManager = "i3";
# X configuration
diff --git a/hosts/nixos/aramis/system.nix b/hosts/nixos/aramis/system.nix
deleted file mode 100644
index 5e69222..0000000
--- a/hosts/nixos/aramis/system.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-# 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 fbc5db7..3b56eb9 100644
--- a/hosts/nixos/porthos/boot.nix
+++ b/hosts/nixos/porthos/boot.nix
@@ -6,8 +6,9 @@
# Use the GRUB 2 boot loader.
loader.grub = {
enable = true;
+ version = 2;
# Define on which hard drive you want to install Grub.
- device = "/dev/disk/by-id/ata-HGST_HUS724020ALA640_PN2181P6J58M1P";
+ device = "/dev/sda";
};
initrd = {
diff --git a/hosts/nixos/porthos/default.nix b/hosts/nixos/porthos/default.nix
index 2dea899..326d1cd 100644
--- a/hosts/nixos/porthos/default.nix
+++ b/hosts/nixos/porthos/default.nix
@@ -9,7 +9,6 @@
./networking.nix
./secrets
./services.nix
- ./system.nix
./users.nix
];
diff --git a/hosts/nixos/porthos/home.nix b/hosts/nixos/porthos/home.nix
index 90aa0ec..53d5d25 100644
--- a/hosts/nixos/porthos/home.nix
+++ b/hosts/nixos/porthos/home.nix
@@ -1,12 +1,6 @@
{ ... }:
{
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 8edc175..de87aa7 100644
--- a/hosts/nixos/porthos/install.sh
+++ b/hosts/nixos/porthos/install.sh
@@ -30,7 +30,6 @@ swapon /dev/sda2
apt install sudo
useradd -m -G sudo setupuser
-# shellcheck disable=2117
su setupuser
cat << EOF
@@ -38,7 +37,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 fce2a84..97d397c 100644
--- a/hosts/nixos/porthos/secrets/acme/dns-key.age
+++ b/hosts/nixos/porthos/secrets/acme/dns-key.age
@@ -1,8 +1,10 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg bQFr9oAnbo1rI/MpUV8wQz/Xj7iZY4ZU+Swf0nSIQFw
-zama2XJ0gdvUlD2GHMhmZqHSxHe+dKSfXnHoWDcSw7Y
--> ssh-ed25519 jPowng gitUwSKTNKWLSxnwa185O7x/u0ul93g8wPESdZaKRk8
-uvBIfAUkZp5sg6rfeEGvL5ZDV8m2uSEotW02kjPN3Hw
---- SZxe5f/CUZBvPQa2Sz/UBY3L68rMkIGGRuZPk7YE+Vg
-¾r ú&…¥‹{~v?¨}=Ä
-}+
¿SQ’M[²]Œ±kMÒAàtŒÃmMë/£µLsü|Þ…m©CÀñiYC}ƒŽ‡çxŽ€
\ No newline at end of file
+-> ssh-ed25519 cKojmg 0bz3W8QcGaulxy+kDmM717jTthQpFOCwV9HkenFJEyo
+NKeh1/JkX4WAWbOjUeKLMbsyCevnDf3a70FfYUav26c
+-> ssh-ed25519 jPowng Q59ybJMMteOSB6hZ5m6UPP0N2p8jrDSu5vBYwPgGcRw
+j420on2jSsfMsv4MDtiOTMIFjaXV7sIsrS+g4iab+68
+-> z}.q-grease s2W ssh-ed25519 cKojmg fpiyZo1AR5hCfk/KtbgWCTzz+05/VOUnnaHhWgXQRwc
-d2w9IX/kq/T6OwQ1zImsCmzIX2yfFD8hQDbs0IW3ZIA
--> ssh-ed25519 jPowng E9R7p9NCubUQrymjnrNfEjSNIIAXrBQLogNkWsOx8xc
-MrWEE5LNtOqAjnwA6byfSa1udnbUtqBy4FhdxipuA+g
---- fKgerjgGs+brvNKnrWdpmOadl34LipMT6Msqse2g3E0
-Œ¡E9³ï¬‚KYRL-‡„°¡Ç·\E–ŸK{ÃÜ7âço»ïò²XÂGxÍT’Î)Ëœôä6°%ˆLO€Tðÿ*‰™*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 63f0d32..b8ea008 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 db3c2fa..3af9fbe 100644
--- a/hosts/nixos/porthos/secrets/backup/password.age
+++ b/hosts/nixos/porthos/secrets/backup/password.age
@@ -1,7 +1,8 @@
age-encryption.org/v1
--> 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
+-> ssh-ed25519 cKojmg dgS4bezgtDi44R1A8am+J6zh80kUVYTo1heaxJCtzX4
+F3w/62xwtqYa40NU7OvF9pnZzYz/5hACAGJfMA4e2zw
+-> ssh-ed25519 jPowng lx81CK3yeNp9RjHCUFJeKYZlRzxBmXuADVBvRc13zCI
+P7e75t8xU+ZkYmeQ8mmMfyZZsRdG1J8yrvSUkiWzkFQ
+-> *z4/`-grease S/)a{e sFd";=
+--- 15FVhqRTkoPFEeETRRyFQhsv4Fn19Ozlax0u8Zy9mNA
+õ#+¥àÎvøSÈ4èá}§Rì%‹Î¯F4fnDœ˜J¹¤Z‹¸A¥Û™,_
\ 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 6b68503..90ff83b 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 d6e7330..c529200 100644
--- a/hosts/nixos/porthos/secrets/drone/secret.age
+++ b/hosts/nixos/porthos/secrets/drone/secret.age
@@ -1,7 +1,9 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg 0J8FMcVRf78LYG+dTOFzu3luXwhOjdOg0sx4Jxdccj4
-tdrCcfcYbTZYhL18RG3goiqtyhu3NTn+fJhdIAnU5uA
--> ssh-ed25519 jPowng qlF8nkSEg5fZgai0VP5eTSlZOHyj5IcalTf+QNWITVo
-O5aiZX0AJD76ixsu6i9xnnFBQANdsu3h6XzdTQ6KtKU
---- ByMQt9bnbzd8YO0Y93FIYF/lmdbYcOydkYdKxpRQujM
-+Ü¢6JNmÑq¶Ý[Eb1p)vD¾¿öPL9’Í€zåÒùªìÔ!¿€»ß‡…'‡TéaíÚd5©U:[¿Ød¿ÏR“×M’pŽñzj“
\ No newline at end of file
+-> ssh-ed25519 cKojmg 1+cLlzctgcM0FnVDwMPOAqBkvMcDBRg8SvCw4djI93Y
+oV2XI4f1AvM9P591kZZ6NgJXa+SDtqGzCSgc4psOmxM
+-> ssh-ed25519 jPowng Ufjfh1p350XxRPg95+/DHdmnl4lC0bbzUUlaxd1Bmxc
+/RHwFDSn2ov+60r1uHUigrsn99+GmmKmlk4h4T2gbA0
+-> *Lc$@-grease
+pzVJAHy1qRq3jUrnFV0DDO7/hwV1US4Ogf0RsrVfX0xzbr73uJ003YjieVB25LqN
+--- ME7/iVevyiguyhXugbkVFGzJV0yDccyKNlWbEZa/FmY
+YžŠXjb2uþnd;i0íýX]…§é0–þjé’L„PÔT~óú ƒÙ^kc”$D×ÚÛr¹úu³¶fr€e¸OÕ¸þ+p•¨&ãw®öϨ
\ 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 737777d..0211701 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 e2e70ac..915f8e9 100644
--- a/hosts/nixos/porthos/secrets/gitea/mail-password.age
+++ b/hosts/nixos/porthos/secrets/gitea/mail-password.age
@@ -1,7 +1,9 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg 46BI3ItrXRWMivmd/K8bmkKlrYFSr8cbehAkmwCskig
-gTjYquH1hDEZ2zWD5P7gN/ejTCH8JJb8bC/VLZ3koeg
--> ssh-ed25519 jPowng 5MqfJlasDbbqlI0dX98NZzHxmYmnnpveyBxa4z48V0o
-r7Yiv4+SZiDncD0Xzp5eFSP4f2yjGBOILKxEO1iT3Os
---- l43+JtT28i1YDhNX3hE3Qb7swskOBc5ghDqiyh3rU2s
-Ž+)´”¯ÛPô¢nåWT,.‹²eÚNW€Îñ YƱkçÿF4Ê#=˜)üîò™6Ö±ÛmȵîJ‹ª#
\ No newline at end of file
+-> 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Þ!œš-
ÞTì¥YAðM+ˆãGbMe@|A,è&ãÆE!܆p=P²=û9¹ÙP¹!Üö’Q|Ðä r
\ 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 1d9c5ba..fa310b4 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 477a4d1..30a5e25 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 94ddf8c..1fe3a71 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 u+5VWUy7eFq4boAIOhuKXZYD4mhczaUAcjz4+coVggA
-QlBHHgz7uY3TVgex59yZA0XgsIeHi2WN2S+UleC7bMg
--> ssh-ed25519 jPowng IyeI6WUjF8wxe92xD3xY++4ZqXtY8divB39eLWfAtm8
-eGj8w5X2ydS1LJvNSmo56xzRVoUB0iAKKs2NHX968Yc
---- hsYH9lUl3wIErJmBKzlWV+gIR5v6vgPIcNDgd0hiRGc
-¹Ã@ÚlôQûsÈ„ÿ×£©Dƒ}^{ºžá¾X)¸nYóJhXhg8wƒž´ “ú°˜Ó¨Ç‚Çw–‡y(œ–aè¸ìê.0>|ÚPSlOÃ|ÈÊE‰õÂÙé°€¡BWó_ˆ³ÜÌ)|x4©„šºë\_F¶
-ZÒo0=dts –j[ùŽõ0O+ÑÕRž8±‡ÕiüËçŽÜ»ˆõŒæÆdÀ«ß8j»â©ê
-‚g¹©‘–$xŒÿò¥Æbâ÷í˜äX·¢gÂ^¼íùG¼Êô¤Ž$UÏûB*ö°é²¡£ÈÔ)[t¶ÃHa•vŸ7ÌÑj£âD.z¸+¬[~–õÁÃé9Ùýàz¼øô`sé¶,_!^YÓïʯ2H¹øS‹¿¼©øÅøý*âñó@êjZ^ˆôæÎv~غ¶@ò
\ No newline at end of file
+-> ssh-ed25519 cKojmg lmu3MinmydRHD0A/YVRRtopermfoBC8M8cTHfVanY1s
+ygrtpZZJ7aeQTblNazpoP7DdifmDxHsE3DFJsIrWX5M
+-> ssh-ed25519 jPowng X0cihOc+fBtmtrkEivIHQngdYIobezXEF1x+pHqNzAw
+/+sw9x1NWY0anZhDMpAywBPrR0F4XCHaF9e8j/Yo/kI
+-> 32;%1s-grease
+JafjuSZty6a4NSO/y4y5wHWL8Mw
+--- dwCl66vdpsL0MR5NWWvg3JUnQ2QZQBeW0Dj0l5tvOKY
+oi,`ÓÜ#uÄwW%PoubÚcy8ó
ƒÃÉ><¿F‰Ååq…ÂKÂÇk0Çk/hÀ¥Ÿ5势ÝF+ýu‡ •e€¾Ÿ²óôbãè>1QŠ2®ñwn˜WbÖ–B˜âîiŸ^xurâ†-/llùÒÀÀ-ã=°7;jã0»I×%Fi¼í€ø‹™A;Y†ìUd]KÅI0(½ ”øAg£Ðóž^†uG:äpkJ’Ÿ:q¢šWSaLw¯¿Ô!ïM³4ã L/ùZŇ®¢D¶-XéUb»‘vÊbP‚ó›0ÇÅfÂ9êú †âJ`ÃX°ôÐOÅ!s›{ÙÄQAšc€c;ÏÃÑ‹4öMíچݹlxH&ïéöé{é}ÁäÛzZ¦œ‚9ûÊXžÜ“g‰]Vϱ•0gt¡¿…žw·
\ 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 2c8852d..539c33e 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
deleted file mode 100644
index e938cfa..0000000
--- a/hosts/nixos/porthos/secrets/matrix/sliding-sync-secret.age
+++ /dev/null
@@ -1,8 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 cKojmg xRtF3XVc7yPicAV/E4U7mn0itvD0h1BWBTjwunuoe2E
-OkB9sjGB3ulH4Feuyj3Ed0DBG4+mghW/Qpum9oXL/8c
--> ssh-ed25519 jPowng 1r8drqhz1yZdTq0Kvqya+ArU1C2fkN7Gg9LiWWfeUFg
-cjbxntVwHvqLaJpiKs/Y8ojeb6e3/cLFcsoeuoobfFg
---- B1qA2PylJBrdZxZtCzlU2kRPvxLM+IrXTvR+ERxVtTY
-"W9Äbg¸©~Ì/áÕb4ãÕ†ú³ÜÔIÊ
-Û}ð
§ËÅË-³²ªNó±”ÑC7vWœbºØ?¦8=œÉwÆBÃUpJClï²OÈ™³œ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 00d89a4..9790159 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 67c75e6..410536f 100644
--- a/hosts/nixos/porthos/secrets/monitoring/password.age
+++ b/hosts/nixos/porthos/secrets/monitoring/password.age
@@ -1,9 +1,10 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg l5lOlGnbvQ4D2kaSj1dd8Xr+btlNbTkT0SxSz02Vr1E
-Cjy73yKL1N8LnjRXXLpxX+wIOFCa8wrG44VjXUND1lI
--> ssh-ed25519 jPowng nYHfkP9dRkxu4Fqh8MgrbdZAc8gk+VGDyxIV6RsSeEM
-rKKi1NDoKMMzQ+kUs5ZX4zMqRBI0QwGY7q6K/L9+dLI
---- Umv3UCtXlApug7uuqmwbQN38i8Lx9/b0uhLgbc3OdZM
-äBLsœ ‹?ÖsÓ“s2Îy
-R0¹‘!<fü9txB7dòˆ™ÚŠò^©ô ɇLJ&ñW
€<©e]
-þ/$$
\ No newline at end of file
+-> 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>©†ðìì1ÅÆ2SÉž.×hwwqºš%i˜øé ‚*U^)Öè'qžµ›O2ÓœümòQÝ7˜¯m`
\ No newline at end of file
diff --git a/hosts/nixos/porthos/secrets/monitoring/secret-key.age b/hosts/nixos/porthos/secrets/monitoring/secret-key.age
deleted file mode 100644
index 6ea8c54..0000000
--- a/hosts/nixos/porthos/secrets/monitoring/secret-key.age
+++ /dev/null
@@ -1,7 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 cKojmg uz/Zf2uv+q7f3CVEoDuThHdqKE12lgHMDaORjZR/R2M
-HqsqZouRxocuHOic08c2oURw2I95BM9CzgEv7FPsWwM
--> ssh-ed25519 jPowng N0HG0fB19MUa2fOIdpKxOZOWjdUgEmKOjIP4hkx1JFo
-MAgTWh9d5d75iuzfA2eQ5P8ltSXZJ42dAT82YLGy0hs
---- g9KaXbUtmB05NWkGDSyWxEzo9woQaHHb+TtpvXfcpM4
-cÓX× È§˜5 b2¡•¬-€‹Ñ"•›RSÒI¦&ÌÍQøtÒ[QZ¨F¦kô.POè ’?Lü¤StãÖ-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 9039eea..9fd3c53 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
deleted file mode 100644
index 17732ed..0000000
--- a/hosts/nixos/porthos/secrets/nix-cache/cache-key.age
+++ /dev/null
@@ -1,7 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 cKojmg 8hV+BAKLsq8H/cxsklzuK2Q0/CqwjW6q8xMMJ0EaMDI
-LUjA2/qZAAeYjW6TtvmifBUo/WGigKwed6p7RnGjRyA
--> ssh-ed25519 jPowng wrJBGPfY2a8HLoqO12/YIzCB40tZmbAlFTVrDrxrCnE
-9ARASO4ZPEyQoBIrs/u8FovkzugQ4fIrZObUVBZ+UAs
---- WKMVJ4dhRAUelxXc7bJ6+UNOSrHxI4LhPo3i0RaHk7A
-ˆÌ˯®9QŸ5
J‡i£¾)¦TS¶8õ+ú®3ñŽ|“&ç"qFF+…í¬ vÉ‚’WjÏË–äÂMOßV×'¾\«àvK$„52˜î¥Ú¾í,lû,̹O§gßÚ¬L78!îQðR$«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
new file mode 100644
index 0000000..e0fb5be
Binary files /dev/null and b/hosts/nixos/porthos/secrets/nix-serve/cache-key.age differ
diff --git a/hosts/nixos/porthos/secrets/paperless/password.age b/hosts/nixos/porthos/secrets/paperless/password.age
index 8d545fd..3fe76cb 100644
--- a/hosts/nixos/porthos/secrets/paperless/password.age
+++ b/hosts/nixos/porthos/secrets/paperless/password.age
@@ -1,8 +1,10 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg 1hbRAuAGrTy6nmkAq+UWua8weywphZsTIGF68YQEOlQ
-92Q7uIKv1EiO73wMh53jrTuEkzP6ziBmX9SWXCl4d3w
--> ssh-ed25519 jPowng aPb9v/S/mLW95Qom+swvasqY878RxpxxOkMJA2wb6nY
-qu/dzcqciqKzNc28HqFMHA1XnrJy+/wWgbfM1+BrlkE
---- 8PXOozvZzNZQD2OT4a+0XuIQauzUGSvovdfDugmp+bc
-x²Ž‚ê Ã>ùý²ç¦©ðóÁÇ_ÏC9d™T5ŸûKzЄqØcZ©°É¾pŒš¾¡ ใºv
-)Œ³õ²¥
\ No newline at end of file
+-> ssh-ed25519 cKojmg zhpo89xef68JoeOFWzhdFshrj2BXXUCFPMLVJzv6EyE
+fmJxJi5rmyai9qGwDo7iHg4BrObGre96KCpl+g91O6I
+-> ssh-ed25519 jPowng INA6EZdy4J1p3QY5mfVOQXiLdOjIDaZR+CZMP+GfkXM
+8Nf5soaxY5SEzeJca5kaJkx7ByOvc4NkJVetB7wpEmo
+-> xjK'w-grease
+f5v0cvlt4JbHlAwDOob86qOInWdlN/oohTg
+--- NTGv4rr+MhJ/YeZhVHOjoS1V+zCHFf2itJYfK36R+wE
+š×—®JÚ dõ– oªê'YFUŸ@
+r7”ã“_N$‰ÿ–è‡>‚¡ê]hq»-¨FÛ°qXÿ?Î|?µÊ
\ No newline at end of file
diff --git a/hosts/nixos/porthos/secrets/paperless/secret-key.age b/hosts/nixos/porthos/secrets/paperless/secret-key.age
index 70cb898..eae5c56 100644
--- a/hosts/nixos/porthos/secrets/paperless/secret-key.age
+++ b/hosts/nixos/porthos/secrets/paperless/secret-key.age
@@ -1,7 +1,10 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg r3ZUTfSNcHc1TS2fVtk99Y2xJMMunkwkcR0dQIdiCi4
-LICSnzAaooGy6x4wt0vNM6YtQ4S17QohZNt7lfVrD6Q
--> ssh-ed25519 jPowng KLU68ws4lemr0wWHxm8H8pf1SQAoUZTN4QSPzk2PyHk
-6pjH1pI956oaf9ZIHPPq8p3g/mZC5GxWhWkT54Wohf0
---- cAQbniTwwtTftfXU/dGtA69yF/hh8iB97vHxvkIZMMo
-°c#Ž=^Ì~?5ú-w—NT†Ì¡¨+¶¨Ä!z¥ "’ Zö"2ºëðù×M!pž5×V¬ÈÛjçΡѡŽâ¥âL¹ÁÌyóÐŹúš›n÷ÄŠ8zQö°+¨ËÁØ©9WSµ§Æ0¨u}YÚ
\ No newline at end of file
+-> ssh-ed25519 cKojmg tZwn2usN6K62oS4vBa6boh9zEp/+cS4chP8boXG6SH4
+Fr3kV8gUDoiDqMxPYWsHyww8umYhQEKhqbVBiVw5NeI
+-> ssh-ed25519 jPowng wRbJl4G85obH/GluQBBsXE7MOvooEui65eqHfurvuQs
+KqVZMBSyHhkayEdwI6ocmA4qhHY9zYJvg1CEKM1SOa0
+-> 2E"/OFW-grease o Qp3HFe^
+bGhCNicPqt7txqxUiEWXCFs1OuQLqOqHmjHSqYQv919dqYep/xBXzi/aRf3dsdvh
+TCJCTvZG31Qxvikp
+--- xKJGbdVp+Z5h0vCBleSF2zYYYd2S5i0y4szNqjRwrDY
+Tª
/N¯¨¹i7m4‚#³MhiñP¹šÒÞ›Á¥-ÏgI÷ñ±%@E†(›iÿ7·ý©ýYg¦k±´"+㸠Àª(þ]o¨¸–ý†ð@báÊÞ§+Ï[‚Y"ÿ‘ÌBóóCR[ >-Ë.4d…¤b9v
\ 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 d50dc28..90e2501 100644
--- a/hosts/nixos/porthos/secrets/podgrab/password.age
+++ b/hosts/nixos/porthos/secrets/podgrab/password.age
@@ -1,7 +1,9 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg bICZUDqk/C2divEZu2lxUDsrtS1inSbDbS8hxJSJfHc
-FsfueyP6WCesAu5EcXIxxtvbb8RX09qNTN9GvuhYuTw
--> ssh-ed25519 jPowng Uujsu6c+QTXqCNi6c+zxk5tf0UQcG+Qm/SZF4dzSKCY
-RPVNNNauz73A8kWA0VSQiMWCerUkxPoXG2MUrFly3Bc
---- 8h4hGasOwZxk+i5aQfg6AzdA1G4wROhxz2rmM9u41b8
-{RÜ÷h×=42üé
yöЙü¯’Ãjš†›øìMWQ¤ûì%áX½‘î Œ°ú]•ÔöJ•ÙK„ÒÄå]ÏF®Ó?ûäQKŽ•¢
\ No newline at end of file
+-> 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
+¿vývû´ÊNÊbæ@Ÿ¡ÂFÛMMíYËÆíÌ&‰’/%¤¹Ñm¨®ØtÁÖ“ªd†h„|¡ðŒß©8¼Ž Ú½¨9‚®Cã¯/Å
\ No newline at end of file
diff --git a/hosts/nixos/porthos/secrets/pyload/credentials.age b/hosts/nixos/porthos/secrets/pyload/credentials.age
deleted file mode 100644
index 089f962..0000000
--- a/hosts/nixos/porthos/secrets/pyload/credentials.age
+++ /dev/null
@@ -1,7 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 cKojmg nJbOfp0/wmFOZLzcWjoGB7wEB8e56aO1NntSmn5KomU
-/Vio4Z/t7IPJrdzdwUPidVH3wrouSkwRzNHP0T4z3x0
--> ssh-ed25519 jPowng QXg/xqs7/VfkYQg3X77w4i53q64bL9oYeTxqb9NVhiQ
-sMHIXlmrIxtIr+s0X4lBqev/PPd3AKD5P7AP5K4NeJg
---- gzTn+6+aa4Ptic1lsvSt+r3IEBysHrvMMIyONogMDF0
-ÏÂË®UE_í¯çQ·Ü+U“AГMÄÿ/kï×dAL/”úÕįÍoæ\XïEDÇÑfã\ièÄ‘½àpF„`#¬n4è–x1îûÞèDëàÂË5CéЦ&fòB»q${Gg…Aqˆ³@üVu!Cc…R\ªÖ¨
\ No newline at end of file
diff --git a/hosts/nixos/porthos/secrets/secrets.nix b/hosts/nixos/porthos/secrets/secrets.nix
index 43a9b35..85a3d48 100644
--- a/hosts/nixos/porthos/secrets/secrets.nix
+++ b/hosts/nixos/porthos/secrets/secrets.nix
@@ -12,8 +12,6 @@ in
{
"acme/dns-key.age".publicKeys = all;
- "aria/rpc-token.age".publicKeys = all;
-
"backup/password.age".publicKeys = all;
"backup/credentials.age".publicKeys = all;
@@ -37,9 +35,6 @@ in
owner = "matrix-synapse";
publicKeys = all;
};
- "matrix/sliding-sync-secret.age" = {
- publicKeys = all;
- };
"miniflux/credentials.age".publicKeys = all;
@@ -47,35 +42,25 @@ in
owner = "grafana";
publicKeys = all;
};
- "monitoring/secret-key.age" = {
- owner = "grafana";
- publicKeys = all;
- };
"nextcloud/password.age" = {
owner = "nextcloud";
publicKeys = all;
};
- "nix-cache/cache-key.age".publicKeys = all;
+ "nix-serve/cache-key.age".publicKeys = all;
"paperless/password.age".publicKeys = all;
"paperless/secret-key.age".publicKeys = all;
"podgrab/password.age".publicKeys = all;
- "pyload/credentials.age".publicKeys = all;
-
"sso/auth-key.age".publicKeys = all;
"sso/ambroisie/password-hash.age".publicKeys = all;
"sso/ambroisie/totp-secret.age".publicKeys = all;
- "tandoor-recipes/secret-key.age".publicKeys = all;
-
"transmission/credentials.age".publicKeys = all;
- "vikunja/mail.age".publicKeys = all;
-
"wireguard/private-key.age".publicKeys = all;
"woodpecker/gitea.age".publicKeys = all;
diff --git a/hosts/nixos/porthos/secrets/sso/ambroisie/password-hash.age b/hosts/nixos/porthos/secrets/sso/ambroisie/password-hash.age
index efbd945..10d9eaa 100644
Binary files a/hosts/nixos/porthos/secrets/sso/ambroisie/password-hash.age and b/hosts/nixos/porthos/secrets/sso/ambroisie/password-hash.age differ
diff --git a/hosts/nixos/porthos/secrets/sso/ambroisie/totp-secret.age b/hosts/nixos/porthos/secrets/sso/ambroisie/totp-secret.age
index 211bec3..c5ce19b 100644
Binary files a/hosts/nixos/porthos/secrets/sso/ambroisie/totp-secret.age and b/hosts/nixos/porthos/secrets/sso/ambroisie/totp-secret.age differ
diff --git a/hosts/nixos/porthos/secrets/sso/auth-key.age b/hosts/nixos/porthos/secrets/sso/auth-key.age
index 1c12470..4e05b15 100644
Binary files a/hosts/nixos/porthos/secrets/sso/auth-key.age and b/hosts/nixos/porthos/secrets/sso/auth-key.age differ
diff --git a/hosts/nixos/porthos/secrets/tandoor-recipes/secret-key.age b/hosts/nixos/porthos/secrets/tandoor-recipes/secret-key.age
deleted file mode 100644
index d6db371..0000000
Binary files a/hosts/nixos/porthos/secrets/tandoor-recipes/secret-key.age and /dev/null differ
diff --git a/hosts/nixos/porthos/secrets/transmission/credentials.age b/hosts/nixos/porthos/secrets/transmission/credentials.age
index 16f90b6..4f407fa 100644
--- a/hosts/nixos/porthos/secrets/transmission/credentials.age
+++ b/hosts/nixos/porthos/secrets/transmission/credentials.age
@@ -1,8 +1,10 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg Froxrdh4H2Bsj4X2xicyBXHPRlbkRJAOztoTfzxItSM
-FnsLS2QYm8mJUO+c152FieLCFkALxxwQLnY4PAj8zsU
--> ssh-ed25519 jPowng pKl4p02M+U5JsiOnM2wXL5bkPwsI3IHjlTutlvez3zM
-NSuOFsyV8JqtTq97lNzacJnJ3YZgWp53XxU3mjUlcMQ
---- 2TK2ViFblmDheaYdat/GF0ze1wVsla1EPLaeRdMM4Gs
-®àµÕ¨ENÜžäm›Û2uÂ~Ju¼b´´t[Ý$Tñþ^‘2–°½jœÙÜi@xªÒ¸*İg[MÞH½½Xš!”‰6Áez¼…¥DW]ÓÕ<‰–`XÛâêÁÜÄPóéý÷ÃÞ›
-¶¥q*Îo¼½ÃÑ$‚åÓ<²
\ No newline at end of file
+-> 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
+‚¢ìÛ±S·7 ‘ý£÷ÜãV»»Bðßâø±³ˆ¶ïO‰lEt˜‹Á…šqýÇ—Ø©9²ã(ØP†$Wƒ0h;÷‰±àJy¯feø‚ >·_D,PºVFp\æ"AM}èg?ÿÝ/\²Ä;ùy’¬Óš(ÑSñKË
\ No newline at end of file
diff --git a/hosts/nixos/porthos/secrets/vikunja/mail.age b/hosts/nixos/porthos/secrets/vikunja/mail.age
deleted file mode 100644
index 864e5be..0000000
--- a/hosts/nixos/porthos/secrets/vikunja/mail.age
+++ /dev/null
@@ -1,9 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 cKojmg o5UoCsI4rvzJ84AQsumbyEngllUcSQB0lZw9F0zK82A
-xRcqV+QOqvpeMZiNCdWVhiRaEBayf3cv65xcrIKTfyI
--> ssh-ed25519 jPowng zFZTStqeaFy+HJGN3EV29+Qtf+oaXTKsZNnhetvlNz4
-5dsAyBzbJ3If1KO9vvrO5UHvFfKq154xTvQbu50TFGc
---- /MjYRy6PXkzAcTMMqt84/+SkKFcuGbdFZ3BXHZ15yzY
-/\œËÃQ'K0
-‚¨5]QzO·\à®ÿÞ•›Lúf“^—÷©<˜+ÌCø¼Þvƒ ì†)"‚6Ú·?ésoÀô§ÂÐHŠÿÔûxÇ÷7}õ³–Èv¸ûû’1&Ð" ¨¦FËåÙ%Á%ÕÖ|îä'„õŽ#ÛdV€žUî)?€þ÷ÿ—ýð¸pþÑÅ}¬odS×Á§|ø¹T‚þ;É‹]fM˜®xä°>h3ÛÚÓ{·Wí.²1&ºLö)õß±=k0ÖSSbœ|ÊV™‹)Tìû©ïBý:ŽÅë𗯾».‹½lrI“fè8ø!~ËJe§<·3?;—òk$H¾šÈk +å6¼¤Â¯“ÿ`’#V˜ÒO»tî0à
-Ó
\ 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 d7e292e..4abe1e5 100644
--- a/hosts/nixos/porthos/secrets/wireguard/private-key.age
+++ b/hosts/nixos/porthos/secrets/wireguard/private-key.age
@@ -1,8 +1,10 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg KslHl4v8yCsKZn5TduLgpTfpTi1uOInC9N2e8Ow83FI
-NzcJJr8kw1ykAdWRZOeWdNhx0BTgE7FwTKcge+yLJ/w
--> ssh-ed25519 jPowng YGWcOai0A9l2HDZyV0GtD8kEbY/xTUssODFBcseWAkA
-nJaHXkipFSHdyektoKV5y1jQrjkvnU7pwZwAymiQm7M
---- IgWkDulol1jRa+pcx7DbEy5pvC+2nrRJHsdQVPvPur0
-Bb<ÅŒb!ÏëE?:ÇÓô=÷srJCœüKz5ø®Ô{–Æ4`¾&N0€ÕÈö¹57ñüví’©+´1
-+(d§á¡{ìQŠÙ
\ No newline at end of file
+-> 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'èS“X¸]¥á÷ø®úî…?¤6‹Ð/ÆN(Bžò N«a”.ÿ HŽ7¿í•Iú÷Àoz‡/4:sK",7J
\ 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 11817ff..e6ede6c 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 89bcb6b..63a4862 100644
--- a/hosts/nixos/porthos/secrets/woodpecker/secret.age
+++ b/hosts/nixos/porthos/secrets/woodpecker/secret.age
@@ -1,7 +1,10 @@
age-encryption.org/v1
--> ssh-ed25519 cKojmg tAW2hbBSxsael6cdbN+vI4h1/PMNrWYct8cppCAasn0
-cex/wBTviSIXc8clNm5PGltTYa1Q5PwqlX4BGsNHiyU
--> ssh-ed25519 jPowng YxfhtpytvuhIARQAaJ0w94aOZiGNUOBR0pF+Sp80D2k
-nMon/VdYUQTs6LFccDGeIKWeNYib1wwtFmEYZkDZxg0
---- giL477X0+uZ2Ocvbixt5f5kNc1laj5P79oW8P9XsNP0
-¨›Ãd>ò±cE?nb¹vš_²'2ûûà³Õµ¥_6P›u:ÊusºE“8õ“ØÏ“xuڶ̪…Îxù̧ïžC[†®°ˆÁ.õêŽ6‰¯ qÌÀÍîJ°Ä5GäKÌ)N<ÊyYÉ¥tX=l7T´2¨ùRÙ
\ No newline at end of file
+-> 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
+ÑmW„r‚µœ_\)Ͱ]QЦxMÃs/݃Îݪäœó‚Í6óº“k±äÅY§xïMy¶ J¿¸‹GßÃ)i2_'ÖœHF€þ.âg_Îe5³#uätñØÕ 7j„ŽPñ²'TÞ¥8´•\IàW«UùäK°1Úº9½è
\ No newline at end of file
diff --git a/hosts/nixos/porthos/secrets/woodpecker/ssh/private-key.age b/hosts/nixos/porthos/secrets/woodpecker/ssh/private-key.age
index b0b7b46..0211701 100644
Binary files a/hosts/nixos/porthos/secrets/woodpecker/ssh/private-key.age and b/hosts/nixos/porthos/secrets/woodpecker/ssh/private-key.age differ
diff --git a/hosts/nixos/porthos/services.nix b/hosts/nixos/porthos/services.nix
index 2486752..e0a1731 100644
--- a/hosts/nixos/porthos/services.nix
+++ b/hosts/nixos/porthos/services.nix
@@ -28,6 +28,12 @@ in
enable = true;
libraryPath = "/data/media/library";
};
+ drone = {
+ enable = true;
+ runners = [ "docker" "exec" ];
+ secretFile = secrets."drone/gitea".path;
+ sharedSecretFile = secrets."drone/secret".path;
+ };
# Auto-ban spammy bots and incorrect logins
fail2ban = {
enable = true;
@@ -64,9 +70,6 @@ in
mailConfigFile = secrets."matrix/mail".path;
# Only necessary when doing the initial registration
secretFile = secrets."matrix/secret".path;
- slidingSync = {
- secretFile = secrets."matrix/sliding-sync-secret".path;
- };
};
miniflux = {
enable = true;
@@ -77,7 +80,6 @@ in
enable = true;
grafana = {
passwordFile = secrets."monitoring/password".path;
- secretKeyFile = secrets."monitoring/secret-key".path;
};
};
# FLOSS music streaming server
@@ -90,9 +92,9 @@ in
enable = true;
passwordFile = secrets."nextcloud/password".path;
};
- nix-cache = {
+ nix-serve = {
enable = true;
- secretKeyFile = secrets."nix-cache/cache-key".path;
+ secretKeyFile = secrets."nix-serve/cache-key".path;
};
nginx = {
enable = true;
@@ -119,13 +121,7 @@ in
secretKeyFile = secrets."paperless/secret-key".path;
};
# The whole *arr software suite
- pirate = {
- enable = true;
- # ... But not Lidarr because I don't care for music that much
- lidarr = {
- enable = false;
- };
- };
+ pirate.enable = true;
# Podcast automatic downloader
podgrab = {
enable = true;
@@ -134,34 +130,17 @@ in
};
# Regular backups
postgresql-backup.enable = true;
- pyload = {
- enable = true;
- credentialsFile = secrets."pyload/credentials".path;
- };
# RSS provider for websites that do not provide any feeds
rss-bridge.enable = true;
# Usenet client
sabnzbd.enable = true;
# Because I stilll need to play sysadmin
ssh-server.enable = true;
- # Recipe manager
- tandoor-recipes = {
- enable = true;
- secretKeyFile = secrets."tandoor-recipes/secret-key".path;
- };
# Torrent client and webui
transmission = {
enable = true;
credentialsFile = secrets."transmission/credentials".path;
};
- # Self-hosted todo app
- vikunja = {
- enable = true;
- mail = {
- enable = true;
- configFile = secrets."vikunja/mail".path;
- };
- };
# Simple, in-kernel VPN
wireguard = {
enable = true;
diff --git a/hosts/nixos/porthos/system.nix b/hosts/nixos/porthos/system.nix
deleted file mode 100644
index 07b9947..0000000
--- a/hosts/nixos/porthos/system.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-# Core system configuration
-{ ... }:
-{
- my.system = {
- nix = {
- cache = {
- # This server is the one serving the cache, don't try to query it
- selfHosted = false;
- };
- };
- };
-}
diff --git a/lib/lists.nix b/lib/lists.nix
index 6c2fadd..190198e 100644
--- a/lib/lists.nix
+++ b/lib/lists.nix
@@ -24,10 +24,4 @@ in
# (any -> value)
# [ any ]
mapFilter = pred: f: attrs: filter pred (map f attrs);
-
- # Transform a nullable value into a list of zero/one element.
- #
- # nullableToList ::
- # (nullable a) -> [ a ]
- nullableToList = x: if x != null then [ x ] else [ ];
}
diff --git a/modules/nixos/default.nix b/modules/default.nix
similarity index 96%
rename from modules/nixos/default.nix
rename to modules/default.nix
index 3648631..2eaa2e6 100644
--- a/modules/nixos/default.nix
+++ b/modules/default.nix
@@ -5,7 +5,6 @@
imports = [
./hardware
./home
- ./profiles
./programs
./secrets
./services
diff --git a/modules/nixos/hardware/bluetooth/default.nix b/modules/hardware/bluetooth/default.nix
similarity index 100%
rename from modules/nixos/hardware/bluetooth/default.nix
rename to modules/hardware/bluetooth/default.nix
diff --git a/modules/nixos/hardware/default.nix b/modules/hardware/default.nix
similarity index 82%
rename from modules/nixos/hardware/default.nix
rename to modules/hardware/default.nix
index 8e125ca..2a686f7 100644
--- a/modules/nixos/hardware/default.nix
+++ b/modules/hardware/default.nix
@@ -6,10 +6,9 @@
./bluetooth
./ergodox
./firmware
- ./graphics
+ ./mx-ergo
./networking
./sound
- ./trackball
./upower
];
}
diff --git a/modules/nixos/hardware/ergodox/default.nix b/modules/hardware/ergodox/default.nix
similarity index 100%
rename from modules/nixos/hardware/ergodox/default.nix
rename to modules/hardware/ergodox/default.nix
diff --git a/modules/nixos/hardware/firmware/default.nix b/modules/hardware/firmware/default.nix
similarity index 100%
rename from modules/nixos/hardware/firmware/default.nix
rename to modules/hardware/firmware/default.nix
diff --git a/modules/nixos/hardware/trackball/default.nix b/modules/hardware/mx-ergo/default.nix
similarity index 79%
rename from modules/nixos/hardware/trackball/default.nix
rename to modules/hardware/mx-ergo/default.nix
index 7a99247..e4e55a1 100644
--- a/modules/nixos/hardware/trackball/default.nix
+++ b/modules/hardware/mx-ergo/default.nix
@@ -1,11 +1,11 @@
# Hold down the `next page` button to scroll using the ball
{ config, lib, ... }:
let
- cfg = config.my.hardware.trackball;
+ cfg = config.my.hardware.mx-ergo;
in
{
- options.my.hardware.trackball = with lib; {
- enable = mkEnableOption "trackball configuration";
+ options.my.hardware.mx-ergo = with lib; {
+ enable = mkEnableOption "MX Ergo configuration";
};
config = lib.mkIf cfg.enable {
@@ -13,7 +13,6 @@ in
# This section must be *after* the one configured by `libinput`
# for the `ScrollMethod` configuration to not be overriden
inputClassSections = lib.mkAfter [
- # MX Ergo
''
Identifier "MX Ergo scroll button configuration"
MatchProduct "MX Ergo"
diff --git a/modules/nixos/hardware/networking/default.nix b/modules/hardware/networking/default.nix
similarity index 100%
rename from modules/nixos/hardware/networking/default.nix
rename to modules/hardware/networking/default.nix
diff --git a/modules/nixos/hardware/sound/default.nix b/modules/hardware/sound/default.nix
similarity index 100%
rename from modules/nixos/hardware/sound/default.nix
rename to modules/hardware/sound/default.nix
diff --git a/modules/nixos/hardware/upower/default.nix b/modules/hardware/upower/default.nix
similarity index 100%
rename from modules/nixos/hardware/upower/default.nix
rename to modules/hardware/upower/default.nix
diff --git a/modules/home/bitwarden/default.nix b/modules/home/bitwarden/default.nix
deleted file mode 100644
index c709f7b..0000000
--- a/modules/home/bitwarden/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ 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/modules/home/calibre/default.nix b/modules/home/calibre/default.nix
deleted file mode 100644
index 6edf654..0000000
--- a/modules/home/calibre/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ 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
deleted file mode 100644
index 60de863..0000000
--- a/modules/home/comma/default.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ 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 c8183cf..1e0e0aa 100644
--- a/modules/home/default.nix
+++ b/modules/home/default.nix
@@ -1,58 +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 = [
- ./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
+ inputs.home-manager.nixosModules.home-manager # enable home-manager options
+ (lib.mkAliasOptionModule aliasPath actualPath) # simplify setting home options
];
- # First sane reproducible version
- home.stateVersion = "20.09";
+ 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;
- # Who am I?
- home.username = "ambroisie";
+ # Nix Flakes compatibility
+ useGlobalPkgs = true;
+ useUserPackages = true;
- # Start services automatically
- systemd.user.startServices = "sd-switch";
+ # Forward inputs to home-manager configuration
+ extraSpecialArgs = {
+ inherit inputs;
+ };
+ };
+ };
}
diff --git a/modules/home/direnv/lib/android.sh b/modules/home/direnv/lib/android.sh
deleted file mode 100644
index fa2f856..0000000
--- a/modules/home/direnv/lib/android.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#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
deleted file mode 100644
index a65eb31..0000000
--- a/modules/home/direnv/lib/nix.sh
+++ /dev/null
@@ -1,69 +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}"
- # 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/modules/home/nixpkgs/default.nix b/modules/home/nixpkgs/default.nix
deleted file mode 100644
index 720fc9b..0000000
--- a/modules/home/nixpkgs/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{ 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/modules/home/secrets/github/token.age b/modules/home/secrets/github/token.age
deleted file mode 100644
index 1d36ccd..0000000
Binary files a/modules/home/secrets/github/token.age and /dev/null differ
diff --git a/modules/home/secrets/secrets.nix b/modules/home/secrets/secrets.nix
deleted file mode 100644
index f474342..0000000
--- a/modules/home/secrets/secrets.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-# 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
deleted file mode 100644
index 674cf6a..0000000
--- a/modules/home/ssh/default.nix
+++ /dev/null
@@ -1,70 +0,0 @@
-{ 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/modules/home/vim/after/ftplugin/gn.vim b/modules/home/vim/after/ftplugin/gn.vim
deleted file mode 100644
index 0cec9df..0000000
--- a/modules/home/vim/after/ftplugin/gn.vim
+++ /dev/null
@@ -1,6 +0,0 @@
-" 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/modules/home/vim/after/ftplugin/python.vim b/modules/home/vim/after/ftplugin/python.vim
deleted file mode 100644
index e7232a8..0000000
--- a/modules/home/vim/after/ftplugin/python.vim
+++ /dev/null
@@ -1,6 +0,0 @@
-" 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/modules/home/vim/ftdetect/glsl.lua b/modules/home/vim/ftdetect/glsl.lua
deleted file mode 100644
index 2f4f1dd..0000000
--- a/modules/home/vim/ftdetect/glsl.lua
+++ /dev/null
@@ -1,7 +0,0 @@
--- 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
deleted file mode 100644
index 37d772e..0000000
--- a/modules/home/vim/ftdetect/gn.lua
+++ /dev/null
@@ -1,7 +0,0 @@
--- Use GN filetype for Chromium Generate Ninja files
-vim.filetype.add({
- extension = {
- gn = "gn",
- gni = "gn",
- },
-})
diff --git a/modules/home/wget/default.nix b/modules/home/wget/default.nix
deleted file mode 100644
index 32c13c0..0000000
--- a/modules/home/wget/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ 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/modules/nixos/hardware/graphics/default.nix b/modules/nixos/hardware/graphics/default.nix
deleted file mode 100644
index 3baac02..0000000
--- a/modules/nixos/hardware/graphics/default.nix
+++ /dev/null
@@ -1,75 +0,0 @@
-{ 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/nixos/home/default.nix b/modules/nixos/home/default.nix
deleted file mode 100644
index fe00704..0000000
--- a/modules/nixos/home/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ 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/modules/nixos/services/aria/default.nix b/modules/nixos/services/aria/default.nix
deleted file mode 100644
index 2d1b3e2..0000000
--- a/modules/nixos/services/aria/default.nix
+++ /dev/null
@@ -1,76 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
- cfg = config.my.services.aria;
-in
-{
- options.my.services.aria = with lib; {
- enable = mkEnableOption "";
-
- rpcSecretFile = mkOption {
- type = types.str;
- example = "/run/secrets/aria-secret.txt";
- description = ''
- File containing the RPC secret.
- '';
- };
-
- rpcPort = mkOption {
- type = types.port;
- default = 6800;
- example = 8080;
- description = "RPC port";
- };
-
- downloadDir = mkOption {
- type = types.str;
- default = "/data/downloads";
- example = "/var/lib/transmission/download";
- description = "Download directory";
- };
- };
-
- config = lib.mkIf cfg.enable {
- services.aria2 = {
- enable = true;
-
- inherit (cfg) downloadDir rpcSecretFile;
-
- rpcListenPort = cfg.rpcPort;
- openPorts = false; # I don't want to expose the RPC port
- };
-
- # Expose DHT ports
- networking.firewall = {
- # FIXME: check for overlap?
- allowedUDPPortRanges = config.services.aria2.listenPortRange;
- };
-
- # Set-up media group
- users.groups.media = { };
-
- systemd.services.aria2 = {
- serviceConfig = {
- Group = lib.mkForce "media"; # Use 'media' group
- };
- };
-
- my.services.nginx.virtualHosts = {
- aria = {
- root = "${pkgs.ariang}/share/ariang";
- # For paranoia, don't allow anybody to use the UI unauthenticated
- sso = {
- enable = true;
- };
- };
- aria-rpc = {
- port = cfg.rpcPort;
- # Proxy websockets for RPC
- extraConfig = {
- locations."/".proxyWebsockets = true;
- };
- };
- };
-
- # NOTE: unfortunately aria2 does not log connection failures for fail2ban
- };
-}
diff --git a/modules/nixos/services/pirate/default.nix b/modules/nixos/services/pirate/default.nix
deleted file mode 100644
index e500b54..0000000
--- a/modules/nixos/services/pirate/default.nix
+++ /dev/null
@@ -1,92 +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;
- };
-
- 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/nixos/services/pyload/default.nix b/modules/nixos/services/pyload/default.nix
deleted file mode 100644
index 40bf12d..0000000
--- a/modules/nixos/services/pyload/default.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{ 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/nixos/services/tandoor-recipes/default.nix b/modules/nixos/services/tandoor-recipes/default.nix
deleted file mode 100644
index f5dc2db..0000000
--- a/modules/nixos/services/tandoor-recipes/default.nix
+++ /dev/null
@@ -1,79 +0,0 @@
-{ 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/nixos/services/vikunja/default.nix b/modules/nixos/services/vikunja/default.nix
deleted file mode 100644
index 9767d00..0000000
--- a/modules/nixos/services/vikunja/default.nix
+++ /dev/null
@@ -1,122 +0,0 @@
-# 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/nixos/system/docker/default.nix b/modules/nixos/system/docker/default.nix
deleted file mode 100644
index f051814..0000000
--- a/modules/nixos/system/docker/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-# 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/nixos/system/polkit/default.nix b/modules/nixos/system/polkit/default.nix
deleted file mode 100644
index 1e5b573..0000000
--- a/modules/nixos/system/polkit/default.nix
+++ /dev/null
@@ -1,16 +0,0 @@
-# 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/modules/nixos/programs/default.nix b/modules/programs/default.nix
similarity index 100%
rename from modules/nixos/programs/default.nix
rename to modules/programs/default.nix
diff --git a/modules/nixos/programs/steam/default.nix b/modules/programs/steam/default.nix
similarity index 74%
rename from modules/nixos/programs/steam/default.nix
rename to modules/programs/steam/default.nix
index 0c7f9da..f52effe 100644
--- a/modules/nixos/programs/steam/default.nix
+++ b/modules/programs/steam/default.nix
@@ -1,8 +1,6 @@
{ config, lib, pkgs, ... }:
let
cfg = config.my.programs.steam;
-
- steam = pkgs.steam;
in
{
options.my.programs.steam = with lib; {
@@ -25,14 +23,16 @@ in
environment.systemPackages = builtins.map lib.hiPrio [
# Respect XDG conventions, leave my HOME alone
- (pkgs.writeShellScriptBin "steam" ''
+ (pkgs.writeScriptBin "steam" ''
+ #!/bin/sh
mkdir -p "${cfg.dataDir}"
- HOME="${cfg.dataDir}" exec ${lib.getExe steam} "$@"
+ HOME="${cfg.dataDir}" exec ${pkgs.steam}/bin/steam "$@"
'')
# Same, for GOG and other such games
- (pkgs.writeShellScriptBin "steam-run" ''
+ (pkgs.writeScriptBin "steam-run" ''
+ #!/bin/sh
mkdir -p "${cfg.dataDir}"
- HOME="${cfg.dataDir}" exec ${lib.getExe steam.run} "$@"
+ HOME="${cfg.dataDir}" exec ${pkgs.steam-run}/bin/steam-run "$@"
'')
];
};
diff --git a/modules/nixos/secrets/default.nix b/modules/secrets/default.nix
similarity index 100%
rename from modules/nixos/secrets/default.nix
rename to modules/secrets/default.nix
diff --git a/modules/nixos/secrets/secrets.nix b/modules/secrets/secrets.nix
similarity index 100%
rename from modules/nixos/secrets/secrets.nix
rename to modules/secrets/secrets.nix
diff --git a/modules/nixos/secrets/users/ambroisie/hashed-password.age b/modules/secrets/users/ambroisie/hashed-password.age
similarity index 100%
rename from modules/nixos/secrets/users/ambroisie/hashed-password.age
rename to modules/secrets/users/ambroisie/hashed-password.age
diff --git a/modules/nixos/secrets/users/root/hashed-password.age b/modules/secrets/users/root/hashed-password.age
similarity index 100%
rename from modules/nixos/secrets/users/root/hashed-password.age
rename to modules/secrets/users/root/hashed-password.age
diff --git a/modules/nixos/services/adblock/default.nix b/modules/services/adblock/default.nix
similarity index 100%
rename from modules/nixos/services/adblock/default.nix
rename to modules/services/adblock/default.nix
diff --git a/modules/nixos/services/backup/default.nix b/modules/services/backup/default.nix
similarity index 100%
rename from modules/nixos/services/backup/default.nix
rename to modules/services/backup/default.nix
diff --git a/modules/nixos/services/blog/default.nix b/modules/services/blog/default.nix
similarity index 93%
rename from modules/nixos/services/blog/default.nix
rename to modules/services/blog/default.nix
index 3e68df2..4b646c3 100644
--- a/modules/nixos/services/blog/default.nix
+++ b/modules/services/blog/default.nix
@@ -5,10 +5,11 @@ let
domain = config.networking.domain;
makeHostInfo = subdomain: {
+ inherit subdomain;
root = "/var/www/${subdomain}";
};
- hostsInfo = lib.flip lib.genAttrs makeHostInfo [ "cv" "dev" "key" ];
+ hostsInfo = map makeHostInfo [ "cv" "dev" "key" ];
in
{
options.my.services.blog = {
diff --git a/modules/nixos/services/calibre-web/default.nix b/modules/services/calibre-web/default.nix
similarity index 93%
rename from modules/nixos/services/calibre-web/default.nix
rename to modules/services/calibre-web/default.nix
index b7bf9df..858851c 100644
--- a/modules/nixos/services/calibre-web/default.nix
+++ b/modules/services/calibre-web/default.nix
@@ -40,11 +40,12 @@ in
# Set-up media group
users.groups.media = { };
- my.services.nginx.virtualHosts = {
- library = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "library";
inherit (cfg) port;
- };
- };
+ }
+ ];
my.services.backup = {
paths = [
diff --git a/modules/nixos/services/default.nix b/modules/services/default.nix
similarity index 86%
rename from modules/nixos/services/default.nix
rename to modules/services/default.nix
index 67504da..268a3a5 100644
--- a/modules/nixos/services/default.nix
+++ b/modules/services/default.nix
@@ -3,7 +3,6 @@
{
imports = [
./adblock
- ./aria
./backup
./blog
./calibre-web
@@ -21,21 +20,18 @@
./navidrome
./nextcloud
./nginx
- ./nix-cache
+ ./nix-serve
./paperless
./pirate
./podgrab
./postgresql
./postgresql-backup
- ./pyload
./quassel
./rss-bridge
./sabnzbd
./ssh-server
- ./tandoor-recipes
./tlp
./transmission
- ./vikunja
./wireguard
./woodpecker
];
diff --git a/modules/nixos/services/drone/default.nix b/modules/services/drone/default.nix
similarity index 100%
rename from modules/nixos/services/drone/default.nix
rename to modules/services/drone/default.nix
diff --git a/modules/nixos/services/drone/runner-docker/default.nix b/modules/services/drone/runner-docker/default.nix
similarity index 89%
rename from modules/nixos/services/drone/runner-docker/default.nix
rename to modules/services/drone/runner-docker/default.nix
index e53c608..0f2e3b3 100644
--- a/modules/nixos/services/drone/runner-docker/default.nix
+++ b/modules/services/drone/runner-docker/default.nix
@@ -2,6 +2,7 @@
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") {
@@ -24,14 +25,14 @@ in
EnvironmentFile = [
cfg.sharedSecretFile
];
- ExecStart = lib.getExe pkgs.drone-runner-docker;
+ ExecStart = "${dockerPkg}/bin/drone-runner-docker";
User = "drone-runner-docker";
Group = "drone-runner-docker";
};
};
# Make sure it is activated in that case
- my.system.docker.enable = true;
+ virtualisation.docker.enable = true;
users.users.drone-runner-docker = {
isSystemUser = true;
diff --git a/modules/nixos/services/drone/runner-exec/default.nix b/modules/services/drone/runner-exec/default.nix
similarity index 95%
rename from modules/nixos/services/drone/runner-exec/default.nix
rename to modules/services/drone/runner-exec/default.nix
index a9bb563..f0dddb9 100644
--- a/modules/nixos/services/drone/runner-exec/default.nix
+++ b/modules/services/drone/runner-exec/default.nix
@@ -2,6 +2,7 @@
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") {
@@ -52,7 +53,7 @@ in
EnvironmentFile = [
cfg.sharedSecretFile
];
- ExecStart = lib.getExe pkgs.drone-runner-exec;
+ ExecStart = "${execPkg}/bin/drone-runner-exec";
User = "drone-runner-exec";
Group = "drone-runner-exec";
};
diff --git a/modules/nixos/services/drone/server/default.nix b/modules/services/drone/server/default.nix
similarity index 87%
rename from modules/nixos/services/drone/server/default.nix
rename to modules/services/drone/server/default.nix
index a3a1e49..1202010 100644
--- a/modules/nixos/services/drone/server/default.nix
+++ b/modules/services/drone/server/default.nix
@@ -7,7 +7,6 @@ in
systemd.services.drone-server = {
wantedBy = [ "multi-user.target" ];
after = [ "postgresql.service" ];
- requires = [ "postgresql.service" ];
serviceConfig = {
EnvironmentFile = [
cfg.secretFile
@@ -41,14 +40,17 @@ in
ensureDatabases = [ "drone" ];
ensureUsers = [{
name = "drone";
- ensureDBOwnership = true;
+ ensurePermissions = {
+ "DATABASE drone" = "ALL PRIVILEGES";
+ };
}];
};
- my.services.nginx.virtualHosts = {
- drone = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "drone";
inherit (cfg) port;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/fail2ban/default.nix b/modules/services/fail2ban/default.nix
similarity index 84%
rename from modules/nixos/services/fail2ban/default.nix
rename to modules/services/fail2ban/default.nix
index be5f7da..ab80bda 100644
--- a/modules/nixos/services/fail2ban/default.nix
+++ b/modules/services/fail2ban/default.nix
@@ -1,4 +1,4 @@
-# Filter and ban unauthorized access
+# A minimalist, opinionated feed reader
{ 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.settings = {
- findtime = "4h";
- bantime = "10m";
- };
+ jails.DEFAULT = '';
+ findtime = 4h
+ bantime = 10m
+ '';
};
};
}
diff --git a/modules/nixos/services/flood/default.nix b/modules/services/flood/default.nix
similarity index 89%
rename from modules/nixos/services/flood/default.nix
rename to modules/services/flood/default.nix
index 155e73d..ae8e219 100644
--- a/modules/nixos/services/flood/default.nix
+++ b/modules/services/flood/default.nix
@@ -30,7 +30,7 @@ in
serviceConfig = {
ExecStart = lib.concatStringsSep " " [
- (lib.getExe pkgs.flood)
+ "${pkgs.flood}/bin/flood"
"--port ${builtins.toString cfg.port}"
"--rundir /var/lib/${cfg.stateDir}"
];
@@ -40,10 +40,11 @@ in
};
};
- my.services.nginx.virtualHosts = {
- flood = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "flood";
inherit (cfg) port;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/gitea/default.nix b/modules/services/gitea/default.nix
similarity index 95%
rename from modules/nixos/services/gitea/default.nix
rename to modules/services/gitea/default.nix
index 4a8a3bb..28a448d 100644
--- a/modules/nixos/services/gitea/default.nix
+++ b/modules/services/gitea/default.nix
@@ -65,7 +65,6 @@ 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,
@@ -116,16 +115,18 @@ in
};
users.groups.git = { };
- my.services.nginx.virtualHosts = {
+ my.services.nginx.virtualHosts = [
# Proxy to Gitea
- git = {
+ {
+ subdomain = "git";
inherit (cfg) port;
- };
+ }
# Redirect `gitea.` to actual forge subdomain
- gitea = {
+ {
+ subdomain = "gitea";
redirect = config.services.gitea.settings.server.ROOT_URL;
- };
- };
+ }
+ ];
my.services.backup = {
paths = [
diff --git a/modules/nixos/services/grocy/default.nix b/modules/services/grocy/default.nix
similarity index 100%
rename from modules/nixos/services/grocy/default.nix
rename to modules/services/grocy/default.nix
diff --git a/modules/nixos/services/indexers/default.nix b/modules/services/indexers/default.nix
similarity index 61%
rename from modules/nixos/services/indexers/default.nix
rename to modules/services/indexers/default.nix
index 8a42345..66f1604 100644
--- a/modules/nixos/services/indexers/default.nix
+++ b/modules/services/indexers/default.nix
@@ -28,11 +28,12 @@ in
};
};
- my.services.nginx.virtualHosts = {
- jackett = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "jackett";
port = jackettPort;
- };
- };
+ }
+ ];
})
(lib.mkIf cfg.nzbhydra.enable {
@@ -40,11 +41,12 @@ in
enable = true;
};
- my.services.nginx.virtualHosts = {
- nzbhydra = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "nzbhydra";
port = nzbhydraPort;
- };
- };
+ }
+ ];
})
(lib.mkIf cfg.prowlarr.enable {
@@ -52,27 +54,12 @@ in
enable = true;
};
- my.services.nginx.virtualHosts = {
- prowlarr = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "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/nixos/services/jellyfin/default.nix b/modules/services/jellyfin/default.nix
similarity index 73%
rename from modules/nixos/services/jellyfin/default.nix
rename to modules/services/jellyfin/default.nix
index f5aaa99..2fcf51e 100644
--- a/modules/nixos/services/jellyfin/default.nix
+++ b/modules/services/jellyfin/default.nix
@@ -17,15 +17,9 @@ in
# Set-up media group
users.groups.media = { };
- systemd.services.jellyfin = {
- serviceConfig = {
- # Loose umask to make Jellyfin metadata more broadly readable
- UMask = lib.mkForce "0002";
- };
- };
-
- my.services.nginx.virtualHosts = {
- jellyfin = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "jellyfin";
port = 8096;
extraConfig = {
locations."/" = {
@@ -39,7 +33,7 @@ in
proxyWebsockets = true;
};
};
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/lohr/default.nix b/modules/services/lohr/default.nix
similarity index 93%
rename from modules/nixos/services/lohr/default.nix
rename to modules/services/lohr/default.nix
index dd4eea8..f43bc40 100644
--- a/modules/nixos/services/lohr/default.nix
+++ b/modules/services/lohr/default.nix
@@ -4,6 +4,8 @@ let
cfg = config.my.services.lohr;
settingsFormat = pkgs.formats.yaml { };
+ lohrPkg = pkgs.ambroisie.lohr;
+
lohrStateDirectory = "lohr";
lohrHome = "/var/lib/lohr/";
in
@@ -78,7 +80,7 @@ in
let
configFile = settingsFormat.generate "lohr-config.yaml" cfg.setting;
in
- "${lib.getExe pkgs.ambroisie.lohr} --config ${configFile}";
+ "${lohrPkg}/bin/lohr --config ${configFile}";
StateDirectory = lohrStateDirectory;
WorkingDirectory = lohrHome;
User = "lohr";
@@ -98,10 +100,11 @@ in
};
users.groups.lohr = { };
- my.services.nginx.virtualHosts = {
- lohr = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "lohr";
inherit (cfg) port;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/matrix/default.nix b/modules/services/matrix/default.nix
similarity index 74%
rename from modules/nixos/services/matrix/default.nix
rename to modules/services/matrix/default.nix
index b958f76..c73afed 100644
--- a/modules/nixos/services/matrix/default.nix
+++ b/modules/services/matrix/default.nix
@@ -13,7 +13,6 @@ 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; {
@@ -26,21 +25,6 @@ in
description = "Shared secret to register users";
};
- slidingSync = {
- port = mkOption {
- type = types.port;
- default = 8009;
- example = 8084;
- description = "Port used by sliding sync server";
- };
-
- secretFile = mkOption {
- type = types.str;
- example = "/var/lib/matrix/sliding-sync-secret-file.env";
- description = "Secret file which contains SYNCV3_SECRET definition";
- };
- };
-
mailConfigFile = mkOption {
type = types.str;
example = "/var/lib/matrix/email-config.yaml";
@@ -68,7 +52,7 @@ in
settings = {
server_name = domain;
- public_baseurl = "https://${matrixDomain}";
+ public_baseurl = "https://matrix.${domain}";
enable_registration = false;
@@ -106,33 +90,20 @@ in
] ++ lib.optional (cfg.secretFile != null) cfg.secretFile;
};
- services.matrix-sliding-sync = {
- enable = true;
-
- settings = {
- SYNCV3_SERVER = "https://${matrixDomain}";
- SYNCV3_BINDADDR = "127.0.0.1:${toString cfg.slidingSync.port}";
- };
-
- environmentFile = cfg.slidingSync.secretFile;
- };
-
- my.services.nginx.virtualHosts = {
+ my.services.nginx.virtualHosts = [
# Element Web app deployment
- chat = {
+ {
+ subdomain = "chat";
root = pkgs.element-web.override {
conf = {
default_server_config = {
"m.homeserver" = {
- "base_url" = "https://${matrixDomain}";
+ "base_url" = "https://matrix.${domain}";
"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
@@ -144,23 +115,12 @@ 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 = {
- ${matrixDomain} = {
+ "matrix.${domain}" = {
onlySSL = true;
useACMEHost = domain;
@@ -178,11 +138,6 @@ in
"/_matrix" = proxyToClientPort;
"/_synapse/client" = proxyToClientPort;
-
- # Sliding sync
- "~ ^/(client/|_matrix/client/unstable/org.matrix.msc3575/sync)" = {
- proxyPass = "http://${config.services.matrix-sliding-sync.settings.SYNCV3_BINDADDR}";
- };
};
listen = [
@@ -193,9 +148,9 @@ in
};
# same as above, but listening on the federation port
- "${matrixDomain}_federation" = {
+ "matrix.${domain}_federation" = {
onlySSL = true;
- serverName = matrixDomain;
+ serverName = "matrix.${domain}";
useACMEHost = domain;
locations."/".return = "404";
@@ -216,7 +171,7 @@ in
locations."= /.well-known/matrix/server".extraConfig =
let
- server = { "m.server" = "${matrixDomain}:${toString federationPort.public}"; };
+ server = { "m.server" = "matrix.${domain}:${toString federationPort.public}"; };
in
''
add_header Content-Type application/json;
@@ -226,9 +181,8 @@ in
locations."= /.well-known/matrix/client".extraConfig =
let
client = {
- "m.homeserver" = { "base_url" = "https://${matrixDomain}"; };
+ "m.homeserver" = { "base_url" = "https://matrix.${domain}"; };
"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/nixos/services/miniflux/default.nix b/modules/services/miniflux/default.nix
similarity index 92%
rename from modules/nixos/services/miniflux/default.nix
rename to modules/services/miniflux/default.nix
index 5104c8b..6d9ffc8 100644
--- a/modules/nixos/services/miniflux/default.nix
+++ b/modules/services/miniflux/default.nix
@@ -43,10 +43,11 @@ in
};
};
- my.services.nginx.virtualHosts = {
- reader = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "reader";
inherit (cfg) port;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/monitoring/default.nix b/modules/services/monitoring/default.nix
similarity index 90%
rename from modules/nixos/services/monitoring/default.nix
rename to modules/services/monitoring/default.nix
index 49919c1..ece6cc1 100644
--- a/modules/nixos/services/monitoring/default.nix
+++ b/modules/services/monitoring/default.nix
@@ -27,12 +27,6 @@ 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 = {
@@ -67,7 +61,6 @@ in
security = {
admin_user = cfg.grafana.username;
admin_password = "$__file{${cfg.grafana.passwordFile}}";
- secret_key = "$__file{${cfg.grafana.secretKeyFile}}";
};
};
@@ -125,10 +118,11 @@ in
];
};
- my.services.nginx.virtualHosts = {
- monitoring = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "monitoring";
inherit (cfg.grafana) port;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/navidrome/default.nix b/modules/services/navidrome/default.nix
similarity index 92%
rename from modules/nixos/services/navidrome/default.nix
rename to modules/services/navidrome/default.nix
index 944a97a..6c001fd 100644
--- a/modules/nixos/services/navidrome/default.nix
+++ b/modules/services/navidrome/default.nix
@@ -47,10 +47,11 @@ in
};
};
- my.services.nginx.virtualHosts = {
- music = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "music";
inherit (cfg) port;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/nextcloud/default.nix b/modules/services/nextcloud/default.nix
similarity index 83%
rename from modules/nixos/services/nextcloud/default.nix
rename to modules/services/nextcloud/default.nix
index 51195df..cffa58d 100644
--- a/modules/nixos/services/nextcloud/default.nix
+++ b/modules/services/nextcloud/default.nix
@@ -31,28 +31,17 @@ in
config = lib.mkIf cfg.enable {
services.nextcloud = {
enable = true;
- package = pkgs.nextcloud28;
+ package = pkgs.nextcloud26;
hostName = "nextcloud.${config.networking.domain}";
home = "/var/lib/nextcloud";
maxUploadSize = cfg.maxSize;
- configureRedis = true;
+ enableBrokenCiphersForSSE = false;
config = {
adminuser = cfg.admin;
adminpassFile = cfg.passwordFile;
dbtype = "pgsql";
dbhost = "/run/postgresql";
- };
-
- 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;
+ overwriteProtocol = "https"; # Nginx only allows SSL
};
};
@@ -62,7 +51,7 @@ in
ensureUsers = [
{
name = "nextcloud";
- ensureDBOwnership = true;
+ ensurePermissions."DATABASE nextcloud" = "ALL PRIVILEGES";
}
];
};
diff --git a/modules/nixos/services/nginx/default.nix b/modules/services/nginx/default.nix
similarity index 90%
rename from modules/nixos/services/nginx/default.nix
rename to modules/services/nginx/default.nix
index 7980ad9..944cd18 100644
--- a/modules/nixos/services/nginx/default.nix
+++ b/modules/services/nginx/default.nix
@@ -5,11 +5,10 @@ let
domain = config.networking.domain;
- virtualHostOption = with lib; types.submodule ({ name, ... }: {
+ virtualHostOption = with lib; types.submodule {
options = {
subdomain = mkOption {
type = types.str;
- default = name;
example = "dev";
description = ''
Which subdomain, under config.networking.domain, to use
@@ -23,6 +22,7 @@ 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,16 +40,8 @@ let
default = null;
example = "/var/www/blog";
description = ''
- 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.
+ The root folder for this virtual host. This option is incompatible
+ with `port`.
'';
};
@@ -73,7 +65,7 @@ let
'';
};
};
- });
+ };
in
{
imports = [
@@ -98,18 +90,20 @@ in
};
virtualHosts = mkOption {
- type = types.attrsOf virtualHostOption;
- default = { };
+ type = types.listOf virtualHostOption;
+ default = [ ];
example = litteralExample ''
- {
- gitea = {
- subdomain = "git";
+ [
+ {
+ subdomain = "gitea";
port = 8080;
- };
- dev = {
+ }
+ {
+ subdomain = "dev";
root = "/var/www/dev";
- };
- jellyfin = {
+ }
+ {
+ subdomain = "jellyfin";
port = 8096;
extraConfig = {
locations."/socket" = {
@@ -117,8 +111,8 @@ in
proxyWebsockets = true;
};
};
- };
- }
+ }
+ ]
'';
description = ''
List of virtual hosts to set-up using default settings.
@@ -189,9 +183,9 @@ in
config = lib.mkIf cfg.enable {
assertions = [ ]
- ++ (lib.flip lib.mapAttrsToList cfg.virtualHosts (_: { subdomain, ... } @ args:
+ ++ (lib.flip builtins.map cfg.virtualHosts ({ subdomain, ... } @ args:
let
- conflicts = [ "port" "root" "socket" "redirect" ];
+ conflicts = [ "port" "root" "redirect" ];
optionsNotNull = builtins.map (v: args.${v} != null) conflicts;
optionsSet = lib.filter lib.id optionsNotNull;
in
@@ -208,7 +202,7 @@ in
ports = lib.my.mapFilter
(v: v != null)
({ port, ... }: port)
- (lib.attrValues cfg.virtualHosts);
+ cfg.virtualHosts;
portCounts = lib.my.countValues ports;
nonUniquesCounts = lib.filterAttrs (_: v: v != 1) portCounts;
nonUniques = builtins.attrNames nonUniquesCounts;
@@ -220,7 +214,7 @@ in
map mkAssertion nonUniques
) ++ (
let
- subs = lib.mapAttrsToList (_: { subdomain, ... }: subdomain) cfg.virtualHosts;
+ subs = map ({ subdomain, ... }: subdomain) cfg.virtualHosts;
subsCounts = lib.my.countValues subs;
nonUniquesCounts = lib.filterAttrs (_: v: v != 1) subsCounts;
nonUniques = builtins.attrNames nonUniquesCounts;
@@ -266,11 +260,6 @@ 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";
@@ -324,7 +313,7 @@ in
])
);
in
- lib.my.genAttrs' (lib.attrValues cfg.virtualHosts) mkVHost;
+ lib.my.genAttrs' cfg.virtualHosts mkVHost;
sso = {
enable = true;
@@ -402,11 +391,12 @@ in
};
};
- my.services.nginx.virtualHosts = {
- ${cfg.sso.subdomain} = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "login";
inherit (cfg.sso) port;
- };
- };
+ }
+ ];
networking.firewall.allowedTCPPorts = [ 80 443 ];
diff --git a/modules/nixos/services/nginx/sso/default.nix b/modules/services/nginx/sso/default.nix
similarity index 94%
rename from modules/nixos/services/nginx/sso/default.nix
rename to modules/services/nginx/sso/default.nix
index 4a78282..13292ec 100644
--- a/modules/nixos/services/nginx/sso/default.nix
+++ b/modules/services/nginx/sso/default.nix
@@ -59,7 +59,8 @@ in
StateDirectory = "nginx-sso";
WorkingDirectory = "/var/lib/nginx-sso";
# The files to be merged might not have the correct permissions
- ExecStartPre = ''+${pkgs.writeShellScript "merge-nginx-sso-config" ''
+ ExecStartPre = ''+${pkgs.writeScript "merge-nginx-sso-config" ''
+ #!${pkgs.bash}/bin/bash
rm -f '${confPath}'
${utils.genJqSecretsReplacementSnippet cfg.configuration confPath}
@@ -69,7 +70,7 @@ in
''
}'';
ExecStart = lib.mkForce ''
- ${lib.getExe pkg} \
+ ${pkg}/bin/nginx-sso \
--config ${confPath} \
--frontend-dir ${pkg}/share/frontend
'';
diff --git a/modules/nixos/services/nix-cache/default.nix b/modules/services/nix-serve/default.nix
similarity index 54%
rename from modules/nixos/services/nix-cache/default.nix
rename to modules/services/nix-serve/default.nix
index 1ce3161..0cf1573 100644
--- a/modules/nixos/services/nix-cache/default.nix
+++ b/modules/services/nix-serve/default.nix
@@ -1,11 +1,11 @@
-# Binary cache
-{ config, lib, ... }:
+# Binary cache through nix-serve
+{ config, lib, pkgs, ... }:
let
- cfg = config.my.services.nix-cache;
+ cfg = config.my.services.nix-serve;
in
{
- options.my.services.nix-cache = with lib; {
- enable = mkEnableOption "nix binary cache";
+ options.my.services.nix-serve = with lib; {
+ enable = mkEnableOption "nix-serve binary cache";
port = mkOption {
type = types.port;
@@ -16,7 +16,7 @@ in
secretKeyFile = mkOption {
type = types.str;
- example = "/run/secrets/nix-cache";
+ example = "/run/secrets/nix-serve";
description = "Secret signing key for the cache";
};
@@ -32,21 +32,26 @@ in
};
config = lib.mkIf cfg.enable {
- services.harmonia = {
+ services.nix-serve = {
enable = true;
- settings = {
- bind = "127.0.0.1:${toString cfg.port}";
- inherit (cfg) priority;
- };
+ bindAddress = "127.0.0.1";
- signKeyPath = cfg.secretKeyFile;
+ inherit (cfg)
+ port
+ secretKeyFile
+ ;
+
+ package = pkgs.nix-serve-ng;
+
+ extraParams = "--priority=${toString cfg.priority}";
};
- my.services.nginx.virtualHosts = {
- cache = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "cache";
inherit (cfg) port;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/paperless/default.nix b/modules/services/paperless/default.nix
similarity index 91%
rename from modules/nixos/services/paperless/default.nix
rename to modules/services/paperless/default.nix
index f62879a..c9d6220 100644
--- a/modules/nixos/services/paperless/default.nix
+++ b/modules/services/paperless/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, pkgs, ... }:
+{ config, lib, ... }:
let
cfg = config.my.services.paperless;
in
@@ -52,7 +52,7 @@ in
mediaDir = lib.mkIf (cfg.documentPath != null) cfg.documentPath;
- settings =
+ extraConfig =
let
paperlessDomain = "paperless.${config.networking.domain}";
in
@@ -73,16 +73,9 @@ 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
@@ -134,7 +127,7 @@ in
ensureUsers = [
{
name = "paperless";
- ensureDBOwnership = true;
+ ensurePermissions."DATABASE paperless" = "ALL PRIVILEGES";
}
];
};
@@ -146,8 +139,9 @@ in
extraGroups = [ "media" ];
};
- my.services.nginx.virtualHosts = {
- paperless = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "paperless";
inherit (cfg) port;
sso = {
enable = true;
@@ -157,8 +151,8 @@ in
extraConfig = {
locations."/".proxyWebsockets = true;
};
- };
- };
+ }
+ ];
my.services.backup = {
paths = [
diff --git a/modules/services/pirate/default.nix b/modules/services/pirate/default.nix
new file mode 100644
index 0000000..42dd12b
--- /dev/null
+++ b/modules/services/pirate/default.nix
@@ -0,0 +1,38 @@
+# 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/modules/nixos/services/podgrab/default.nix b/modules/services/podgrab/default.nix
similarity index 90%
rename from modules/nixos/services/podgrab/default.nix
rename to modules/services/podgrab/default.nix
index 5ceebb6..9793d60 100644
--- a/modules/nixos/services/podgrab/default.nix
+++ b/modules/services/podgrab/default.nix
@@ -31,10 +31,11 @@ in
inherit (cfg) passwordFile port;
};
- my.services.nginx.virtualHosts = {
- podgrab = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "podgrab";
inherit (cfg) port;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/services/postgresql-backup/default.nix b/modules/services/postgresql-backup/default.nix
similarity index 100%
rename from modules/nixos/services/postgresql-backup/default.nix
rename to modules/services/postgresql-backup/default.nix
diff --git a/modules/nixos/services/postgresql/default.nix b/modules/services/postgresql/default.nix
similarity index 100%
rename from modules/nixos/services/postgresql/default.nix
rename to modules/services/postgresql/default.nix
diff --git a/modules/nixos/services/quassel/default.nix b/modules/services/quassel/default.nix
similarity index 95%
rename from modules/nixos/services/quassel/default.nix
rename to modules/services/quassel/default.nix
index 695f9e0..ec686e1 100644
--- a/modules/nixos/services/quassel/default.nix
+++ b/modules/services/quassel/default.nix
@@ -39,7 +39,7 @@ in
ensureUsers = [
{
name = "quassel";
- ensureDBOwnership = true;
+ ensurePermissions."DATABASE quassel" = "ALL PRIVILEGES";
}
];
# Insecure, I don't care.
diff --git a/modules/nixos/services/rss-bridge/default.nix b/modules/services/rss-bridge/default.nix
similarity index 100%
rename from modules/nixos/services/rss-bridge/default.nix
rename to modules/services/rss-bridge/default.nix
diff --git a/modules/nixos/services/sabnzbd/default.nix b/modules/services/sabnzbd/default.nix
similarity index 95%
rename from modules/nixos/services/sabnzbd/default.nix
rename to modules/services/sabnzbd/default.nix
index 9e0d9c3..7ab145f 100644
--- a/modules/nixos/services/sabnzbd/default.nix
+++ b/modules/services/sabnzbd/default.nix
@@ -18,11 +18,12 @@ in
# Set-up media group
users.groups.media = { };
- my.services.nginx.virtualHosts = {
- sabnzbd = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "sabnzbd";
inherit port;
- };
- };
+ }
+ ];
services.fail2ban.jails = {
sabnzbd = ''
diff --git a/modules/nixos/services/ssh-server/default.nix b/modules/services/ssh-server/default.nix
similarity index 100%
rename from modules/nixos/services/ssh-server/default.nix
rename to modules/services/ssh-server/default.nix
diff --git a/modules/nixos/services/tlp/default.nix b/modules/services/tlp/default.nix
similarity index 100%
rename from modules/nixos/services/tlp/default.nix
rename to modules/services/tlp/default.nix
diff --git a/modules/nixos/services/transmission/default.nix b/modules/services/transmission/default.nix
similarity index 93%
rename from modules/nixos/services/transmission/default.nix
rename to modules/services/transmission/default.nix
index aeb88b7..dcba0aa 100644
--- a/modules/nixos/services/transmission/default.nix
+++ b/modules/services/transmission/default.nix
@@ -3,7 +3,7 @@
# Inspired by [1]
#
# [1]: https://github.com/delroth/infra.delroth.net/blob/master/roles/seedbox.nix
-{ config, lib, pkgs, ... }:
+{ config, lib, ... }:
let
cfg = config.my.services.transmission;
in
@@ -45,7 +45,6 @@ in
config = lib.mkIf cfg.enable {
services.transmission = {
enable = true;
- package = pkgs.transmission_4;
group = "media";
downloadDirPermissions = "775";
@@ -80,11 +79,12 @@ in
# Default transmission webui, I prefer combustion but its development
# seems to have stalled
- my.services.nginx.virtualHosts = {
- transmission = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "transmission";
inherit (cfg) port;
- };
- };
+ }
+ ];
networking.firewall = {
allowedTCPPorts = [ cfg.peerPort ];
diff --git a/modules/nixos/services/wireguard/default.nix b/modules/services/wireguard/default.nix
similarity index 86%
rename from modules/nixos/services/wireguard/default.nix
rename to modules/services/wireguard/default.nix
index 26e54e0..fc5518d 100644
--- a/modules/nixos/services/wireguard/default.nix
+++ b/modules/services/wireguard/default.nix
@@ -100,8 +100,6 @@ 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.
@@ -263,36 +261,5 @@ 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/nixos/services/wireguard/keys/milady/private-key.age b/modules/services/wireguard/keys/milady/private-key.age
similarity index 100%
rename from modules/nixos/services/wireguard/keys/milady/private-key.age
rename to modules/services/wireguard/keys/milady/private-key.age
diff --git a/modules/nixos/services/wireguard/keys/richelieu/private-key.age b/modules/services/wireguard/keys/richelieu/private-key.age
similarity index 100%
rename from modules/nixos/services/wireguard/keys/richelieu/private-key.age
rename to modules/services/wireguard/keys/richelieu/private-key.age
diff --git a/modules/nixos/services/wireguard/keys/secrets.nix b/modules/services/wireguard/keys/secrets.nix
similarity index 100%
rename from modules/nixos/services/wireguard/keys/secrets.nix
rename to modules/services/wireguard/keys/secrets.nix
diff --git a/modules/nixos/services/woodpecker/agent-docker/default.nix b/modules/services/woodpecker/agent-docker/default.nix
similarity index 83%
rename from modules/nixos/services/woodpecker/agent-docker/default.nix
rename to modules/services/woodpecker/agent-docker/default.nix
index 79d3299..8b5307c 100644
--- a/modules/nixos/services/woodpecker/agent-docker/default.nix
+++ b/modules/services/woodpecker/agent-docker/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, ... }:
+{ config, lib, pkgs, ... }:
let
cfg = config.my.services.woodpecker;
@@ -10,6 +10,8 @@ in
agents.docker = {
enable = true;
+ package = pkgs.ambroisie.woodpecker-agent;
+
environment = {
WOODPECKER_SERVER = "localhost:${toString cfg.rpcPort}";
WOODPECKER_MAX_WORKFLOWS = "10";
@@ -25,7 +27,10 @@ in
};
# Make sure it is activated in that case
- my.system.docker.enable = true;
+ virtualisation.docker.enable = true;
+
+ # FIXME: figure out the issue
+ services.unbound.resolveLocalQueries = false;
# Adjust runner service for nix usage
systemd.services.woodpecker-agent-docker = {
diff --git a/modules/nixos/services/woodpecker/agent-exec/default.nix b/modules/services/woodpecker/agent-exec/default.nix
similarity index 84%
rename from modules/nixos/services/woodpecker/agent-exec/default.nix
rename to modules/services/woodpecker/agent-exec/default.nix
index 7ae21c8..d7adc4e 100644
--- a/modules/nixos/services/woodpecker/agent-exec/default.nix
+++ b/modules/services/woodpecker/agent-exec/default.nix
@@ -10,6 +10,8 @@ in
agents.exec = {
enable = true;
+ package = pkgs.ambroisie.woodpecker-agent;
+
environment = {
WOODPECKER_SERVER = "localhost:${toString cfg.rpcPort}";
WOODPECKER_MAX_WORKFLOWS = "10";
@@ -21,17 +23,6 @@ in
PAGER = "cat";
};
- path = with pkgs; [
- woodpecker-plugin-git
- bash
- coreutils
- git
- git-lfs
- gnutar
- gzip
- nix
- ];
-
environmentFile = [ cfg.sharedSecretFile ];
};
};
@@ -41,6 +32,17 @@ 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";
@@ -52,7 +54,7 @@ in
BindReadOnlyPaths = [
"/etc/passwd:/etc/passwd"
"/etc/group:/etc/group"
- "/etc/nix:/etc/nix"
+ "/nix/var/nix/profiles/system/etc/nix:/etc/nix"
"${config.environment.etc."ssh/ssh_known_hosts".source}:/etc/ssh/ssh_known_hosts"
"/etc/machine-id"
# channels are dynamic paths in the nix store, therefore we need to bind mount the whole thing
diff --git a/modules/nixos/services/woodpecker/default.nix b/modules/services/woodpecker/default.nix
similarity index 100%
rename from modules/nixos/services/woodpecker/default.nix
rename to modules/services/woodpecker/default.nix
diff --git a/modules/nixos/services/woodpecker/server/default.nix b/modules/services/woodpecker/server/default.nix
similarity index 78%
rename from modules/nixos/services/woodpecker/server/default.nix
rename to modules/services/woodpecker/server/default.nix
index f02a5c5..590f07c 100644
--- a/modules/nixos/services/woodpecker/server/default.nix
+++ b/modules/services/woodpecker/server/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, ... }:
+{ config, lib, pkgs, ... }:
let
cfg = config.my.services.woodpecker;
in
@@ -7,12 +7,14 @@ 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}";
@@ -24,9 +26,6 @@ in
};
systemd.services.woodpecker-server = {
- after = [ "postgresql.service" ];
- requires = [ "postgresql.service" ];
-
serviceConfig = {
# Set username for DB access
User = "woodpecker";
@@ -48,18 +47,22 @@ in
ensureDatabases = [ "woodpecker" ];
ensureUsers = [{
name = "woodpecker";
- ensureDBOwnership = true;
+ ensurePermissions = {
+ "DATABASE woodpecker" = "ALL PRIVILEGES";
+ };
}];
};
- my.services.nginx.virtualHosts = {
- woodpecker = {
+ my.services.nginx.virtualHosts = [
+ {
+ subdomain = "woodpecker";
inherit (cfg) port;
- };
+ }
# I might want to be able to RPC from other hosts in the future
- woodpecker-rpc = {
+ {
+ subdomain = "woodpecker-rpc";
port = cfg.rpcPort;
- };
- };
+ }
+ ];
};
}
diff --git a/modules/nixos/system/boot/default.nix b/modules/system/boot/default.nix
similarity index 100%
rename from modules/nixos/system/boot/default.nix
rename to modules/system/boot/default.nix
diff --git a/modules/nixos/system/default.nix b/modules/system/default.nix
similarity index 78%
rename from modules/nixos/system/default.nix
rename to modules/system/default.nix
index e6fb25b..3c81cac 100644
--- a/modules/nixos/system/default.nix
+++ b/modules/system/default.nix
@@ -4,14 +4,11 @@
{
imports = [
./boot
- ./docker
./documentation
./language
./nix
./packages
./podman
- ./polkit
- ./printing
./users
];
}
diff --git a/modules/nixos/system/documentation/default.nix b/modules/system/documentation/default.nix
similarity index 100%
rename from modules/nixos/system/documentation/default.nix
rename to modules/system/documentation/default.nix
diff --git a/modules/nixos/system/language/default.nix b/modules/system/language/default.nix
similarity index 100%
rename from modules/nixos/system/language/default.nix
rename to modules/system/language/default.nix
diff --git a/modules/nixos/system/nix/default.nix b/modules/system/nix/default.nix
similarity index 100%
rename from modules/nixos/system/nix/default.nix
rename to modules/system/nix/default.nix
diff --git a/modules/nixos/system/packages/default.nix b/modules/system/packages/default.nix
similarity index 100%
rename from modules/nixos/system/packages/default.nix
rename to modules/system/packages/default.nix
diff --git a/modules/nixos/system/podman/default.nix b/modules/system/podman/default.nix
similarity index 50%
rename from modules/nixos/system/podman/default.nix
rename to modules/system/podman/default.nix
index 52630c7..dd1b617 100644
--- a/modules/nixos/system/podman/default.nix
+++ b/modules/system/podman/default.nix
@@ -9,16 +9,6 @@ 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;
@@ -29,20 +19,7 @@ in
dockerSocket.enable = true;
# Allow DNS resolution in the default network
- defaultNetwork.settings = {
- dns_enabled = true;
- };
-
- # Remove unused data on a weekly basis
- autoPrune = {
- enable = true;
-
- dates = "weekly";
-
- flags = [
- "--all"
- ];
- };
+ defaultNetwork.dnsname.enable = true;
};
};
}
diff --git a/modules/nixos/system/users/default.nix b/modules/system/users/default.nix
similarity index 87%
rename from modules/nixos/system/users/default.nix
rename to modules/system/users/default.nix
index 655b31e..3fa5b2e 100644
--- a/modules/nixos/system/users/default.nix
+++ b/modules/system/users/default.nix
@@ -17,17 +17,16 @@ in
users = {
root = {
- hashedPasswordFile = secrets."users/root/hashed-password".path;
+ passwordFile = secrets."users/root/hashed-password".path;
};
${config.my.user.name} = {
- hashedPasswordFile = secrets."users/ambroisie/hashed-password".path;
+ passwordFile = 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/nixos/system/users/ssh/aramis.pub b/modules/system/users/ssh/aramis.pub
similarity index 100%
rename from modules/nixos/system/users/ssh/aramis.pub
rename to modules/system/users/ssh/aramis.pub
diff --git a/modules/nixos/system/users/ssh/shared.pub b/modules/system/users/ssh/shared.pub
similarity index 100%
rename from modules/nixos/system/users/ssh/shared.pub
rename to modules/system/users/ssh/shared.pub
diff --git a/overlays/default.nix b/overlays/default.nix
index 683e021..d24e60f 100644
--- a/overlays/default.nix
+++ b/overlays/default.nix
@@ -1,6 +1,3 @@
-# Automatically import all overlays in the directory
-let
- files = builtins.readDir ./.;
- overlays = builtins.removeAttrs files [ "default.nix" ];
-in
-builtins.mapAttrs (name: _: import "${./.}/${name}") overlays
+{
+ nix-serve-ng-initLibStore = import ./nix-serve-ng-initLibStore;
+}
diff --git a/overlays/gruvbox-nvim-better-diff/colours.patch b/overlays/gruvbox-nvim-better-diff/colours.patch
deleted file mode 100644
index 5b0d61a..0000000
--- a/overlays/gruvbox-nvim-better-diff/colours.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 416b3c9c5e783d173ac0fd5310a76c1b144b92c1 Mon Sep 17 00:00:00 2001
-From: eeeXun
-Date: Thu, 19 Oct 2023 02:34:12 +0800
-Subject: Use better diff colours
-
----
- README.md | 3 ++-
- lua/gruvbox.lua | 7 ++++---
- 2 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/lua/gruvbox.lua b/lua/gruvbox.lua
-index ceba0735..a319fc6a 100644
---- a/lua/gruvbox.lua
-+++ b/lua/gruvbox.lua
-@@ -360,9 +361,9 @@ local function get_groups()
- PmenuSel = { fg = colors.bg2, bg = colors.blue, bold = config.bold },
- PmenuSbar = { bg = colors.bg2 },
- PmenuThumb = { bg = colors.bg4 },
-- DiffDelete = { bg = colors.dark_red },
-- DiffAdd = { bg = colors.dark_green },
-- DiffChange = { bg = colors.dark_aqua },
-- DiffText = { bg = colors.yellow, fg = colors.bg0 },
-+ DiffDelete = { fg = colors.red },
-+ DiffAdd = { fg = colors.green },
-+ DiffChange = { fg = colors.aqua },
-+ DiffText = { fg = colors.yellow, bg = colors.bg0 },
- SpellCap = { link = "GruvboxBlueUnderline" },
- SpellBad = { link = "GruvboxRedUnderline" },
diff --git a/overlays/gruvbox-nvim-better-diff/default.nix b/overlays/gruvbox-nvim-better-diff/default.nix
deleted file mode 100644
index 832e71d..0000000
--- a/overlays/gruvbox-nvim-better-diff/default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-self: prev:
-{
- vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { });
-}
diff --git a/overlays/gruvbox-nvim-better-diff/generated.nix b/overlays/gruvbox-nvim-better-diff/generated.nix
deleted file mode 100644
index 82a18c2..0000000
--- a/overlays/gruvbox-nvim-better-diff/generated.nix
+++ /dev/null
@@ -1,10 +0,0 @@
-{ ... }:
-
-_final: prev: {
- gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (oa: {
- patches = (oa.patches or [ ]) ++ [
- # Inspired by https://github.com/ellisonleao/gruvbox.nvim/pull/291
- ./colours.patch
- ];
- });
-}
diff --git a/overlays/gruvbox-nvim-treesitter-fix/default.nix b/overlays/gruvbox-nvim-treesitter-fix/default.nix
deleted file mode 100644
index 832e71d..0000000
--- a/overlays/gruvbox-nvim-treesitter-fix/default.nix
+++ /dev/null
@@ -1,4 +0,0 @@
-self: prev:
-{
- vimPlugins = prev.vimPlugins.extend (self.callPackage ./generated.nix { });
-}
diff --git a/overlays/gruvbox-nvim-treesitter-fix/generated.nix b/overlays/gruvbox-nvim-treesitter-fix/generated.nix
deleted file mode 100644
index 5a18d62..0000000
--- a/overlays/gruvbox-nvim-treesitter-fix/generated.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{ fetchFromGitHub }:
-
-_final: prev: {
- gruvbox-nvim = prev.gruvbox-nvim.overrideAttrs (_: {
- version = "2024-01-29";
-
- src = fetchFromGitHub {
- owner = "ellisonleao";
- repo = "gruvbox.nvim";
- rev = "6e4027ae957cddf7b193adfaec4a8f9e03b4555f";
- sha256 = "sha256-jWnrRy/PT7D0UcPGL+XTbKHWvS0ixvbyqPtTzG9HY84=";
- };
- });
-}
diff --git a/overlays/nix-serve-ng-initLibStore/default.nix b/overlays/nix-serve-ng-initLibStore/default.nix
new file mode 100644
index 0000000..b528dc7
--- /dev/null
+++ b/overlays/nix-serve-ng-initLibStore/default.nix
@@ -0,0 +1,11 @@
+final: prev:
+{
+ nix-serve-ng = prev.nix-serve-ng.overrideAttrs (_: {
+ src = final.fetchFromGitHub {
+ owner = "aristanetworks";
+ repo = "nix-serve-ng";
+ rev = "dabf46d65d8e3be80fa2eacd229eb3e621add4bd";
+ hash = "sha256-SoJJ3rMtDMfUzBSzuGMY538HDIj/s8bPf8CjIkpqY2w=";
+ };
+ });
+}
diff --git a/pkgs/bw-pass/default.nix b/pkgs/bw-pass/default.nix
index 9b959f5..ef66f22 100644
--- a/pkgs/bw-pass/default.nix
+++ b/pkgs/bw-pass/default.nix
@@ -36,8 +36,7 @@ stdenvNoCC.mkDerivation rec {
description = "A simple script to query a password from bitwarden";
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- mainProgram = "bw-pass";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.linux;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/change-audio/default.nix b/pkgs/change-audio/default.nix
index 12814e1..f201a55 100644
--- a/pkgs/change-audio/default.nix
+++ b/pkgs/change-audio/default.nix
@@ -35,8 +35,7 @@ stdenvNoCC.mkDerivation rec {
'';
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- mainProgram = "change-audio";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.linux;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/change-backlight/default.nix b/pkgs/change-backlight/default.nix
index 1f8c88c..f9a1afd 100644
--- a/pkgs/change-backlight/default.nix
+++ b/pkgs/change-backlight/default.nix
@@ -35,8 +35,7 @@ stdenvNoCC.mkDerivation rec {
'';
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- mainProgram = "change-backlight";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.linux;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/comma/comma b/pkgs/comma/comma
index 4367a26..ba5c6ae 100755
--- a/pkgs/comma/comma
+++ b/pkgs/comma/comma
@@ -30,4 +30,4 @@ if [ -z "$PROGRAM" ]; then
exit 1
fi
-nix shell "${COMMA_NIXPKGS_FLAKE:-nixpkgs}#$PROGRAM" -c "$@"
+nix shell "${COMMA_PKGS_FLAKE:-nixpkgs}#$PROGRAM" -c "$@"
diff --git a/pkgs/comma/default.nix b/pkgs/comma/default.nix
index 32e09d0..0ce542d 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 ];
- mainProgram = ",";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.unix;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/default.nix b/pkgs/default.nix
index 6b7fce1..4a84b9c 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -14,6 +14,10 @@ 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 { };
@@ -22,11 +26,23 @@ 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 { };
- zsh-done = pkgs.callPackage ./zsh-done { };
+ 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 { };
})
diff --git a/pkgs/diff-flake/default.nix b/pkgs/diff-flake/default.nix
index 9cccd20..55d9403 100644
--- a/pkgs/diff-flake/default.nix
+++ b/pkgs/diff-flake/default.nix
@@ -34,8 +34,7 @@ stdenvNoCC.mkDerivation rec {
description = "Nix flake helper to visualize changes in closures";
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- mainProgram = "diff-flake";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.unix;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/dragger/default.nix b/pkgs/dragger/default.nix
index 9eda7df..255cc01 100644
--- a/pkgs/dragger/default.nix
+++ b/pkgs/dragger/default.nix
@@ -23,7 +23,6 @@ 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 a7c2cbc..0783ad1 100644
--- a/pkgs/drone-rsync/default.nix
+++ b/pkgs/drone-rsync/default.nix
@@ -34,8 +34,7 @@ stdenvNoCC.mkDerivation rec {
description = "Helper script to run rsync in a CI pipeline";
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- mainProgram = "drone-rsync";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.unix;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/drone-scp/default.nix b/pkgs/drone-scp/default.nix
new file mode 100644
index 0000000..0affedb
--- /dev/null
+++ b/pkgs/drone-scp/default.nix
@@ -0,0 +1,24 @@
+{ 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 8c59bf5..dcdb7f3 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","${lib.getExe mpv}",' ff2mpv.go
+ sed -i -e 's,"mpv","${mpv}/bin/mpv",' ff2mpv.go
'';
postInstall = ''
@@ -26,6 +26,5 @@ 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 2fc840d..a464091 100644
--- a/pkgs/i3-get-window-criteria/default.nix
+++ b/pkgs/i3-get-window-criteria/default.nix
@@ -35,8 +35,7 @@ stdenvNoCC.mkDerivation rec {
description = "Helper script to query i3 window criterions";
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- mainProgram = "i3-get-window-criteria";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.unix;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/lohr/default.nix b/pkgs/lohr/default.nix
index ddeac7a..38892bb 100644
--- a/pkgs/lohr/default.nix
+++ b/pkgs/lohr/default.nix
@@ -1,23 +1,22 @@
{ lib, fetchFromGitHub, rustPlatform }:
rustPlatform.buildRustPackage rec {
pname = "lohr";
- version = "0.4.5";
+ version = "0.4.2";
src = fetchFromGitHub {
owner = "alarsyo";
repo = "lohr";
rev = "v${version}";
- hash = "sha256-p6E/r+OxFTpxDpOKSlacOxvRLfHSKg1mHNAfTytfqDY=";
+ hash = "sha256-2pN/Me5fCdE++TzBUswPXzjuUIIB7Uck+Scp361JgE4=";
};
- cargoHash = "sha256-hext0S0o9D9pN9epzXtD5dwAYMPCLpBBOBT4FX0mTMk=";
+ cargoHash = "sha256-YHg4b6rKcnVJSDoWh9/o+p40NBog65Gd2/UwIDXiUe0=";
meta = with lib; {
description = "Git mirroring daemon";
homepage = "https://github.com/alarsyo/lohr";
license = with licenses; [ mit asl20 ];
- mainProgram = "lohr";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.unix;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/matrix-notifier/default.nix b/pkgs/matrix-notifier/default.nix
index aba093f..1762b62 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.4.0";
+ version = "0.3.0";
src = fetchFromGitHub {
owner = "ambroisie";
repo = "matrix-notifier";
rev = "v${version}";
- hash = "sha256-6KHteQx0bHodpNp7cuUIGM7uBRPaj386n2t5yz6umpY=";
+ hash = "sha256-NE9RO0ep2ibrT9EUPGTnUE3ofdNTCHwelxnX9tCflg0=";
};
nativeBuildInputs = [
@@ -38,8 +38,7 @@ stdenvNoCC.mkDerivation rec {
'';
homepage = "https://git.belanyi.fr/ambroisie/${pname}";
license = licenses.mit;
- mainProgram = "matrix-notifier";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.unix;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/osc52/default.nix b/pkgs/osc52/default.nix
index d4b0c08..9e20eab 100644
--- a/pkgs/osc52/default.nix
+++ b/pkgs/osc52/default.nix
@@ -34,8 +34,7 @@ stdenvNoCC.mkDerivation rec {
'';
homepage = "https://git.belanyi.fr/ambroisie/nix-config";
license = with licenses; [ mit ];
- mainProgram = "osc52";
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.linux;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/osc777/default.nix b/pkgs/osc777/default.nix
deleted file mode 100644
index 6e9ce2e..0000000
--- a/pkgs/osc777/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ 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
deleted file mode 100755
index 83d066f..0000000
--- a/pkgs/osc777/osc777
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/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
deleted file mode 100644
index 6f9ff0a..0000000
--- a/pkgs/rbw-pass/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ 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
deleted file mode 100755
index 23363dc..0000000
--- a/pkgs/rbw-pass/rbw-pass
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/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 642ac41..824a7d6 100644
--- a/pkgs/unbound-zones-adblock/default.nix
+++ b/pkgs/unbound-zones-adblock/default.nix
@@ -1,16 +1,16 @@
-{ lib, gawk, stdenvNoCC, stevenblack-blocklist }:
+{ lib, gawk, stdenvNoCC, unified-hosts-lists }:
stdenvNoCC.mkDerivation {
name = "unbound-zones-adblock";
- version = stevenblack-blocklist.rev;
+ version = unified-hosts-lists.version;
- src = stevenblack-blocklist;
+ src = unified-hosts-lists;
dontUnpack = true;
installPhase =
let
gawkCmd = lib.concatStringsSep " " [
- (lib.getExe gawk)
+ ''${gawk}/bin/awk''
'''{sub(/\r$/,"")}''
''{sub(/^127\.0\.0\.1/,"0.0.0.0")}''
''BEGIN { OFS = "" }''
@@ -18,11 +18,9 @@ stdenvNoCC.mkDerivation {
];
in
''
- 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"
+ mkdir -p $out
+ for file in $src/*; do
+ ${gawkCmd} $file | tr '[:upper:]' '[:lower:]' | sort -u > $out/$(basename $file)
done
'';
@@ -34,7 +32,7 @@ stdenvNoCC.mkDerivation {
'';
homepage = "https://github.com/StevenBlack/hosts";
license = licenses.mit;
- maintainers = with maintainers; [ ambroisie ];
platforms = platforms.all;
+ maintainers = with maintainers; [ ambroisie ];
};
}
diff --git a/pkgs/unified-hosts-lists/default.nix b/pkgs/unified-hosts-lists/default.nix
new file mode 100644
index 0000000..1bafb03
--- /dev/null
+++ b/pkgs/unified-hosts-lists/default.nix
@@ -0,0 +1,34 @@
+{ 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
new file mode 100644
index 0000000..8f92595
--- /dev/null
+++ b/pkgs/vimix-cursors/default.nix
@@ -0,0 +1,44 @@
+{ 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
new file mode 100644
index 0000000..0a49912
--- /dev/null
+++ b/pkgs/volantes-cursors/default.nix
@@ -0,0 +1,44 @@
+{ 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
new file mode 100644
index 0000000..c68eceb
--- /dev/null
+++ b/pkgs/wifi-qr/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, fetchFromGitHub
+, gnome
+, installShellFiles
+, makeWrapper
+, networkmanager
+, qrencode
+, stdenvNoCC
+, xdg-utils
+, zbar
+}:
+stdenvNoCC.mkDerivation rec {
+ pname = "wifi-qr";
+ version = "unstable-2023-04-19";
+
+ outputs = [ "out" "man" ];
+
+ src = fetchFromGitHub {
+ owner = "kokoye2007";
+ repo = "wifi-qr";
+ rev = "b81d4a44257252f07e745464879aa5618ae3d434";
+ hash = "sha256-oGTAr+raJGpK4PV4GdBxX8fIUE8gcbXw7W0SvQJAee0=";
+ };
+
+ nativeBuildInputs = [
+ installShellFiles
+ makeWrapper
+ ];
+
+ dontBuild = true;
+
+ dontConfigure = true;
+
+ postPatch = ''
+ substituteInPlace wifi-qr.desktop \
+ --replace "Exec=sh -c 'wifi-qr g'" "Exec=$out/bin/wifi-qr g" \
+ --replace "Exec=sh -c 'wifi-qr q'" "Exec=$out/bin/wifi-qr q" \
+ --replace "Exec=sh -c 'wifi-qr p'" "Exec=$out/bin/wifi-qr p" \
+ --replace "Exec=sh -c 'wifi-qr c'" "Exec=$out/bin/wifi-qr c" \
+ --replace "Icon=wifi-qr.svg" "Icon=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
new file mode 100644
index 0000000..8411216
--- /dev/null
+++ b/pkgs/woodpecker-plugin-git/default.nix
@@ -0,0 +1,37 @@
+{ lib, buildGoModule, fetchFromGitHub, fetchpatch }:
+buildGoModule rec {
+ pname = "woodpecker-plugin-git";
+ version = "2.0.3";
+
+ src = fetchFromGitHub {
+ owner = "woodpecker-ci";
+ repo = "plugin-git";
+ rev = "v${version}";
+ hash = "sha256-KU/A3V7KS8R1nAZoJJwkDc9C8y3t148kUzGnkeYtFjs=";
+ };
+
+ vendorHash = "sha256-63Ly/9yIJu2K/DwOfGs9pYU3fokbs2senZkl3MJ1UIY=";
+
+ patches = [
+ # https://github.com/woodpecker-ci/plugin-git/pull/67
+ (fetchpatch {
+ name = "do-not-overwrite-command-env.patch";
+ url = "https://github.com/woodpecker-ci/plugin-git/commit/970cc63a9b212872deac565c6292feb3f4cf4b51.patch";
+ hash = "sha256-izu0X7j+OyNbrOkksf+7VF3KiKVylVv2o00xaX/b1Rg=";
+ })
+ ];
+
+ CGO_ENABLED = "0";
+
+ # Checks fail because they require network access.
+ doCheck = false;
+
+ meta = with lib; {
+ description = "Woodpecker plugin for cloning Git repositories.";
+ homepage = "https://woodpecker-ci.org/";
+ license = licenses.asl20;
+ mainProgram = "pluging-git";
+ maintainers = with maintainers; [ thehedgeh0g ];
+ platforms = platforms.all;
+ };
+}
diff --git a/pkgs/woodpecker/agent.nix b/pkgs/woodpecker/agent.nix
new file mode 100644
index 0000000..49ff887
--- /dev/null
+++ b/pkgs/woodpecker/agent.nix
@@ -0,0 +1,25 @@
+{ 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
new file mode 100644
index 0000000..efe6d5f
--- /dev/null
+++ b/pkgs/woodpecker/cli.nix
@@ -0,0 +1,16 @@
+{ 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
new file mode 100644
index 0000000..8ca96d4
--- /dev/null
+++ b/pkgs/woodpecker/common.nix
@@ -0,0 +1,38 @@
+{ lib, fetchFromGitHub }:
+let
+ rev = "e7ca28026bc4576b2dd30aa2ab71c2d07dfc7197";
+ srcHash = "sha256-vtttb+tRi3uDFn8liFgZcAqWLENfpTY7lWsNCoTFzEM=";
+ vendorHash = "sha256-u7HT8+LeqS7mCNbUhrvSW0xd/uduL2Kw7A0mUUpW2w4=";
+ yarnHash = "sha256-h+he2VxvZlStIoLb1PPxqKSmTfFNGgJmUXptjtc5xD8=";
+ version = "next-${lib.substring 0 8 rev}";
+in
+{
+ inherit version yarnHash vendorHash;
+
+ src = fetchFromGitHub {
+ owner = "woodpecker-ci";
+ repo = "woodpecker";
+ inherit rev;
+ hash = srcHash;
+ };
+
+ postInstall = ''
+ cd $out/bin
+ for f in *; do
+ mv -- "$f" "woodpecker-$f"
+ done
+ cd -
+ '';
+
+ ldflags = [
+ "-s"
+ "-w"
+ "-X github.com/woodpecker-ci/woodpecker/version.Version=${version}"
+ ];
+
+ meta = with lib; {
+ homepage = "https://woodpecker-ci.org/";
+ license = licenses.asl20;
+ maintainers = with maintainers; [ ambroisie techknowlogick ];
+ };
+}
diff --git a/pkgs/woodpecker/frontend.nix b/pkgs/woodpecker/frontend.nix
new file mode 100644
index 0000000..e584549
--- /dev/null
+++ b/pkgs/woodpecker/frontend.nix
@@ -0,0 +1,57 @@
+{ lib, buildPackages, callPackage, fetchFromGitHub, fetchYarnDeps, mkYarnPackage }:
+let
+ common = callPackage ./common.nix { };
+
+ esbuild_0_17_12 = buildPackages.esbuild.overrideAttrs (_: rec {
+ version = "0.17.12";
+
+ src = fetchFromGitHub {
+ owner = "evanw";
+ repo = "esbuild";
+ rev = "v${version}";
+ hash = "sha256-75qDQWAp6cmuXtq90oIIQCj5IKUoQxNARxhFo2Sm5mk=";
+ };
+
+ vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
+ });
+in
+mkYarnPackage {
+ pname = "woodpecker-frontend";
+ inherit (common) version;
+
+ src = "${common.src}/web";
+
+ packageJSON = ./woodpecker-package.json;
+ yarnLock = ./yarn.lock;
+
+ offlineCache = fetchYarnDeps {
+ yarnLock = ./yarn.lock;
+ hash = common.yarnHash;
+ };
+
+ ESBUILD_BINARY_PATH = lib.getExe esbuild_0_17_12;
+
+ buildPhase = ''
+ runHook preBuild
+
+ yarn --offline build
+
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ cp -R deps/woodpecker-ci/dist $out
+ echo "${common.version}" > "$out/version"
+
+ runHook postInstall
+ '';
+
+ # Do not attempt generating a tarball for woodpecker-frontend again.
+ doDist = false;
+
+ meta = common.meta // {
+ description = "Woodpecker Continuous Integration server frontend";
+ };
+}
diff --git a/pkgs/woodpecker/server.nix b/pkgs/woodpecker/server.nix
new file mode 100644
index 0000000..fd8415c
--- /dev/null
+++ b/pkgs/woodpecker/server.nix
@@ -0,0 +1,26 @@
+{ 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
new file mode 100755
index 0000000..460ea0b
--- /dev/null
+++ b/pkgs/woodpecker/update.sh
@@ -0,0 +1,50 @@
+#!/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
new file mode 100644
index 0000000..08210db
--- /dev/null
+++ b/pkgs/woodpecker/woodpecker-package.json
@@ -0,0 +1,71 @@
+{
+ "name": "woodpecker-ci",
+ "author": "Woodpecker CI",
+ "version": "0.0.0",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=14"
+ },
+ "scripts": {
+ "start": "vite",
+ "build": "vite build",
+ "serve": "vite preview",
+ "lint": "eslint --max-warnings 0 --ext .js,.ts,.vue,.json .",
+ "formatcheck": "prettier -c .",
+ "format:fix": "prettier --write .",
+ "typecheck": "vue-tsc --noEmit",
+ "test": "echo 'No tests configured' && exit 0"
+ },
+ "dependencies": {
+ "@intlify/unplugin-vue-i18n": "^0.9.2",
+ "@kyvg/vue3-notification": "^2.9.0",
+ "@vueuse/core": "^9.13.0",
+ "ansi_up": "^5.1.0",
+ "dayjs": "^1.11.7",
+ "floating-vue": "^2.0.0-beta.20",
+ "fuse.js": "^6.6.2",
+ "humanize-duration": "^3.28.0",
+ "javascript-time-ago": "^2.5.9",
+ "lodash": "^4.17.21",
+ "node-emoji": "^1.11.0",
+ "pinia": "^2.0.33",
+ "prismjs": "^1.29.0",
+ "vue": "^3.2.47",
+ "vue-i18n": "^9.2.2",
+ "vue-router": "^4.1.6"
+ },
+ "devDependencies": {
+ "@iconify/json": "^2.2.36",
+ "@types/humanize-duration": "^3.27.1",
+ "@types/javascript-time-ago": "^2.0.3",
+ "@types/lodash": "^4.14.191",
+ "@types/node": "^18.15.3",
+ "@types/node-emoji": "^1.8.2",
+ "@types/prismjs": "^1.26.0",
+ "@typescript-eslint/eslint-plugin": "^5.55.0",
+ "@typescript-eslint/parser": "^5.55.0",
+ "@vitejs/plugin-vue": "^4.1.0",
+ "@vue/compiler-sfc": "^3.2.47",
+ "eslint": "^8.36.0",
+ "eslint-config-airbnb-base": "^15.0.0",
+ "eslint-config-airbnb-typescript": "^17.0.0",
+ "eslint-config-prettier": "^8.7.0",
+ "eslint-plugin-import": "^2.27.5",
+ "eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-promise": "^6.1.1",
+ "eslint-plugin-simple-import-sort": "^10.0.0",
+ "eslint-plugin-vue": "^9.9.0",
+ "eslint-plugin-vue-scoped-css": "^2.4.0",
+ "prettier": "^2.8.5",
+ "typescript": "5.0.2",
+ "unplugin-icons": "^0.15.3",
+ "unplugin-vue-components": "^0.24.1",
+ "vite": "^4.2.0",
+ "vite-plugin-prismjs": "^0.0.8",
+ "vite-plugin-windicss": "^1.8.10",
+ "vite-svg-loader": "^4.0.0",
+ "vue-eslint-parser": "^9.1.0",
+ "vue-tsc": "^1.2.0",
+ "windicss": "^3.5.6"
+ }
+}
diff --git a/pkgs/woodpecker/yarn.lock b/pkgs/woodpecker/yarn.lock
new file mode 100644
index 0000000..f99656c
--- /dev/null
+++ b/pkgs/woodpecker/yarn.lock
@@ -0,0 +1,3153 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@ampproject/remapping@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz"
+ integrity "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w=="
+ dependencies:
+ "@jridgewell/gen-mapping" "0.1.1"
+ "@jridgewell/trace-mapping" "0.3.17"
+
+"@antfu/install-pkg@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz"
+ integrity "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ=="
+ dependencies:
+ "execa" "5.1.1"
+ "find-up" "5.0.0"
+
+"@antfu/utils@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.2.tgz"
+ integrity "sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g=="
+
+"@babel/code-frame@7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz"
+ integrity "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q=="
+ dependencies:
+ "@babel/highlight" "7.18.6"
+
+"@babel/compat-data@7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz"
+ integrity "sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw=="
+
+"@babel/core@7.19.3":
+ version "7.19.3"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz"
+ integrity "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ=="
+ dependencies:
+ "@ampproject/remapping" "2.2.0"
+ "@babel/code-frame" "7.18.6"
+ "@babel/generator" "7.19.5"
+ "@babel/helper-compilation-targets" "7.19.3"
+ "@babel/helper-module-transforms" "7.19.0"
+ "@babel/helpers" "7.19.4"
+ "@babel/parser" "7.19.4"
+ "@babel/template" "7.18.10"
+ "@babel/traverse" "7.19.4"
+ "@babel/types" "7.19.4"
+ "convert-source-map" "1.9.0"
+ "debug" "4.3.4"
+ "gensync" "1.0.0-beta.2"
+ "json5" "2.2.1"
+ "semver" "6.3.0"
+
+"@babel/generator@7.19.5":
+ version "7.19.5"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz"
+ integrity "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg=="
+ dependencies:
+ "@babel/types" "7.19.4"
+ "@jridgewell/gen-mapping" "0.3.2"
+ "jsesc" "2.5.2"
+
+"@babel/helper-compilation-targets@7.19.3":
+ version "7.19.3"
+ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.19.3.tgz"
+ integrity "sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg=="
+ dependencies:
+ "@babel/compat-data" "7.19.4"
+ "@babel/core" "7.19.3"
+ "@babel/helper-validator-option" "7.18.6"
+ "browserslist" "4.21.4"
+ "semver" "6.3.0"
+
+"@babel/helper-environment-visitor@7.18.9":
+ version "7.18.9"
+ resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz"
+ integrity "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg=="
+
+"@babel/helper-function-name@7.19.0":
+ version "7.19.0"
+ resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz"
+ integrity "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w=="
+ dependencies:
+ "@babel/template" "7.18.10"
+ "@babel/types" "7.19.4"
+
+"@babel/helper-hoist-variables@7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz"
+ integrity "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q=="
+ dependencies:
+ "@babel/types" "7.19.4"
+
+"@babel/helper-module-imports@7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz"
+ integrity "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA=="
+ dependencies:
+ "@babel/types" "7.19.4"
+
+"@babel/helper-module-transforms@7.19.0":
+ version "7.19.0"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.0.tgz"
+ integrity "sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ=="
+ dependencies:
+ "@babel/helper-environment-visitor" "7.18.9"
+ "@babel/helper-module-imports" "7.18.6"
+ "@babel/helper-simple-access" "7.19.4"
+ "@babel/helper-split-export-declaration" "7.18.6"
+ "@babel/helper-validator-identifier" "7.19.1"
+ "@babel/template" "7.18.10"
+ "@babel/traverse" "7.19.4"
+ "@babel/types" "7.19.4"
+
+"@babel/helper-simple-access@7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz"
+ integrity "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg=="
+ dependencies:
+ "@babel/types" "7.19.4"
+
+"@babel/helper-split-export-declaration@7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz"
+ integrity "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA=="
+ dependencies:
+ "@babel/types" "7.19.4"
+
+"@babel/helper-string-parser@7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz"
+ integrity "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw=="
+
+"@babel/helper-validator-identifier@7.19.1":
+ version "7.19.1"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz"
+ integrity "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
+
+"@babel/helper-validator-option@7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz"
+ integrity "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw=="
+
+"@babel/helpers@7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.4.tgz"
+ integrity "sha512-G+z3aOx2nfDHwX/kyVii5fJq+bgscg89/dJNWpYeKeBv3v9xX8EIabmx1k6u9LS04H7nROFVRVK+e3k0VHp+sw=="
+ dependencies:
+ "@babel/template" "7.18.10"
+ "@babel/traverse" "7.19.4"
+ "@babel/types" "7.19.4"
+
+"@babel/highlight@7.18.6":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz"
+ integrity "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g=="
+ dependencies:
+ "@babel/helper-validator-identifier" "7.19.1"
+ "chalk" "2.4.2"
+ "js-tokens" "4.0.0"
+
+"@babel/parser@7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz"
+ integrity "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA=="
+ dependencies:
+ "@babel/types" "7.19.4"
+
+"@babel/template@7.18.10":
+ version "7.18.10"
+ resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz"
+ integrity "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA=="
+ dependencies:
+ "@babel/code-frame" "7.18.6"
+ "@babel/parser" "7.19.4"
+ "@babel/types" "7.19.4"
+
+"@babel/traverse@7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.4.tgz"
+ integrity "sha512-w3K1i+V5u2aJUOXBFFC5pveFLmtq1s3qcdDNC2qRI6WPBQIDaKFqXxDEqDO/h1dQ3HjsZoZMyIy6jGLq0xtw+g=="
+ dependencies:
+ "@babel/code-frame" "7.18.6"
+ "@babel/generator" "7.19.5"
+ "@babel/helper-environment-visitor" "7.18.9"
+ "@babel/helper-function-name" "7.19.0"
+ "@babel/helper-hoist-variables" "7.18.6"
+ "@babel/helper-split-export-declaration" "7.18.6"
+ "@babel/parser" "7.19.4"
+ "@babel/types" "7.19.4"
+ "debug" "4.3.4"
+ "globals" "11.12.0"
+
+"@babel/types@7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.19.4.tgz"
+ integrity "sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw=="
+ dependencies:
+ "@babel/helper-string-parser" "7.19.4"
+ "@babel/helper-validator-identifier" "7.19.1"
+ "to-fast-properties" "2.0.0"
+
+"@esbuild/android-arm@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.12.tgz"
+ integrity "sha512-E/sgkvwoIfj4aMAPL2e35VnUJspzVYl7+M1B2cqeubdBhADV4uPon0KCc8p2G+LqSJ6i8ocYPCqY3A4GGq0zkQ=="
+
+"@esbuild/android-arm64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.12.tgz"
+ integrity "sha512-WQ9p5oiXXYJ33F2EkE3r0FRDFVpEdcDiwNX3u7Xaibxfx6vQE0Sb8ytrfQsA5WO6kDn6mDfKLh6KrPBjvkk7xA=="
+
+"@esbuild/android-x64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.12.tgz"
+ integrity "sha512-m4OsaCr5gT+se25rFPHKQXARMyAehHTQAz4XX1Vk3d27VtqiX0ALMBPoXZsGaB6JYryCLfgGwUslMqTfqeLU0w=="
+
+"@esbuild/darwin-arm64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.12.tgz"
+ integrity "sha512-O3GCZghRIx+RAN0NDPhyyhRgwa19MoKlzGonIb5hgTj78krqp9XZbYCvFr9N1eUxg0ZQEpiiZ4QvsOQwBpP+lg=="
+
+"@esbuild/darwin-x64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.12.tgz"
+ integrity "sha512-5D48jM3tW27h1qjaD9UNRuN+4v0zvksqZSPZqeSWggfMlsVdAhH3pwSfQIFJwcs9QJ9BRibPS4ViZgs3d2wsCA=="
+
+"@esbuild/freebsd-arm64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.12.tgz"
+ integrity "sha512-OWvHzmLNTdF1erSvrfoEBGlN94IE6vCEaGEkEH29uo/VoONqPnoDFfShi41Ew+yKimx4vrmmAJEGNoyyP+OgOQ=="
+
+"@esbuild/freebsd-x64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.12.tgz"
+ integrity "sha512-A0Xg5CZv8MU9xh4a+7NUpi5VHBKh1RaGJKqjxe4KG87X+mTjDE6ZvlJqpWoeJxgfXHT7IMP9tDFu7IZ03OtJAw=="
+
+"@esbuild/linux-arm@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.12.tgz"
+ integrity "sha512-WsHyJ7b7vzHdJ1fv67Yf++2dz3D726oO3QCu8iNYik4fb5YuuReOI9OtA+n7Mk0xyQivNTPbl181s+5oZ38gyA=="
+
+"@esbuild/linux-arm64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.12.tgz"
+ integrity "sha512-cK3AjkEc+8v8YG02hYLQIQlOznW+v9N+OI9BAFuyqkfQFR+DnDLhEM5N8QRxAUz99cJTo1rLNXqRrvY15gbQUg=="
+
+"@esbuild/linux-ia32@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.12.tgz"
+ integrity "sha512-jdOBXJqcgHlah/nYHnj3Hrnl9l63RjtQ4vn9+bohjQPI2QafASB5MtHAoEv0JQHVb/xYQTFOeuHnNYE1zF7tYw=="
+
+"@esbuild/linux-loong64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.12.tgz"
+ integrity "sha512-GTOEtj8h9qPKXCyiBBnHconSCV9LwFyx/gv3Phw0pa25qPYjVuuGZ4Dk14bGCfGX3qKF0+ceeQvwmtI+aYBbVA=="
+
+"@esbuild/linux-mips64el@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.12.tgz"
+ integrity "sha512-o8CIhfBwKcxmEENOH9RwmUejs5jFiNoDw7YgS0EJTF6kgPgcqLFjgoc5kDey5cMHRVCIWc6kK2ShUePOcc7RbA=="
+
+"@esbuild/linux-ppc64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.12.tgz"
+ integrity "sha512-biMLH6NR/GR4z+ap0oJYb877LdBpGac8KfZoEnDiBKd7MD/xt8eaw1SFfYRUeMVx519kVkAOL2GExdFmYnZx3A=="
+
+"@esbuild/linux-riscv64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.12.tgz"
+ integrity "sha512-jkphYUiO38wZGeWlfIBMB72auOllNA2sLfiZPGDtOBb1ELN8lmqBrlMiucgL8awBw1zBXN69PmZM6g4yTX84TA=="
+
+"@esbuild/linux-s390x@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.12.tgz"
+ integrity "sha512-j3ucLdeY9HBcvODhCY4b+Ds3hWGO8t+SAidtmWu/ukfLLG/oYDMaA+dnugTVAg5fnUOGNbIYL9TOjhWgQB8W5g=="
+
+"@esbuild/linux-x64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.12.tgz"
+ integrity "sha512-uo5JL3cgaEGotaqSaJdRfFNSCUJOIliKLnDGWaVCgIKkHxwhYMm95pfMbWZ9l7GeW9kDg0tSxcy9NYdEtjwwmA=="
+
+"@esbuild/netbsd-x64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.12.tgz"
+ integrity "sha512-DNdoRg8JX+gGsbqt2gPgkgb00mqOgOO27KnrWZtdABl6yWTST30aibGJ6geBq3WM2TIeW6COs5AScnC7GwtGPg=="
+
+"@esbuild/openbsd-x64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.12.tgz"
+ integrity "sha512-aVsENlr7B64w8I1lhHShND5o8cW6sB9n9MUtLumFlPhG3elhNWtE7M1TFpj3m7lT3sKQUMkGFjTQBrvDDO1YWA=="
+
+"@esbuild/sunos-x64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.12.tgz"
+ integrity "sha512-qbHGVQdKSwi0JQJuZznS4SyY27tYXYF0mrgthbxXrZI3AHKuRvU+Eqbg/F0rmLDpW/jkIZBlCO1XfHUBMNJ1pg=="
+
+"@esbuild/win32-arm64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.12.tgz"
+ integrity "sha512-zsCp8Ql+96xXTVTmm6ffvoTSZSV2B/LzzkUXAY33F/76EajNw1m+jZ9zPfNJlJ3Rh4EzOszNDHsmG/fZOhtqDg=="
+
+"@esbuild/win32-ia32@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.12.tgz"
+ integrity "sha512-FfrFjR4id7wcFYOdqbDfDET3tjxCozUgbqdkOABsSFzoZGFC92UK7mg4JKRc/B3NNEf1s2WHxJ7VfTdVDPN3ng=="
+
+"@esbuild/win32-x64@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.12.tgz"
+ integrity "sha512-JOOxw49BVZx2/5tW3FqkdjSD/5gXYeVGPDcB0lvap0gLQshkh1Nyel1QazC+wNxus3xPlsYAgqU1BUmrmCvWtw=="
+
+"@eslint-community/eslint-utils@4.3.0":
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz"
+ integrity "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA=="
+ dependencies:
+ "eslint" "8.36.0"
+ "eslint-visitor-keys" "3.3.0"
+
+"@eslint-community/regexpp@4.4.0":
+ version "4.4.0"
+ resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz"
+ integrity "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ=="
+
+"@eslint/eslintrc@2.0.1":
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz"
+ integrity "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw=="
+ dependencies:
+ "ajv" "6.12.6"
+ "debug" "4.3.4"
+ "espree" "9.5.0"
+ "globals" "13.20.0"
+ "ignore" "5.2.0"
+ "import-fresh" "3.3.0"
+ "js-yaml" "4.1.0"
+ "minimatch" "3.1.2"
+ "strip-json-comments" "3.1.1"
+
+"@eslint/js@8.36.0":
+ version "8.36.0"
+ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz"
+ integrity "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg=="
+
+"@floating-ui/core@0.3.1":
+ version "0.3.1"
+ resolved "https://registry.npmjs.org/@floating-ui/core/-/core-0.3.1.tgz"
+ integrity "sha512-ensKY7Ub59u16qsVIFEo2hwTCqZ/r9oZZFh51ivcLGHfUwTn8l1Xzng8RJUe91H/UP8PeqeBronAGx0qmzwk2g=="
+
+"@floating-ui/dom@0.1.10":
+ version "0.1.10"
+ resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.1.10.tgz"
+ integrity "sha512-4kAVoogvQm2N0XE0G6APQJuCNuErjOfPW8Ux7DFxh8+AfugWflwVJ5LDlHOwrwut7z/30NUvdtHzQ3zSip4EzQ=="
+ dependencies:
+ "@floating-ui/core" "0.3.1"
+
+"@humanwhocodes/config-array@0.11.8":
+ version "0.11.8"
+ resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz"
+ integrity "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g=="
+ dependencies:
+ "@humanwhocodes/object-schema" "1.2.1"
+ "debug" "4.3.4"
+ "minimatch" "3.1.2"
+
+"@humanwhocodes/module-importer@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
+ integrity "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
+
+"@humanwhocodes/object-schema@1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
+ integrity "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
+
+"@iconify/json@^2.2.36", "@iconify/json@2.2.36":
+ version "2.2.36"
+ resolved "https://registry.npmjs.org/@iconify/json/-/json-2.2.36.tgz"
+ integrity "sha512-M3NzzLjmE5udIO24EgT9MV1LfU5FQDw9nfAfgrV3NySiLMtZFoOvFEdURJihH2SJWCoFhIpRRkgSZKN8qWIhuQ=="
+ dependencies:
+ "@iconify/types" "2.0.0"
+ "pathe" "1.1.0"
+
+"@iconify/types@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz"
+ integrity "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="
+
+"@iconify/utils@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.5.tgz"
+ integrity "sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q=="
+ dependencies:
+ "@antfu/install-pkg" "0.1.1"
+ "@antfu/utils" "0.7.2"
+ "@iconify/types" "2.0.0"
+ "debug" "4.3.4"
+ "kolorist" "1.7.0"
+ "local-pkg" "0.4.3"
+
+"@intlify/bundle-utils@5.2.0":
+ version "5.2.0"
+ resolved "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-5.2.0.tgz"
+ integrity "sha512-rIfoNUTBoZK6IfaEeuoYMQZSuAXhPyZoy+UsdZj+V4eM632ynN1bGt5ttkpGO8xe0c+esfYslgJxBz//bdu4qg=="
+ dependencies:
+ "@intlify/message-compiler" "9.3.0-beta.16"
+ "@intlify/shared" "9.3.0-beta.16"
+ "acorn" "8.8.2"
+ "estree-walker" "2.0.2"
+ "jsonc-eslint-parser" "1.4.1"
+ "source-map" "0.6.1"
+ "vue-i18n" "9.2.2"
+ "yaml-eslint-parser" "0.3.2"
+
+"@intlify/core-base@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz"
+ integrity "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA=="
+ dependencies:
+ "@intlify/devtools-if" "9.2.2"
+ "@intlify/message-compiler" "9.2.2"
+ "@intlify/shared" "9.2.2"
+ "@intlify/vue-devtools" "9.2.2"
+
+"@intlify/devtools-if@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz"
+ integrity "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg=="
+ dependencies:
+ "@intlify/shared" "9.2.2"
+
+"@intlify/message-compiler@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz"
+ integrity "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA=="
+ dependencies:
+ "@intlify/shared" "9.2.2"
+ "source-map" "0.6.1"
+
+"@intlify/message-compiler@9.3.0-beta.16":
+ version "9.3.0-beta.16"
+ resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.3.0-beta.16.tgz"
+ integrity "sha512-CGQI3xRcs1ET75eDQ0DUy3MRYOqTauRIIgaMoISKiF83gqRWg93FqN8lGMKcpBqaF4tI0JhsfosCaGiBL9+dnw=="
+ dependencies:
+ "@intlify/shared" "9.3.0-beta.16"
+ "source-map" "0.6.1"
+
+"@intlify/shared@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz"
+ integrity "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q=="
+
+"@intlify/shared@9.3.0-beta.16":
+ version "9.3.0-beta.16"
+ resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.3.0-beta.16.tgz"
+ integrity "sha512-kXbm4svALe3lX+EjdJxfnabOphqS4yQ1Ge/iIlR8tvUiYRCoNz3hig1M4336iY++Dfx5ytEQJPNjIcknNIuvig=="
+
+"@intlify/unplugin-vue-i18n@^0.9.2", "@intlify/unplugin-vue-i18n@0.9.2":
+ version "0.9.2"
+ resolved "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-0.9.2.tgz"
+ integrity "sha512-cNfa90+NVNdYJ0qqwRaEb2kGGp9zAve2xaAKCL7EzcQcvSWw42mhiOxcNkUc1QKlXnSHERMd6aT4/GUlFT1zBw=="
+ dependencies:
+ "@intlify/bundle-utils" "5.2.0"
+ "@intlify/shared" "9.3.0-beta.16"
+ "@rollup/pluginutils" "5.0.2"
+ "@vue/compiler-sfc" "3.2.47"
+ "debug" "4.3.4"
+ "fast-glob" "3.2.12"
+ "js-yaml" "4.1.0"
+ "json5" "2.2.3"
+ "pathe" "1.1.0"
+ "picocolors" "1.0.0"
+ "source-map" "0.6.1"
+ "unplugin" "1.3.1"
+ "vue-i18n" "9.2.2"
+
+"@intlify/vue-devtools@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz"
+ integrity "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg=="
+ dependencies:
+ "@intlify/core-base" "9.2.2"
+ "@intlify/shared" "9.2.2"
+
+"@jridgewell/gen-mapping@0.1.1":
+ version "0.1.1"
+ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz"
+ integrity "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w=="
+ dependencies:
+ "@jridgewell/set-array" "1.1.2"
+ "@jridgewell/sourcemap-codec" "1.4.14"
+
+"@jridgewell/gen-mapping@0.3.2":
+ version "0.3.2"
+ resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz"
+ integrity "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A=="
+ dependencies:
+ "@jridgewell/set-array" "1.1.2"
+ "@jridgewell/sourcemap-codec" "1.4.14"
+ "@jridgewell/trace-mapping" "0.3.17"
+
+"@jridgewell/resolve-uri@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz"
+ integrity "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
+
+"@jridgewell/set-array@1.1.2":
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz"
+ integrity "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
+
+"@jridgewell/sourcemap-codec@1.4.14":
+ version "1.4.14"
+ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
+ integrity "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
+
+"@jridgewell/trace-mapping@0.3.17":
+ version "0.3.17"
+ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz"
+ integrity "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g=="
+ dependencies:
+ "@jridgewell/resolve-uri" "3.1.0"
+ "@jridgewell/sourcemap-codec" "1.4.14"
+
+"@kyvg/vue3-notification@^2.9.0", "@kyvg/vue3-notification@2.9.0":
+ version "2.9.0"
+ resolved "https://registry.npmjs.org/@kyvg/vue3-notification/-/vue3-notification-2.9.0.tgz"
+ integrity "sha512-5Vxl8h/+PFtBmzGgMxTjkH4gwEpvmTEka+dLqpek+8GJFm6LDfSji+rFx9vumgBF7db0KenGWeSrA+Qnclz9vg=="
+ dependencies:
+ "vue" "3.2.47"
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
+ integrity "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ "run-parallel" "1.2.0"
+
+"@nodelib/fs.stat@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
+ integrity "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+
+"@nodelib/fs.walk@1.2.8":
+ version "1.2.8"
+ resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
+ integrity "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ "fastq" "1.13.0"
+
+"@rollup/pluginutils@5.0.2":
+ version "5.0.2"
+ resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz"
+ integrity "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA=="
+ dependencies:
+ "@types/estree" "1.0.0"
+ "estree-walker" "2.0.2"
+ "picomatch" "2.3.1"
+
+"@trysound/sax@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz"
+ integrity "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
+
+"@types/estree@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz"
+ integrity "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ=="
+
+"@types/humanize-duration@^3.27.1", "@types/humanize-duration@3.27.1":
+ version "3.27.1"
+ resolved "https://registry.npmjs.org/@types/humanize-duration/-/humanize-duration-3.27.1.tgz"
+ integrity "sha512-K3e+NZlpCKd6Bd/EIdqjFJRFHbrq5TzPPLwREk5Iv/YoIjQrs6ljdAUCo+Lb2xFlGNOjGSE0dqsVD19cZL137w=="
+
+"@types/javascript-time-ago@^2.0.3", "@types/javascript-time-ago@2.0.3":
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/@types/javascript-time-ago/-/javascript-time-ago-2.0.3.tgz"
+ integrity "sha512-G6SdYh6gHxgCTU0s4cMIRHwRO4p3f7jQSZbDPfUOZpUAG1od3rTjT0e8rxGThUiTTWQHwpBRws8eHO8D2QqfkA=="
+
+"@types/json-schema@7.0.11":
+ version "7.0.11"
+ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz"
+ integrity "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
+
+"@types/json5@0.0.29":
+ version "0.0.29"
+ resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz"
+ integrity "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="
+
+"@types/lodash@^4.14.191", "@types/lodash@4.14.191":
+ version "4.14.191"
+ resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz"
+ integrity "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ=="
+
+"@types/node-emoji@^1.8.2", "@types/node-emoji@1.8.2":
+ version "1.8.2"
+ resolved "https://registry.npmjs.org/@types/node-emoji/-/node-emoji-1.8.2.tgz"
+ integrity "sha512-PfF1qL/9veo8BSHLV84C9ORNr3lHSlnWJ6yU8OdNufoftajeWHTLVbGHvp2B7e7DPDS9gMs6cfeSsqo5rqSitg=="
+
+"@types/node@^18.15.3", "@types/node@18.15.3":
+ version "18.15.3"
+ resolved "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz"
+ integrity "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw=="
+
+"@types/prismjs@^1.26.0", "@types/prismjs@1.26.0":
+ version "1.26.0"
+ resolved "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz"
+ integrity "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ=="
+
+"@types/semver@7.3.12":
+ version "7.3.12"
+ resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz"
+ integrity "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A=="
+
+"@types/web-bluetooth@0.0.16":
+ version "0.0.16"
+ resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz"
+ integrity "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+
+"@typescript-eslint/eslint-plugin@^5.55.0", "@typescript-eslint/eslint-plugin@5.55.0":
+ version "5.55.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.55.0.tgz"
+ integrity "sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg=="
+ dependencies:
+ "@eslint-community/regexpp" "4.4.0"
+ "@typescript-eslint/parser" "5.55.0"
+ "@typescript-eslint/scope-manager" "5.55.0"
+ "@typescript-eslint/type-utils" "5.55.0"
+ "@typescript-eslint/utils" "5.55.0"
+ "debug" "4.3.4"
+ "eslint" "8.36.0"
+ "grapheme-splitter" "1.0.4"
+ "ignore" "5.2.0"
+ "natural-compare-lite" "1.4.0"
+ "semver" "7.3.8"
+ "tsutils" "3.21.0"
+ "typescript" "5.0.2"
+
+"@typescript-eslint/parser@^5.55.0", "@typescript-eslint/parser@5.55.0":
+ version "5.55.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.55.0.tgz"
+ integrity "sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw=="
+ dependencies:
+ "@typescript-eslint/scope-manager" "5.55.0"
+ "@typescript-eslint/types" "5.55.0"
+ "@typescript-eslint/typescript-estree" "5.55.0"
+ "debug" "4.3.4"
+ "eslint" "8.36.0"
+ "typescript" "5.0.2"
+
+"@typescript-eslint/scope-manager@5.55.0":
+ version "5.55.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.55.0.tgz"
+ integrity "sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw=="
+ dependencies:
+ "@typescript-eslint/types" "5.55.0"
+ "@typescript-eslint/visitor-keys" "5.55.0"
+
+"@typescript-eslint/type-utils@5.55.0":
+ version "5.55.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.55.0.tgz"
+ integrity "sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA=="
+ dependencies:
+ "@typescript-eslint/typescript-estree" "5.55.0"
+ "@typescript-eslint/utils" "5.55.0"
+ "debug" "4.3.4"
+ "eslint" "8.36.0"
+ "tsutils" "3.21.0"
+ "typescript" "5.0.2"
+
+"@typescript-eslint/types@5.55.0":
+ version "5.55.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.55.0.tgz"
+ integrity "sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug=="
+
+"@typescript-eslint/typescript-estree@5.55.0":
+ version "5.55.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.55.0.tgz"
+ integrity "sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ=="
+ dependencies:
+ "@typescript-eslint/types" "5.55.0"
+ "@typescript-eslint/visitor-keys" "5.55.0"
+ "debug" "4.3.4"
+ "globby" "11.1.0"
+ "is-glob" "4.0.3"
+ "semver" "7.3.8"
+ "tsutils" "3.21.0"
+ "typescript" "5.0.2"
+
+"@typescript-eslint/utils@5.55.0":
+ version "5.55.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.55.0.tgz"
+ integrity "sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw=="
+ dependencies:
+ "@eslint-community/eslint-utils" "4.3.0"
+ "@types/json-schema" "7.0.11"
+ "@types/semver" "7.3.12"
+ "@typescript-eslint/scope-manager" "5.55.0"
+ "@typescript-eslint/types" "5.55.0"
+ "@typescript-eslint/typescript-estree" "5.55.0"
+ "eslint" "8.36.0"
+ "eslint-scope" "5.1.1"
+ "semver" "7.3.8"
+
+"@typescript-eslint/visitor-keys@5.55.0":
+ version "5.55.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.55.0.tgz"
+ integrity "sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw=="
+ dependencies:
+ "@typescript-eslint/types" "5.55.0"
+ "eslint-visitor-keys" "3.3.0"
+
+"@vitejs/plugin-vue@^4.1.0", "@vitejs/plugin-vue@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.1.0.tgz"
+ integrity "sha512-++9JOAFdcXI3lyer9UKUV4rfoQ3T1RN8yDqoCLar86s0xQct5yblxAE+yWgRnU5/0FOlVCpTZpYSBV/bGWrSrQ=="
+ dependencies:
+ "vite" "4.2.0"
+ "vue" "3.2.47"
+
+"@volar/language-core@1.3.0-alpha.0":
+ version "1.3.0-alpha.0"
+ resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-1.3.0-alpha.0.tgz"
+ integrity "sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA=="
+ dependencies:
+ "@volar/source-map" "1.3.0-alpha.0"
+
+"@volar/source-map@1.3.0-alpha.0":
+ version "1.3.0-alpha.0"
+ resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-1.3.0-alpha.0.tgz"
+ integrity "sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ=="
+ dependencies:
+ "muggle-string" "0.2.2"
+
+"@volar/typescript@1.3.0-alpha.0":
+ version "1.3.0-alpha.0"
+ resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-1.3.0-alpha.0.tgz"
+ integrity "sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow=="
+ dependencies:
+ "@volar/language-core" "1.3.0-alpha.0"
+
+"@volar/vue-language-core@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-1.2.0.tgz"
+ integrity "sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ=="
+ dependencies:
+ "@volar/language-core" "1.3.0-alpha.0"
+ "@volar/source-map" "1.3.0-alpha.0"
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/compiler-sfc" "3.2.47"
+ "@vue/reactivity" "3.2.47"
+ "@vue/shared" "3.2.47"
+ "minimatch" "6.2.0"
+ "muggle-string" "0.2.2"
+ "vue-template-compiler" "2.7.14"
+
+"@volar/vue-typescript@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-1.2.0.tgz"
+ integrity "sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA=="
+ dependencies:
+ "@volar/typescript" "1.3.0-alpha.0"
+ "@volar/vue-language-core" "1.2.0"
+
+"@vue/compiler-core@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz"
+ integrity "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig=="
+ dependencies:
+ "@babel/parser" "7.19.4"
+ "@vue/shared" "3.2.47"
+ "estree-walker" "2.0.2"
+ "source-map" "0.6.1"
+
+"@vue/compiler-dom@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz"
+ integrity "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ=="
+ dependencies:
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@vue/compiler-sfc@^3.2.47", "@vue/compiler-sfc@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz"
+ integrity "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ=="
+ dependencies:
+ "@babel/parser" "7.19.4"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/compiler-ssr" "3.2.47"
+ "@vue/reactivity-transform" "3.2.47"
+ "@vue/shared" "3.2.47"
+ "estree-walker" "2.0.2"
+ "magic-string" "0.25.9"
+ "postcss" "8.4.18"
+ "source-map" "0.6.1"
+
+"@vue/compiler-ssr@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz"
+ integrity "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw=="
+ dependencies:
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@vue/devtools-api@6.4.5":
+ version "6.4.5"
+ resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz"
+ integrity "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ=="
+
+"@vue/devtools-api@6.5.0":
+ version "6.5.0"
+ resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz"
+ integrity "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
+
+"@vue/reactivity-transform@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz"
+ integrity "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA=="
+ dependencies:
+ "@babel/parser" "7.19.4"
+ "@vue/compiler-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+ "estree-walker" "2.0.2"
+ "magic-string" "0.25.9"
+
+"@vue/reactivity@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz"
+ integrity "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ=="
+ dependencies:
+ "@vue/shared" "3.2.47"
+
+"@vue/runtime-core@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz"
+ integrity "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA=="
+ dependencies:
+ "@vue/reactivity" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"@vue/runtime-dom@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz"
+ integrity "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA=="
+ dependencies:
+ "@vue/runtime-core" "3.2.47"
+ "@vue/shared" "3.2.47"
+ "csstype" "2.6.21"
+
+"@vue/server-renderer@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz"
+ integrity "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA=="
+ dependencies:
+ "@vue/compiler-ssr" "3.2.47"
+ "@vue/shared" "3.2.47"
+ "vue" "3.2.47"
+
+"@vue/shared@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz"
+ integrity "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
+
+"@vueuse/core@^9.13.0", "@vueuse/core@9.13.0":
+ version "9.13.0"
+ resolved "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz"
+ integrity "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw=="
+ dependencies:
+ "@types/web-bluetooth" "0.0.16"
+ "@vueuse/metadata" "9.13.0"
+ "@vueuse/shared" "9.13.0"
+ "vue-demi" "0.13.11"
+
+"@vueuse/metadata@9.13.0":
+ version "9.13.0"
+ resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz"
+ integrity "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ=="
+
+"@vueuse/shared@9.13.0":
+ version "9.13.0"
+ resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz"
+ integrity "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw=="
+ dependencies:
+ "vue-demi" "0.13.11"
+
+"@windicss/config@1.8.10":
+ version "1.8.10"
+ resolved "https://registry.npmjs.org/@windicss/config/-/config-1.8.10.tgz"
+ integrity "sha512-O9SsC110b1Ik3YYa4Ck/0TWuCo7YFfA9KDrwD5sAeqscT5COIGK1HszdCT3oh0MJFej2wNrvpfyW9h6yQaW6PA=="
+ dependencies:
+ "debug" "4.3.4"
+ "jiti" "1.16.0"
+ "windicss" "3.5.6"
+
+"@windicss/plugin-utils@1.8.10":
+ version "1.8.10"
+ resolved "https://registry.npmjs.org/@windicss/plugin-utils/-/plugin-utils-1.8.10.tgz"
+ integrity "sha512-Phqk5OW1w+Mv+ry6t7BzAeDq3aMhbI94gR49j9vQCufFfDGCHndhhjtMK0sBv+NPJUsIAIh6qayb1iwBCXUGrw=="
+ dependencies:
+ "@antfu/utils" "0.7.2"
+ "@windicss/config" "1.8.10"
+ "debug" "4.3.4"
+ "fast-glob" "3.2.12"
+ "magic-string" "0.27.0"
+ "micromatch" "4.0.5"
+ "windicss" "3.5.6"
+
+"acorn-jsx@5.3.2":
+ version "5.3.2"
+ resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
+ integrity "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
+ dependencies:
+ "acorn" "8.8.0"
+
+"acorn@7.4.1":
+ version "7.4.1"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
+ integrity "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
+
+"acorn@8.8.0":
+ version "8.8.0"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz"
+ integrity "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w=="
+
+"acorn@8.8.2":
+ version "8.8.2"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
+ integrity "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
+
+"ajv@6.12.6":
+ version "6.12.6"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
+ integrity "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="
+ dependencies:
+ "fast-deep-equal" "3.1.3"
+ "fast-json-stable-stringify" "2.1.0"
+ "json-schema-traverse" "0.4.1"
+ "uri-js" "4.4.1"
+
+"ansi-regex@5.0.1":
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
+ integrity "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+
+"ansi-styles@3.2.1":
+ version "3.2.1"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
+ integrity "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
+ dependencies:
+ "color-convert" "1.9.3"
+
+"ansi-styles@4.3.0":
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
+ integrity "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
+ dependencies:
+ "color-convert" "2.0.1"
+
+"ansi_up@^5.1.0", "ansi_up@5.1.0":
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/ansi_up/-/ansi_up-5.1.0.tgz"
+ integrity "sha512-3wwu+nJCKBVBwOCurm0uv91lMoVkhFB+3qZQz3U11AmAdDJ4tkw1sNPWJQcVxMVYwe0pGEALOjSBOxdxNc+pNQ=="
+
+"anymatch@3.1.2":
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz"
+ integrity "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg=="
+ dependencies:
+ "normalize-path" "3.0.0"
+ "picomatch" "2.3.1"
+
+"argparse@2.0.1":
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
+ integrity "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+
+"array-includes@3.1.6":
+ version "3.1.6"
+ resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz"
+ integrity "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "es-abstract" "1.20.4"
+ "get-intrinsic" "1.1.3"
+ "is-string" "1.0.7"
+
+"array-union@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
+ integrity "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
+
+"array.prototype.flat@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz"
+ integrity "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "es-abstract" "1.20.4"
+ "es-shim-unscopables" "1.0.0"
+
+"array.prototype.flatmap@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz"
+ integrity "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "es-abstract" "1.20.4"
+ "es-shim-unscopables" "1.0.0"
+
+"atob@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz"
+ integrity "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+
+"babel-plugin-prismjs@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/babel-plugin-prismjs/-/babel-plugin-prismjs-2.1.0.tgz"
+ integrity "sha512-ehzSKYfeAz4U78zi/sfwsjDPlq0LvDKxNefcZTJ/iKBu+plsHsLqZhUeGf1+82LAcA35UZGbU6ksEx2Utphc/g=="
+ dependencies:
+ "prismjs" "1.29.0"
+
+"balanced-match@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
+ integrity "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+
+"binary-extensions@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
+ integrity "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
+
+"boolbase@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
+ integrity "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+
+"brace-expansion@1.1.11":
+ version "1.1.11"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+ integrity "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
+ dependencies:
+ "balanced-match" "1.0.2"
+ "concat-map" "0.0.1"
+
+"brace-expansion@2.0.1":
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
+ integrity "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
+ dependencies:
+ "balanced-match" "1.0.2"
+
+"braces@3.0.2":
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
+ integrity "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="
+ dependencies:
+ "fill-range" "7.0.1"
+
+"browserslist@4.21.4":
+ version "4.21.4"
+ resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz"
+ integrity "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw=="
+ dependencies:
+ "caniuse-lite" "1.0.30001422"
+ "electron-to-chromium" "1.4.284"
+ "node-releases" "2.0.6"
+ "update-browserslist-db" "1.0.10"
+
+"call-bind@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
+ integrity "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA=="
+ dependencies:
+ "function-bind" "1.1.1"
+ "get-intrinsic" "1.1.3"
+
+"callsites@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
+ integrity "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
+
+"caniuse-lite@1.0.30001422":
+ version "1.0.30001422"
+ resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001422.tgz"
+ integrity "sha512-hSesn02u1QacQHhaxl/kNMZwqVG35Sz/8DgvmgedxSH8z9UUpcDYSPYgsj3x5dQNRcNp6BwpSfQfVzYUTm+fog=="
+
+"chalk@2.4.2":
+ version "2.4.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
+ integrity "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
+ dependencies:
+ "ansi-styles" "3.2.1"
+ "escape-string-regexp" "1.0.5"
+ "supports-color" "5.5.0"
+
+"chalk@4.1.2":
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ integrity "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
+ dependencies:
+ "ansi-styles" "4.3.0"
+ "supports-color" "7.2.0"
+
+"chokidar@3.5.3":
+ version "3.5.3"
+ resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
+ integrity "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="
+ dependencies:
+ "anymatch" "3.1.2"
+ "braces" "3.0.2"
+ "glob-parent" "5.1.2"
+ "is-binary-path" "2.1.0"
+ "is-glob" "4.0.3"
+ "normalize-path" "3.0.0"
+ "readdirp" "3.6.0"
+
+"color-convert@1.9.3":
+ version "1.9.3"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
+ integrity "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
+ dependencies:
+ "color-name" "1.1.3"
+
+"color-convert@2.0.1":
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
+ integrity "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
+ dependencies:
+ "color-name" "1.1.4"
+
+"color-name@1.1.3":
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+ integrity "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+
+"color-name@1.1.4":
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
+ integrity "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+
+"commander@7.2.0":
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"
+ integrity "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+
+"concat-map@0.0.1":
+ version "0.0.1"
+ resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+ integrity "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+
+"confusing-browser-globals@1.0.11":
+ version "1.0.11"
+ resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz"
+ integrity "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA=="
+
+"convert-source-map@1.9.0":
+ version "1.9.0"
+ resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
+ integrity "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
+
+"cross-spawn@7.0.3":
+ version "7.0.3"
+ resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
+ integrity "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="
+ dependencies:
+ "path-key" "3.1.1"
+ "shebang-command" "2.0.0"
+ "which" "2.0.2"
+
+"css-select@5.1.0":
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz"
+ integrity "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg=="
+ dependencies:
+ "boolbase" "1.0.0"
+ "css-what" "6.1.0"
+ "domhandler" "5.0.3"
+ "domutils" "3.0.1"
+ "nth-check" "2.1.1"
+
+"css-tree@2.2.1":
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz"
+ integrity "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="
+ dependencies:
+ "mdn-data" "2.0.28"
+ "source-map-js" "1.0.2"
+
+"css-tree@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz"
+ integrity "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw=="
+ dependencies:
+ "mdn-data" "2.0.30"
+ "source-map-js" "1.0.2"
+
+"css-what@6.1.0":
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz"
+ integrity "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="
+
+"css@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/css/-/css-3.0.0.tgz"
+ integrity "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ=="
+ dependencies:
+ "inherits" "2.0.4"
+ "source-map" "0.6.1"
+ "source-map-resolve" "0.6.0"
+
+"cssesc@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
+ integrity "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
+
+"csso@5.0.5":
+ version "5.0.5"
+ resolved "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz"
+ integrity "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="
+ dependencies:
+ "css-tree" "2.2.1"
+
+"csstype@2.6.21":
+ version "2.6.21"
+ resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz"
+ integrity "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
+
+"dayjs@^1.11.7", "dayjs@1.11.7":
+ version "1.11.7"
+ resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz"
+ integrity "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
+
+"de-indent@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz"
+ integrity "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg=="
+
+"debug@3.2.7":
+ version "3.2.7"
+ resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz"
+ integrity "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="
+ dependencies:
+ "ms" "2.1.3"
+
+"debug@4.3.4":
+ version "4.3.4"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
+ integrity "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
+ dependencies:
+ "ms" "2.1.2"
+
+"decode-uri-component@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz"
+ integrity "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og=="
+
+"deep-is@0.1.4":
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
+ integrity "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
+
+"define-properties@1.1.4":
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz"
+ integrity "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA=="
+ dependencies:
+ "has-property-descriptors" "1.0.0"
+ "object-keys" "1.1.1"
+
+"dir-glob@3.0.1":
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
+ integrity "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="
+ dependencies:
+ "path-type" "4.0.0"
+
+"doctrine@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz"
+ integrity "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw=="
+ dependencies:
+ "esutils" "2.0.3"
+
+"doctrine@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
+ integrity "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="
+ dependencies:
+ "esutils" "2.0.3"
+
+"dom-serializer@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz"
+ integrity "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="
+ dependencies:
+ "domelementtype" "2.3.0"
+ "domhandler" "5.0.3"
+ "entities" "4.4.0"
+
+"domelementtype@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz"
+ integrity "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="
+
+"domhandler@5.0.3":
+ version "5.0.3"
+ resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz"
+ integrity "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="
+ dependencies:
+ "domelementtype" "2.3.0"
+
+"domutils@3.0.1":
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz"
+ integrity "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q=="
+ dependencies:
+ "dom-serializer" "2.0.0"
+ "domelementtype" "2.3.0"
+ "domhandler" "5.0.3"
+
+"electron-to-chromium@1.4.284":
+ version "1.4.284"
+ resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz"
+ integrity "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA=="
+
+"entities@4.4.0":
+ version "4.4.0"
+ resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz"
+ integrity "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA=="
+
+"es-abstract@1.20.4":
+ version "1.20.4"
+ resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz"
+ integrity "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "es-to-primitive" "1.2.1"
+ "function-bind" "1.1.1"
+ "function.prototype.name" "1.1.5"
+ "get-intrinsic" "1.1.3"
+ "get-symbol-description" "1.0.0"
+ "has" "1.0.3"
+ "has-property-descriptors" "1.0.0"
+ "has-symbols" "1.0.3"
+ "internal-slot" "1.0.3"
+ "is-callable" "1.2.7"
+ "is-negative-zero" "2.0.2"
+ "is-regex" "1.1.4"
+ "is-shared-array-buffer" "1.0.2"
+ "is-string" "1.0.7"
+ "is-weakref" "1.0.2"
+ "object-inspect" "1.12.2"
+ "object-keys" "1.1.1"
+ "object.assign" "4.1.4"
+ "regexp.prototype.flags" "1.4.3"
+ "safe-regex-test" "1.0.0"
+ "string.prototype.trimend" "1.0.5"
+ "string.prototype.trimstart" "1.0.5"
+ "unbox-primitive" "1.0.2"
+
+"es-shim-unscopables@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz"
+ integrity "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w=="
+ dependencies:
+ "has" "1.0.3"
+
+"es-to-primitive@1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz"
+ integrity "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA=="
+ dependencies:
+ "is-callable" "1.2.7"
+ "is-date-object" "1.0.5"
+ "is-symbol" "1.0.4"
+
+"esbuild@0.17.12":
+ version "0.17.12"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.17.12.tgz"
+ integrity "sha512-bX/zHl7Gn2CpQwcMtRogTTBf9l1nl+H6R8nUbjk+RuKqAE3+8FDulLA+pHvX7aA7Xe07Iwa+CWvy9I8Y2qqPKQ=="
+
+"escalade@3.1.1":
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
+ integrity "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
+
+"escape-string-regexp@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+ integrity "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+
+"escape-string-regexp@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
+ integrity "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+
+"eslint-config-airbnb-base@^15.0.0", "eslint-config-airbnb-base@15.0.0":
+ version "15.0.0"
+ resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz"
+ integrity "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig=="
+ dependencies:
+ "confusing-browser-globals" "1.0.11"
+ "eslint" "8.36.0"
+ "eslint-plugin-import" "2.27.5"
+ "object.assign" "4.1.4"
+ "object.entries" "1.1.5"
+ "semver" "6.3.0"
+
+"eslint-config-airbnb-typescript@^17.0.0", "eslint-config-airbnb-typescript@17.0.0":
+ version "17.0.0"
+ resolved "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz"
+ integrity "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g=="
+ dependencies:
+ "@typescript-eslint/eslint-plugin" "5.55.0"
+ "@typescript-eslint/parser" "5.55.0"
+ "eslint" "8.36.0"
+ "eslint-config-airbnb-base" "15.0.0"
+ "eslint-plugin-import" "2.27.5"
+
+"eslint-config-prettier@^8.7.0", "eslint-config-prettier@8.7.0":
+ version "8.7.0"
+ resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz"
+ integrity "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA=="
+ dependencies:
+ "eslint" "8.36.0"
+
+"eslint-import-resolver-node@0.3.7":
+ version "0.3.7"
+ resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz"
+ integrity "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA=="
+ dependencies:
+ "debug" "3.2.7"
+ "is-core-module" "2.11.0"
+ "resolve" "1.22.1"
+
+"eslint-module-utils@2.7.4":
+ version "2.7.4"
+ resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz"
+ integrity "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA=="
+ dependencies:
+ "@typescript-eslint/parser" "5.55.0"
+ "debug" "3.2.7"
+ "eslint" "8.36.0"
+ "eslint-import-resolver-node" "0.3.7"
+
+"eslint-plugin-import@^2.27.5", "eslint-plugin-import@2.27.5":
+ version "2.27.5"
+ resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz"
+ integrity "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow=="
+ dependencies:
+ "@typescript-eslint/parser" "5.55.0"
+ "array-includes" "3.1.6"
+ "array.prototype.flat" "1.3.1"
+ "array.prototype.flatmap" "1.3.1"
+ "debug" "3.2.7"
+ "doctrine" "2.1.0"
+ "eslint" "8.36.0"
+ "eslint-import-resolver-node" "0.3.7"
+ "eslint-module-utils" "2.7.4"
+ "has" "1.0.3"
+ "is-core-module" "2.11.0"
+ "is-glob" "4.0.3"
+ "minimatch" "3.1.2"
+ "object.values" "1.1.6"
+ "resolve" "1.22.1"
+ "semver" "6.3.0"
+ "tsconfig-paths" "3.14.1"
+
+"eslint-plugin-prettier@^4.2.1", "eslint-plugin-prettier@4.2.1":
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz"
+ integrity "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ=="
+ dependencies:
+ "eslint" "8.36.0"
+ "eslint-config-prettier" "8.7.0"
+ "prettier" "2.8.5"
+ "prettier-linter-helpers" "1.0.0"
+
+"eslint-plugin-promise@^6.1.1", "eslint-plugin-promise@6.1.1":
+ version "6.1.1"
+ resolved "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz"
+ integrity "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig=="
+ dependencies:
+ "eslint" "8.36.0"
+
+"eslint-plugin-simple-import-sort@^10.0.0", "eslint-plugin-simple-import-sort@10.0.0":
+ version "10.0.0"
+ resolved "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz"
+ integrity "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw=="
+ dependencies:
+ "eslint" "8.36.0"
+
+"eslint-plugin-vue-scoped-css@^2.4.0", "eslint-plugin-vue-scoped-css@2.4.0":
+ version "2.4.0"
+ resolved "https://registry.npmjs.org/eslint-plugin-vue-scoped-css/-/eslint-plugin-vue-scoped-css-2.4.0.tgz"
+ integrity "sha512-H2GdGyaNuz58gMwJYrPAyok2ZZFklb1wnI4jqLyQZf17gvZeTOpYzCxqhhcT5hBeaCUHhjxU5akCI7A4AtBHew=="
+ dependencies:
+ "eslint" "8.36.0"
+ "eslint-utils" "3.0.0"
+ "lodash" "4.17.21"
+ "postcss" "8.4.18"
+ "postcss-safe-parser" "6.0.0"
+ "postcss-scss" "4.0.5"
+ "postcss-selector-parser" "6.0.10"
+ "postcss-styl" "0.12.3"
+ "vue-eslint-parser" "9.1.0"
+
+"eslint-plugin-vue@^9.9.0", "eslint-plugin-vue@9.9.0":
+ version "9.9.0"
+ resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.9.0.tgz"
+ integrity "sha512-YbubS7eK0J7DCf0U2LxvVP7LMfs6rC6UltihIgval3azO3gyDwEGVgsCMe1TmDiEkl6GdMKfRpaME6QxIYtzDQ=="
+ dependencies:
+ "eslint" "8.36.0"
+ "eslint-utils" "3.0.0"
+ "natural-compare" "1.4.0"
+ "nth-check" "2.1.1"
+ "postcss-selector-parser" "6.0.10"
+ "semver" "7.3.8"
+ "vue-eslint-parser" "9.1.0"
+ "xml-name-validator" "4.0.0"
+
+"eslint-scope@5.1.1":
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
+ integrity "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="
+ dependencies:
+ "esrecurse" "4.3.0"
+ "estraverse" "4.3.0"
+
+"eslint-scope@7.1.1":
+ version "7.1.1"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz"
+ integrity "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw=="
+ dependencies:
+ "esrecurse" "4.3.0"
+ "estraverse" "5.3.0"
+
+"eslint-utils@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz"
+ integrity "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg=="
+ dependencies:
+ "eslint-visitor-keys" "1.3.0"
+
+"eslint-utils@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz"
+ integrity "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA=="
+ dependencies:
+ "eslint" "8.36.0"
+ "eslint-visitor-keys" "2.1.0"
+
+"eslint-visitor-keys@1.3.0":
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz"
+ integrity "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ=="
+
+"eslint-visitor-keys@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
+ integrity "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="
+
+"eslint-visitor-keys@3.3.0":
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz"
+ integrity "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA=="
+
+"eslint@^8.36.0", "eslint@8.36.0":
+ version "8.36.0"
+ resolved "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz"
+ integrity "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw=="
+ dependencies:
+ "@eslint-community/eslint-utils" "4.3.0"
+ "@eslint-community/regexpp" "4.4.0"
+ "@eslint/eslintrc" "2.0.1"
+ "@eslint/js" "8.36.0"
+ "@humanwhocodes/config-array" "0.11.8"
+ "@humanwhocodes/module-importer" "1.0.1"
+ "@nodelib/fs.walk" "1.2.8"
+ "ajv" "6.12.6"
+ "chalk" "4.1.2"
+ "cross-spawn" "7.0.3"
+ "debug" "4.3.4"
+ "doctrine" "3.0.0"
+ "escape-string-regexp" "4.0.0"
+ "eslint-scope" "7.1.1"
+ "eslint-visitor-keys" "3.3.0"
+ "espree" "9.5.0"
+ "esquery" "1.5.0"
+ "esutils" "2.0.3"
+ "fast-deep-equal" "3.1.3"
+ "file-entry-cache" "6.0.1"
+ "find-up" "5.0.0"
+ "glob-parent" "6.0.2"
+ "globals" "13.20.0"
+ "grapheme-splitter" "1.0.4"
+ "ignore" "5.2.0"
+ "import-fresh" "3.3.0"
+ "imurmurhash" "0.1.4"
+ "is-glob" "4.0.3"
+ "is-path-inside" "3.0.3"
+ "js-sdsl" "4.1.5"
+ "js-yaml" "4.1.0"
+ "json-stable-stringify-without-jsonify" "1.0.1"
+ "levn" "0.4.1"
+ "lodash.merge" "4.6.2"
+ "minimatch" "3.1.2"
+ "natural-compare" "1.4.0"
+ "optionator" "0.9.1"
+ "strip-ansi" "6.0.1"
+ "strip-json-comments" "3.1.1"
+ "text-table" "0.2.0"
+
+"espree@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz"
+ integrity "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw=="
+ dependencies:
+ "acorn" "7.4.1"
+ "acorn-jsx" "5.3.2"
+ "eslint-visitor-keys" "1.3.0"
+
+"espree@9.4.0":
+ version "9.4.0"
+ resolved "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz"
+ integrity "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw=="
+ dependencies:
+ "acorn" "8.8.0"
+ "acorn-jsx" "5.3.2"
+ "eslint-visitor-keys" "3.3.0"
+
+"espree@9.5.0":
+ version "9.5.0"
+ resolved "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz"
+ integrity "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw=="
+ dependencies:
+ "acorn" "8.8.0"
+ "acorn-jsx" "5.3.2"
+ "eslint-visitor-keys" "3.3.0"
+
+"esquery@1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz"
+ integrity "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w=="
+ dependencies:
+ "estraverse" "5.3.0"
+
+"esquery@1.5.0":
+ version "1.5.0"
+ resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz"
+ integrity "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg=="
+ dependencies:
+ "estraverse" "5.3.0"
+
+"esrecurse@4.3.0":
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
+ integrity "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="
+ dependencies:
+ "estraverse" "5.3.0"
+
+"estraverse@4.3.0":
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
+ integrity "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
+
+"estraverse@5.3.0":
+ version "5.3.0"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
+ integrity "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
+
+"estree-walker@2.0.2":
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
+ integrity "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+
+"esutils@2.0.3":
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
+ integrity "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+
+"execa@5.1.1":
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz"
+ integrity "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="
+ dependencies:
+ "cross-spawn" "7.0.3"
+ "get-stream" "6.0.1"
+ "human-signals" "2.1.0"
+ "is-stream" "2.0.1"
+ "merge-stream" "2.0.0"
+ "npm-run-path" "4.0.1"
+ "onetime" "5.1.2"
+ "signal-exit" "3.0.7"
+ "strip-final-newline" "2.0.0"
+
+"fast-deep-equal@3.1.3":
+ version "3.1.3"
+ resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+ integrity "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+
+"fast-diff@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz"
+ integrity "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w=="
+
+"fast-glob@3.2.12":
+ version "3.2.12"
+ resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz"
+ integrity "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w=="
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ "@nodelib/fs.walk" "1.2.8"
+ "glob-parent" "5.1.2"
+ "merge2" "1.4.1"
+ "micromatch" "4.0.5"
+
+"fast-json-stable-stringify@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+ integrity "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+
+"fast-levenshtein@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+ integrity "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
+
+"fastq@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz"
+ integrity "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw=="
+ dependencies:
+ "reusify" "1.0.4"
+
+"file-entry-cache@6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
+ integrity "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="
+ dependencies:
+ "flat-cache" "3.0.4"
+
+"fill-range@7.0.1":
+ version "7.0.1"
+ resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
+ integrity "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
+ dependencies:
+ "to-regex-range" "5.0.1"
+
+"find-up@5.0.0":
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
+ integrity "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="
+ dependencies:
+ "locate-path" "6.0.0"
+ "path-exists" "4.0.0"
+
+"flat-cache@3.0.4":
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz"
+ integrity "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg=="
+ dependencies:
+ "flatted" "3.2.7"
+ "rimraf" "3.0.2"
+
+"flatted@3.2.7":
+ version "3.2.7"
+ resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz"
+ integrity "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
+
+"floating-vue@^2.0.0-beta.20", "floating-vue@2.0.0-beta.20":
+ version "2.0.0-beta.20"
+ resolved "https://registry.npmjs.org/floating-vue/-/floating-vue-2.0.0-beta.20.tgz"
+ integrity "sha512-N68otcpp6WwcYC7zP8GeJqNZVdfvS7tEY88lwmuAHeqRgnfWx1Un8enzLxROyVnBDZ3TwUoUdj5IFg+bUT7JeA=="
+ dependencies:
+ "@floating-ui/dom" "0.1.10"
+ "vue" "3.2.47"
+ "vue-resize" "2.0.0-alpha.1"
+
+"fs.realpath@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
+ integrity "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+
+"fsevents@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
+ integrity "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="
+
+"function-bind@1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
+ integrity "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+
+"function.prototype.name@1.1.5":
+ version "1.1.5"
+ resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz"
+ integrity "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "es-abstract" "1.20.4"
+ "functions-have-names" "1.2.3"
+
+"functions-have-names@1.2.3":
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz"
+ integrity "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
+
+"fuse.js@^6.6.2", "fuse.js@6.6.2":
+ version "6.6.2"
+ resolved "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz"
+ integrity "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA=="
+
+"gensync@1.0.0-beta.2":
+ version "1.0.0-beta.2"
+ resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
+ integrity "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
+
+"get-intrinsic@1.1.3":
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz"
+ integrity "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A=="
+ dependencies:
+ "function-bind" "1.1.1"
+ "has" "1.0.3"
+ "has-symbols" "1.0.3"
+
+"get-stream@6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz"
+ integrity "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
+
+"get-symbol-description@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz"
+ integrity "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "get-intrinsic" "1.1.3"
+
+"glob-parent@5.1.2":
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
+ integrity "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
+ dependencies:
+ "is-glob" "4.0.3"
+
+"glob-parent@6.0.2":
+ version "6.0.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
+ integrity "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="
+ dependencies:
+ "is-glob" "4.0.3"
+
+"glob@7.2.3":
+ version "7.2.3"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+ integrity "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
+ dependencies:
+ "fs.realpath" "1.0.0"
+ "inflight" "1.0.6"
+ "inherits" "2.0.4"
+ "minimatch" "3.1.2"
+ "once" "1.4.0"
+ "path-is-absolute" "1.0.1"
+
+"globals@11.12.0":
+ version "11.12.0"
+ resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
+ integrity "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
+
+"globals@13.20.0":
+ version "13.20.0"
+ resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz"
+ integrity "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ=="
+ dependencies:
+ "type-fest" "0.20.2"
+
+"globby@11.1.0":
+ version "11.1.0"
+ resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
+ integrity "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g=="
+ dependencies:
+ "array-union" "2.1.0"
+ "dir-glob" "3.0.1"
+ "fast-glob" "3.2.12"
+ "ignore" "5.2.0"
+ "merge2" "1.4.1"
+ "slash" "3.0.0"
+
+"grapheme-splitter@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz"
+ integrity "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
+
+"has-bigints@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz"
+ integrity "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
+
+"has-flag@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
+ integrity "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+
+"has-flag@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
+ integrity "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+
+"has-property-descriptors@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz"
+ integrity "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ=="
+ dependencies:
+ "get-intrinsic" "1.1.3"
+
+"has-symbols@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
+ integrity "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+
+"has-tostringtag@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
+ integrity "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ=="
+ dependencies:
+ "has-symbols" "1.0.3"
+
+"has@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
+ integrity "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="
+ dependencies:
+ "function-bind" "1.1.1"
+
+"he@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
+ integrity "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
+
+"human-signals@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz"
+ integrity "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
+
+"humanize-duration@^3.28.0", "humanize-duration@3.28.0":
+ version "3.28.0"
+ resolved "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.28.0.tgz"
+ integrity "sha512-jMAxraOOmHuPbffLVDKkEKi/NeG8dMqP8lGRd6Tbf7JgAeG33jjgPWDbXXU7ypCI0o+oNKJFgbSB9FKVdWNI2A=="
+
+"ignore@5.2.0":
+ version "5.2.0"
+ resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz"
+ integrity "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ=="
+
+"import-fresh@3.3.0":
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
+ integrity "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="
+ dependencies:
+ "parent-module" "1.0.1"
+ "resolve-from" "4.0.0"
+
+"imurmurhash@0.1.4":
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
+ integrity "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
+
+"inflight@1.0.6":
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+ integrity "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
+ dependencies:
+ "once" "1.4.0"
+ "wrappy" "1.0.2"
+
+"inherits@2.0.4":
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
+ integrity "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+
+"internal-slot@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz"
+ integrity "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA=="
+ dependencies:
+ "get-intrinsic" "1.1.3"
+ "has" "1.0.3"
+ "side-channel" "1.0.4"
+
+"is-bigint@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz"
+ integrity "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg=="
+ dependencies:
+ "has-bigints" "1.0.2"
+
+"is-binary-path@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
+ integrity "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="
+ dependencies:
+ "binary-extensions" "2.2.0"
+
+"is-boolean-object@1.1.2":
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
+ integrity "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "has-tostringtag" "1.0.0"
+
+"is-callable@1.2.7":
+ version "1.2.7"
+ resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz"
+ integrity "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
+
+"is-core-module@2.11.0":
+ version "2.11.0"
+ resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz"
+ integrity "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw=="
+ dependencies:
+ "has" "1.0.3"
+
+"is-date-object@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz"
+ integrity "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ=="
+ dependencies:
+ "has-tostringtag" "1.0.0"
+
+"is-extglob@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
+ integrity "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+
+"is-glob@4.0.3":
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
+ integrity "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="
+ dependencies:
+ "is-extglob" "2.1.1"
+
+"is-negative-zero@2.0.2":
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz"
+ integrity "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
+
+"is-number-object@1.0.7":
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz"
+ integrity "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ=="
+ dependencies:
+ "has-tostringtag" "1.0.0"
+
+"is-number@7.0.0":
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
+ integrity "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+
+"is-path-inside@3.0.3":
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
+ integrity "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
+
+"is-regex@1.1.4":
+ version "1.1.4"
+ resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz"
+ integrity "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "has-tostringtag" "1.0.0"
+
+"is-shared-array-buffer@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz"
+ integrity "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA=="
+ dependencies:
+ "call-bind" "1.0.2"
+
+"is-stream@2.0.1":
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz"
+ integrity "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
+
+"is-string@1.0.7":
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz"
+ integrity "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg=="
+ dependencies:
+ "has-tostringtag" "1.0.0"
+
+"is-symbol@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz"
+ integrity "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg=="
+ dependencies:
+ "has-symbols" "1.0.3"
+
+"is-weakref@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz"
+ integrity "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ=="
+ dependencies:
+ "call-bind" "1.0.2"
+
+"isexe@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
+ integrity "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+
+"javascript-time-ago@^2.5.9", "javascript-time-ago@2.5.9":
+ version "2.5.9"
+ resolved "https://registry.npmjs.org/javascript-time-ago/-/javascript-time-ago-2.5.9.tgz"
+ integrity "sha512-pQ8mNco/9g9TqWXWWjP0EWl6i/lAQScOyEeXy5AB+f7MfLSdgyV9BJhiOD1zrIac/lrxPYOWNbyl/IW8CW5n0A=="
+ dependencies:
+ "relative-time-format" "1.1.6"
+
+"jiti@1.16.0":
+ version "1.16.0"
+ resolved "https://registry.npmjs.org/jiti/-/jiti-1.16.0.tgz"
+ integrity "sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg=="
+
+"js-sdsl@4.1.5":
+ version "4.1.5"
+ resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.5.tgz"
+ integrity "sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q=="
+
+"js-tokens@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
+ integrity "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
+
+"js-yaml@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
+ integrity "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="
+ dependencies:
+ "argparse" "2.0.1"
+
+"jsesc@2.5.2":
+ version "2.5.2"
+ resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
+ integrity "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
+
+"json-schema-traverse@0.4.1":
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+ integrity "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+
+"json-stable-stringify-without-jsonify@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
+ integrity "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
+
+"json5@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz"
+ integrity "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow=="
+ dependencies:
+ "minimist" "1.2.7"
+
+"json5@2.2.1":
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz"
+ integrity "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA=="
+
+"json5@2.2.3":
+ version "2.2.3"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
+ integrity "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
+
+"jsonc-eslint-parser@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-1.4.1.tgz"
+ integrity "sha512-hXBrvsR1rdjmB2kQmUjf1rEIa+TqHBGMge8pwi++C+Si1ad7EjZrJcpgwym+QGK/pqTx+K7keFAtLlVNdLRJOg=="
+ dependencies:
+ "acorn" "7.4.1"
+ "eslint-utils" "2.1.0"
+ "eslint-visitor-keys" "1.3.0"
+ "espree" "6.2.1"
+ "semver" "6.3.0"
+
+"kolorist@1.6.0":
+ version "1.6.0"
+ resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz"
+ integrity "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ=="
+
+"kolorist@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.7.0.tgz"
+ integrity "sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g=="
+
+"levn@0.4.1":
+ version "0.4.1"
+ resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
+ integrity "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="
+ dependencies:
+ "prelude-ls" "1.2.1"
+ "type-check" "0.4.0"
+
+"local-pkg@0.4.3":
+ version "0.4.3"
+ resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz"
+ integrity "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g=="
+
+"locate-path@6.0.0":
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
+ integrity "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="
+ dependencies:
+ "p-locate" "5.0.0"
+
+"lodash.merge@4.6.2":
+ version "4.6.2"
+ resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
+ integrity "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
+
+"lodash.sortedlastindex@4.1.0":
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/lodash.sortedlastindex/-/lodash.sortedlastindex-4.1.0.tgz"
+ integrity "sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w=="
+
+"lodash@^4.17.21", "lodash@4.17.21":
+ version "4.17.21"
+ resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
+ integrity "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+
+"lru-cache@6.0.0":
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
+ integrity "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="
+ dependencies:
+ "yallist" "4.0.0"
+
+"magic-string@0.25.9":
+ version "0.25.9"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz"
+ integrity "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ=="
+ dependencies:
+ "sourcemap-codec" "1.4.8"
+
+"magic-string@0.27.0":
+ version "0.27.0"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz"
+ integrity "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA=="
+ dependencies:
+ "@jridgewell/sourcemap-codec" "1.4.14"
+
+"magic-string@0.30.0":
+ version "0.30.0"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz"
+ integrity "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ=="
+ dependencies:
+ "@jridgewell/sourcemap-codec" "1.4.14"
+
+"mdn-data@2.0.28":
+ version "2.0.28"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz"
+ integrity "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="
+
+"mdn-data@2.0.30":
+ version "2.0.30"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz"
+ integrity "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
+
+"merge-stream@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
+ integrity "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+
+"merge2@1.4.1":
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
+ integrity "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+
+"micromatch@4.0.5":
+ version "4.0.5"
+ resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
+ integrity "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA=="
+ dependencies:
+ "braces" "3.0.2"
+ "picomatch" "2.3.1"
+
+"mimic-fn@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
+ integrity "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+
+"minimatch@3.1.2":
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+ integrity "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
+ dependencies:
+ "brace-expansion" "1.1.11"
+
+"minimatch@6.2.0":
+ version "6.2.0"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz"
+ integrity "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg=="
+ dependencies:
+ "brace-expansion" "2.0.1"
+
+"minimatch@7.4.2":
+ version "7.4.2"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz"
+ integrity "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA=="
+ dependencies:
+ "brace-expansion" "2.0.1"
+
+"minimist@1.2.7":
+ version "1.2.7"
+ resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz"
+ integrity "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
+
+"ms@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
+ integrity "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+
+"ms@2.1.3":
+ version "2.1.3"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
+ integrity "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+
+"muggle-string@0.2.2":
+ version "0.2.2"
+ resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.2.2.tgz"
+ integrity "sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg=="
+
+"nanoid@3.3.4":
+ version "3.3.4"
+ resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz"
+ integrity "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
+
+"natural-compare-lite@1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz"
+ integrity "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g=="
+
+"natural-compare@1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
+ integrity "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
+
+"node-emoji@^1.11.0", "node-emoji@1.11.0":
+ version "1.11.0"
+ resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz"
+ integrity "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A=="
+ dependencies:
+ "lodash" "4.17.21"
+
+"node-releases@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz"
+ integrity "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg=="
+
+"normalize-path@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
+ integrity "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+
+"npm-run-path@4.0.1":
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz"
+ integrity "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="
+ dependencies:
+ "path-key" "3.1.1"
+
+"nth-check@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
+ integrity "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="
+ dependencies:
+ "boolbase" "1.0.0"
+
+"object-inspect@1.12.2":
+ version "1.12.2"
+ resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz"
+ integrity "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
+
+"object-keys@1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz"
+ integrity "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+
+"object.assign@4.1.4":
+ version "4.1.4"
+ resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz"
+ integrity "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "has-symbols" "1.0.3"
+ "object-keys" "1.1.1"
+
+"object.entries@1.1.5":
+ version "1.1.5"
+ resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz"
+ integrity "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "es-abstract" "1.20.4"
+
+"object.values@1.1.6":
+ version "1.1.6"
+ resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz"
+ integrity "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "es-abstract" "1.20.4"
+
+"once@1.4.0":
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+ integrity "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
+ dependencies:
+ "wrappy" "1.0.2"
+
+"onetime@5.1.2":
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz"
+ integrity "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="
+ dependencies:
+ "mimic-fn" "2.1.0"
+
+"optionator@0.9.1":
+ version "0.9.1"
+ resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz"
+ integrity "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw=="
+ dependencies:
+ "deep-is" "0.1.4"
+ "fast-levenshtein" "2.0.6"
+ "levn" "0.4.1"
+ "prelude-ls" "1.2.1"
+ "type-check" "0.4.0"
+ "word-wrap" "1.2.3"
+
+"p-limit@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
+ integrity "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
+ dependencies:
+ "yocto-queue" "0.1.0"
+
+"p-locate@5.0.0":
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
+ integrity "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
+ dependencies:
+ "p-limit" "3.1.0"
+
+"parent-module@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
+ integrity "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="
+ dependencies:
+ "callsites" "3.1.0"
+
+"path-exists@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
+ integrity "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+
+"path-is-absolute@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+ integrity "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
+
+"path-key@3.1.1":
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
+ integrity "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+
+"path-parse@1.0.7":
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
+ integrity "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+
+"path-type@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
+ integrity "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
+
+"pathe@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz"
+ integrity "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w=="
+
+"picocolors@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
+ integrity "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+
+"picomatch@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
+ integrity "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+
+"pinia@^2.0.33", "pinia@2.0.33":
+ version "2.0.33"
+ resolved "https://registry.npmjs.org/pinia/-/pinia-2.0.33.tgz"
+ integrity "sha512-HOj1yVV2itw6rNIrR2f7+MirGNxhORjrULL8GWgRwXsGSvEqIQ+SE0MYt6cwtpegzCda3i+rVTZM+AM7CG+kRg=="
+ dependencies:
+ "@vue/devtools-api" "6.5.0"
+ "typescript" "5.0.2"
+ "vue" "3.2.47"
+ "vue-demi" "0.13.11"
+
+"postcss-safe-parser@6.0.0":
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz"
+ integrity "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ=="
+ dependencies:
+ "postcss" "8.4.18"
+
+"postcss-scss@4.0.5":
+ version "4.0.5"
+ resolved "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.5.tgz"
+ integrity "sha512-F7xpB6TrXyqUh3GKdyB4Gkp3QL3DDW1+uI+gxx/oJnUt/qXI4trj5OGlp9rOKdoABGULuqtqeG+3HEVQk4DjmA=="
+ dependencies:
+ "postcss" "8.4.18"
+
+"postcss-selector-parser@6.0.10":
+ version "6.0.10"
+ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz"
+ integrity "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w=="
+ dependencies:
+ "cssesc" "3.0.0"
+ "util-deprecate" "1.0.2"
+
+"postcss-styl@0.12.3":
+ version "0.12.3"
+ resolved "https://registry.npmjs.org/postcss-styl/-/postcss-styl-0.12.3.tgz"
+ integrity "sha512-8I7Cd8sxiEITIp32xBK4K/Aj1ukX6vuWnx8oY/oAH35NfQI4OZaY5nd68Yx8HeN5S49uhQ6DL0rNk0ZBu/TaLg=="
+ dependencies:
+ "debug" "4.3.4"
+ "fast-diff" "1.2.0"
+ "lodash.sortedlastindex" "4.1.0"
+ "postcss" "8.4.21"
+ "stylus" "0.57.0"
+
+"postcss@8.4.18":
+ version "8.4.18"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz"
+ integrity "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA=="
+ dependencies:
+ "nanoid" "3.3.4"
+ "picocolors" "1.0.0"
+ "source-map-js" "1.0.2"
+
+"postcss@8.4.21":
+ version "8.4.21"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz"
+ integrity "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg=="
+ dependencies:
+ "nanoid" "3.3.4"
+ "picocolors" "1.0.0"
+ "source-map-js" "1.0.2"
+
+"prelude-ls@1.2.1":
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
+ integrity "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
+
+"prettier-linter-helpers@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz"
+ integrity "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w=="
+ dependencies:
+ "fast-diff" "1.2.0"
+
+"prettier@^2.8.5", "prettier@2.8.5":
+ version "2.8.5"
+ resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.5.tgz"
+ integrity "sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ=="
+
+"prismjs@^1.29.0", "prismjs@1.29.0":
+ version "1.29.0"
+ resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz"
+ integrity "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
+
+"punycode@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"
+ integrity "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
+
+"queue-microtask@1.2.3":
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
+ integrity "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+
+"readdirp@3.6.0":
+ version "3.6.0"
+ resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
+ integrity "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="
+ dependencies:
+ "picomatch" "2.3.1"
+
+"regexp.prototype.flags@1.4.3":
+ version "1.4.3"
+ resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz"
+ integrity "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "functions-have-names" "1.2.3"
+
+"relative-time-format@1.1.6":
+ version "1.1.6"
+ resolved "https://registry.npmjs.org/relative-time-format/-/relative-time-format-1.1.6.tgz"
+ integrity "sha512-aCv3juQw4hT1/P/OrVltKWLlp15eW1GRcwP1XdxHrPdZE9MtgqFpegjnTjLhi2m2WI9MT/hQQtE+tjEWG1hgkQ=="
+
+"resolve-from@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
+ integrity "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
+
+"resolve@1.22.1":
+ version "1.22.1"
+ resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz"
+ integrity "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw=="
+ dependencies:
+ "is-core-module" "2.11.0"
+ "path-parse" "1.0.7"
+ "supports-preserve-symlinks-flag" "1.0.0"
+
+"reusify@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
+ integrity "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+
+"rimraf@3.0.2":
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
+ integrity "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="
+ dependencies:
+ "glob" "7.2.3"
+
+"rollup@3.19.1":
+ version "3.19.1"
+ resolved "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz"
+ integrity "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg=="
+
+"run-parallel@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
+ integrity "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="
+ dependencies:
+ "queue-microtask" "1.2.3"
+
+"safe-regex-test@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz"
+ integrity "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "get-intrinsic" "1.1.3"
+ "is-regex" "1.1.4"
+
+"safer-buffer@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
+ integrity "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+
+"sax@1.2.4":
+ version "1.2.4"
+ resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz"
+ integrity "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+
+"semver@6.3.0":
+ version "6.3.0"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
+ integrity "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+
+"semver@7.3.8":
+ version "7.3.8"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz"
+ integrity "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A=="
+ dependencies:
+ "lru-cache" "6.0.0"
+
+"shebang-command@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
+ integrity "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="
+ dependencies:
+ "shebang-regex" "3.0.0"
+
+"shebang-regex@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
+ integrity "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
+
+"side-channel@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
+ integrity "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "get-intrinsic" "1.1.3"
+ "object-inspect" "1.12.2"
+
+"signal-exit@3.0.7":
+ version "3.0.7"
+ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
+ integrity "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+
+"slash@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
+ integrity "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
+
+"source-map-js@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
+ integrity "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+
+"source-map-resolve@0.6.0":
+ version "0.6.0"
+ resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz"
+ integrity "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w=="
+ dependencies:
+ "atob" "2.1.2"
+ "decode-uri-component" "0.2.0"
+
+"source-map@0.6.1":
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+ integrity "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+
+"source-map@0.7.4":
+ version "0.7.4"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
+ integrity "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
+
+"sourcemap-codec@1.4.8":
+ version "1.4.8"
+ resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
+ integrity "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+
+"string.prototype.trimend@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz"
+ integrity "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "es-abstract" "1.20.4"
+
+"string.prototype.trimstart@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz"
+ integrity "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "define-properties" "1.1.4"
+ "es-abstract" "1.20.4"
+
+"strip-ansi@6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
+ dependencies:
+ "ansi-regex" "5.0.1"
+
+"strip-bom@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz"
+ integrity "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA=="
+
+"strip-final-newline@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
+ integrity "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
+
+"strip-json-comments@3.1.1":
+ version "3.1.1"
+ resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+ integrity "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
+
+"stylus@0.57.0":
+ version "0.57.0"
+ resolved "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz"
+ integrity "sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ=="
+ dependencies:
+ "css" "3.0.0"
+ "debug" "4.3.4"
+ "glob" "7.2.3"
+ "safer-buffer" "2.1.2"
+ "sax" "1.2.4"
+ "source-map" "0.7.4"
+
+"supports-color@5.5.0":
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
+ integrity "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
+ dependencies:
+ "has-flag" "3.0.0"
+
+"supports-color@7.2.0":
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
+ integrity "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
+ dependencies:
+ "has-flag" "4.0.0"
+
+"supports-preserve-symlinks-flag@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+ integrity "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+
+"svgo@3.0.2":
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz"
+ integrity "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ=="
+ dependencies:
+ "@trysound/sax" "0.2.0"
+ "commander" "7.2.0"
+ "css-select" "5.1.0"
+ "css-tree" "2.3.1"
+ "csso" "5.0.5"
+ "picocolors" "1.0.0"
+
+"text-table@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
+ integrity "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
+
+"to-fast-properties@2.0.0":
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
+ integrity "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+
+"to-regex-range@5.0.1":
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
+ integrity "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
+ dependencies:
+ "is-number" "7.0.0"
+
+"tsconfig-paths@3.14.1":
+ version "3.14.1"
+ resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz"
+ integrity "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ=="
+ dependencies:
+ "@types/json5" "0.0.29"
+ "json5" "1.0.1"
+ "minimist" "1.2.7"
+ "strip-bom" "3.0.0"
+
+"tslib@1.14.1":
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
+ integrity "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+
+"tsutils@3.21.0":
+ version "3.21.0"
+ resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz"
+ integrity "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA=="
+ dependencies:
+ "tslib" "1.14.1"
+ "typescript" "5.0.2"
+
+"type-check@0.4.0":
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
+ integrity "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="
+ dependencies:
+ "prelude-ls" "1.2.1"
+
+"type-fest@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
+ integrity "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
+
+"typescript@5.0.2":
+ version "5.0.2"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-5.0.2.tgz"
+ integrity "sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw=="
+
+"unbox-primitive@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
+ integrity "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw=="
+ dependencies:
+ "call-bind" "1.0.2"
+ "has-bigints" "1.0.2"
+ "has-symbols" "1.0.3"
+ "which-boxed-primitive" "1.0.2"
+
+"unplugin-icons@^0.15.3", "unplugin-icons@0.15.3":
+ version "0.15.3"
+ resolved "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.15.3.tgz"
+ integrity "sha512-YWgJqv5AahrokeOnta8uX/m1damZA6Rf6zPClgHg2Fa/45iyOe3Lj+Wn/Ba+CSsq9yBffn17YfKfJNyWCNZPvw=="
+ dependencies:
+ "@antfu/install-pkg" "0.1.1"
+ "@antfu/utils" "0.7.2"
+ "@iconify/utils" "2.1.5"
+ "@vue/compiler-sfc" "3.2.47"
+ "debug" "4.3.4"
+ "kolorist" "1.7.0"
+ "local-pkg" "0.4.3"
+ "unplugin" "1.3.1"
+
+"unplugin-vue-components@^0.24.1", "unplugin-vue-components@0.24.1":
+ version "0.24.1"
+ resolved "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.24.1.tgz"
+ integrity "sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA=="
+ dependencies:
+ "@antfu/utils" "0.7.2"
+ "@rollup/pluginutils" "5.0.2"
+ "chokidar" "3.5.3"
+ "debug" "4.3.4"
+ "fast-glob" "3.2.12"
+ "local-pkg" "0.4.3"
+ "magic-string" "0.30.0"
+ "minimatch" "7.4.2"
+ "resolve" "1.22.1"
+ "unplugin" "1.3.1"
+ "vue" "3.2.47"
+
+"unplugin@1.3.1":
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.3.1.tgz"
+ integrity "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw=="
+ dependencies:
+ "acorn" "8.8.2"
+ "chokidar" "3.5.3"
+ "webpack-sources" "3.2.3"
+ "webpack-virtual-modules" "0.5.0"
+
+"update-browserslist-db@1.0.10":
+ version "1.0.10"
+ resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz"
+ integrity "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ=="
+ dependencies:
+ "browserslist" "4.21.4"
+ "escalade" "3.1.1"
+ "picocolors" "1.0.0"
+
+"uri-js@4.4.1":
+ version "4.4.1"
+ resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
+ integrity "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="
+ dependencies:
+ "punycode" "2.1.1"
+
+"util-deprecate@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
+ integrity "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+
+"vite-plugin-prismjs@^0.0.8", "vite-plugin-prismjs@0.0.8":
+ version "0.0.8"
+ resolved "https://registry.npmjs.org/vite-plugin-prismjs/-/vite-plugin-prismjs-0.0.8.tgz"
+ integrity "sha512-mBPPMS/hwVUArdqCtp/oajZT7iq1qwJDDCciNZ3R5+Q5tQUuUHXtDKuZHYnklPLElNbENf2FyuOtC4FrgxQRAA=="
+ dependencies:
+ "@babel/core" "7.19.3"
+ "babel-plugin-prismjs" "2.1.0"
+
+"vite-plugin-windicss@^1.8.10", "vite-plugin-windicss@1.8.10":
+ version "1.8.10"
+ resolved "https://registry.npmjs.org/vite-plugin-windicss/-/vite-plugin-windicss-1.8.10.tgz"
+ integrity "sha512-scywsuzo46lcTBohspmF0WiwhWEte6p+OUVrX4yr7VMRvLHMHVfLtJReyD5pppjijG7YOwVsZn7XBWWZtF658Q=="
+ dependencies:
+ "@windicss/plugin-utils" "1.8.10"
+ "debug" "4.3.4"
+ "kolorist" "1.6.0"
+ "vite" "4.2.0"
+ "windicss" "3.5.6"
+
+"vite-svg-loader@^4.0.0", "vite-svg-loader@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/vite-svg-loader/-/vite-svg-loader-4.0.0.tgz"
+ integrity "sha512-0MMf1yzzSYlV4MGePsLVAOqXsbF5IVxbn4EEzqRnWxTQl8BJg/cfwIzfQNmNQxZp5XXwd4kyRKF1LytuHZTnqA=="
+ dependencies:
+ "@vue/compiler-sfc" "3.2.47"
+ "svgo" "3.0.2"
+
+"vite@^4.2.0", "vite@4.2.0":
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/vite/-/vite-4.2.0.tgz"
+ integrity "sha512-AbDTyzzwuKoRtMIRLGNxhLRuv1FpRgdIw+1y6AQG73Q5+vtecmvzKo/yk8X/vrHDpETRTx01ABijqUHIzBXi0g=="
+ dependencies:
+ "@types/node" "18.15.3"
+ "esbuild" "0.17.12"
+ "postcss" "8.4.21"
+ "resolve" "1.22.1"
+ "rollup" "3.19.1"
+
+"vue-demi@0.13.11":
+ version "0.13.11"
+ resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz"
+ integrity "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A=="
+ dependencies:
+ "vue" "3.2.47"
+
+"vue-eslint-parser@^9.1.0", "vue-eslint-parser@9.1.0":
+ version "9.1.0"
+ resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.1.0.tgz"
+ integrity "sha512-NGn/iQy8/Wb7RrRa4aRkokyCZfOUWk19OP5HP6JEozQFX5AoS/t+Z0ZN7FY4LlmWc4FNI922V7cvX28zctN8dQ=="
+ dependencies:
+ "debug" "4.3.4"
+ "eslint" "8.36.0"
+ "eslint-scope" "7.1.1"
+ "eslint-visitor-keys" "3.3.0"
+ "espree" "9.4.0"
+ "esquery" "1.4.0"
+ "lodash" "4.17.21"
+ "semver" "7.3.8"
+
+"vue-i18n@^9.2.2", "vue-i18n@9.2.2":
+ version "9.2.2"
+ resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz"
+ integrity "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ=="
+ dependencies:
+ "@intlify/core-base" "9.2.2"
+ "@intlify/shared" "9.2.2"
+ "@intlify/vue-devtools" "9.2.2"
+ "@vue/devtools-api" "6.4.5"
+ "vue" "3.2.47"
+
+"vue-resize@2.0.0-alpha.1":
+ version "2.0.0-alpha.1"
+ resolved "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz"
+ integrity "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg=="
+ dependencies:
+ "vue" "3.2.47"
+
+"vue-router@^4.1.6", "vue-router@4.1.6":
+ version "4.1.6"
+ resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz"
+ integrity "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ=="
+ dependencies:
+ "@vue/devtools-api" "6.4.5"
+ "vue" "3.2.47"
+
+"vue-template-compiler@2.7.14":
+ version "2.7.14"
+ resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz"
+ integrity "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ=="
+ dependencies:
+ "de-indent" "1.0.2"
+ "he" "1.2.0"
+
+"vue-tsc@^1.2.0", "vue-tsc@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.2.0.tgz"
+ integrity "sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw=="
+ dependencies:
+ "@volar/vue-language-core" "1.2.0"
+ "@volar/vue-typescript" "1.2.0"
+ "typescript" "5.0.2"
+
+"vue@^3.2.47", "vue@3.2.47":
+ version "3.2.47"
+ resolved "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz"
+ integrity "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ=="
+ dependencies:
+ "@vue/compiler-dom" "3.2.47"
+ "@vue/compiler-sfc" "3.2.47"
+ "@vue/runtime-dom" "3.2.47"
+ "@vue/server-renderer" "3.2.47"
+ "@vue/shared" "3.2.47"
+
+"webpack-sources@3.2.3":
+ version "3.2.3"
+ resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
+ integrity "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
+
+"webpack-virtual-modules@0.5.0":
+ version "0.5.0"
+ resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz"
+ integrity "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw=="
+
+"which-boxed-primitive@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
+ integrity "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg=="
+ dependencies:
+ "is-bigint" "1.0.4"
+ "is-boolean-object" "1.1.2"
+ "is-number-object" "1.0.7"
+ "is-string" "1.0.7"
+ "is-symbol" "1.0.4"
+
+"which@2.0.2":
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
+ integrity "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="
+ dependencies:
+ "isexe" "2.0.0"
+
+"windicss@^3.5.6", "windicss@3.5.6":
+ version "3.5.6"
+ resolved "https://registry.npmjs.org/windicss/-/windicss-3.5.6.tgz"
+ integrity "sha512-P1mzPEjgFMZLX0ZqfFht4fhV/FX8DTG7ERG1fBLiWvd34pTLVReS5CVsewKn9PApSgXnVfPWwvq+qUsRwpnwFA=="
+
+"word-wrap@1.2.3":
+ version "1.2.3"
+ resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
+ integrity "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
+
+"wrappy@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+ integrity "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+
+"xml-name-validator@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz"
+ integrity "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="
+
+"yallist@4.0.0":
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
+ integrity "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+
+"yaml-eslint-parser@0.3.2":
+ version "0.3.2"
+ resolved "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-0.3.2.tgz"
+ integrity "sha512-32kYO6kJUuZzqte82t4M/gB6/+11WAuHiEnK7FreMo20xsCKPeFH5tDBU7iWxR7zeJpNnMXfJyXwne48D0hGrg=="
+ dependencies:
+ "eslint-visitor-keys" "1.3.0"
+ "lodash" "4.17.21"
+ "yaml" "1.10.2"
+
+"yaml@1.10.2":
+ version "1.10.2"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
+ integrity "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
+
+"yocto-queue@0.1.0":
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
+ integrity "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
diff --git a/pkgs/zsh-done/default.nix b/pkgs/zsh-done/default.nix
deleted file mode 100644
index bddc6c1..0000000
--- a/pkgs/zsh-done/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ 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/modules/nixos/profiles/bluetooth/default.nix b/profiles/bluetooth/default.nix
similarity index 100%
rename from modules/nixos/profiles/bluetooth/default.nix
rename to profiles/bluetooth/default.nix
diff --git a/modules/nixos/profiles/default.nix b/profiles/default.nix
similarity index 92%
rename from modules/nixos/profiles/default.nix
rename to profiles/default.nix
index 43d5a84..f7914a1 100644
--- a/modules/nixos/profiles/default.nix
+++ b/profiles/default.nix
@@ -6,6 +6,7 @@
./devices
./gtk
./laptop
+ ./printing
./wm
./x
];
diff --git a/modules/nixos/profiles/devices/default.nix b/profiles/devices/default.nix
similarity index 91%
rename from modules/nixos/profiles/devices/default.nix
rename to profiles/devices/default.nix
index 7a84bd2..7dbd299 100644
--- a/modules/nixos/profiles/devices/default.nix
+++ b/profiles/devices/default.nix
@@ -11,7 +11,7 @@ in
my.hardware = {
ergodox.enable = true;
- trackball.enable = true;
+ mx-ergo.enable = true;
};
# MTP devices auto-mount via file explorers
diff --git a/modules/nixos/profiles/gtk/default.nix b/profiles/gtk/default.nix
similarity index 100%
rename from modules/nixos/profiles/gtk/default.nix
rename to profiles/gtk/default.nix
diff --git a/modules/nixos/profiles/laptop/default.nix b/profiles/laptop/default.nix
similarity index 100%
rename from modules/nixos/profiles/laptop/default.nix
rename to profiles/laptop/default.nix
diff --git a/modules/nixos/system/printing/default.nix b/profiles/printing/default.nix
similarity index 89%
rename from modules/nixos/system/printing/default.nix
rename to profiles/printing/default.nix
index 0dfab0f..9965797 100644
--- a/modules/nixos/system/printing/default.nix
+++ b/profiles/printing/default.nix
@@ -1,10 +1,10 @@
{ config, lib, pkgs, ... }:
let
- cfg = config.my.system.printing;
+ cfg = config.my.profiles.printing;
in
{
- options.my.system.printing = with lib; {
- enable = mkEnableOption "printing configuration";
+ options.my.profiles.printing = with lib; {
+ enable = mkEnableOption "printing profile";
papersize = mkOption {
type = with types; either str (enum [
@@ -63,7 +63,7 @@ in
enable = true;
openFirewall = true;
# Allow resolution of '.local' addresses
- nssmdns4 = true;
+ nssmdns = true;
};
};
}
diff --git a/modules/nixos/profiles/wm/default.nix b/profiles/wm/default.nix
similarity index 100%
rename from modules/nixos/profiles/wm/default.nix
rename to profiles/wm/default.nix
diff --git a/modules/nixos/profiles/x/default.nix b/profiles/x/default.nix
similarity index 100%
rename from modules/nixos/profiles/x/default.nix
rename to profiles/x/default.nix
diff --git a/templates/c++-cmake/.envrc b/templates/c++-cmake/.envrc
index de77fcb..95ed6fb 100644
--- a/templates/c++-cmake/.envrc
+++ b/templates/c++-cmake/.envrc
@@ -1,5 +1,10 @@
-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="
+if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
fi
use flake
+
+watch_file ./flake/checks.nix
+watch_file ./flake/dev-shells.nix
+
+eval "$shellHooks"
diff --git a/templates/c++-cmake/.woodpecker/check.yml b/templates/c++-cmake/.woodpecker/check.yml
index 628e491..c3b00ef 100644
--- a/templates/c++-cmake/.woodpecker/check.yml
+++ b/templates/c++-cmake/.woodpecker/check.yml
@@ -1,7 +1,7 @@
labels:
type: exec
-steps:
+pipeline:
- name: nix flake check
image: bash
commands:
diff --git a/templates/c++-meson/.envrc b/templates/c++-meson/.envrc
index de77fcb..95ed6fb 100644
--- a/templates/c++-meson/.envrc
+++ b/templates/c++-meson/.envrc
@@ -1,5 +1,10 @@
-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="
+if ! has nix_direnv_version || ! nix_direnv_version 2.2.1; then
+ source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.2.1/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs="
fi
use flake
+
+watch_file ./flake/checks.nix
+watch_file ./flake/dev-shells.nix
+
+eval "$shellHooks"
diff --git a/templates/c++-meson/.woodpecker/check.yml b/templates/c++-meson/.woodpecker/check.yml
index 628e491..c3b00ef 100644
--- a/templates/c++-meson/.woodpecker/check.yml
+++ b/templates/c++-meson/.woodpecker/check.yml
@@ -1,7 +1,7 @@
labels:
type: exec
-steps:
+pipeline:
- name: nix flake check
image: bash
commands: