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[²]Œ±k MÒ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Éž.×hww qºš%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_í 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ý·_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] <message> -Send a notification (title and message) to the host system using the OSC 777 -escape sequence: -Options: - -h, --help This screen. - -d, --no-dcs Disable tmux/screen specific DCS sequences, only use OSC 777 - -- Stop options processing -EOF - - if [ $# -gt 0 ]; then - echo - die "$@" - else - exit 0 - fi -} - -tmux_seq() { - # shellcheck disable=1003 - printf '\033Ptmux;\033%s\033\\' "$1" -} - -screen_seq() { - # Screen limits the length of string sequences, so we have to break it up. - # Going by the screen history: - # (v4.2.1) Apr 2014 - today: 768 bytes - # Aug 2008 - Apr 2014 (v4.2.0): 512 bytes - # ??? - Aug 2008 (v4.0.3): 256 bytes - local limit=768 - # We go 4 bytes under the limit because we're going to insert two bytes - # before (\eP) and 2 bytes after (\e\) each string. - printf '%s' "$1" | - sed -E "s:.{$((limit - 4))}:&\n:g" | - sed -E -e 's:^:\x1bP:' -e 's:$:\x1b\\:' | - tr -d '\n' -} - -osc777_seq() { - printf '%s' "$1" -} - -print_seq() { - local seq="$1" - - if [ "${OSC777_NO_DCS}" != 0 ]; then - # Override TERM to avoid tmux/screen DCS escape logic - TERM=dummy - fi - - case ${TERM-} in - screen*) - # Since tmux defaults to setting TERM=screen, special case it. - if [ -n "${TMUX-}" ]; then - tmux_seq "${seq}" - else - screen_seq "${seq}" - fi - ;; - tmux*) - tmux_seq "${seq}" - ;; - *) - osc777_seq "${seq}" - ;; - esac -} - -notify() { - local title=$1 - local message=$2 - - # shellcheck disable=1003 - print_seq "$(printf '\033]777;notify;%s;%s\e\\' "${title}" "${message}")" -} - -main() { - set -e - - local args=() - while [ $# -gt 0 ]; do - case $1 in - -h | --help) - usage - ;; - -d | --no-dcs) - OSC777_NO_DCS=1 - ;; - --) - shift - args+=("$@") - break - ;; - -*) - usage "Unknown option: $1" - ;; - *) - args+=("$1") - ;; - esac - shift - done - - if [ "${#args[@]}" -ne 2 ]; then - usage "Supply exactly two arguments" - fi - - notify "${args[@]}" -} - -main "$@" 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] <account 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 <directory> <account name> - # Or `query_password <account name>` 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: