diff --git a/flake.nix b/flake.nix
index d5ce38e..96f4d3b 100644
--- a/flake.nix
+++ b/flake.nix
@@ -46,8 +46,17 @@
attic.url = "github:zhaofengli/attic";
};
- outputs = { self, nixpkgs, nixpkgs_stable, vault-secrets, colmena
- , nixos-generators, nur, attic, ... }@inputs:
+ outputs =
+ { self
+ , nixpkgs
+ , nixpkgs_stable
+ , vault-secrets
+ , colmena
+ , nixos-generators
+ , nur
+ , attic
+ , ...
+ }@inputs:
let
inherit (nixpkgs) lib;
@@ -81,7 +90,8 @@
source /etc/set-environment
nix repl --file "${./.}/repl.nix" $@
'';
- in {
+ in
+ {
# Make the nixosConfigurations for compat reasons (e.g. vault)
nixosConfigurations =
(import (inputs.colmena + "/src/nix/hive/eval.nix") {
@@ -93,12 +103,14 @@
}).nodes;
# Make the colmena configuration
- colmena = lib.foldr (el: acc: acc // util.mkColmenaHost el) {
- meta = {
- inherit specialArgs;
- nixpkgs = pkgs;
- };
- } nixHosts;
+ colmena = lib.foldr (el: acc: acc // util.mkColmenaHost el)
+ {
+ meta = {
+ inherit specialArgs;
+ nixpkgs = pkgs;
+ };
+ }
+ nixHosts;
packages.${system} = {
inherit apply-local;
@@ -137,6 +149,7 @@
statix
terraform
nixfmt
+ nixpkgs-fmt
nixUnstable
nil
vault
diff --git a/nixos/common/default.nix b/nixos/common/default.nix
index 3f3782f..317d57d 100644
--- a/nixos/common/default.nix
+++ b/nixos/common/default.nix
@@ -2,14 +2,16 @@
imports =
[ ./users ./modules inputs.vault-secrets.nixosModules.vault-secrets ];
- vault-secrets = let
- inherit (config.networking) domain hostName;
- server = if domain == "olympus" then "vault" else "vault-0";
- in lib.mkIf (domain == "olympus" || domain == "hades") {
- vaultPrefix = "${domain}_secrets/nixos";
- vaultAddress = "http://${server}.${domain}:8200/";
- approlePrefix = "${domain}-${hostName}";
- };
+ vault-secrets =
+ let
+ inherit (config.networking) domain hostName;
+ server = if domain == "olympus" then "vault" else "vault-0";
+ in
+ lib.mkIf (domain == "olympus" || domain == "hades") {
+ vaultPrefix = "${domain}_secrets/nixos";
+ vaultAddress = "http://${server}.${domain}:8200/";
+ approlePrefix = "${domain}-${hostName}";
+ };
home-manager = {
useGlobalPkgs = true;
diff --git a/nixos/common/desktop/default.nix b/nixos/common/desktop/default.nix
index f4e4c90..4e02b9a 100644
--- a/nixos/common/desktop/default.nix
+++ b/nixos/common/desktop/default.nix
@@ -21,9 +21,26 @@
users.victor = import ./home.nix;
extraSpecialArgs = { inherit inputs; };
};
+ services = {
- # Enable my config for the gnome desktop environment
- services.v.gnome.enable = true;
+ # Enable my config for the gnome desktop environment
+ v.gnome.enable = true;
+
+ # Enable CUPS to print documents.
+ printing.enable = true;
+ pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ # If you want to use JACK applications, uncomment this
+ #jack.enable = true;
+
+ # use the example session manager (no others are packaged yet so this is enabled by default,
+ # no need to redefine it in your config for now)
+ #media-session.enable = true;
+ };
+ };
# Set your time zone.
time.timeZone = "Europe/Amsterdam";
@@ -42,9 +59,6 @@
LC_TIME = "nl_NL.UTF-8";
};
- # Enable CUPS to print documents.
- services.printing.enable = true;
-
# Global Packages
environment = { systemPackages = with pkgs; [ wireguard-tools sbctl ]; };
@@ -52,18 +66,6 @@
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
- services.pipewire = {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
- # If you want to use JACK applications, uncomment this
- #jack.enable = true;
-
- # use the example session manager (no others are packaged yet so this is enabled by default,
- # no need to redefine it in your config for now)
- #media-session.enable = true;
- };
virtualisation = {
podman.enable = true;
@@ -84,21 +86,27 @@
[ "DejaVuSansMono" "Ubuntu" "DroidSansMono" "NerdFontsSymbolsOnly" ];
})
];
+ programs = {
+ steam = {
- programs.steam = {
- enable = true;
- # Open ports in the firewall for Steam Remote Play
- remotePlay.openFirewall = true;
- package = pkgs.steam.override {
- extraPkgs = pkgs: with pkgs; [ gamescope mangohud ];
+
+ enable = true;
+ # Open ports in the firewall for Steam Remote Play
+ remotePlay.openFirewall = true;
+ package = pkgs.steam.override {
+ extraPkgs = pkgs: with pkgs; [ gamescope mangohud ];
+ };
};
+
+
+ gamemode.enable = true;
+
+ adb.enable = true;
+ };
+ networking = {
+ # Networking
+ networkmanager.enable = true;
+ firewall.checkReversePath = false;
+ firewall.enable = false;
};
-
- programs.gamemode.enable = true;
-
- programs.adb.enable = true;
- # Networking
- networking.networkmanager.enable = true;
- networking.firewall.checkReversePath = false;
- networking.firewall.enable = false;
}
diff --git a/nixos/common/desktop/home.nix b/nixos/common/desktop/home.nix
index db10fb8..3650e3f 100644
--- a/nixos/common/desktop/home.nix
+++ b/nixos/common/desktop/home.nix
@@ -5,7 +5,8 @@ let
dnd-5e-latex-template = { pkgs = [ pkgs.v.dnd-5e-latex-template ]; };
};
my-python-packages = ps: with ps; [ pandas requests numpy ];
-in {
+in
+{
home.packages = with pkgs; [
(python3.withPackages my-python-packages)
btop
@@ -37,50 +38,53 @@ in {
# Enable my own hm modules
themes.v.catppuccin.enable = true;
- programs.v.vscode.enable = true;
+ programs = {
+ v.vscode.enable = true;
- programs.riff = {
- enable = true;
- direnv = true;
- };
+ riff = {
+ enable = true;
+ direnv = true;
+ };
- programs.firefox.enable = true;
+ firefox.enable = true;
- programs.chromium = {
- enable = true;
- package = pkgs.ungoogled-chromium;
- };
+ chromium = {
+ enable = true;
+ package = pkgs.ungoogled-chromium;
+ };
- programs.direnv = {
- enable = true;
- nix-direnv.enable = true;
- };
+ direnv = {
+ enable = true;
+ nix-direnv.enable = true;
+ };
- programs.zsh = {
- enable = true;
- sessionVariables = { DIRENV_LOG_FORMAT = ""; };
- };
+ zsh = {
+ enable = true;
+ sessionVariables = { DIRENV_LOG_FORMAT = ""; };
+ };
- programs.thunderbird = {
- enable = true;
- profiles.default = {
- isDefault = true;
+ thunderbird = {
+ enable = true;
+ profiles.default = {
+ isDefault = true;
+ };
};
};
# Syncthing
services.syncthing.enable = true;
- xdg.userDirs = let home = config.home.homeDirectory;
- in {
- enable = true;
- createDirectories = true;
- desktop = "${home}/.desktop";
- documents = "${home}/cloud/Documents";
- download = "${home}/dl";
- music = "${home}/cloud/Music";
- pictures = "${home}/cloud/Pictures";
- publicShare = "${home}/.publicShare";
- templates = "${home}/.templates";
- videos = "${home}/cloud/Videos";
- };
+ xdg.userDirs =
+ let home = config.home.homeDirectory;
+ in {
+ enable = true;
+ createDirectories = true;
+ desktop = "${home}/.desktop";
+ documents = "${home}/cloud/Documents";
+ download = "${home}/dl";
+ music = "${home}/cloud/Music";
+ pictures = "${home}/cloud/Pictures";
+ publicShare = "${home}/.publicShare";
+ templates = "${home}/.templates";
+ videos = "${home}/cloud/Videos";
+ };
}
diff --git a/nixos/common/hm-modules/catppuccin.nix b/nixos/common/hm-modules/catppuccin.nix
index 2aceac0..68c7191 100644
--- a/nixos/common/hm-modules/catppuccin.nix
+++ b/nixos/common/hm-modules/catppuccin.nix
@@ -3,36 +3,38 @@ with lib;
let cfg = config.themes.v.catppuccin;
in {
options.themes.v.catppuccin = { enable = mkEnableOption "catppuccin"; };
- config = let
- theme = "Catppuccin-Pink-Dark";
- cursorTheme = config.home.pointerCursor.name;
- in mkIf cfg.enable {
- home.pointerCursor = {
- name = "Bibata_Ghost";
- size = 24;
- package = pkgs.bibata-cursors-translucent;
- };
+ config =
+ let
+ theme = "Catppuccin-Pink-Dark";
+ cursorTheme = config.home.pointerCursor.name;
+ in
+ mkIf cfg.enable {
+ home.pointerCursor = {
+ name = "Bibata_Ghost";
+ size = 24;
+ package = pkgs.bibata-cursors-translucent;
+ };
- gtk = {
- enable = true;
- theme = {
- name = theme;
- package = pkgs.catppuccin-gtk;
+ gtk = {
+ enable = true;
+ theme = {
+ name = theme;
+ package = pkgs.catppuccin-gtk;
+ };
+ iconTheme = {
+ name = "Papirus-Dark";
+ package = pkgs.papirus-icon-theme.override { color = "violet"; };
+ };
+ cursorTheme = {
+ name = cursorTheme;
+ inherit (config.home.pointerCursor) package size;
+ };
};
- iconTheme = {
- name = "Papirus-Dark";
- package = pkgs.papirus-icon-theme.override { color = "violet"; };
- };
- cursorTheme = {
- name = cursorTheme;
- inherit (config.home.pointerCursor) package size;
- };
- };
- programs.vscode = {
- userSettings."workbench.colorTheme" = "Catppuccin Frappé";
- extensions = [ pkgs.vscode-extensions.catppuccin.catppuccin-vsc ];
+ programs.vscode = {
+ userSettings."workbench.colorTheme" = "Catppuccin Frappé";
+ extensions = [ pkgs.vscode-extensions.catppuccin.catppuccin-vsc ];
+ };
};
- };
}
diff --git a/nixos/common/hm-modules/nvim.nix b/nixos/common/hm-modules/nvim.nix
index 46c5fbf..8d9e306 100644
--- a/nixos/common/hm-modules/nvim.nix
+++ b/nixos/common/hm-modules/nvim.nix
@@ -65,12 +65,14 @@ in {
comment-nvim = { enable = true; };
lsp = {
enable = true;
- servers.nil_ls.enable = true;
- servers.rust-analyzer.enable = true;
- servers.pyright.enable = true;
- servers.elixirls.enable = true;
- servers.clangd.enable = true;
- servers.yamlls.enable = true;
+ servers = {
+ nil_ls.enable = true;
+ rust-analyzer.enable = true;
+ pyright.enable = true;
+ elixirls.enable = true;
+ clangd.enable = true;
+ yamlls.enable = true;
+ };
};
trouble.enable = true;
lspkind.enable = true;
diff --git a/nixos/common/modules/dns.nix b/nixos/common/modules/dns.nix
index e90e1c7..0b9ed85 100644
--- a/nixos/common/modules/dns.nix
+++ b/nixos/common/modules/dns.nix
@@ -15,7 +15,8 @@ let
ptr6Data = { hostname, realm, ip6, ... }: ''"${ip6} ${hostname}.${realm}"'';
cfg = config.services.v.dns;
-in {
+in
+{
options.services.v.dns = {
enable = mkEnableOption "v.dns";
@@ -47,7 +48,7 @@ in {
config = mkIf cfg.enable {
networking.firewall = mkIf cfg.openFirewall {
- allowedTCPPorts = [ 53 ] ;
+ allowedTCPPorts = [ 53 ];
allowedUDPPorts = [ 53 ];
};
services.prometheus.exporters.unbound = mkIf cfg.enableMetrics {
diff --git a/nixos/common/modules/gnome/default.nix b/nixos/common/modules/gnome/default.nix
index 90b95a5..eb2d4f0 100644
--- a/nixos/common/modules/gnome/default.nix
+++ b/nixos/common/modules/gnome/default.nix
@@ -14,22 +14,28 @@ in {
};
config = mkIf cfg.enable {
- services.xserver.enable = true;
- services.xserver.excludePackages = [ pkgs.xterm ];
+ services = {
+ xserver = {
+ enable = true;
+ excludePackages = [ pkgs.xterm ];
+
+ # Configure keymap in X11
+
+ layout = "us";
+ xkbVariant = "altgr-intl";
+
+
+ # Enable the GNOME Desktop Environment.
+ displayManager.gdm.enable = true;
+ desktopManager.gnome.enable = true;
+ };
+ udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
+ dbus.enable = true;
+ udisks2.enable = true;
+ };
# Add Home-manager dconf stuff
home-manager.sharedModules = mkIf cfg.hm [ ./hm.nix ];
-
- # Configure keymap in X11
- services.xserver = {
- layout = "us";
- xkbVariant = "altgr-intl";
- };
-
- # Enable the GNOME Desktop Environment.
- services.xserver.displayManager.gdm.enable = true;
- services.xserver.desktopManager.gnome.enable = true;
- services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
environment.gnome.excludePackages =
(with pkgs; [ gnome-photos gnome-tour gnome-connections ])
++ (with pkgs.gnome; [
@@ -54,8 +60,6 @@ in {
# Services required for gnome
programs.dconf.enable = true;
- services.dbus.enable = true;
- services.udisks2.enable = true;
# Extra gnome packages
environment.systemPackages = with pkgs; [
diff --git a/nixos/common/modules/gnome/hm.nix b/nixos/common/modules/gnome/hm.nix
index d852a9a..07cc96a 100644
--- a/nixos/common/modules/gnome/hm.nix
+++ b/nixos/common/modules/gnome/hm.nix
@@ -7,15 +7,18 @@ let
generate_custom_keybindings = binds:
{
"org/gnome/settings-daemon/plugins/media-keys" = {
- custom-keybindings = map (name:
- "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/${name}/")
+ custom-keybindings = map
+ (name:
+ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/${name}/")
(attrNames binds);
};
- } // mapAttrs' (name:
- nameValuePair
- "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/${name}")
- binds;
-in {
+ } // mapAttrs'
+ (name:
+ nameValuePair
+ "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/${name}")
+ binds;
+in
+{
xdg.mimeApps.enable = true;
xdg.mimeApps.defaultApplications = {
"text/plain" = "org.gnome.TextEditor.desktop";
diff --git a/nixos/common/modules/meta.nix b/nixos/common/modules/meta.nix
index 562d21f..639d212 100644
--- a/nixos/common/modules/meta.nix
+++ b/nixos/common/modules/meta.nix
@@ -20,7 +20,8 @@ let
};
};
};
-in {
+in
+{
options.meta = {
exposes = mkOption {
@@ -38,6 +39,5 @@ in {
};
};
- config = {
- };
+ config = { };
}
diff --git a/nixos/common/modules/nginx.nix b/nixos/common/modules/nginx.nix
index a6ff28a..1159e21 100644
--- a/nixos/common/modules/nginx.nix
+++ b/nixos/common/modules/nginx.nix
@@ -1,30 +1,32 @@
{ lib, hosts, config, ... }:
with lib;
let cfg = config.services.v.nginx;
-in {
+in {
options.services.v.nginx.autoExpose =
mkEnableOption "generate vhosts";
- config = let
+ config =
+ let
- proxy = url: {
- enableACME = true;
- forceSSL = true;
- locations."/" = {
- proxyPass = url;
- proxyWebsockets = true;
+ proxy = url: {
+ enableACME = true;
+ forceSSL = true;
+ locations."/" = {
+ proxyPass = url;
+ proxyWebsockets = true;
+ };
};
- };
- hosts' =
- filter (hasAttr "exposes") (attrValues hosts.${config.networking.domain});
- exposes = { ip, exposes, ... }:
- map ({ domain, port ? 80}: { inherit ip domain port; }) (attrValues exposes);
- mkVhost = { ip, domain, port}: {
- "${domain}" = proxy "http://${ip}:${toString port}";
+ hosts' =
+ filter (hasAttr "exposes") (attrValues hosts.${config.networking.domain});
+ exposes = { ip, exposes, ... }:
+ map ({ domain, port ? 80 }: { inherit ip domain port; }) (attrValues exposes);
+ mkVhost = { ip, domain, port }: {
+ "${domain}" = proxy "http://${ip}:${toString port}";
+ };
+ vhosts = foldr (el: acc: acc // mkVhost el) { } (concatMap exposes hosts');
+ in
+ mkIf cfg.autoExpose {
+ services.nginx.virtualHosts = vhosts;
};
- vhosts = foldr (el: acc: acc // mkVhost el) { } (concatMap exposes hosts');
- in mkIf cfg.autoExpose {
- services.nginx.virtualHosts = vhosts;
- };
}
diff --git a/nixos/common/modules/unpackerr.nix b/nixos/common/modules/unpackerr.nix
index 5490ec6..4a8043b 100644
--- a/nixos/common/modules/unpackerr.nix
+++ b/nixos/common/modules/unpackerr.nix
@@ -57,7 +57,8 @@ let
'';
};
};
-in {
+in
+{
options.services.unpackerr = {
enable = mkEnableOption "unpackerr";
@@ -257,61 +258,62 @@ in {
after = [ "network.target" ];
description = "unpackerr system service";
# Filter out all unset variables else unpackerr complains
- environment = filterAttrs (_n: v: stringLength v > 0) {
- # General options
- UN_DEBUG = "${toString cfg.debug}";
- UN_INTERVAL = "${cfg.interval}";
- UN_START_DELAY = "${cfg.startDelay}";
- UN_RETRY_DELAY = "${cfg.retryDelay}";
- UN_MAX_RETRIES = "${toString cfg.maxRetries}";
- UN_PARALLEL = "${toString cfg.parallel}";
- UN_FILE_MODE = "${cfg.fileMode}";
- UN_DIR_MODE = "${cfg.dirMode}";
+ environment = filterAttrs (_n: v: stringLength v > 0)
+ {
+ # General options
+ UN_DEBUG = "${toString cfg.debug}";
+ UN_INTERVAL = "${cfg.interval}";
+ UN_START_DELAY = "${cfg.startDelay}";
+ UN_RETRY_DELAY = "${cfg.retryDelay}";
+ UN_MAX_RETRIES = "${toString cfg.maxRetries}";
+ UN_PARALLEL = "${toString cfg.parallel}";
+ UN_FILE_MODE = "${cfg.fileMode}";
+ UN_DIR_MODE = "${cfg.dirMode}";
- # Sonarr
- UN_SONARR_0_URL = "${cfg.sonarr.url}";
- UN_SONARR_0_API_KEY = "${cfg.sonarr.apiKey}";
- UN_SONARR_0_PATHS_0 = "${cfg.sonarr.paths}";
- UN_SONARR_0_PROTOCOLS = "${cfg.sonarr.protocols}";
- UN_SONARR_0_TIMEOUT = "${cfg.sonarr.timeout}";
- UN_SONARR_0_DELETE_ORIG = "${toString cfg.sonarr.deleteOrginal}";
- UN_SONARR_0_DELETE_DELAY = "${cfg.sonarr.deleteDelay}";
+ # Sonarr
+ UN_SONARR_0_URL = "${cfg.sonarr.url}";
+ UN_SONARR_0_API_KEY = "${cfg.sonarr.apiKey}";
+ UN_SONARR_0_PATHS_0 = "${cfg.sonarr.paths}";
+ UN_SONARR_0_PROTOCOLS = "${cfg.sonarr.protocols}";
+ UN_SONARR_0_TIMEOUT = "${cfg.sonarr.timeout}";
+ UN_SONARR_0_DELETE_ORIG = "${toString cfg.sonarr.deleteOrginal}";
+ UN_SONARR_0_DELETE_DELAY = "${cfg.sonarr.deleteDelay}";
- # Radarr
- UN_RADARR_0_URL = "${cfg.radarr.url}";
- UN_RADARR_0_API_KEY = "${cfg.radarr.apiKey}";
- UN_RADARR_0_PATHS_0 = "${cfg.radarr.paths}";
- UN_RADARR_0_PROTOCOLS = "${cfg.radarr.protocols}";
- UN_RADARR_0_TIMEOUT = "${cfg.radarr.timeout}";
- UN_RADARR_0_DELETE_ORIG = "${toString cfg.radarr.deleteOrginal}";
- UN_RADARR_0_DELETE_DELAY = "${cfg.radarr.deleteDelay}";
+ # Radarr
+ UN_RADARR_0_URL = "${cfg.radarr.url}";
+ UN_RADARR_0_API_KEY = "${cfg.radarr.apiKey}";
+ UN_RADARR_0_PATHS_0 = "${cfg.radarr.paths}";
+ UN_RADARR_0_PROTOCOLS = "${cfg.radarr.protocols}";
+ UN_RADARR_0_TIMEOUT = "${cfg.radarr.timeout}";
+ UN_RADARR_0_DELETE_ORIG = "${toString cfg.radarr.deleteOrginal}";
+ UN_RADARR_0_DELETE_DELAY = "${cfg.radarr.deleteDelay}";
- # Lidarr
- UN_LIDARR_0_URL = "${cfg.lidarr.url}";
- UN_LIDARR_0_API_KEY = "${cfg.lidarr.apiKey}";
- UN_LIDARR_0_PATHS_0 = "${cfg.lidarr.paths}";
- UN_LIDARR_0_PROTOCOLS = "${cfg.lidarr.protocols}";
- UN_LIDARR_0_TIMEOUT = "${cfg.lidarr.timeout}";
- UN_LIDARR_0_DELETE_ORIG = "${toString cfg.lidarr.deleteOrginal}";
- UN_LIDARR_0_DELETE_DELAY = "${cfg.lidarr.deleteDelay}";
+ # Lidarr
+ UN_LIDARR_0_URL = "${cfg.lidarr.url}";
+ UN_LIDARR_0_API_KEY = "${cfg.lidarr.apiKey}";
+ UN_LIDARR_0_PATHS_0 = "${cfg.lidarr.paths}";
+ UN_LIDARR_0_PROTOCOLS = "${cfg.lidarr.protocols}";
+ UN_LIDARR_0_TIMEOUT = "${cfg.lidarr.timeout}";
+ UN_LIDARR_0_DELETE_ORIG = "${toString cfg.lidarr.deleteOrginal}";
+ UN_LIDARR_0_DELETE_DELAY = "${cfg.lidarr.deleteDelay}";
- # Readarr
- UN_READARR_0_URL = "${cfg.readarr.url}";
- UN_READARR_0_API_KEY = "${cfg.readarr.apiKey}";
- UN_READARR_0_PATHS_0 = "${cfg.readarr.paths}";
- UN_READARR_0_PROTOCOLS = "${cfg.readarr.protocols}";
- UN_READARR_0_TIMEOUT = "${cfg.readarr.timeout}";
- UN_READARR_0_DELETE_ORIG = "${toString cfg.readarr.deleteOrginal}";
- UN_READARR_0_DELETE_DELAY = "${cfg.readarr.deleteDelay}";
+ # Readarr
+ UN_READARR_0_URL = "${cfg.readarr.url}";
+ UN_READARR_0_API_KEY = "${cfg.readarr.apiKey}";
+ UN_READARR_0_PATHS_0 = "${cfg.readarr.paths}";
+ UN_READARR_0_PROTOCOLS = "${cfg.readarr.protocols}";
+ UN_READARR_0_TIMEOUT = "${cfg.readarr.timeout}";
+ UN_READARR_0_DELETE_ORIG = "${toString cfg.readarr.deleteOrginal}";
+ UN_READARR_0_DELETE_DELAY = "${cfg.readarr.deleteDelay}";
- # Folder
- UN_FOLDER_0_PATH = "${cfg.folder.path}";
- UN_FOLDER_0_EXTRACT_PATH = "${cfg.folder.extractPath}";
- UN_FOLDER_0_DELETE_AFTER = "${cfg.folder.deleteAfter}";
- UN_FOLDER_0_DELETE_ORIGINAL = "${toString cfg.folder.deleteOrginal}";
- UN_FOLDER_0_DELETE_FILES = "${toString cfg.folder.deleteFiles}";
- UN_FOLDER_0_MOVE_BACK = "${toString cfg.folder.moveBack}";
- } // cfg.extraConfig;
+ # Folder
+ UN_FOLDER_0_PATH = "${cfg.folder.path}";
+ UN_FOLDER_0_EXTRACT_PATH = "${cfg.folder.extractPath}";
+ UN_FOLDER_0_DELETE_AFTER = "${cfg.folder.deleteAfter}";
+ UN_FOLDER_0_DELETE_ORIGINAL = "${toString cfg.folder.deleteOrginal}";
+ UN_FOLDER_0_DELETE_FILES = "${toString cfg.folder.deleteFiles}";
+ UN_FOLDER_0_MOVE_BACK = "${toString cfg.folder.moveBack}";
+ } // cfg.extraConfig;
serviceConfig = {
User = cfg.user;
Group = cfg.group;
diff --git a/nixos/common/modules/vault.nix b/nixos/common/modules/vault.nix
index 90b86c8..4460ee7 100644
--- a/nixos/common/modules/vault.nix
+++ b/nixos/common/modules/vault.nix
@@ -7,13 +7,16 @@ let
# Find all vault hosts that do not have the same IP as the current host
vault_hosts =
filter ({ tags ? [ ], ip ? "", ... }: (elem "vault" tags) && (ip != hostIP))
- flat_hosts;
- cluster_config = concatStrings (map ({ ip, ... }: ''
- retry_join {
- leader_api_addr = "http://${ip}:${toString cfg.port}"
- }
- '') vault_hosts);
-in {
+ flat_hosts;
+ cluster_config = concatStrings (map
+ ({ ip, ... }: ''
+ retry_join {
+ leader_api_addr = "http://${ip}:${toString cfg.port}"
+ }
+ '')
+ vault_hosts);
+in
+{
options.services.v.vault = {
enable = mkEnableOption "v's vault";
diff --git a/nixos/common/users/victor.nix b/nixos/common/users/victor.nix
index 18a57ad..46ff5fe 100644
--- a/nixos/common/users/victor.nix
+++ b/nixos/common/users/victor.nix
@@ -23,23 +23,27 @@
};
home-manager.users.victor = {
- programs.home-manager.enable = true;
+ programs = {
+ home-manager.enable = true;
- home.username = "victor";
- home.homeDirectory = "/home/victor";
- home.stateVersion = "23.05";
+ v.nvim.enable = true;
+ v.git.enable = true;
- programs.v.nvim.enable = true;
- programs.v.git.enable = true;
+ tmux = {
+ enable = true;
+ shortcut = "b";
+ terminal = "screen-256color";
+ clock24 = true;
+ };
- programs.tmux = {
- enable = true;
- shortcut = "b";
- terminal = "screen-256color";
- clock24 = true;
+ bat.enable = true;
};
+ home = {
- programs.bat.enable = true;
+ username = "victor";
+ homeDirectory = "/home/victor";
+ stateVersion = "23.05";
+ };
};
}
diff --git a/nixos/hosts/hades/immich/configuration.nix b/nixos/hosts/hades/immich/configuration.nix
index 938bb2d..c338ea3 100644
--- a/nixos/hosts/hades/immich/configuration.nix
+++ b/nixos/hosts/hades/immich/configuration.nix
@@ -7,7 +7,8 @@ let
# https://github.com/immich-app/immich/releases
# version = "1.55.1";
dataDir = "/var/lib/immich";
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
diff --git a/nixos/hosts/hades/lucy/configuration.nix b/nixos/hosts/hades/lucy/configuration.nix
index 19f9c70..3568268 100644
--- a/nixos/hosts/hades/lucy/configuration.nix
+++ b/nixos/hosts/hades/lucy/configuration.nix
@@ -24,7 +24,8 @@ let
doCheck = false;
};
-in {
+in
+{
imports = [ ./hardware-configuration.nix ];
# This value determines the NixOS release from which the default
@@ -46,10 +47,12 @@ in {
trivy
wapiti
];
+ boot.loader = {
- boot.loader.systemd-boot.enable = true;
- boot.loader.efi.canTouchEfiVariables = true;
- boot.loader.efi.efiSysMountPoint = "/boot";
+ systemd-boot.enable = true;
+ efi.canTouchEfiVariables = true;
+ efi.efiSysMountPoint = "/boot";
+ };
virtualisation.docker.enable = true;
diff --git a/nixos/hosts/hades/lucy/hardware-configuration.nix b/nixos/hosts/hades/lucy/hardware-configuration.nix
index f89cdb5..ba51cd1 100644
--- a/nixos/hosts/hades/lucy/hardware-configuration.nix
+++ b/nixos/hosts/hades/lucy/hardware-configuration.nix
@@ -5,19 +5,21 @@
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
+ boot = {
- boot.initrd.availableKernelModules = [
- "uhci_hcd"
- "ehci_pci"
- "ahci"
- "virtio_pci"
- "virtio_scsi"
- "sd_mod"
- "sr_mod"
- ];
- boot.initrd.kernelModules = [ ];
- boot.kernelModules = [ ];
- boot.extraModulePackages = [ ];
+ initrd.availableKernelModules = [
+ "uhci_hcd"
+ "ehci_pci"
+ "ahci"
+ "virtio_pci"
+ "virtio_scsi"
+ "sd_mod"
+ "sr_mod"
+ ];
+ initrd.kernelModules = [ ];
+ kernelModules = [ ];
+ extraModulePackages = [ ];
+ };
fileSystems."/" = {
device = "/dev/disk/by-uuid/749c02fd-209d-4974-917e-38b749d10ec2";
diff --git a/nixos/hosts/hades/mastodon/configuration.nix b/nixos/hosts/hades/mastodon/configuration.nix
index 34ab313..eee7fde 100644
--- a/nixos/hosts/hades/mastodon/configuration.nix
+++ b/nixos/hosts/hades/mastodon/configuration.nix
@@ -2,7 +2,8 @@
let
vs = config.vault-secrets.secrets;
cfg = config.services.mastodon;
-in {
+in
+{
system.stateVersion = "21.05";
# Use DHCP with static leases
networking.interfaces.eth0.useDHCP = true;
@@ -100,6 +101,7 @@ in {
};
};
- networking.firewall = let cfg = config.services.mastodon;
- in { allowedTCPPorts = [ cfg.streamingPort cfg.webPort ]; };
+ networking.firewall =
+ let cfg = config.services.mastodon;
+ in { allowedTCPPorts = [ cfg.streamingPort cfg.webPort ]; };
}
diff --git a/nixos/hosts/hades/nginx/configuration.nix b/nixos/hosts/hades/nginx/configuration.nix
index 71b0a24..566dcdf 100644
--- a/nixos/hosts/hades/nginx/configuration.nix
+++ b/nixos/hosts/hades/nginx/configuration.nix
@@ -12,7 +12,8 @@ let
proxyWebsockets = true;
};
};
-in {
+in
+{
imports = [ ];
nixpkgs.config.permittedInsecurePackages = [ "openssl-1.1.1t" ];
@@ -25,10 +26,12 @@ in {
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "23.05"; # Did you read the comment?
networking.firewall.allowedTCPPorts = [ 80 443 ];
+ security.acme = {
- security.acme.defaults.email = "victorheld12@gmail.com";
- security.acme.acceptTerms = true;
- security.acme.preliminarySelfsigned = true;
+ defaults.email = "victorheld12@gmail.com";
+ acceptTerms = true;
+ preliminarySelfsigned = true;
+ };
services.nginx = {
enable = true;
@@ -39,38 +42,39 @@ in {
clientMaxBodySize = "1024m";
package = pkgs.nginxMainline;
+ virtualHosts = {
- virtualHosts."cshub.nl" = proxy "http://192.168.0.113";
- virtualHosts."api.cshub.nl" = proxy "http://192.168.0.113";
+ "cshub.nl" = proxy "http://192.168.0.113";
+ "api.cshub.nl" = proxy "http://192.168.0.113";
- virtualHosts."ha.xirion.net" = proxy "http://192.168.0.129:8123";
- virtualHosts."xirion.net" = {
- enableACME = true;
- forceSSL = true;
- locations."/".extraConfig = ''
- add_header Content-Type 'text/html; charset=UTF-8';
- return 200 'Hello, World!';
- '';
- locations."= /.well-known/host-meta".extraConfig = ''
- return 301 https://fedi.xirion.net$request_uri;
- '';
- };
- # virtualHosts."blog.xirion.net" = proxy "http://10.10.10.12";
- virtualHosts."git.xirion.net" = proxy "http://10.10.10.12";
- # virtualHosts."mail.xirion.net" = proxy "http://192.168.0.118";
- virtualHosts."o.xirion.net" = proxy "http://192.168.0.112:9000";
- virtualHosts."g.xirion.net" = proxy "http://garage.hades:3900";
- virtualHosts."requests.xirion.net" = proxy "http://overseerr.hades:5055";
- virtualHosts."pass.xirion.net" = proxy "http://bitwarden_rs";
- virtualHosts."repo.xirion.net" = proxy "http://archlinux";
- virtualHosts."thelounge.xirion.net" = proxy "http://thelounge:9000";
- virtualHosts."attic.xirion.net" = proxy "http://attic.hades:8080";
+ "ha.xirion.net" = proxy "http://192.168.0.129:8123";
+ "xirion.net" = {
+ enableACME = true;
+ forceSSL = true;
+ locations."/".extraConfig = ''
+ add_header Content-Type 'text/html; charset=UTF-8';
+ return 200 'Hello, World!';
+ '';
+ locations."= /.well-known/host-meta".extraConfig = ''
+ return 301 https://fedi.xirion.net$request_uri;
+ '';
+ };
+ # virtualHosts."blog.xirion.net" = proxy "http://10.10.10.12";
+ "git.xirion.net" = proxy "http://10.10.10.12";
+ # virtualHosts."mail.xirion.net" = proxy "http://192.168.0.118";
+ "o.xirion.net" = proxy "http://192.168.0.112:9000";
+ "g.xirion.net" = proxy "http://garage.hades:3900";
+ "requests.xirion.net" = proxy "http://overseerr.hades:5055";
+ "pass.xirion.net" = proxy "http://bitwarden_rs";
+ "repo.xirion.net" = proxy "http://archlinux";
+ "thelounge.xirion.net" = proxy "http://thelounge:9000";
+ "attic.xirion.net" = proxy "http://attic.hades:8080";
- virtualHosts."tautulli.xirion.net" = proxy "http://tautulli.hades:8080";
- virtualHosts."peepeepoopoo.xirion.net" = proxy "http://tautulli.hades:8080"; # Deprecated but Ricardo has it bookmarked already!
+ "tautulli.xirion.net" = proxy "http://tautulli.hades:8080";
+ "peepeepoopoo.xirion.net" = proxy "http://tautulli.hades:8080"; # Deprecated but Ricardo has it bookmarked already!
- virtualHosts."registry.xirion.net" = proxy "http://docker-registry:5000"
- // {
+ "registry.xirion.net" = proxy "http://docker-registry:5000"
+ // {
locations."/".extraConfig = ''
allow 127.0.0.1;
allow 10.42.42.0/23;
@@ -83,91 +87,94 @@ in {
'';
};
- virtualHosts."plex.xirion.net" = {
- # Since we want a secure connection, we force SSL
- forceSSL = true;
- enableACME = true;
+ "plex.xirion.net" = {
+ # Since we want a secure connection, we force SSL
+ forceSSL = true;
+ enableACME = true;
- extraConfig = ''
- #Some players don't reopen a socket and playback stops totally instead of resuming after an extended pause
- send_timeout 100m;
+ extraConfig = ''
+ #Some players don't reopen a socket and playback stops totally instead of resuming after an extended pause
+ send_timeout 100m;
- # Why this is important: https://blog.cloudflare.com/ocsp-stapling-how-cloudflare-just-made-ssl-30/
- ssl_stapling on;
- ssl_stapling_verify on;
+ # Why this is important: https://blog.cloudflare.com/ocsp-stapling-how-cloudflare-just-made-ssl-30/
+ ssl_stapling on;
+ ssl_stapling_verify on;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_prefer_server_ciphers on;
- #Intentionally not hardened for security for player support and encryption video streams has a lot of overhead with something like AES-256-GCM-SHA384.
- ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
+ ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
+ ssl_prefer_server_ciphers on;
+ #Intentionally not hardened for security for player support and encryption video streams has a lot of overhead with something like AES-256-GCM-SHA384.
+ ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
- # Forward real ip and host to Plex
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header Host $server_addr;
- proxy_set_header Referer $server_addr;
- proxy_set_header Origin $server_addr;
+ # Forward real ip and host to Plex
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_set_header Host $server_addr;
+ proxy_set_header Referer $server_addr;
+ proxy_set_header Origin $server_addr;
- # Nginx default client_max_body_size is 1MB, which breaks Camera Upload feature from the phones.
- # Increasing the limit fixes the issue. Anyhow, if 4K videos are expected to be uploaded, the size might need to be increased even more
- client_max_body_size 100M;
+ # Nginx default client_max_body_size is 1MB, which breaks Camera Upload feature from the phones.
+ # Increasing the limit fixes the issue. Anyhow, if 4K videos are expected to be uploaded, the size might need to be increased even more
+ client_max_body_size 100M;
- # Plex headers
- proxy_set_header X-Plex-Client-Identifier $http_x_plex_client_identifier;
- proxy_set_header X-Plex-Device $http_x_plex_device;
- proxy_set_header X-Plex-Device-Name $http_x_plex_device_name;
- proxy_set_header X-Plex-Platform $http_x_plex_platform;
- proxy_set_header X-Plex-Platform-Version $http_x_plex_platform_version;
- proxy_set_header X-Plex-Product $http_x_plex_product;
- proxy_set_header X-Plex-Token $http_x_plex_token;
- proxy_set_header X-Plex-Version $http_x_plex_version;
- proxy_set_header X-Plex-Nocache $http_x_plex_nocache;
- proxy_set_header X-Plex-Provides $http_x_plex_provides;
- proxy_set_header X-Plex-Device-Vendor $http_x_plex_device_vendor;
- proxy_set_header X-Plex-Model $http_x_plex_model;
+ # Plex headers
+ proxy_set_header X-Plex-Client-Identifier $http_x_plex_client_identifier;
+ proxy_set_header X-Plex-Device $http_x_plex_device;
+ proxy_set_header X-Plex-Device-Name $http_x_plex_device_name;
+ proxy_set_header X-Plex-Platform $http_x_plex_platform;
+ proxy_set_header X-Plex-Platform-Version $http_x_plex_platform_version;
+ proxy_set_header X-Plex-Product $http_x_plex_product;
+ proxy_set_header X-Plex-Token $http_x_plex_token;
+ proxy_set_header X-Plex-Version $http_x_plex_version;
+ proxy_set_header X-Plex-Nocache $http_x_plex_nocache;
+ proxy_set_header X-Plex-Provides $http_x_plex_provides;
+ proxy_set_header X-Plex-Device-Vendor $http_x_plex_device_vendor;
+ proxy_set_header X-Plex-Model $http_x_plex_model;
- # Buffering off send to the client as soon as the data is received from Plex.
- proxy_redirect off;
- proxy_buffering off;
- '';
- locations."/" = {
+ # Buffering off send to the client as soon as the data is received from Plex.
+ proxy_redirect off;
+ proxy_buffering off;
+ '';
+ locations."/" = {
- proxyWebsockets = true;
- proxyPass = "http://plex2.hades:32400/";
+ proxyWebsockets = true;
+ proxyPass = "http://plex2.hades:32400/";
+ };
};
+
+ "fedi.xirion.net" = {
+ enableACME = true;
+ forceSSL = true;
+
+ root = "${pkgs.v.glitch-soc}/public/";
+ locations = {
+ "/".tryFiles = "$uri @proxy";
+
+ # location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
+ # add_header Cache-Control "public, max-age=31536000, immutable";
+ # add_header Strict-Transport-Security "max-age=31536000";
+ # try_files $uri @proxy;
+ # }
+
+ # location /sw.js {
+ # add_header Cache-Control "public, max-age=0";
+ # add_header Strict-Transport-Security "max-age=31536000";
+ # try_files $uri @proxy;
+ # }
+
+ "@proxy" = {
+ proxyPass = "http://192.168.0.138:55001";
+ proxyWebsockets = true;
+ };
+
+ "/api/v1/streaming" = {
+ proxyPass = "http://192.168.0.138:55000";
+ proxyWebsockets = true;
+ };
+ };
+ };
+
+ "fedi-media.xirion.net" = proxy "http://garage.hades:3902";
};
-
- virtualHosts."fedi.xirion.net" = {
- enableACME = true;
- forceSSL = true;
-
- root = "${pkgs.v.glitch-soc}/public/";
- locations."/".tryFiles = "$uri @proxy";
-
- # location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) {
- # add_header Cache-Control "public, max-age=31536000, immutable";
- # add_header Strict-Transport-Security "max-age=31536000";
- # try_files $uri @proxy;
- # }
-
- # location /sw.js {
- # add_header Cache-Control "public, max-age=0";
- # add_header Strict-Transport-Security "max-age=31536000";
- # try_files $uri @proxy;
- # }
-
- locations."@proxy" = {
- proxyPass = "http://192.168.0.138:55001";
- proxyWebsockets = true;
- };
-
- locations."/api/v1/streaming" = {
- proxyPass = "http://192.168.0.138:55000";
- proxyWebsockets = true;
- };
- };
-
- virtualHosts."fedi-media.xirion.net" = proxy "http://garage.hades:3902";
};
}
diff --git a/nixos/hosts/hades/pmm/configuration.nix b/nixos/hosts/hades/pmm/configuration.nix
index 0e079e8..3d9cc03 100644
--- a/nixos/hosts/hades/pmm/configuration.nix
+++ b/nixos/hosts/hades/pmm/configuration.nix
@@ -14,7 +14,8 @@ let
-v "/etc/pmm/TVShows.yml:/config/TVShows.yml:ro" \
${container} --run
'';
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
diff --git a/nixos/hosts/hades/rtorrent/configuration.nix b/nixos/hosts/hades/rtorrent/configuration.nix
index 865654d..9161ccd 100644
--- a/nixos/hosts/hades/rtorrent/configuration.nix
+++ b/nixos/hosts/hades/rtorrent/configuration.nix
@@ -21,27 +21,29 @@ in {
vault-secrets.secrets.rtorrent = { services = [ "wg-quick-wg0" ]; };
# Mullvad VPN
- networking.wg-quick.interfaces = let
- postUpScript = pkgs.writeScriptBin "post_up" ''
- #!${pkgs.stdenv.shell}
- ${pkgs.iproute2}/bin/ip route add 10.42.42.0/23 via 192.168.0.1
- ${pkgs.iproute2}/bin/ip route add 10.100.0.0/24 via 192.168.0.1
- '';
- in {
- wg0 = {
- address = [ "10.66.153.191/32" "fc00:bbbb:bbbb:bb01::3:99be/128" ];
- dns = [ "10.64.0.1" ];
- privateKeyFile = "${vs.rtorrent}/wireguardKey";
- postUp = "${postUpScript}/bin/post_up || true";
+ networking.wg-quick.interfaces =
+ let
+ postUpScript = pkgs.writeScriptBin "post_up" ''
+ #!${pkgs.stdenv.shell}
+ ${pkgs.iproute2}/bin/ip route add 10.42.42.0/23 via 192.168.0.1
+ ${pkgs.iproute2}/bin/ip route add 10.100.0.0/24 via 192.168.0.1
+ '';
+ in
+ {
+ wg0 = {
+ address = [ "10.66.153.191/32" "fc00:bbbb:bbbb:bb01::3:99be/128" ];
+ dns = [ "10.64.0.1" ];
+ privateKeyFile = "${vs.rtorrent}/wireguardKey";
+ postUp = "${postUpScript}/bin/post_up || true";
- peers = [
- {
- publicKey = "HQHCrq4J6bSpdW1fI5hR/bvcrYa6HgGgwaa5ZY749ik=";
- allowedIPs = [ "0.0.0.0/0" "::/0"];
- endpoint = "185.213.155.73:51820";
- # persistentKeepalive = 25;
- }
- ];
+ peers = [
+ {
+ publicKey = "HQHCrq4J6bSpdW1fI5hR/bvcrYa6HgGgwaa5ZY749ik=";
+ allowedIPs = [ "0.0.0.0/0" "::/0" ];
+ endpoint = "185.213.155.73:51820";
+ # persistentKeepalive = 25;
+ }
+ ];
+ };
};
- };
}
diff --git a/nixos/hosts/hades/rtorrent/rtorrent.nix b/nixos/hosts/hades/rtorrent/rtorrent.nix
index 2aa3750..4d72160 100644
--- a/nixos/hosts/hades/rtorrent/rtorrent.nix
+++ b/nixos/hosts/hades/rtorrent/rtorrent.nix
@@ -4,112 +4,113 @@
port = 54945; # Port Forwarded in mullvad
downloadDir = "/mnt/storage/torrents/r";
package = pkgs.jesec-rtorrent;
- configText = let cfg = config.services.rtorrent;
- in pkgs.lib.mkForce ''
- # rTorrent runtime directory (cfg.basedir) [default: "$HOME/.local/share/rtorrent"]
- method.insert = cfg.basedir, private|const|string, (cat,"${cfg.dataDir}/")
+ configText =
+ let cfg = config.services.rtorrent;
+ in pkgs.lib.mkForce ''
+ # rTorrent runtime directory (cfg.basedir) [default: "$HOME/.local/share/rtorrent"]
+ method.insert = cfg.basedir, private|const|string, (cat,"${cfg.dataDir}/")
- # Default download directory (cfg.download) [default: "$(cfg.basedir)/download"]
- method.insert = cfg.download, private|const|string, (cat,"${cfg.downloadDir}")
+ # Default download directory (cfg.download) [default: "$(cfg.basedir)/download"]
+ method.insert = cfg.download, private|const|string, (cat,"${cfg.downloadDir}")
- # RPC Socket
- method.insert = cfg.rpcsock, private|const|string, (cat,"${cfg.rpcSocket}")
+ # RPC Socket
+ method.insert = cfg.rpcsock, private|const|string, (cat,"${cfg.rpcSocket}")
- # Log directory (cfg.logs) [default: "$(cfg.basedir)/log"]
- method.insert = cfg.logs, private|const|string, (cat,(cfg.basedir),"log/")
- method.insert = cfg.logfile, private|const|string, (cat,(cfg.logs),"rtorrent-",(system.time),".log")
+ # Log directory (cfg.logs) [default: "$(cfg.basedir)/log"]
+ method.insert = cfg.logs, private|const|string, (cat,(cfg.basedir),"log/")
+ method.insert = cfg.logfile, private|const|string, (cat,(cfg.logs),"rtorrent-",(system.time),".log")
- # Torrent session directory (cfg.session) [default: "$(cfg.basedir)/.session"]
- method.insert = cfg.session, private|const|string, (cat,(cfg.basedir),".session/")
+ # Torrent session directory (cfg.session) [default: "$(cfg.basedir)/.session"]
+ method.insert = cfg.session, private|const|string, (cat,(cfg.basedir),".session/")
- # Watch (drop to add) directories (cfg.watch) [default: "$(cfg.basedir)/watch"]
- method.insert = cfg.watch, private|const|string, (cat,(cfg.basedir),"watch/")
+ # Watch (drop to add) directories (cfg.watch) [default: "$(cfg.basedir)/watch"]
+ method.insert = cfg.watch, private|const|string, (cat,(cfg.basedir),"watch/")
- # Create directories
- fs.mkdir.recursive = (cat,(cfg.basedir))
+ # Create directories
+ fs.mkdir.recursive = (cat,(cfg.basedir))
- fs.mkdir = (cat,(cfg.download))
- fs.mkdir = (cat,(cfg.logs))
- fs.mkdir = (cat,(cfg.session))
+ fs.mkdir = (cat,(cfg.download))
+ fs.mkdir = (cat,(cfg.logs))
+ fs.mkdir = (cat,(cfg.session))
- fs.mkdir = (cat,(cfg.watch))
- fs.mkdir = (cat,(cfg.watch),"/load")
- fs.mkdir = (cat,(cfg.watch),"/start")
+ fs.mkdir = (cat,(cfg.watch))
+ fs.mkdir = (cat,(cfg.watch),"/load")
+ fs.mkdir = (cat,(cfg.watch),"/start")
- # Drop to "$(cfg.watch)/load" to add torrent
- schedule2 = watch_load, 11, 10, ((load.verbose, (cat, (cfg.watch), "load/*.torrent")))
+ # Drop to "$(cfg.watch)/load" to add torrent
+ schedule2 = watch_load, 11, 10, ((load.verbose, (cat, (cfg.watch), "load/*.torrent")))
- # Drop to "$(cfg.watch)/start" to add torrent and start downloading
- schedule2 = watch_start, 10, 10, ((load.start_verbose, (cat, (cfg.watch), "start/*.torrent")))
+ # Drop to "$(cfg.watch)/start" to add torrent and start downloading
+ schedule2 = watch_start, 10, 10, ((load.start_verbose, (cat, (cfg.watch), "start/*.torrent")))
- # Listening port for incoming peer traffic
- network.port_range.set = ${toString cfg.port}-${toString cfg.port}
- network.port_random.set = no
+ # Listening port for incoming peer traffic
+ network.port_range.set = ${toString cfg.port}-${toString cfg.port}
+ network.port_random.set = no
- # Distributed Hash Table and Peer EXchange
- dht.mode.set = disable
- dht.port.set = 6881
- protocol.pex.set = yes
+ # Distributed Hash Table and Peer EXchange
+ dht.mode.set = disable
+ dht.port.set = 6881
+ protocol.pex.set = yes
- # UDP tracker support
- trackers.use_udp.set = yes
+ # UDP tracker support
+ trackers.use_udp.set = yes
- # Peer settings
- throttle.max_uploads.set = 100
- throttle.max_uploads.global.set = 250
- throttle.min_peers.normal.set = 20
- throttle.max_peers.normal.set = 60
- throttle.min_peers.seed.set = 30
- throttle.max_peers.seed.set = 80
- trackers.numwant.set = 80
+ # Peer settings
+ throttle.max_uploads.set = 100
+ throttle.max_uploads.global.set = 250
+ throttle.min_peers.normal.set = 20
+ throttle.max_peers.normal.set = 60
+ throttle.min_peers.seed.set = 30
+ throttle.max_peers.seed.set = 80
+ trackers.numwant.set = 80
- protocol.encryption.set = allow_incoming,try_outgoing,enable_retry
+ protocol.encryption.set = allow_incoming,try_outgoing,enable_retry
- # Limits for file handle resources, this is optimized for
- # an `ulimit` of 1024 (a common default). You MUST leave
- # a ceiling of handles reserved for rTorrent's internal needs!
- network.max_open_files.set = 600
- network.max_open_sockets.set = 300
+ # Limits for file handle resources, this is optimized for
+ # an `ulimit` of 1024 (a common default). You MUST leave
+ # a ceiling of handles reserved for rTorrent's internal needs!
+ network.max_open_files.set = 600
+ network.max_open_sockets.set = 300
- # Memory resource usage (increase if you have a large number of items loaded,
- # and/or the available resources to spend)
- pieces.memory.max.set = 1800M
- network.xmlrpc.size_limit.set = 32M
+ # Memory resource usage (increase if you have a large number of items loaded,
+ # and/or the available resources to spend)
+ pieces.memory.max.set = 1800M
+ network.xmlrpc.size_limit.set = 32M
- # Basic operational settings
- session.path.set = (cat, (cfg.session))
- directory.default.set = (cat, (cfg.download))
- log.execute = (cat, (cfg.logs), "execute.log")
+ # Basic operational settings
+ session.path.set = (cat, (cfg.session))
+ directory.default.set = (cat, (cfg.download))
+ log.execute = (cat, (cfg.logs), "execute.log")
- # Other operational settings
- encoding.add = utf8
- system.umask.set = 0027
- system.cwd.set = (directory.default)
- #schedule2 = low_diskspace, 5, 60, ((close_low_diskspace, 500M))
- #pieces.hash.on_completion.set = no
+ # Other operational settings
+ encoding.add = utf8
+ system.umask.set = 0027
+ system.cwd.set = (directory.default)
+ #schedule2 = low_diskspace, 5, 60, ((close_low_diskspace, 500M))
+ #pieces.hash.on_completion.set = no
- # HTTP and SSL
- network.http.max_open.set = 50
- network.http.dns_cache_timeout.set = 25
+ # HTTP and SSL
+ network.http.max_open.set = 50
+ network.http.dns_cache_timeout.set = 25
- #network.http.ssl_verify_peer.set = 1
- #network.http.ssl_verify_host.set = 1
+ #network.http.ssl_verify_peer.set = 1
+ #network.http.ssl_verify_host.set = 1
- # Run the rTorrent process as a daemon in the background
- system.daemon.set = true
+ # Run the rTorrent process as a daemon in the background
+ system.daemon.set = true
- # XML-RPC interface
- network.scgi.open_local = (cat,(cfg.rpcsock))
- schedule = scgi_group,0,0,"execute.nothrow=chown,\":rtorrent\",(cfg.rpcsock)"
- schedule = scgi_permission,0,0,"execute.nothrow=chmod,\"g+w,o=\",(cfg.rpcsock)"
+ # XML-RPC interface
+ network.scgi.open_local = (cat,(cfg.rpcsock))
+ schedule = scgi_group,0,0,"execute.nothrow=chown,\":rtorrent\",(cfg.rpcsock)"
+ schedule = scgi_permission,0,0,"execute.nothrow=chmod,\"g+w,o=\",(cfg.rpcsock)"
- # Logging:
- # Levels = critical error warn notice info debug
- # Groups = connection_* dht_* peer_* rpc_* storage_* thread_* tracker_* torrent_*
- print = (cat, "Logging to ", (cfg.logfile))
- log.open_file = "log", (cfg.logfile)
- log.add_output = "debug", "log"
- '';
+ # Logging:
+ # Levels = critical error warn notice info debug
+ # Groups = connection_* dht_* peer_* rpc_* storage_* thread_* tracker_* torrent_*
+ print = (cat, "Logging to ", (cfg.logfile))
+ log.open_file = "log", (cfg.logfile)
+ log.add_output = "debug", "log"
+ '';
};
}
diff --git a/nixos/hosts/hades/unifi/configuration.nix b/nixos/hosts/hades/unifi/configuration.nix
index 7659d41..ef1aaec 100644
--- a/nixos/hosts/hades/unifi/configuration.nix
+++ b/nixos/hosts/hades/unifi/configuration.nix
@@ -1,4 +1,4 @@
-{ pkgs, lib, pkgs_stable,... }: {
+{ pkgs, lib, pkgs_stable, ... }: {
system.stateVersion = "21.05";
networking.interfaces.eth0.useDHCP = true;
diff --git a/nixos/hosts/olympus/bastion/configuration.nix b/nixos/hosts/olympus/bastion/configuration.nix
index 8127348..e306326 100644
--- a/nixos/hosts/olympus/bastion/configuration.nix
+++ b/nixos/hosts/olympus/bastion/configuration.nix
@@ -17,7 +17,8 @@ let
done
fi
'';
-in {
+in
+{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
diff --git a/nixos/hosts/olympus/bastion/hardware-configuration.nix b/nixos/hosts/olympus/bastion/hardware-configuration.nix
index dec70cc..be7d992 100644
--- a/nixos/hosts/olympus/bastion/hardware-configuration.nix
+++ b/nixos/hosts/olympus/bastion/hardware-configuration.nix
@@ -5,12 +5,14 @@
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
+ boot = {
- boot.initrd.availableKernelModules =
- [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
- boot.initrd.kernelModules = [ ];
- boot.kernelModules = [ ];
- boot.extraModulePackages = [ ];
+ initrd.availableKernelModules =
+ [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
+ initrd.kernelModules = [ ];
+ kernelModules = [ ];
+ extraModulePackages = [ ];
+ };
fileSystems."/" = {
device = "/dev/disk/by-uuid/e8427097-8545-4924-b033-2659fcf9adca";
diff --git a/nixos/hosts/olympus/dex/configuration.nix b/nixos/hosts/olympus/dex/configuration.nix
index aa934bb..af043f4 100644
--- a/nixos/hosts/olympus/dex/configuration.nix
+++ b/nixos/hosts/olympus/dex/configuration.nix
@@ -9,7 +9,8 @@ let
db_name = "dex";
inherit (config.meta.exposes.dex) port;
metricsPort = 5558;
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
diff --git a/nixos/hosts/olympus/dhcp/configuration.nix b/nixos/hosts/olympus/dhcp/configuration.nix
index daf061a..30aab23 100644
--- a/nixos/hosts/olympus/dhcp/configuration.nix
+++ b/nixos/hosts/olympus/dhcp/configuration.nix
@@ -9,8 +9,9 @@ let
localDomain = config.networking.domain;
hosts =
filter (h: hasAttr "ip" h && hasAttr "mac" h && h.realm == localDomain)
- flat_hosts;
-in {
+ flat_hosts;
+in
+{
networking = {
defaultGateway = "10.42.42.1";
nameservers = [ "10.42.42.15" "10.42.42.16" ];
diff --git a/nixos/hosts/olympus/eevee/hardware-configuration.nix b/nixos/hosts/olympus/eevee/hardware-configuration.nix
index 4082fde..efc7707 100644
--- a/nixos/hosts/olympus/eevee/hardware-configuration.nix
+++ b/nixos/hosts/olympus/eevee/hardware-configuration.nix
@@ -5,12 +5,14 @@
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
+ boot = {
- boot.initrd.availableKernelModules =
- [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
- boot.initrd.kernelModules = [ ];
- boot.kernelModules = [ "kvm-intel" ];
- boot.extraModulePackages = [ ];
+ initrd.availableKernelModules =
+ [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
+ initrd.kernelModules = [ ];
+ kernelModules = [ "kvm-intel" ];
+ extraModulePackages = [ ];
+ };
fileSystems."/" = {
device = "/dev/disk/by-uuid/947a98af-9a4e-4811-a2ca-9aa00b319e9c";
diff --git a/nixos/hosts/olympus/eevee/hardware.nix b/nixos/hosts/olympus/eevee/hardware.nix
index 37c1a85..422c10a 100644
--- a/nixos/hosts/olympus/eevee/hardware.nix
+++ b/nixos/hosts/olympus/eevee/hardware.nix
@@ -1,42 +1,46 @@
{ pkgs, config, ... }: {
- hardware.enableAllFirmware = true;
+ hardware = {
+ enableAllFirmware = true;
+ nvidia = {
+ package = config.boot.kernelPackages.nvidiaPackages.stable;
- services.hardware.bolt.enable = true;
+ # Open drivers cause gdm to crash
+ # open = true;
- services.xserver.videoDrivers = [ "nvidia" ];
- hardware.nvidia = {
- package = config.boot.kernelPackages.nvidiaPackages.stable;
+ # nvidia-drm.modeset=1
+ modesetting.enable = true;
+ };
- # Open drivers cause gdm to crash
- # open = true;
+ # Hardware acceleration
+ opengl = {
+ enable = true;
- # nvidia-drm.modeset=1
- modesetting.enable = true;
+ # Vulkan
+ driSupport = true;
+ };
+
+ logitech.wireless = {
+ enable = true;
+ enableGraphical = true;
+ };
};
+ services = {
- # Hardware acceleration
- hardware.opengl = {
- enable = true;
+ hardware.bolt.enable = true;
- # Vulkan
- driSupport = true;
+ xserver.videoDrivers = [ "nvidia" ];
+
+ # udev
+ udev.packages = with pkgs; [
+ android-udev-rules
+ logitech-udev-rules
+ wooting-udev-rules
+ ];
+
+ # SSD Trim
+ fstrim.enable = true;
};
- hardware.logitech.wireless = {
- enable = true;
- enableGraphical = true;
- };
-
- # udev
- services.udev.packages = with pkgs; [
- android-udev-rules
- logitech-udev-rules
- wooting-udev-rules
- ];
-
# FS
fileSystems."/".options = [ "compress=zstd" ];
-
- # SSD Trim
- services.fstrim.enable = true;
}
diff --git a/nixos/hosts/olympus/gitea/configuration.nix b/nixos/hosts/olympus/gitea/configuration.nix
index 9deb583..fd471d3 100644
--- a/nixos/hosts/olympus/gitea/configuration.nix
+++ b/nixos/hosts/olympus/gitea/configuration.nix
@@ -6,7 +6,8 @@
let
vs = config.vault-secrets.secrets;
inherit (config.meta.exposes.git) port;
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
@@ -23,12 +24,71 @@ in {
environment.noXlibs = lib.mkForce false;
networking.firewall.allowedTCPPorts = [ port ];
+ services = {
- services.openssh.startWhenNeeded = false;
+ openssh.startWhenNeeded = false;
- services.fail2ban = {
- enable = true;
- maxretry = 3;
+ fail2ban = {
+ enable = true;
+ maxretry = 3;
+ };
+
+ gitea = {
+ enable = true;
+ package = pkgs.forgejo;
+ lfs.enable = true;
+ dump.type = "tar.gz";
+ database.type = "postgres";
+ mailerPasswordFile = "${vs.gitea}/mailPassword";
+
+ settings = {
+ default.WORK_PATH = "/var/lib/gitea";
+ actions = { "ENABLED" = true; };
+ repository = {
+ "ENABLE_PUSH_CREATE_USER" = true;
+ "DEFAULT_PUSH_CREATE_PRIVATE" = false;
+ };
+ service = {
+ "DEFAULT_KEEP_EMAIL_PRIVATE" = true;
+ "DISABLE_REGISTRATION" = true;
+ };
+ indexer = {
+ "REPO_INDEXER_ENABLED" = true;
+ "REPO_INDEXER_PATH" = "indexers/repos.bleve";
+ "MAX_FILE_SIZE" = 1048576;
+ "REPO_INDEXER_EXCLUDE" = "node_modules/**";
+ };
+ ui = {
+ "THEMES" = "forgejo-auto,forgejo-light,forgejo-dark,auto,gitea,arc-green,agatheme";
+ "DEFAULT_THEME" = "forgejo-auto";
+ "USE_SERVICE_WORKER" = true;
+ };
+ server = {
+ LANDING_PAGE = "explore";
+ SSH_PORT = 42;
+ DOMAIN = "git.0x76.dev";
+ ROOT_URL = "https://git.0x76.dev";
+ HTTP_PORT = port;
+ };
+ session = {
+ "PROVIDER" = "db";
+ "COOKIE_SECURE" = true;
+ };
+ mailer = {
+ "ENABLED" = true;
+ # "IS_TLS_ENABLED" = true;
+ # "HOST" = "mail.0x76.dev:465";
+ "FROM" = "gitea@0x76.dev";
+ # "MAILER_TYPE" = "smtp";
+ "USER" = "gitea@0x76.dev";
+
+ # Below is prep for 1.18
+ "PROTOCOL" = "smtps";
+ "SMTP_ADDR" = "mail.0x76.dev";
+ "SMTP_PORT" = 465;
+ };
+ };
+ };
};
vault-secrets.secrets.gitea = {
@@ -42,61 +102,4 @@ in {
mkdir -p ${target_dir}
ln -sf ${pkgs.v.gitea-agatheme} "${target_dir}/theme-agatheme.css"
'';
-
- services.gitea = {
- enable = true;
- package = pkgs.forgejo;
- lfs.enable = true;
- dump.type = "tar.gz";
- database.type = "postgres";
- mailerPasswordFile = "${vs.gitea}/mailPassword";
-
- settings = {
- default.WORK_PATH = "/var/lib/gitea";
- actions = { "ENABLED" = true; };
- repository = {
- "ENABLE_PUSH_CREATE_USER" = true;
- "DEFAULT_PUSH_CREATE_PRIVATE" = false;
- };
- service = {
- "DEFAULT_KEEP_EMAIL_PRIVATE" = true;
- "DISABLE_REGISTRATION" = true;
- };
- indexer = {
- "REPO_INDEXER_ENABLED" = true;
- "REPO_INDEXER_PATH" = "indexers/repos.bleve";
- "MAX_FILE_SIZE" = 1048576;
- "REPO_INDEXER_EXCLUDE" = "node_modules/**";
- };
- ui = {
- "THEMES" = "forgejo-auto,forgejo-light,forgejo-dark,auto,gitea,arc-green,agatheme";
- "DEFAULT_THEME" = "forgejo-auto";
- "USE_SERVICE_WORKER" = true;
- };
- server = {
- LANDING_PAGE = "explore";
- SSH_PORT = 42;
- DOMAIN = "git.0x76.dev";
- ROOT_URL = "https://git.0x76.dev";
- HTTP_PORT = port;
- };
- session = {
- "PROVIDER" = "db";
- "COOKIE_SECURE" = true;
- };
- mailer = {
- "ENABLED" = true;
- # "IS_TLS_ENABLED" = true;
- # "HOST" = "mail.0x76.dev:465";
- "FROM" = "gitea@0x76.dev";
- # "MAILER_TYPE" = "smtp";
- "USER" = "gitea@0x76.dev";
-
- # Below is prep for 1.18
- "PROTOCOL" = "smtps";
- "SMTP_ADDR" = "mail.0x76.dev";
- "SMTP_PORT" = 465;
- };
- };
- };
}
diff --git a/nixos/hosts/olympus/hedgedoc/configuration.nix b/nixos/hosts/olympus/hedgedoc/configuration.nix
index 1b92dc5..4525e08 100644
--- a/nixos/hosts/olympus/hedgedoc/configuration.nix
+++ b/nixos/hosts/olympus/hedgedoc/configuration.nix
@@ -8,7 +8,8 @@ let
db_user = "hedgedoc";
inherit (config.meta.exposes.md) port;
vs = config.vault-secrets.secrets;
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
@@ -67,19 +68,20 @@ in {
secretKey = "$MINIO_SECRET_KEY";
};
email = false;
- oauth2 = let url = "https://dex.0x76.dev";
- in {
- providerName = "Dex";
- clientID = "hedgedoc";
- clientSecret = "$DEX_CLIENT_SECRET";
- scope = "openid email profile";
- authorizationURL = "${url}/auth";
- tokenURL = "${url}/token";
- userProfileURL = "${url}/userinfo";
- userProfileUsernameAttr = "preferred_username";
- userProfileDisplayNameAttr = "name";
- userProfileEmailAttr = "email";
- };
+ oauth2 =
+ let url = "https://dex.0x76.dev";
+ in {
+ providerName = "Dex";
+ clientID = "hedgedoc";
+ clientSecret = "$DEX_CLIENT_SECRET";
+ scope = "openid email profile";
+ authorizationURL = "${url}/auth";
+ tokenURL = "${url}/token";
+ userProfileURL = "${url}/userinfo";
+ userProfileUsernameAttr = "preferred_username";
+ userProfileDisplayNameAttr = "name";
+ userProfileEmailAttr = "email";
+ };
};
};
}
diff --git a/nixos/hosts/olympus/mailserver/configuration.nix b/nixos/hosts/olympus/mailserver/configuration.nix
index fd6ca36..da3ce19 100644
--- a/nixos/hosts/olympus/mailserver/configuration.nix
+++ b/nixos/hosts/olympus/mailserver/configuration.nix
@@ -97,48 +97,50 @@ in {
autoIndexExclude = [ "\\Junk" ];
};
};
+ services = {
- services.postfix.relayHost = "smtp.ziggozakelijk.nl";
- services.postfix.relayPort = 587;
+ postfix.relayHost = "smtp.ziggozakelijk.nl";
+ postfix.relayPort = 587;
- services.roundcube = {
- enable = true;
- package = pkgs.roundcube.withPlugins
- (plugins: [ plugins.persistent_login pkgs.v.roundcube-swipe ]);
- plugins = [
- "archive"
- "managesieve"
- "swipe"
- # "enigma"
- # "markasjunk"
- "persistent_login"
- ];
- # this is the url of the vhost, not necessarily the same as the fqdn of
- # the mailserver
- hostName = "webmail.0x76.dev";
- extraConfig = ''
- # starttls needed for authentication, so the fqdn required to match
- # the certificate
- $config['smtp_host'] = "tls://${config.mailserver.fqdn}";
- $config['smtp_user'] = "%u";
- $config['smtp_pass'] = "%p";
-
- $config['swipe_actions'] = [
- 'messagelist' => [
- 'left' => 'archive',
- 'right' => 'archive',
- 'down' => 'none'
- ],
- 'contactlist' => [
- 'left' => 'none',
- 'right' => 'none',
- 'down' => 'none'
- ]
+ roundcube = {
+ enable = true;
+ package = pkgs.roundcube.withPlugins
+ (plugins: [ plugins.persistent_login pkgs.v.roundcube-swipe ]);
+ plugins = [
+ "archive"
+ "managesieve"
+ "swipe"
+ # "enigma"
+ # "markasjunk"
+ "persistent_login"
];
- '';
- };
+ # this is the url of the vhost, not necessarily the same as the fqdn of
+ # the mailserver
+ hostName = "webmail.0x76.dev";
+ extraConfig = ''
+ # starttls needed for authentication, so the fqdn required to match
+ # the certificate
+ $config['smtp_host'] = "tls://${config.mailserver.fqdn}";
+ $config['smtp_user'] = "%u";
+ $config['smtp_pass'] = "%p";
- services.nginx = { enable = true; };
+ $config['swipe_actions'] = [
+ 'messagelist' => [
+ 'left' => 'archive',
+ 'right' => 'archive',
+ 'down' => 'none'
+ ],
+ 'contactlist' => [
+ 'left' => 'none',
+ 'right' => 'none',
+ 'down' => 'none'
+ ]
+ ];
+ '';
+ };
+
+ nginx = { enable = true; };
+ };
security.acme.acceptTerms = true;
security.acme.defaults.email = "v@0x76.dev";
diff --git a/nixos/hosts/olympus/minio/configuration.nix b/nixos/hosts/olympus/minio/configuration.nix
index 5a05fb7..1e4ffb8 100644
--- a/nixos/hosts/olympus/minio/configuration.nix
+++ b/nixos/hosts/olympus/minio/configuration.nix
@@ -7,7 +7,8 @@ let
vs = config.vault-secrets.secrets;
listenPort = config.meta.exposes.minio.port;
consolePort = listenPort + 1;
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
diff --git a/nixos/hosts/olympus/nginx/configuration.nix b/nixos/hosts/olympus/nginx/configuration.nix
index 83076ac..fed28fe 100644
--- a/nixos/hosts/olympus/nginx/configuration.nix
+++ b/nixos/hosts/olympus/nginx/configuration.nix
@@ -13,7 +13,8 @@ let
add_header Access-Control-Allow-Origin *;
return 200 '${builtins.toJSON data}';
'';
-in {
+in
+{
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
@@ -23,115 +24,127 @@ in {
system.stateVersion = "21.05"; # Did you read the comment?
networking.firewall.allowedTCPPorts = [ 80 443 ];
+ services = {
- # Generates vhosts for all hosts that have an `exposes` section
- services.v.nginx.autoExpose = true;
+ # Generates vhosts for all hosts that have an `exposes` section
+ v.nginx.autoExpose = true;
- services.nginx = {
- enable = true;
- statusPage = true;
- recommendedProxySettings = true;
- recommendedTlsSettings = true;
- recommendedOptimisation = true;
- recommendedBrotliSettings = true;
- clientMaxBodySize = "500m";
+ nginx = {
+ enable = true;
+ statusPage = true;
+ recommendedProxySettings = true;
+ recommendedTlsSettings = true;
+ recommendedOptimisation = true;
+ recommendedBrotliSettings = true;
+ clientMaxBodySize = "500m";
- package = pkgs.nginxMainline;
+ package = pkgs.nginxMainline;
- # Templated
- virtualHosts = {
- "pass.0x76.dev" = {
- enableACME = true;
- forceSSL = true;
- locations."/" = {
- proxyPass = "http://vaultwarden.olympus:8222";
- proxyWebsockets = true;
- };
- locations."/notifications/hub/negotiate" = {
- proxyPass = "http://vaultwarden.olympus:8222";
- proxyWebsockets = true;
- };
- locations."/notifications/hub" = {
- proxyPass = "http://vaultwarden.olympus:3012";
- proxyWebsockets = true;
- };
- };
+ # Templated
+ virtualHosts = {
+ "pass.0x76.dev" = {
+ enableACME = true;
+ forceSSL = true;
+ locations = {
- # Meow
- "meowy.tech" = {
- enableACME = true;
- forceSSL = true;
- locations."/".extraConfig = ''
- add_header Content-Type 'text/html; charset=UTF-8';
- return 200 '
meow
';
- '';
- locations."= /.well-known/matrix/client".extraConfig =
- mkWellKnown clientConfig;
- locations."= /.well-known/matrix/server".extraConfig =
- mkWellKnown serverConfig;
- };
- "chat.meowy.tech" = {
- enableACME = true;
- forceSSL = true;
- locations."/".extraConfig = ''
- return 307 https://element.chat.meowy.tech;
- '';
- locations."/_matrix".proxyPass = "http://synapse.olympus:8008";
- locations."/_synapse/client".proxyPass = "http://synapse.olympus:8008";
- locations."/_synapse/admin" = {
- # Allow only local and my own IPs
- extraConfig = ''
- allow 127.0.0.1;
- allow 10.42.42.0/23;
- allow 192.168.0.0/23;
- allow 80.60.83.220;
- allow 83.128.154.23;
- allow 195.85.167.32/29;
- deny all;
- '';
- proxyPass = "http://synapse.olympus:8008";
- };
- };
- "element.chat.meowy.tech" = {
- enableACME = true;
- forceSSL = true;
+ "/".proxyPass = "http://vaultwarden.olympus:8222";
+ "/".proxyWebsockets = true;
- root = pkgs.element-web.override {
- conf = {
- default_server_config = clientConfig;
- show_labs_settings = true;
- brand = "chat.meowy.tech";
+ "/notifications/hub/negotiate" = {
+ proxyPass = "http://vaultwarden.olympus:8222";
+ proxyWebsockets = true;
+ };
+ "/notifications/hub" = {
+ proxyPass = "http://vaultwarden.olympus:3012";
+ proxyWebsockets = true;
+ };
};
};
- };
- "cinny.chat.meowy.tech" = {
- enableACME = true;
- forceSSL = true;
- root = pkgs.cinny.override {
- conf = {
- defaultHomeserver = 0;
- allowCustomHomeservers = false;
- homeserverList = [ "chat.meowy.tech" ];
+ # Meow
+ "meowy.tech" = {
+ enableACME = true;
+ forceSSL = true;
+ locations = {
+ "/".extraConfig = ''
+ add_header Content-Type 'text/html; charset=UTF-8';
+ return 200 'meow
';
+ '';
+ "= /.well-known/matrix/client".extraConfig =
+ mkWellKnown clientConfig;
+ "= /.well-known/matrix/server".extraConfig =
+ mkWellKnown serverConfig;
};
};
+ "chat.meowy.tech" = {
+ enableACME = true;
+ forceSSL = true;
+ locations = {
+ "/".extraConfig = ''
+ return 307 https://element.chat.meowy.tech;
+ '';
+ "/_matrix".proxyPass = "http://synapse.olympus:8008";
+ "/_synapse/client".proxyPass = "http://synapse.olympus:8008";
+ "/_synapse/admin" = {
+ # Allow only local and my own IPs
+ extraConfig = ''
+ allow 127.0.0.1;
+ allow 10.42.42.0/23;
+ allow 192.168.0.0/23;
+ allow 80.60.83.220;
+ allow 83.128.154.23;
+ allow 195.85.167.32/29;
+ deny all;
+ '';
+ proxyPass = "http://synapse.olympus:8008";
+ };
+ };
+ };
+ "element.chat.meowy.tech" = {
+ enableACME = true;
+ forceSSL = true;
+
+ root = pkgs.element-web.override {
+ conf = {
+ default_server_config = clientConfig;
+ show_labs_settings = true;
+ brand = "chat.meowy.tech";
+ };
+ };
+ };
+ "cinny.chat.meowy.tech" = {
+ enableACME = true;
+ forceSSL = true;
+
+ root = pkgs.cinny.override {
+ conf = {
+ defaultHomeserver = 0;
+ allowCustomHomeservers = false;
+ homeserverList = [ "chat.meowy.tech" ];
+ };
+ };
+ };
+ "admin.chat.meowy.tech" = {
+ enableACME = true;
+ forceSSL = true;
+ root = pkgs.synapse-admin;
+ };
};
- "admin.chat.meowy.tech" = {
- enableACME = true;
- forceSSL = true;
- root = pkgs.synapse-admin;
+ };
+
+ prometheus.exporters = {
+ nginx = {
+ enable = true;
+ openFirewall = true;
};
};
};
+ security = {
+ acme = {
- security.acme.defaults.email = "victorheld12@gmail.com";
- security.acme.acceptTerms = true;
- security.acme.preliminarySelfsigned = true;
-
- services.prometheus.exporters = {
- nginx = {
- enable = true;
- openFirewall = true;
+ defaults.email = "victorheld12@gmail.com";
+ acceptTerms = true;
+ preliminarySelfsigned = true;
};
};
}
diff --git a/nixos/hosts/olympus/ntfy/configuration.nix b/nixos/hosts/olympus/ntfy/configuration.nix
index b8ce52e..a20b8d2 100644
--- a/nixos/hosts/olympus/ntfy/configuration.nix
+++ b/nixos/hosts/olympus/ntfy/configuration.nix
@@ -20,18 +20,19 @@
networking.firewall.allowedTCPPorts = [ 80 9090 ];
- services.ntfy-sh = let datadir = "/var/lib/ntfy-sh";
- in {
- enable = true;
- settings = {
- base-url = "https://ntfy.0x76.dev";
- listen-http = ":80";
- cache-file = "${datadir}/cache.db";
- auth-file = "${datadir}/user.db";
- auth-default-access = "deny-all";
- behind-proxy = true;
- attachment-cache-dir = "${datadir}/attachments";
- metrics-listen-http = ":9090";
+ services.ntfy-sh =
+ let datadir = "/var/lib/ntfy-sh";
+ in {
+ enable = true;
+ settings = {
+ base-url = "https://ntfy.0x76.dev";
+ listen-http = ":80";
+ cache-file = "${datadir}/cache.db";
+ auth-file = "${datadir}/user.db";
+ auth-default-access = "deny-all";
+ behind-proxy = true;
+ attachment-cache-dir = "${datadir}/attachments";
+ metrics-listen-http = ":9090";
+ };
};
- };
}
diff --git a/nixos/hosts/olympus/outline/configuration.nix b/nixos/hosts/olympus/outline/configuration.nix
index 43d9e99..7db54e9 100644
--- a/nixos/hosts/olympus/outline/configuration.nix
+++ b/nixos/hosts/olympus/outline/configuration.nix
@@ -6,7 +6,8 @@
let
vs = config.vault-secrets.secrets;
inherit (config.meta.exposes.outline) port;
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
diff --git a/nixos/hosts/olympus/synapse/configuration.nix b/nixos/hosts/olympus/synapse/configuration.nix
index 2955960..c2a8708 100644
--- a/nixos/hosts/olympus/synapse/configuration.nix
+++ b/nixos/hosts/olympus/synapse/configuration.nix
@@ -7,7 +7,8 @@ let
vs = config.vault-secrets.secrets;
port = 8008;
metricsPort = 9000;
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
@@ -49,60 +50,62 @@ in {
"${vs.synapse}/email_password" # Also contains the rest of the email config
];
- settings = let
- log_file = pkgs.writeText "log.yml" ''
- version: 1
+ settings =
+ let
+ log_file = pkgs.writeText "log.yml" ''
+ version: 1
- formatters:
- structured:
- class: synapse.logging.TerseJsonFormatter
+ formatters:
+ structured:
+ class: synapse.logging.TerseJsonFormatter
- handlers:
- file:
- class: logging.handlers.TimedRotatingFileHandler
- formatter: structured
- filename: /var/lib/matrix-synapse/synapse.log
- when: midnight
- backupCount: 3 # Does not include the current log file.
- encoding: utf8
+ handlers:
+ file:
+ class: logging.handlers.TimedRotatingFileHandler
+ formatter: structured
+ filename: /var/lib/matrix-synapse/synapse.log
+ when: midnight
+ backupCount: 3 # Does not include the current log file.
+ encoding: utf8
- loggers:
- synapse:
- level: INFO
- handlers: [file]
- '';
- in {
- server_name = "meowy.tech";
- enable_registration = true;
- public_baseurl = "https://chat.meowy.tech";
- enable_metrics = true;
- max_upload_size = "100M";
- registration_requires_token = true;
- media_retention = { remote_media_lifetime = "90d"; };
- log_config = "${log_file}";
- listeners = [
- {
- inherit port;
- bind_addresses = [ "0.0.0.0" ];
- type = "http";
- tls = false;
- x_forwarded = true;
- resources = [{
- names = [ "client" "federation" ];
- compress = true;
- }];
- }
- {
- port = metricsPort;
- bind_addresses = [ "0.0.0.0" ];
- type = "metrics";
- tls = false;
- resources = [{
- names = [ "metrics" ];
- compress = false;
- }];
- }
- ];
- };
+ loggers:
+ synapse:
+ level: INFO
+ handlers: [file]
+ '';
+ in
+ {
+ server_name = "meowy.tech";
+ enable_registration = true;
+ public_baseurl = "https://chat.meowy.tech";
+ enable_metrics = true;
+ max_upload_size = "100M";
+ registration_requires_token = true;
+ media_retention = { remote_media_lifetime = "90d"; };
+ log_config = "${log_file}";
+ listeners = [
+ {
+ inherit port;
+ bind_addresses = [ "0.0.0.0" ];
+ type = "http";
+ tls = false;
+ x_forwarded = true;
+ resources = [{
+ names = [ "client" "federation" ];
+ compress = true;
+ }];
+ }
+ {
+ port = metricsPort;
+ bind_addresses = [ "0.0.0.0" ];
+ type = "metrics";
+ tls = false;
+ resources = [{
+ names = [ "metrics" ];
+ compress = false;
+ }];
+ }
+ ];
+ };
};
}
diff --git a/nixos/hosts/olympus/vaultwarden/configuration.nix b/nixos/hosts/olympus/vaultwarden/configuration.nix
index f4ae4fd..c3d8997 100644
--- a/nixos/hosts/olympus/vaultwarden/configuration.nix
+++ b/nixos/hosts/olympus/vaultwarden/configuration.nix
@@ -6,7 +6,8 @@
let
vs = config.vault-secrets.secrets;
cfg = config.services.vaultwarden.config;
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
diff --git a/nixos/hosts/olympus/victoriametrics/configuration.nix b/nixos/hosts/olympus/victoriametrics/configuration.nix
index 1b88cf5..f565f79 100644
--- a/nixos/hosts/olympus/victoriametrics/configuration.nix
+++ b/nixos/hosts/olympus/victoriametrics/configuration.nix
@@ -8,7 +8,8 @@ let
grafanaDomain = config.meta.exposes.grafana.domain;
grafanaPort = config.meta.exposes.grafana.port;
vs = config.vault-secrets.secrets;
-in {
+in
+{
imports = [ ];
# This value determines the NixOS release from which the default
@@ -20,73 +21,104 @@ in {
system.stateVersion = "21.11"; # Did you read the comment?
networking.firewall.allowedTCPPorts = [ vmPort grafanaPort ];
networking.firewall.allowedUDPPorts = [ vmPort ];
+ services = {
- services.victoriametrics = {
- enable = true;
- listenAddress = ":${toString vmPort}";
- # Data Retention period in months
- retentionPeriod = 36;
- };
+ victoriametrics = {
+ enable = true;
+ listenAddress = ":${toString vmPort}";
+ # Data Retention period in months
+ retentionPeriod = 36;
+ };
+
+ vmagent = {
+ enable = true;
+ openFirewall = true;
+ prometheusConfig = {
+ global = {
+ scrape_interval = "1m";
+ scrape_timeout = "30s";
+ };
+ scrape_configs = [
+ {
+ job_name = "kea";
+ static_configs = [{
+ targets = [ "dhcp.olympus:9547" ];
+ labels.app = "dhcp";
+ }];
+ }
+ {
+ job_name = "nginx";
+ static_configs = [{
+ targets = [ "nginx.olympus:9113" ];
+ labels.app = "nginx";
+ }];
+ }
+ {
+ job_name = "synapse";
+ static_configs = [{
+ targets = [ "synapse.olympus:9000" ];
+ labels.app = "synapse";
+ }];
+ }
+ {
+ job_name = "wireguard";
+ static_configs = [{
+ targets = [ "wireguard.olympus:9586" ];
+ labels.app = "wireguard";
+ }];
+ }
+ {
+ job_name = "ntfy";
+ static_configs = [{
+ targets = [ "ntfy.olympus:9090" ];
+ labels.app = "ntfy";
+ }];
+ }
+ {
+ job_name = "dex";
+ static_configs = [{
+ targets = [ "dex.olympus:5558" ];
+ labels.app = "dex";
+ }];
+ }
+ {
+ job_name = "unbound";
+ static_configs = [{
+ targets = [ "dns-1.olympus:9167" "dns-2.olympus:9167" ];
+ labels.app = "dns";
+ }];
+ }
+ ];
+ };
+ };
+
+ grafana = {
+ enable = true;
+ settings = {
+ server = {
+ domain = grafanaDomain;
+ root_url = "https://${grafanaDomain}";
+ http_addr = "0.0.0.0";
+ http_port = grafanaPort;
+ };
+ security.admin_password = "$__file{${vs.grafana}/password}";
+
+ "auth.generic_oauth" = {
+ name = "Dex";
+ icon = "signin";
+ enabled = true;
+ allow_sign_up = true;
+ client_id = "grafana";
+ client_secret = "$__file{${vs.grafana}/dex_client_secret}";
+ scopes = toString [ "openid" "profile" "email" "groups" ];
+ auth_url = "https://dex.0x76.dev/auth";
+ token_url = "https://dex.0x76.dev/token";
+ api_url = "https://dex.0x76.dev/userinfo";
+ skip_org_role_sync = true;
+ auto_login = true;
+ };
- services.vmagent = {
- enable = true;
- openFirewall = true;
- prometheusConfig = {
- global = {
- scrape_interval = "1m";
- scrape_timeout = "30s";
};
- scrape_configs = [
- {
- job_name = "kea";
- static_configs = [{
- targets = [ "dhcp.olympus:9547" ];
- labels.app = "dhcp";
- }];
- }
- {
- job_name = "nginx";
- static_configs = [{
- targets = [ "nginx.olympus:9113" ];
- labels.app = "nginx";
- }];
- }
- {
- job_name = "synapse";
- static_configs = [{
- targets = [ "synapse.olympus:9000" ];
- labels.app = "synapse";
- }];
- }
- {
- job_name = "wireguard";
- static_configs = [{
- targets = [ "wireguard.olympus:9586" ];
- labels.app = "wireguard";
- }];
- }
- {
- job_name = "ntfy";
- static_configs = [{
- targets = [ "ntfy.olympus:9090"];
- labels.app = "ntfy";
- }];
- }
- {
- job_name = "dex";
- static_configs = [{
- targets = [ "dex.olympus:5558" ];
- labels.app = "dex";
- }];
- }
- {
- job_name = "unbound";
- static_configs = [{
- targets = [ "dns-1.olympus:9167" "dns-2.olympus:9167" ];
- labels.app = "dns";
- }];
- }
- ];
};
};
@@ -94,33 +126,4 @@ in {
user = "grafana";
group = "grafana";
};
-
- services.grafana = {
- enable = true;
- settings = {
- server = {
- domain = grafanaDomain;
- root_url = "https://${grafanaDomain}";
- http_addr = "0.0.0.0";
- http_port = grafanaPort;
- };
- security.admin_password = "$__file{${vs.grafana}/password}";
-
- "auth.generic_oauth" = {
- name = "Dex";
- icon = "signin";
- enabled = true;
- allow_sign_up = true;
- client_id = "grafana";
- client_secret = "$__file{${vs.grafana}/dex_client_secret}";
- scopes = toString [ "openid" "profile" "email" "groups" ];
- auth_url = "https://dex.0x76.dev/auth";
- token_url = "https://dex.0x76.dev/token";
- api_url = "https://dex.0x76.dev/userinfo";
- skip_org_role_sync = true;
- auto_login = true;
- };
-
- };
- };
}
diff --git a/nixos/hosts/olympus/wireguard/configuration.nix b/nixos/hosts/olympus/wireguard/configuration.nix
index ee24f55..e032921 100644
--- a/nixos/hosts/olympus/wireguard/configuration.nix
+++ b/nixos/hosts/olympus/wireguard/configuration.nix
@@ -19,22 +19,62 @@ in {
environment.systemPackages = with pkgs; [ wireguard-tools ];
environment.noXlibs = lib.mkForce false;
+ networking = {
- networking.firewall.allowedUDPPorts =
- [ config.networking.wireguard.interfaces.wg0.listenPort ];
- networking.firewall.checkReversePath = false;
+ firewall.allowedUDPPorts =
+ [ config.networking.wireguard.interfaces.wg0.listenPort ];
+ firewall.checkReversePath = false;
+
+ nat = {
+ enable = true;
+ internalInterfaces = [ "wg0" "eth0" ];
+ externalInterface = "eth0";
+ };
+
+ wireguard.interfaces.wg0 = {
+ ips = [ "10.100.0.1/24" ];
+ listenPort = 51821;
+ privateKeyFile = "${vs.wireguard}/privateKey";
+
+ peers = [
+ {
+ # Phone
+ publicKey = "K+99mvSYs4urcclreQDLA1pekD4xtu/mpS2uVWw8Bws=";
+ allowedIPs = [ "10.100.0.2/32" ];
+ }
+ {
+ # Laura's laptop
+ publicKey = "ZWIaDGrASlTkEK75j10VeGCvrIGfpk4GPobmqcYX2D0=";
+ allowedIPs = [ "10.100.0.3/32" ];
+ }
+ {
+ # Old Laptop
+ publicKey = "L8myt2bcdja7M+i+9eatdQRW8relPUoZZ9lEKSLe+m8=";
+ allowedIPs = [ "10.100.0.4/32" ];
+ }
+ {
+ # New Laptop
+ publicKey = "+Ms3xV6LxNZWTQk11zoz+AUIV2uds6A64Wz15JlR/Ak=";
+ allowedIPs = [ "10.100.0.6/32" ];
+ }
+ {
+ # Aerdenhout
+ # Useful setup video for opnsense: https://www.youtube.com/watch?v=RoXHe5dqCM0
+ # https://docs.opnsense.org/manual/how-tos/wireguard-s2s.html
+ publicKey = "KgqLhmUMX6kyTjRoa/GOCrZOvXNE5HWYuOr/T3v8/VI=";
+ allowedIPs = [ "10.100.0.5/32" "192.168.0.0/23" "10.10.10.0/24" ];
+ endpoint = "83.128.154.23:51820";
+ persistentKeepalive = 25;
+ }
+ ];
+ };
+ };
vault-secrets.secrets.wireguard = {
services = [ "wireguard-wg0" ];
loginRetries = 25;
};
- networking.nat = {
- enable = true;
- internalInterfaces = [ "wg0" "eth0" ];
- externalInterface = "eth0";
- };
-
boot.kernel.sysctl = {
"net.ipv4.ip_forward" = 1;
"net.ipv6.conf.all.forwarding" = 1;
@@ -44,42 +84,4 @@ in {
enable = true;
openFirewall = true;
};
-
- networking.wireguard.interfaces.wg0 = {
- ips = [ "10.100.0.1/24" ];
- listenPort = 51821;
- privateKeyFile = "${vs.wireguard}/privateKey";
-
- peers = [
- {
- # Phone
- publicKey = "K+99mvSYs4urcclreQDLA1pekD4xtu/mpS2uVWw8Bws=";
- allowedIPs = [ "10.100.0.2/32" ];
- }
- {
- # Laura's laptop
- publicKey = "ZWIaDGrASlTkEK75j10VeGCvrIGfpk4GPobmqcYX2D0=";
- allowedIPs = [ "10.100.0.3/32" ];
- }
- {
- # Old Laptop
- publicKey = "L8myt2bcdja7M+i+9eatdQRW8relPUoZZ9lEKSLe+m8=";
- allowedIPs = [ "10.100.0.4/32" ];
- }
- {
- # New Laptop
- publicKey = "+Ms3xV6LxNZWTQk11zoz+AUIV2uds6A64Wz15JlR/Ak=";
- allowedIPs = [ "10.100.0.6/32" ];
- }
- {
- # Aerdenhout
- # Useful setup video for opnsense: https://www.youtube.com/watch?v=RoXHe5dqCM0
- # https://docs.opnsense.org/manual/how-tos/wireguard-s2s.html
- publicKey = "KgqLhmUMX6kyTjRoa/GOCrZOvXNE5HWYuOr/T3v8/VI=";
- allowedIPs = [ "10.100.0.5/32" "192.168.0.0/23" "10.10.10.0/24" ];
- endpoint = "83.128.154.23:51820";
- persistentKeepalive = 25;
- }
- ];
- };
}
diff --git a/nixos/hosts/thalassa/aoife/hardware-configuration.nix b/nixos/hosts/thalassa/aoife/hardware-configuration.nix
index 06d9488..c6cd2ce 100644
--- a/nixos/hosts/thalassa/aoife/hardware-configuration.nix
+++ b/nixos/hosts/thalassa/aoife/hardware-configuration.nix
@@ -5,12 +5,14 @@
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
+ boot = {
- boot.initrd.availableKernelModules =
- [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" "sdhci_pci" ];
- boot.initrd.kernelModules = [ ];
- boot.kernelModules = [ "kvm-amd" ];
- boot.extraModulePackages = [ ];
+ initrd.availableKernelModules =
+ [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" "sdhci_pci" ];
+ initrd.kernelModules = [ ];
+ kernelModules = [ "kvm-amd" ];
+ extraModulePackages = [ ];
+ };
fileSystems."/" = {
device = "/dev/disk/by-uuid/c184866a-9a53-4a9f-9a1f-493792af7ea9";
diff --git a/nixos/hosts/thalassa/aoife/hardware.nix b/nixos/hosts/thalassa/aoife/hardware.nix
index 0345764..6c6e410 100644
--- a/nixos/hosts/thalassa/aoife/hardware.nix
+++ b/nixos/hosts/thalassa/aoife/hardware.nix
@@ -1,50 +1,58 @@
{ pkgs, ... }: {
- hardware.enableAllFirmware = true;
+ hardware = {
+ enableAllFirmware = true;
- hardware.bluetooth.enable = true;
+ bluetooth.enable = true;
- services.hardware.bolt.enable = true;
+ # Vulkan
+ opengl.driSupport = true;
+ opengl.extraPackages = with pkgs; [
+ amdvlk
+ rocm-opencl-icd
+ rocm-opencl-runtime
+ ];
+ };
+ services = {
- services.fprintd.enable = true;
+ hardware.bolt.enable = true;
+
+ fprintd.enable = true;
+
+ # Video Driver
+ xserver.videoDrivers = [ "amdgpu" ];
+ xserver = {
+ dpi = 280;
+ xkbOptions = "caps:swapescape";
+ };
+
+ # SSD Trim
+ fstrim.enable = true;
+
+ # Power Management
+ upower.enable = true;
+ thermald.enable = true;
+ };
# hardware.trackpoint.enable = true;
# FS
fileSystems."/".options = [ "compress=zstd" ];
- # Video Driver
- services.xserver.videoDrivers = [ "amdgpu" ];
- services.xserver = {
- dpi = 280;
- xkbOptions = "caps:swapescape";
- };
-
- # Vulkan
- hardware.opengl.driSupport = true;
- hardware.opengl.extraPackages = with pkgs; [
- amdvlk
- rocm-opencl-icd
- rocm-opencl-runtime
- ];
-
systemd.tmpfiles.rules =
[ "L+ /opt/rocm/hip - - - - ${pkgs.hip}" ];
- # SSD Trim
- services.fstrim.enable = true;
-
- # Power Management
- services.upower.enable = true;
- services.thermald.enable = true;
-
powerManagement = {
enable = true;
powertop.enable = true;
};
+ security = {
+ tpm2 = {
- # tpm
- security.tpm2.enable = true;
- security.tpm2.pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so
- security.tpm2.tctiEnvironment.enable = true; # TPM2TOOLS_TCTI and TPM2_PKCS11_TCTI env variables
- users.users.victor.extraGroups = [ "tss" ]; # tss group has access to TPM devices
+ # tpm
+ enable = true;
+ pkcs11.enable = true; # expose /run/current-system/sw/lib/libtpm2_pkcs11.so
+ tctiEnvironment.enable = true;
+ };
+ }; # TPM2TOOLS_TCTI and TPM2_PKCS11_TCTI env variables
+ users.users.victor.extraGroups = [ "tss" ]; # tss group has access to TPM devices
}
diff --git a/nixos/hosts/thalassa/aoife/home/default.nix b/nixos/hosts/thalassa/aoife/home/default.nix
index f4f05f6..5c54319 100644
--- a/nixos/hosts/thalassa/aoife/home/default.nix
+++ b/nixos/hosts/thalassa/aoife/home/default.nix
@@ -1,4 +1,4 @@
-{pkgs, ...}: {
+{ pkgs, ... }: {
# Custom dconf settings
dconf.settings."org/gnome/desktop/input-sources" = {
xkb-options = [ "caps:swapescape" ];
diff --git a/nixos/hosts/thalassa/null/configuration.nix b/nixos/hosts/thalassa/null/configuration.nix
index 0353209..e8d0b16 100644
--- a/nixos/hosts/thalassa/null/configuration.nix
+++ b/nixos/hosts/thalassa/null/configuration.nix
@@ -30,23 +30,39 @@ let
exec Hyprland
'';
-in {
+in
+{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
./rescue-boot.nix
./networking.nix
];
+ home-manager = {
- # home-manager
- home-manager.useGlobalPkgs = true;
- home-manager.useUserPackages = true;
- home-manager.users.victor = import ./home;
- home-manager.extraSpecialArgs = { inherit inputs; };
+ # home-manager
+ useGlobalPkgs = true;
+ useUserPackages = true;
+ users.victor = import ./home;
+ extraSpecialArgs = { inherit inputs; };
+ };
+ security = {
- security.pam.services.swaylock = { };
+ pam.services.swaylock = { };
- security.sudo.wheelNeedsPassword = true;
+ sudo.wheelNeedsPassword = true;
+ rtkit.enable = true;
+
+ # Enables logging in with my Solokey
+ pam.u2f = {
+ enable = true;
+ debug = false;
+ cue = true;
+ control = "sufficient";
+ authFile =
+ "/etc/u2f-mappings"; # use `pamu2fcfg` from `pkgs.pam_u2f` to generate this config
+ };
+ };
fonts = {
fonts = with pkgs; [
@@ -79,61 +95,116 @@ in {
# boot.initrd.systemd.enable = true; # Experimental
boot = {
kernelPackages = pkgs.linuxPackages_latest;
- loader.systemd-boot.editor = false;
- loader.systemd-boot.enable = true;
- # loader.systemd-boot.configurationLimit = 6;
- loader.efi.canTouchEfiVariables = true;
- loader.efi.efiSysMountPoint = "/boot/efi";
+ loader = {
+ systemd-boot.editor = false;
+ systemd-boot.enable = true;
+ # loader.systemd-boot.configurationLimit = 6;
+ efi.canTouchEfiVariables = true;
+ efi.efiSysMountPoint = "/boot/efi";
+ };
kernel.sysctl = { "fs.inotify.max_user_watches" = 524288; };
};
+ services = {
- services.gnome.gnome-keyring.enable = true;
+ gnome.gnome-keyring.enable = true;
- fileSystems."/".options = [ "compress=zstd" ];
- fileSystems."/home".options = [ "compress=zstd" ];
- fileSystems."/nix".options = [ "compress=zstd" "noatime" ];
+ udisks2.enable = true;
+ dbus.enable = true;
- # Filesystem dedup
- # services.beesd.filesystems = {
- # root = {
- # spec = "LABEL=nixos";
- # hashTableSizeMB = 256;
- # verbosity = "crit";
- # extraOptions = [ "--loadavg-target" "2.0" ];
- # };
- # };
+ xserver = {
+ enable = false;
+ layout = "us";
+ xkbVariant = "altgr-intl";
+ xkbOptions = "caps:swapescape";
+ videoDrivers = [ "nvidia" ];
+ };
+ blueman.enable = true;
- # Select internationalisation properties.
- i18n.defaultLocale = "en_GB.utf8";
+ # Enable CUPS to print documents.
+ printing.enable = true;
+ pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ # If you want to use JACK applications, uncomment this
+ #jack.enable = true;
- i18n.extraLocaleSettings = {
- LC_ADDRESS = "nl_NL.UTF-8";
- LC_IDENTIFICATION = "nl_NL.UTF-8";
- LC_MEASUREMENT = "nl_NL.UTF-8";
- LC_MONETARY = "nl_NL.UTF-8";
- LC_NAME = "nl_NL.UTF-8";
- LC_NUMERIC = "nl_NL.UTF-8";
- LC_PAPER = "nl_NL.UTF-8";
- LC_TELEPHONE = "nl_NL.UTF-8";
- LC_TIME = "en_DK.UTF-8";
+ # use the example session manager (no others are packaged yet so this is enabled by default,
+ # no need to redefine it in your config for now)
+ #media-session.enable = true;
+ };
+
+ fstrim.enable = true;
+
+ # don't shutdown when power button is short-pressed
+ logind.extraConfig = ''
+ HandlePowerKey=suspend
+ '';
+
+ udev.packages = with pkgs; [
+ android-udev-rules
+ logitech-udev-rules
+ wooting-udev-rules
+ ];
};
+ fileSystems = {
- i18n.supportedLocales =
- [ "en_GB.UTF-8/UTF-8" "nl_NL.UTF-8/UTF-8" "en_DK.UTF-8/UTF-8" ];
+ "/".options = [ "compress=zstd" ];
+ "/home".options = [ "compress=zstd" ];
+ "/nix".options = [ "compress=zstd" "noatime" ];
+ };
+ i18n = {
+
+ # Filesystem dedup
+ # services.beesd.filesystems = {
+ # root = {
+ # spec = "LABEL=nixos";
+ # hashTableSizeMB = 256;
+ # verbosity = "crit";
+ # extraOptions = [ "--loadavg-target" "2.0" ];
+ # };
+ # };
+
+ # Select internationalisation properties.
+ defaultLocale = "en_GB.utf8";
+
+ extraLocaleSettings = {
+ LC_ADDRESS = "nl_NL.UTF-8";
+ LC_IDENTIFICATION = "nl_NL.UTF-8";
+ LC_MEASUREMENT = "nl_NL.UTF-8";
+ LC_MONETARY = "nl_NL.UTF-8";
+ LC_NAME = "nl_NL.UTF-8";
+ LC_NUMERIC = "nl_NL.UTF-8";
+ LC_PAPER = "nl_NL.UTF-8";
+ LC_TELEPHONE = "nl_NL.UTF-8";
+ LC_TIME = "en_DK.UTF-8";
+ };
+
+ supportedLocales =
+ [ "en_GB.UTF-8/UTF-8" "nl_NL.UTF-8/UTF-8" "en_DK.UTF-8/UTF-8" ];
+ };
xdg.portal = {
enable = true;
wlr.enable = true;
};
+ programs = {
- services.udisks2.enable = true;
- services.dbus.enable = true;
+ # Hyprland
+ hyprland = {
+ enable = true;
+ package = null; # Managed by home manager
+ };
- # Hyprland
- programs.hyprland = {
- enable = true;
- package = null; # Managed by home manager
+ steam = {
+ enable = true;
+ remotePlay.openFirewall = true;
+ dedicatedServer.openFirewall = true;
+ };
+
+ ssh.startAgent = true;
};
environment.loginShellInit = ''
@@ -141,57 +212,34 @@ in {
${run-hyprland}/bin/run-hyprland
fi
'';
+ hardware = {
- services.xserver = {
- enable = false;
- layout = "us";
- xkbVariant = "altgr-intl";
- xkbOptions = "caps:swapescape";
- videoDrivers = [ "nvidia" ];
+ nvidia.prime = {
+ offload.enable = true;
+ intelBusId = "PCI:0:2:0";
+ nvidiaBusId = "PCI:1:0:0";
+ };
+
+ opengl = {
+ enable = true;
+ extraPackages = with pkgs; [
+ vaapiVdpau
+ intel-media-driver # LIBVA_DRIVER_NAME=iHD
+ vaapiIntel # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
+ libvdpau-va-gl
+ ];
+ };
+
+ bluetooth.enable = true;
+
+ saleae-logic.enable = true;
+ pulseaudio.enable = false;
};
- hardware.nvidia.prime = {
- offload.enable = true;
- intelBusId = "PCI:0:2:0";
- nvidiaBusId = "PCI:1:0:0";
- };
-
- hardware.opengl = {
- enable = true;
- extraPackages = with pkgs; [
- vaapiVdpau
- intel-media-driver # LIBVA_DRIVER_NAME=iHD
- vaapiIntel # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
- libvdpau-va-gl
- ];
- };
-
- hardware.bluetooth.enable = true;
- services.blueman.enable = true;
-
virtualisation.podman.enable = true;
- hardware.saleae-logic.enable = true;
-
- # Enable CUPS to print documents.
- services.printing.enable = true;
-
# Enable sound with pipewire.
sound.enable = true;
- hardware.pulseaudio.enable = false;
- security.rtkit.enable = true;
- services.pipewire = {
- enable = true;
- alsa.enable = true;
- alsa.support32Bit = true;
- pulse.enable = true;
- # If you want to use JACK applications, uncomment this
- #jack.enable = true;
-
- # use the example session manager (no others are packaged yet so this is enabled by default,
- # no need to redefine it in your config for now)
- #media-session.enable = true;
- };
environment.systemPackages = with pkgs; [
pciutils
@@ -204,42 +252,11 @@ in {
swaylock-effects # Has to be installed globally so that pam module works
];
- programs.steam = {
- enable = true;
- remotePlay.openFirewall = true;
- dedicatedServer.openFirewall = true;
- };
-
- services.fstrim.enable = true;
-
nix.extraOptions = ''
keep-outputs = true
keep-derivations = true
'';
- # Enables logging in with my Solokey
- security.pam.u2f = {
- enable = true;
- debug = false;
- cue = true;
- control = "sufficient";
- authFile =
- "/etc/u2f-mappings"; # use `pamu2fcfg` from `pkgs.pam_u2f` to generate this config
- };
-
- programs.ssh.startAgent = true;
-
- # don't shutdown when power button is short-pressed
- services.logind.extraConfig = ''
- HandlePowerKey=suspend
- '';
-
- services.udev.packages = with pkgs; [
- android-udev-rules
- logitech-udev-rules
- wooting-udev-rules
- ];
-
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
diff --git a/nixos/hosts/thalassa/null/hardware-configuration.nix b/nixos/hosts/thalassa/null/hardware-configuration.nix
index a7a6cd2..4c230e9 100644
--- a/nixos/hosts/thalassa/null/hardware-configuration.nix
+++ b/nixos/hosts/thalassa/null/hardware-configuration.nix
@@ -5,34 +5,38 @@
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
+ boot = {
- boot.initrd.availableKernelModules =
- [ "xhci_pci" "ahci" "nvme" "rtsx_pci_sdmmc" ];
- boot.initrd.kernelModules = [ ];
- boot.kernelModules = [ "kvm-intel" ];
- boot.extraModulePackages = [ ];
-
- fileSystems."/" = {
- device = "/dev/disk/by-uuid/d4f56e5b-2509-4e63-8324-65a35c71e90c";
- fsType = "btrfs";
- options = [ "subvol=@" ];
+ initrd.availableKernelModules =
+ [ "xhci_pci" "ahci" "nvme" "rtsx_pci_sdmmc" ];
+ initrd.kernelModules = [ ];
+ kernelModules = [ "kvm-intel" ];
+ extraModulePackages = [ ];
};
+ fileSystems = {
- fileSystems."/nix" = {
- device = "/dev/disk/by-uuid/d4f56e5b-2509-4e63-8324-65a35c71e90c";
- fsType = "btrfs";
- options = [ "subvol=@/nix" ];
- };
+ "/" = {
+ device = "/dev/disk/by-uuid/d4f56e5b-2509-4e63-8324-65a35c71e90c";
+ fsType = "btrfs";
+ options = [ "subvol=@" ];
+ };
- fileSystems."/home" = {
- device = "/dev/disk/by-uuid/d4f56e5b-2509-4e63-8324-65a35c71e90c";
- fsType = "btrfs";
- options = [ "subvol=@home" ];
- };
+ "/nix" = {
+ device = "/dev/disk/by-uuid/d4f56e5b-2509-4e63-8324-65a35c71e90c";
+ fsType = "btrfs";
+ options = [ "subvol=@/nix" ];
+ };
- fileSystems."/boot/efi" = {
- device = "/dev/disk/by-uuid/D478-6F66";
- fsType = "vfat";
+ "/home" = {
+ device = "/dev/disk/by-uuid/d4f56e5b-2509-4e63-8324-65a35c71e90c";
+ fsType = "btrfs";
+ options = [ "subvol=@home" ];
+ };
+
+ "/boot/efi" = {
+ device = "/dev/disk/by-uuid/D478-6F66";
+ fsType = "vfat";
+ };
};
swapDevices = [ ];
diff --git a/nixos/hosts/thalassa/null/home/default.nix b/nixos/hosts/thalassa/null/home/default.nix
index f128590..a83a1ab 100644
--- a/nixos/hosts/thalassa/null/home/default.nix
+++ b/nixos/hosts/thalassa/null/home/default.nix
@@ -4,198 +4,205 @@ let
inherit (pkgs.texlive) scheme-full;
dnd-5e-latex-template = { pkgs = [ pkgs.v.dnd-5e-latex-template ]; };
};
-in {
- programs.home-manager.enable = true;
- home.username = "victor";
- home.homeDirectory = "/home/victor";
- home.stateVersion = "22.05";
+in
+{
+ programs = {
+ home-manager.enable = true;
+
+ foot = { enable = true; };
+
+ nix-index.enable = true;
+
+ exa = {
+ enable = true;
+ enableAliases = true;
+ };
+
+ bat.enable = true;
+
+ git = {
+ enable = true;
+ package = pkgs.gitAndTools.gitFull;
+ userName = "Victor";
+ userEmail = "victor@xirion.net";
+ lfs.enable = true;
+ # delta.enable = true;
+ extraConfig = {
+ push.autoSetupRemote = true;
+ init.defaultBranch = "main";
+ };
+ };
+
+ mako = {
+ enable = true;
+ extraConfig = ''
+ [mode=do-not-disturb]
+ invisible=1
+ '';
+ };
+
+ tmux = {
+ enable = true;
+ shortcut = "b";
+ terminal = "screen-256color";
+ clock24 = true;
+ };
+
+ firefox = {
+ enable = true;
+ package = pkgs.firefox-devedition-bin;
+ };
+
+ vscode = {
+ enable = true;
+ package = pkgs.vscode;
+ userSettings = {
+ "ltex.language" = "en-GB";
+ "latex-workshop" = {
+ "linting.chktex.enabled" = true;
+ "latex.clean.subfolder.enabled" = true;
+ "latex.outDir" = "%TMPDIR%/%RELATIVE_DOC%";
+ };
+ "workbench.colorTheme" = "Catppuccin Frappé";
+ "editor.fontFamily" =
+ "'DejaVuSansMono Nerd Font', 'monospace', monospace";
+ "keyboard.dispatch" = "keyCode";
+ "rust-analyzer.server.path" = "${pkgs.rust-analyzer}/bin/rust-analyzer";
+ "terminal.integrated.defaultProfile.linux" = "zsh";
+ "nix.enableLanguageServer" = true; # Enable LSP.
+ "nix.serverPath" =
+ "${pkgs.nil}/bin/nil"; # The path to the LSP server executable.
+ "[nix]" = { "editor.defaultFormatter" = "brettm12345.nixfmt-vscode"; };
+ };
+ extensions = with pkgs.vscode-extensions;
+ with pkgs.v.vscode-extensions; [
+ # astro-build.astro-vscode
+ brettm12345.nixfmt-vscode
+ catppuccin.catppuccin-vsc
+ codezombiech.gitignore
+ editorconfig.editorconfig
+ foxundermoon.shell-format
+ james-yu.latex-workshop
+ jnoortheen.nix-ide
+ matklad.rust-analyzer
+ mkhl.direnv
+ ms-vscode-remote.remote-ssh
+ ms-vscode.cpptools
+ platformio.platformio-ide
+ redhat.vscode-yaml
+ tamasfe.even-better-toml
+ valentjn.vscode-ltex
+ vscodevim.vim
+ xaver.clang-format
+ ];
+ };
+
+ direnv = {
+ enable = true;
+ nix-direnv = { enable = true; };
+ };
+
+ zsh = {
+ enable = true;
+ sessionVariables = { DIRENV_LOG_FORMAT = ""; };
+ };
+ };
+ home = {
+ username = "victor";
+ homeDirectory = "/home/victor";
+ stateVersion = "22.05";
+
+ packages = with pkgs; [
+ appimage-run
+ brightnessctl
+ btop
+ calibre
+ cinny-desktop
+ discord-canary
+ element-desktop-wayland
+ fluxcd
+ fusee-launcher
+ gcc
+ gimp
+ gnome.eog
+ gnome.file-roller
+ gnome.gnome-font-viewer
+ gnome.nautilus
+ grim # Screenshot tool
+ inputs.comma.packages.${pkgs.system}.default
+ inputs.riff.packages.${pkgs.system}.riff
+ inputs.webcord.packages.${pkgs.system}.default
+ k9s
+ kubectl
+ libnotify
+ mullvad-vpn
+ neofetch
+ nixpkgs-review
+ nixfmt
+ ouch
+ plex-media-player
+ plexamp
+ python3
+ retroarchFull
+ ripgrep
+ rsync
+ rustup
+ saleae-logic-2
+ solo2-cli
+ steam-run
+ tex
+ thunderbird-wayland
+ v.deemix-gui
+ wf-recorder # Screenrecorder
+ wl-clipboard # Clipboard manager
+ wofi # Wayland rofi
+ wpa_supplicant_gui
+ ];
+ };
imports = [ ./hyprland.nix ./neovim.nix ./eww ./theme.nix ];
- home.packages = with pkgs; [
- appimage-run
- brightnessctl
- btop
- calibre
- cinny-desktop
- discord-canary
- element-desktop-wayland
- fluxcd
- fusee-launcher
- gcc
- gimp
- gnome.eog
- gnome.file-roller
- gnome.gnome-font-viewer
- gnome.nautilus
- grim # Screenshot tool
- inputs.comma.packages.${pkgs.system}.default
- inputs.riff.packages.${pkgs.system}.riff
- inputs.webcord.packages.${pkgs.system}.default
- k9s
- kubectl
- libnotify
- mullvad-vpn
- neofetch
- nixpkgs-review
- nixfmt
- ouch
- plex-media-player
- plexamp
- python3
- retroarchFull
- ripgrep
- rsync
- rustup
- saleae-logic-2
- solo2-cli
- steam-run
- tex
- thunderbird-wayland
- v.deemix-gui
- wf-recorder # Screenrecorder
- wl-clipboard # Clipboard manager
- wofi # Wayland rofi
- wpa_supplicant_gui
- ];
-
xdg.mimeApps = {
enable = true;
- defaultApplications = let browser = [ "firefox.desktop" ];
- in {
- "image/*" = "org.gnome.eog.desktop";
- "text/html" = browser;
- "x-scheme-handler/http" = browser;
- "x-scheme-handler/https" = browser;
- "x-scheme-handler/ftp" = browser;
- "x-scheme-handler/about" = browser;
- "x-scheme-handler/unknown" = browser;
- "application/x-extension-htm" = browser;
- "application/x-extension-html" = browser;
- "application/x-extension-shtml" = browser;
- "application/xhtml+xml" = browser;
- "application/x-extension-xhtml" = browser;
- "application/x-extension-xht" = browser;
+ defaultApplications =
+ let browser = [ "firefox.desktop" ];
+ in {
+ "image/*" = "org.gnome.eog.desktop";
+ "text/html" = browser;
+ "x-scheme-handler/http" = browser;
+ "x-scheme-handler/https" = browser;
+ "x-scheme-handler/ftp" = browser;
+ "x-scheme-handler/about" = browser;
+ "x-scheme-handler/unknown" = browser;
+ "application/x-extension-htm" = browser;
+ "application/x-extension-html" = browser;
+ "application/x-extension-shtml" = browser;
+ "application/xhtml+xml" = browser;
+ "application/x-extension-xhtml" = browser;
+ "application/x-extension-xht" = browser;
- "application/json" = browser;
- "application/pdf" = browser;
+ "application/json" = browser;
+ "application/pdf" = browser;
- "x-scheme-handler/vscode" = "code-url-handler.desktop";
- "x-scheme-handler/discord" = "webcord.desktop";
- };
- };
-
- programs.foot = { enable = true; };
-
- programs.nix-index.enable = true;
-
- programs.exa = {
- enable = true;
- enableAliases = true;
- };
-
- programs.bat.enable = true;
-
- programs.git = {
- enable = true;
- package = pkgs.gitAndTools.gitFull;
- userName = "Victor";
- userEmail = "victor@xirion.net";
- lfs.enable = true;
- # delta.enable = true;
- extraConfig = {
- push.autoSetupRemote = true;
- init.defaultBranch = "main";
- };
- };
-
- programs.mako = {
- enable = true;
- extraConfig = ''
- [mode=do-not-disturb]
- invisible=1
- '';
- };
-
- programs.tmux = {
- enable = true;
- shortcut = "b";
- terminal = "screen-256color";
- clock24 = true;
- };
-
- programs.firefox = {
- enable = true;
- package = pkgs.firefox-devedition-bin;
- };
-
- programs.vscode = {
- enable = true;
- package = pkgs.vscode;
- userSettings = {
- "ltex.language" = "en-GB";
- "latex-workshop" = {
- "linting.chktex.enabled" = true;
- "latex.clean.subfolder.enabled" = true;
- "latex.outDir" = "%TMPDIR%/%RELATIVE_DOC%";
+ "x-scheme-handler/vscode" = "code-url-handler.desktop";
+ "x-scheme-handler/discord" = "webcord.desktop";
};
- "workbench.colorTheme" = "Catppuccin Frappé";
- "editor.fontFamily" =
- "'DejaVuSansMono Nerd Font', 'monospace', monospace";
- "keyboard.dispatch" = "keyCode";
- "rust-analyzer.server.path" = "${pkgs.rust-analyzer}/bin/rust-analyzer";
- "terminal.integrated.defaultProfile.linux" = "zsh";
- "nix.enableLanguageServer" = true; # Enable LSP.
- "nix.serverPath" =
- "${pkgs.nil}/bin/nil"; # The path to the LSP server executable.
- "[nix]" = { "editor.defaultFormatter" = "brettm12345.nixfmt-vscode"; };
+ };
+
+ xdg.userDirs =
+ let home = config.home.homeDirectory;
+ in {
+ enable = true;
+ createDirectories = true;
+ desktop = "${home}/.desktop";
+ documents = "${home}/cloud/Documents";
+ download = "${home}/dl";
+ music = "${home}/cloud/Music";
+ pictures = "${home}/cloud/Pictures";
+ publicShare = "${home}/.publicShare";
+ templates = "${home}/.templates";
+ videos = "${home}/cloud/Videos";
};
- extensions = with pkgs.vscode-extensions;
- with pkgs.v.vscode-extensions; [
- # astro-build.astro-vscode
- brettm12345.nixfmt-vscode
- catppuccin.catppuccin-vsc
- codezombiech.gitignore
- editorconfig.editorconfig
- foxundermoon.shell-format
- james-yu.latex-workshop
- jnoortheen.nix-ide
- matklad.rust-analyzer
- mkhl.direnv
- ms-vscode-remote.remote-ssh
- ms-vscode.cpptools
- platformio.platformio-ide
- redhat.vscode-yaml
- tamasfe.even-better-toml
- valentjn.vscode-ltex
- vscodevim.vim
- xaver.clang-format
- ];
- };
-
- programs.direnv = {
- enable = true;
- nix-direnv = { enable = true; };
- };
-
- programs.zsh = {
- enable = true;
- sessionVariables = { DIRENV_LOG_FORMAT = ""; };
- };
-
- xdg.userDirs = let home = config.home.homeDirectory;
- in {
- enable = true;
- createDirectories = true;
- desktop = "${home}/.desktop";
- documents = "${home}/cloud/Documents";
- download = "${home}/dl";
- music = "${home}/cloud/Music";
- pictures = "${home}/cloud/Pictures";
- publicShare = "${home}/.publicShare";
- templates = "${home}/.templates";
- videos = "${home}/cloud/Videos";
- };
services.syncthing.enable = true;
}
diff --git a/nixos/hosts/thalassa/null/home/eww/default.nix b/nixos/hosts/thalassa/null/home/eww/default.nix
index dadcc75..120b59a 100644
--- a/nixos/hosts/thalassa/null/home/eww/default.nix
+++ b/nixos/hosts/thalassa/null/home/eww/default.nix
@@ -1,38 +1,42 @@
{ pkgs, ... }: {
- home.packages = with pkgs; [
- eww-wayland
- pamixer
- lua
- (nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
- ];
+ home = {
+ packages = with pkgs; [
+ eww-wayland
+ pamixer
+ lua
+ (nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
+ ];
+ file = {
- home.file.".config/eww/eww.yuck".source = ./eww.yuck;
- home.file.".config/eww/eww.scss".text = builtins.readFile ./eww.scss;
+ ".config/eww/eww.yuck".source = ./eww.yuck;
+ ".config/eww/eww.scss".text = builtins.readFile ./eww.scss;
- # scripts
- # TODO: just link all scripts in ./scripts to .config/eww/scripts
- home.file.".config/eww/scripts/volume.sh" = {
- source = ./scripts/volume.sh;
- executable = true;
- };
+ # scripts
+ # TODO: just link all scripts in ./scripts to .config/eww/scripts
+ ".config/eww/scripts/volume.sh" = {
+ source = ./scripts/volume.sh;
+ executable = true;
+ };
- home.file.".config/eww/scripts/wifi.sh" = {
- source = ./scripts/wifi.sh;
- executable = true;
- };
+ ".config/eww/scripts/wifi.sh" = {
+ source = ./scripts/wifi.sh;
+ executable = true;
+ };
- home.file.".config/eww/scripts/workspaces.sh" = {
- source = ./scripts/workspaces.sh;
- executable = true;
- };
+ ".config/eww/scripts/workspaces.sh" = {
+ source = ./scripts/workspaces.sh;
+ executable = true;
+ };
- home.file.".config/eww/scripts/workspaces.lua" = {
- source = ./scripts/workspaces.lua;
- executable = true;
- };
+ ".config/eww/scripts/workspaces.lua" = {
+ source = ./scripts/workspaces.lua;
+ executable = true;
+ };
- home.file.".config/eww/scripts/do-not-disturb.sh" = {
- source = ./scripts/do-not-disturb.sh;
- executable = true;
+ ".config/eww/scripts/do-not-disturb.sh" = {
+ source = ./scripts/do-not-disturb.sh;
+ executable = true;
+ };
+ };
};
}
diff --git a/nixos/hosts/thalassa/null/home/hyprland.nix b/nixos/hosts/thalassa/null/home/hyprland.nix
index 6dac363..cdc6efa 100644
--- a/nixos/hosts/thalassa/null/home/hyprland.nix
+++ b/nixos/hosts/thalassa/null/home/hyprland.nix
@@ -5,131 +5,133 @@
wallpaper = eDP-1,~/cloud/Pictures/Wallpapers-Laptop/wallpaper-nix-pink.png
'';
- wayland.windowManager.hyprland = let
- startup-script = pkgs.writeScriptBin "startup" ''
- #!${pkgs.stdenv.shell}
- hyprctl setcursor Catppuccin-Frappe-Pink-Cursors ${
- builtins.toString config.home.pointerCursor.size
- }
- ${pkgs.hyprpaper}/bin/hyprpaper &
- foot --server &
- eww daemon &
- eww open bar &
- firefox-devedition &
- webcord &
- element-desktop &
- '';
- in {
- enable = true;
- recommendedEnvironment = true;
- extraConfig = ''
- exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
- exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
-
- monitor=eDP-1,1920x1080@60,0x0,1
- monitor=eDP-1,addreserved,0,0,48,0
- monitor=,preferred,auto,1
-
- windowrulev2 = workspace 1 silent,class:^(Electron)$,title:^(.*)(WebCord)(.*)$
- windowrulev2 = workspace 1 silent,title:^(Element)(.*)$
- windowrulev2 = workspace 2 silent,class:^(firefox-aurora)$
- windowrulev2 = float,class:^(firefox-aurora)$,title:^(Picture-in-Picture)$
-
- general {
- layout = dwindle
- col.active_border = 0xfff4b8e4
- }
-
- input {
- kb_options=caps:escape
- touchpad {
- natural_scroll= true
+ wayland.windowManager.hyprland =
+ let
+ startup-script = pkgs.writeScriptBin "startup" ''
+ #!${pkgs.stdenv.shell}
+ hyprctl setcursor Catppuccin-Frappe-Pink-Cursors ${
+ builtins.toString config.home.pointerCursor.size
}
- }
+ ${pkgs.hyprpaper}/bin/hyprpaper &
+ foot --server &
+ eww daemon &
+ eww open bar &
+ firefox-devedition &
+ webcord &
+ element-desktop &
+ '';
+ in
+ {
+ enable = true;
+ recommendedEnvironment = true;
+ extraConfig = ''
+ exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+ exec-once=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
- gestures {
- workspace_swipe = true
- }
+ monitor=eDP-1,1920x1080@60,0x0,1
+ monitor=eDP-1,addreserved,0,0,48,0
+ monitor=,preferred,auto,1
- misc {
- no_vfr = false
- disable_hyprland_logo = true
- disable_splash_rendering = true
- }
+ windowrulev2 = workspace 1 silent,class:^(Electron)$,title:^(.*)(WebCord)(.*)$
+ windowrulev2 = workspace 1 silent,title:^(Element)(.*)$
+ windowrulev2 = workspace 2 silent,class:^(firefox-aurora)$
+ windowrulev2 = float,class:^(firefox-aurora)$,title:^(Picture-in-Picture)$
- dwindle {
- pseudotile=true
- }
+ general {
+ layout = dwindle
+ col.active_border = 0xfff4b8e4
+ }
- bind=SUPER,RETURN,exec,footclient
- bind=SUPER,f,exec,firefox-devedition
- bind=SUPER,d,exec,wofi --show run,drun
+ input {
+ kb_options=caps:escape
+ touchpad {
+ natural_scroll= true
+ }
+ }
- bind=,Print,exec,grim -g "$(slurp)" -t png - | wl-copy -t image/png
- bind=SUPER,W,killactive,
- bind=SUPERSHIFT,Q,exit,
- bind=SUPER,S,togglefloating,
- bind=SUPER,P,pin,
+ gestures {
+ workspace_swipe = true
+ }
- bindm=SUPER,mouse:272,movewindow
- bindm=SUPER,mouse:273,resizewindow
+ misc {
+ no_vfr = false
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ }
- bind=SUPER,left,movefocus,l
- bind=SUPER,right,movefocus,r
- bind=SUPER,up,movefocus,u
- bind=SUPER,down,movefocus,d
+ dwindle {
+ pseudotile=true
+ }
- bind=SUPER,1,workspace,1
- bind=SUPER,2,workspace,2
- bind=SUPER,3,workspace,3
- bind=SUPER,4,workspace,4
- bind=SUPER,5,workspace,5
- bind=SUPER,6,workspace,6
- bind=SUPER,7,workspace,7
- bind=SUPER,8,workspace,8
- bind=SUPER,9,workspace,9
- bind=SUPER,0,workspace,10
- bind=SUPER,grave,togglespecialworkspace
+ bind=SUPER,RETURN,exec,footclient
+ bind=SUPER,f,exec,firefox-devedition
+ bind=SUPER,d,exec,wofi --show run,drun
- bind=ALT,1,movetoworkspace,1
- bind=ALT,2,movetoworkspace,2
- bind=ALT,3,movetoworkspace,3
- bind=ALT,4,movetoworkspace,4
- bind=ALT,5,movetoworkspace,5
- bind=ALT,6,movetoworkspace,6
- bind=ALT,7,movetoworkspace,7
- bind=ALT,8,movetoworkspace,8
- bind=ALT,9,movetoworkspace,9
- bind=ALT,0,movetoworkspace,10
- bind=ALT,grave,movetoworkspace,special
+ bind=,Print,exec,grim -g "$(slurp)" -t png - | wl-copy -t image/png
+ bind=SUPER,W,killactive,
+ bind=SUPERSHIFT,Q,exit,
+ bind=SUPER,S,togglefloating,
+ bind=SUPER,P,pin,
- bind=SUPERSHIFT,1,movetoworkspacesilent,1
- bind=SUPERSHIFT,2,movetoworkspacesilent,2
- bind=SUPERSHIFT,3,movetoworkspacesilent,3
- bind=SUPERSHIFT,4,movetoworkspacesilent,4
- bind=SUPERSHIFT,5,movetoworkspacesilent,5
- bind=SUPERSHIFT,6,movetoworkspacesilent,6
- bind=SUPERSHIFT,7,movetoworkspacesilent,7
- bind=SUPERSHIFT,8,movetoworkspacesilent,8
- bind=SUPERSHIFT,9,movetoworkspacesilent,9
- bind=SUPERSHIFT,0,movetoworkspacesilent,10
- bind=SUPERSHIFT,grave,movetoworkspacesilent,special
+ bindm=SUPER,mouse:272,movewindow
+ bindm=SUPER,mouse:273,resizewindow
- bind=SUPER,mouse_down,workspace,e+1
- bind=SUPER,mouse_up,workspace,e-1
+ bind=SUPER,left,movefocus,l
+ bind=SUPER,right,movefocus,r
+ bind=SUPER,up,movefocus,u
+ bind=SUPER,down,movefocus,d
- bind=SUPER,g,togglegroup
- bind=SUPER,tab,changegroupactive
- bind=SUPER,m,fullscreen,1
- bind=SUPERSHIFT,m,fullscreen,0
+ bind=SUPER,1,workspace,1
+ bind=SUPER,2,workspace,2
+ bind=SUPER,3,workspace,3
+ bind=SUPER,4,workspace,4
+ bind=SUPER,5,workspace,5
+ bind=SUPER,6,workspace,6
+ bind=SUPER,7,workspace,7
+ bind=SUPER,8,workspace,8
+ bind=SUPER,9,workspace,9
+ bind=SUPER,0,workspace,10
+ bind=SUPER,grave,togglespecialworkspace
- bind=,XF86MonBrightnessUp,exec,brightnessctl -q s +5%
- bind=,XF86MonBrightnessDown,exec,brightnessctl -q s 5%-
- bind=,XF86MonRaiseVolume,exec,pamixer -i 5
- bind=,XF86MonLowerVolume,exec,pamixer -d 5
- bind=,XF86AudioMute,exec,pamixer -t
+ bind=ALT,1,movetoworkspace,1
+ bind=ALT,2,movetoworkspace,2
+ bind=ALT,3,movetoworkspace,3
+ bind=ALT,4,movetoworkspace,4
+ bind=ALT,5,movetoworkspace,5
+ bind=ALT,6,movetoworkspace,6
+ bind=ALT,7,movetoworkspace,7
+ bind=ALT,8,movetoworkspace,8
+ bind=ALT,9,movetoworkspace,9
+ bind=ALT,0,movetoworkspace,10
+ bind=ALT,grave,movetoworkspace,special
- exec-once=${startup-script}/bin/startup
- '';
- };
+ bind=SUPERSHIFT,1,movetoworkspacesilent,1
+ bind=SUPERSHIFT,2,movetoworkspacesilent,2
+ bind=SUPERSHIFT,3,movetoworkspacesilent,3
+ bind=SUPERSHIFT,4,movetoworkspacesilent,4
+ bind=SUPERSHIFT,5,movetoworkspacesilent,5
+ bind=SUPERSHIFT,6,movetoworkspacesilent,6
+ bind=SUPERSHIFT,7,movetoworkspacesilent,7
+ bind=SUPERSHIFT,8,movetoworkspacesilent,8
+ bind=SUPERSHIFT,9,movetoworkspacesilent,9
+ bind=SUPERSHIFT,0,movetoworkspacesilent,10
+ bind=SUPERSHIFT,grave,movetoworkspacesilent,special
+
+ bind=SUPER,mouse_down,workspace,e+1
+ bind=SUPER,mouse_up,workspace,e-1
+
+ bind=SUPER,g,togglegroup
+ bind=SUPER,tab,changegroupactive
+ bind=SUPER,m,fullscreen,1
+ bind=SUPERSHIFT,m,fullscreen,0
+
+ bind=,XF86MonBrightnessUp,exec,brightnessctl -q s +5%
+ bind=,XF86MonBrightnessDown,exec,brightnessctl -q s 5%-
+ bind=,XF86MonRaiseVolume,exec,pamixer -i 5
+ bind=,XF86MonLowerVolume,exec,pamixer -d 5
+ bind=,XF86AudioMute,exec,pamixer -t
+
+ exec-once=${startup-script}/bin/startup
+ '';
+ };
}
diff --git a/nixos/hosts/thalassa/null/home/neovim.nix b/nixos/hosts/thalassa/null/home/neovim.nix
index 983f6a4..a6eb4fa 100644
--- a/nixos/hosts/thalassa/null/home/neovim.nix
+++ b/nixos/hosts/thalassa/null/home/neovim.nix
@@ -27,9 +27,11 @@
};
lsp = {
enable = true;
- servers.rust-analyzer.enable = true;
- servers.rnix-lsp.enable = true;
- servers.pyright.enable = true;
+ servers = {
+ rust-analyzer.enable = true;
+ rnix-lsp.enable = true;
+ pyright.enable = true;
+ };
};
nvim-cmp = { enable = true; };
};
diff --git a/nixos/hosts/thalassa/null/home/theme.nix b/nixos/hosts/thalassa/null/home/theme.nix
index 128cd75..fecec7a 100644
--- a/nixos/hosts/thalassa/null/home/theme.nix
+++ b/nixos/hosts/thalassa/null/home/theme.nix
@@ -34,16 +34,48 @@ let
hex = mapAttrs (_name: value: "#${value}") colour;
};
-in {
- home.file.".xsettingsd".text = ''
- Net/ThemeName "${theme}"
- Gtk/CursorThemeName "${cursorTheme}"
- '';
+in
+{
+ home = {
+ file.".xsettingsd".text = ''
+ Net/ThemeName "${theme}"
+ Gtk/CursorThemeName "${cursorTheme}"
+ '';
- home.pointerCursor = {
- name = "Catppuccin-Frappe-Pink-Cursors";
- size = 32;
- package = pkgs.catppuccin-cursors.frappePink;
+ pointerCursor = {
+ name = "Catppuccin-Frappe-Pink-Cursors";
+ size = 32;
+ package = pkgs.catppuccin-cursors.frappePink;
+ };
+
+ file.".config/eww/eww.scss".text = lib.mkBefore ''
+ $rosewater: ${colour.hex.rosewater};
+ $flamingo: ${colour.hex.flamingo};
+ $pink: ${colour.hex.pink};
+ $mauve: ${colour.hex.mauve};
+ $red: ${colour.hex.red};
+ $maroon: ${colour.hex.maroon};
+ $peach: ${colour.hex.peach};
+ $yellow: ${colour.hex.yellow};
+ $green: ${colour.hex.green};
+ $teal: ${colour.hex.teal};
+ $sky: ${colour.hex.sky};
+ $sapphire: ${colour.hex.sapphire};
+ $blue: ${colour.hex.blue};
+ $lavender: ${colour.hex.lavender};
+ $text: ${colour.hex.text};
+ $subtext0: ${colour.hex.subtext0};
+ $subtext1: ${colour.hex.subtext1};
+ $overlay0: ${colour.hex.overlay0};
+ $overlay1: ${colour.hex.overlay1};
+ $overlay2: ${colour.hex.overlay2};
+ $surface0: ${colour.hex.surface0};
+ $surface1: ${colour.hex.surface1};
+ $surface2: ${colour.hex.surface2};
+ $base: ${colour.hex.base};
+ $mantle: ${colour.hex.mantle};
+ $crust: ${colour.hex.crust};
+ '';
};
gtk = {
@@ -92,33 +124,4 @@ in {
textColor = colour.hex.text;
borderRadius = 5;
};
-
- home.file.".config/eww/eww.scss".text = lib.mkBefore ''
- $rosewater: ${colour.hex.rosewater};
- $flamingo: ${colour.hex.flamingo};
- $pink: ${colour.hex.pink};
- $mauve: ${colour.hex.mauve};
- $red: ${colour.hex.red};
- $maroon: ${colour.hex.maroon};
- $peach: ${colour.hex.peach};
- $yellow: ${colour.hex.yellow};
- $green: ${colour.hex.green};
- $teal: ${colour.hex.teal};
- $sky: ${colour.hex.sky};
- $sapphire: ${colour.hex.sapphire};
- $blue: ${colour.hex.blue};
- $lavender: ${colour.hex.lavender};
- $text: ${colour.hex.text};
- $subtext0: ${colour.hex.subtext0};
- $subtext1: ${colour.hex.subtext1};
- $overlay0: ${colour.hex.overlay0};
- $overlay1: ${colour.hex.overlay1};
- $overlay2: ${colour.hex.overlay2};
- $surface0: ${colour.hex.surface0};
- $surface1: ${colour.hex.surface1};
- $surface2: ${colour.hex.surface2};
- $base: ${colour.hex.base};
- $mantle: ${colour.hex.mantle};
- $crust: ${colour.hex.crust};
- '';
}
diff --git a/nixos/hosts/thalassa/null/rescue-boot.nix b/nixos/hosts/thalassa/null/rescue-boot.nix
index 507b427..a6cf2a2 100644
--- a/nixos/hosts/thalassa/null/rescue-boot.nix
+++ b/nixos/hosts/thalassa/null/rescue-boot.nix
@@ -13,7 +13,8 @@ let
boot.supportedFilesystems = [ "btrfs" "ext4" ];
environment.systemPackages = with pkgs; [ git ];
};
-in {
+in
+{
boot.loader.systemd-boot = {
extraEntries = {
"rescue.conf" = ''
diff --git a/nixos/pkgs/glitch-soc/default.nix b/nixos/pkgs/glitch-soc/default.nix
index 415a9be..28ac565 100644
--- a/nixos/pkgs/glitch-soc/default.nix
+++ b/nixos/pkgs/glitch-soc/default.nix
@@ -1,9 +1,22 @@
-{ lib, stdenv, nodejs-slim, bundlerEnv, nixosTests, yarn, callPackage
-, imagemagick, ffmpeg, file, ruby_3_0, writeShellScript, fetchYarnDeps
+{ lib
+, stdenv
+, nodejs-slim
+, bundlerEnv
+, nixosTests
+, yarn
+, callPackage
+, imagemagick
+, ffmpeg
+, file
+, ruby_3_0
+, writeShellScript
+, fetchYarnDeps
, fixup_yarn_lock
-# Allow building a fork or custom version of Mastodon:
-, pname ? "mastodon", version ? import ./version.nix, srcOverride ? null
+ # Allow building a fork or custom version of Mastodon:
+, pname ? "mastodon"
+, version ? import ./version.nix
+, srcOverride ? null
, dependenciesDir ? ./. # Should contain gemset.nix, yarn.nix and package.json.
}:
@@ -106,16 +119,18 @@ stdenv.mkDerivation rec {
ln -s /tmp tmp
'';
- installPhase = let
- run-streaming = writeShellScript "run-streaming.sh" ''
- # NixOS helper script to consistently use the same NodeJS version the package was built with.
- ${nodejs-slim}/bin/node ./streaming
+ installPhase =
+ let
+ run-streaming = writeShellScript "run-streaming.sh" ''
+ # NixOS helper script to consistently use the same NodeJS version the package was built with.
+ ${nodejs-slim}/bin/node ./streaming
+ '';
+ in
+ ''
+ mkdir -p $out
+ cp -r * $out/
+ ln -s ${run-streaming} $out/run-streaming.sh
'';
- in ''
- mkdir -p $out
- cp -r * $out/
- ln -s ${run-streaming} $out/run-streaming.sh
- '';
passthru = {
tests.mastodon = nixosTests.mastodon;
diff --git a/nixos/pkgs/glitch-soc/gemset.nix b/nixos/pkgs/glitch-soc/gemset.nix
index 9c22fd6..0fc8dfa 100644
--- a/nixos/pkgs/glitch-soc/gemset.nix
+++ b/nixos/pkgs/glitch-soc/gemset.nix
@@ -1,1885 +1,1885 @@
{
actioncable = {
- dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "activesupport" "nio4r" "websocket-driver" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1i98vjh8l1xrf0ihdpvgq7mz7cfj4aww77swjlwljcgfb45868d9";
type = "gem";
};
version = "7.0.7.2";
};
actionmailbox = {
- dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail" "net-imap" "net-pop" "net-smtp"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail" "net-imap" "net-pop" "net-smtp" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "093snb186qdvj1isss0k74ym7kkaq7zwfa5dwmrc0xn8kwhaxbik";
type = "gem";
};
version = "7.0.7.2";
};
actionmailer = {
- dependencies = ["actionpack" "actionview" "activejob" "activesupport" "mail" "net-imap" "net-pop" "net-smtp" "rails-dom-testing"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "actionpack" "actionview" "activejob" "activesupport" "mail" "net-imap" "net-pop" "net-smtp" "rails-dom-testing" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "180ik1gkwy8lqwg0427k0hlivmz206xa453p5c221hpqk8an340f";
type = "gem";
};
version = "7.0.7.2";
};
actionpack = {
- dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0qamc5ly521wk9i1658h9jv7avmyyp92kffa1da2fn5zk0wgyhf4";
type = "gem";
};
version = "7.0.7.2";
};
actiontext = {
- dependencies = ["actionpack" "activerecord" "activestorage" "activesupport" "globalid" "nokogiri"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "activerecord" "activestorage" "activesupport" "globalid" "nokogiri" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0cx0zg6y0w5njl721vqx7bn0kqj5c9zbvingvl5ll20gpyzsp7nj";
type = "gem";
};
version = "7.0.7.2";
};
actionview = {
- dependencies = ["activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "activesupport" "builder" "erubi" "rails-dom-testing" "rails-html-sanitizer" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "151zxb61bb6q7g0sn34qz79k8bg02vmb8mmnsn0fr15lxw92dfhm";
type = "gem";
};
version = "7.0.7.2";
};
active_model_serializers = {
- dependencies = ["actionpack" "activemodel" "case_transform" "jsonapi-renderer"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "activemodel" "case_transform" "jsonapi-renderer" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0xdp7cpj3yj3wl4vj0nqq44kzjavlxi1wq3cf9zp0whkir0ym0gy";
type = "gem";
};
version = "0.10.13";
};
activejob = {
- dependencies = ["activesupport" "globalid"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "activesupport" "globalid" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "191320166dxiq9a4lwbi1nmlq7phsfi0yr1hg2smprlwsa0vv3kd";
type = "gem";
};
version = "7.0.7.2";
};
activemodel = {
- dependencies = ["activesupport"];
- groups = ["default" "development" "test"];
- platforms = [];
+ dependencies = [ "activesupport" ];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1crjq1dznlbsrwd5yijxraz1591xmg4vdcwwnmrw4nh6hrwq5fj5";
type = "gem";
};
version = "7.0.7.2";
};
activerecord = {
- dependencies = ["activemodel" "activesupport"];
- groups = ["default" "development" "test"];
- platforms = [];
+ dependencies = [ "activemodel" "activesupport" ];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "03vrssdqaqm41w27s21r37skdfxa41midvjy37i2zh3rnbnq8ps2";
type = "gem";
};
version = "7.0.7.2";
};
activestorage = {
- dependencies = ["actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "activejob" "activerecord" "activesupport" "marcel" "mini_mime" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1w7l2i0n84axr4da7y381k8y0wa1y3rr3k3zrkhp938ldwk7j7cg";
type = "gem";
};
version = "7.0.7.2";
};
activesupport = {
- dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "concurrent-ruby" "i18n" "minitest" "tzinfo" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1vlzcnyqlbchaq85phmdv73ydlc18xpvxy1cbsk191cwd29i7q32";
type = "gem";
};
version = "7.0.7.2";
};
addressable = {
- dependencies = ["public_suffix"];
- groups = ["default" "development" "test"];
- platforms = [];
+ dependencies = [ "public_suffix" ];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "05r1fwy487klqkya7vzia8hnklcxy4vr92m9dmni3prfwk6zpw33";
type = "gem";
};
version = "2.8.5";
};
aes_key_wrap = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "19bn0y70qm6mfj4y1m0j3s8ggh6dvxwrwrj5vfamhdrpddsz8ddr";
type = "gem";
};
version = "1.1.0";
};
airbrussh = {
- dependencies = ["sshkit"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "sshkit" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0x55y3ynkda76pwnsvrrjlvxfcc7yn1irad8radll9c9cif41jqv";
type = "gem";
};
version = "1.4.1";
};
android_key_attestation = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "02spc1sh7zsljl02v9d5rdb717b628vw2k7jkkplifyjk4db0zj6";
type = "gem";
};
version = "0.3.0";
};
annotate = {
- dependencies = ["activerecord" "rake"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "activerecord" "rake" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1lw0fxb5mirsdp3bp20gjyvs7clvi19jbxnrm2ihm20kzfhvlqcs";
type = "gem";
};
version = "3.2.0";
};
ast = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "04nc8x27hlzlrr5c2gn7mar4vdr0apw5xg22wp6m8dx3wqr04a0y";
type = "gem";
};
version = "2.4.2";
};
attr_encrypted = {
- dependencies = ["encryptor"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "encryptor" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "034x6mbrv9apd83v99v9pm8vl3d17w5bbwws26gr4wv95fylmgnc";
type = "gem";
};
version = "4.0.0";
};
attr_required = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1g22axmi2rhhy7w8c3x6gppsawxqavbrnxpnmphh22fk7cwi0kh2";
type = "gem";
};
version = "1.0.1";
};
awrence = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0gj8f8c54r9cabkm41s59sa1ca5wpbipw7gq3sfl87x9296227fx";
type = "gem";
};
version = "1.2.1";
};
aws-eventstream = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1pyis1nvnbjxk12a43xvgj2gv0mvp4cnkc1gzw0v1018r61399gz";
type = "gem";
};
version = "1.2.0";
};
aws-partitions = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0m2kha6ip4ynhvl1l8z4vg0j96ngq4f2v6jl4j2y27m2kzmgcxz5";
type = "gem";
};
version = "1.809.0";
};
aws-sdk-core = {
- dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0xjw9cf6ldbw50xi5ric8d63r8kybpsvaqxh2v6n7374hfady73i";
type = "gem";
};
version = "3.181.0";
};
aws-sdk-kms = {
- dependencies = ["aws-sdk-core" "aws-sigv4"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "aws-sdk-core" "aws-sigv4" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1zr5w2cjd895abyn7y5gifhq37bxcinssvdx2l1qmlkllbdxbwq0";
type = "gem";
};
version = "1.71.0";
};
aws-sdk-s3 = {
- dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "aws-sdk-core" "aws-sdk-kms" "aws-sigv4" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0yymj15nwnvam95lw5fxwxx7b6xm4hkj8z7byzvjmx9aji1x245m";
type = "gem";
};
version = "1.133.0";
};
aws-sigv4 = {
- dependencies = ["aws-eventstream"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "aws-eventstream" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0z889c4c1w7wsjm3szg64ay5j51kjl4pdf94nlr1yks2rlanm7na";
type = "gem";
};
version = "1.6.0";
};
azure-storage-blob = {
- dependencies = ["azure-storage-common" "nokogiri"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "azure-storage-common" "nokogiri" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0qq3knsy7nj7a0r8m19spg2bgzns9b3j5vjbs9mpg49whhc63dv1";
type = "gem";
};
version = "2.0.3";
};
azure-storage-common = {
- dependencies = ["faraday" "faraday_middleware" "net-http-persistent" "nokogiri"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "faraday" "faraday_middleware" "net-http-persistent" "nokogiri" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0swmsvvpmy8cdcl305p3dl2pi7m3dqjd7zywfcxmhsz0n2m4v3v0";
type = "gem";
};
version = "2.0.4";
};
base64 = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0cydk9p2cv25qysm0sn2pb97fcpz1isa7n3c8xm1gd99li8x6x8c";
type = "gem";
};
version = "0.1.1";
};
bcrypt = {
- groups = ["default" "pam_authentication"];
- platforms = [];
+ groups = [ "default" "pam_authentication" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "048z3fvcknqx7ikkhrcrykxlqmf9bzc7l0y5h1cnvrc9n2qf0k8m";
type = "gem";
};
version = "3.1.18";
};
better_errors = {
- dependencies = ["erubi" "rack" "rouge"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "erubi" "rack" "rouge" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0wqazisnn6hn1wsza412xribpw5wzx6b5z5p4mcpfgizr6xg367p";
type = "gem";
};
version = "2.10.1";
};
better_html = {
- dependencies = ["actionview" "activesupport" "ast" "erubi" "parser" "smart_properties"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "actionview" "activesupport" "ast" "erubi" "parser" "smart_properties" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1y090dmgjxr3yzxi3pg5jgirkmyfdrmjhabmzmhg5i8ssiqr2gdz";
type = "gem";
};
version = "2.0.1";
};
bindata = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "04y4zgh4bbcb8wmkxwfqg4saky1d1f3xw8z6yk543q13h8ky8rz5";
type = "gem";
};
version = "2.4.15";
};
binding_of_caller = {
- dependencies = ["debug_inspector"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "debug_inspector" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "078n2dkpgsivcf0pr50981w95nfc2bsrp3wpf9wnxz1qsp8jbb9s";
type = "gem";
};
version = "1.0.0";
};
blurhash = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "057afgqy73n8vm7k3cr4pbwm1hhqnm58lp4x7bgm5wzbs39m7xf8";
type = "gem";
};
version = "0.1.7";
};
bootsnap = {
- dependencies = ["msgpack"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "msgpack" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1vcg52gwl64xhhal6kwk1pc01y1klzdlnv1awyk89kb91z010x7q";
type = "gem";
};
version = "1.16.0";
};
brakeman = {
- groups = ["development"];
- platforms = [];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1gliwnyma9f1mpr928c79i36q51yl68dwjd3jgwvsyr4piiiqr1r";
type = "gem";
};
version = "6.0.1";
};
browser = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0g4bcpax07kqqr9cp7cjc7i0pcij4nqpn1rdsg2wdwhzf00m6x32";
type = "gem";
};
version = "5.3.1";
};
brpoplpush-redis_script = {
- dependencies = ["concurrent-ruby" "redis"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "concurrent-ruby" "redis" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1nd5zj5yqmhv9lrsqz8s2dqq28v4ywy95qrw7nzhhf89dl4dq49l";
type = "gem";
};
version = "0.1.3";
};
builder = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr";
type = "gem";
};
version = "3.2.4";
};
bundler-audit = {
- dependencies = ["thor"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "thor" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0gdx0019vj04n1512shhdx7hwphzqmdpw4vva2k551nd47y1dixx";
type = "gem";
};
version = "0.9.1";
};
capistrano = {
- dependencies = ["airbrussh" "i18n" "rake" "sshkit"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "airbrussh" "i18n" "rake" "sshkit" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "14pflh85rrs2l8k0m286j4vaab5vad2sfqq9dncqb31z05vy29mn";
type = "gem";
};
version = "3.17.3";
};
capistrano-bundler = {
- dependencies = ["capistrano"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "capistrano" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "09rndb1fa9r7mhb2sc6p3k0pcarhg8mv0kfmvd1zdb0ciwwp7514";
type = "gem";
};
version = "2.1.0";
};
capistrano-rails = {
- dependencies = ["capistrano" "capistrano-bundler"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "capistrano" "capistrano-bundler" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "05lk7y4qyzadzzshjyhgfgx00ggqliq7n561wkx8m331wljv7kx7";
type = "gem";
};
version = "1.6.3";
};
capistrano-rbenv = {
- dependencies = ["capistrano" "sshkit"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "capistrano" "sshkit" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1x9m1i5zd0wx122zw3m40zprlmxk9d47bd6w61k81wr4qsvkk3rw";
type = "gem";
};
version = "2.2.0";
};
capistrano-yarn = {
- dependencies = ["capistrano"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "capistrano" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1zdg2s061vl5b8114n909mrjb2hc1qx0i4wqx9nacsrcjgyp07l9";
type = "gem";
};
version = "2.0.2";
};
capybara = {
- dependencies = ["addressable" "matrix" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "addressable" "matrix" "mini_mime" "nokogiri" "rack" "rack-test" "regexp_parser" "xpath" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "114qm5f5vhwaaw9rj1h2lcamh46zl13v1m18jiw68zl961gwmw6n";
type = "gem";
};
version = "3.39.2";
};
case_transform = {
- dependencies = ["activesupport"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0fzyws6spn5arqf6q604dh9mrj84a36k5hsc8z7jgcpfvhc49bg2";
type = "gem";
};
version = "0.2";
};
cbor = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0511idr8xps9625nh3kxr68sdy6l3xy2kcz7r57g47fxb1v18jj3";
type = "gem";
};
version = "0.5.9.6";
};
charlock_holmes = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0hybw8jw9ryvz5zrki3gc9r88jqy373m6v46ynxsdzv1ysiyr40p";
type = "gem";
};
version = "0.7.7";
};
chewy = {
- dependencies = ["activesupport" "elasticsearch" "elasticsearch-dsl"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "elasticsearch" "elasticsearch-dsl" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0zca6v8i66jkxfdfjnn9xwg21pk95qn4ic8vzfvrx49d6sb8319y";
type = "gem";
};
version = "7.3.4";
};
chunky_png = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1znw5x86hmm9vfhidwdsijz8m38pqgmv98l9ryilvky0aldv7mc9";
type = "gem";
};
version = "1.4.0";
};
climate_control = {
- groups = ["test"];
- platforms = [];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0q11v0iabvr6rif0d025xh078ili5frrihlj0m04zfg7lgvagxji";
type = "gem";
};
version = "0.2.0";
};
cocoon = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "038z97pkhvsqbh6cmyyzj58ya968p24k7r0f0rx7sa2kjvk193yh";
type = "gem";
};
version = "1.2.15";
};
color_diff = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "01dpvqlzybpb3pkcwd9ik5sbjw283618ywvdphxslhiy8ps3kp4r";
type = "gem";
};
version = "0.1";
};
concurrent-ruby = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q";
type = "gem";
};
version = "1.2.2";
};
connection_pool = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1x32mcpm2cl5492kd6lbjbaf17qsssmpx9kdyr7z1wcif2cwyh0g";
type = "gem";
};
version = "2.4.1";
};
cose = {
- dependencies = ["cbor" "openssl-signature_algorithm"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "cbor" "openssl-signature_algorithm" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "00c6x4ha7qiaaf88qdbyf240mk146zz78rbm4qwyaxmwlmk7q933";
type = "gem";
};
version = "1.3.0";
};
crack = {
- dependencies = ["rexml"];
- groups = ["default" "test"];
- platforms = [];
+ dependencies = [ "rexml" ];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1cr1kfpw3vkhysvkk3wg7c54m75kd68mbm9rs5azdjdq57xid13r";
type = "gem";
};
version = "0.4.5";
};
crass = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0pfl5c0pyqaparxaqxi6s4gfl21bdldwiawrc0aknyvflli60lfw";
type = "gem";
};
version = "1.0.6";
};
css_parser = {
- dependencies = ["addressable"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "addressable" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "04q1vin8slr3k8mp76qz0wqgap6f9kdsbryvgfq9fljhrm463kpj";
type = "gem";
};
version = "1.14.0";
};
database_cleaner-active_record = {
- dependencies = ["activerecord" "database_cleaner-core"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "activerecord" "database_cleaner-core" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "12hdsqnws9gyc9sxiyc8pjiwr0xa7136m1qbhmd1pk3vsrrvk13k";
type = "gem";
};
version = "2.1.0";
};
database_cleaner-core = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0v44bn386ipjjh4m2kl53dal8g4d41xajn2jggnmjbhn6965fil6";
type = "gem";
};
version = "2.0.1";
};
date = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "03skfikihpx37rc27vr3hwrb057gxnmdzxhmzd4bf4jpkl0r55w1";
type = "gem";
};
version = "3.3.3";
};
debug_inspector = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "01l678ng12rby6660pmwagmyg8nccvjfgs3487xna7ay378a59ga";
type = "gem";
};
version = "1.1.0";
};
devise = {
- dependencies = ["bcrypt" "orm_adapter" "railties" "responders" "warden"];
- groups = ["default" "pam_authentication"];
- platforms = [];
+ dependencies = [ "bcrypt" "orm_adapter" "railties" "responders" "warden" ];
+ groups = [ "default" "pam_authentication" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0vpd7d61d4pfmyb2plnnv82wmczzlhw4k4gjhd2fv4r6vq8ilqqi";
type = "gem";
};
version = "4.9.2";
};
devise-two-factor = {
- dependencies = ["activesupport" "attr_encrypted" "devise" "railties" "rotp"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "attr_encrypted" "devise" "railties" "rotp" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1nk43p339zyp4y5vab3w3s0zbjd4xfs8qn0ymxdnz6d961dbbdm8";
type = "gem";
};
version = "4.1.0";
};
devise_pam_authenticatable2 = {
- dependencies = ["devise" "rpam2"];
- groups = ["pam_authentication"];
- platforms = [];
+ dependencies = [ "devise" "rpam2" ];
+ groups = [ "pam_authentication" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "13ipl52pkhc6vxp8ca31viwv01237bi2bfk3b1fixq1x46nf87p2";
type = "gem";
};
version = "9.2.0";
};
diff-lcs = {
- groups = ["default" "development" "test"];
- platforms = [];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0rwvjahnp7cpmracd8x732rjgnilqv2sx7d1gfrysslc3h039fa9";
type = "gem";
};
version = "1.5.0";
};
discard = {
- dependencies = ["activerecord"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activerecord" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1xavjhccyyzn9z6fz3034vgvzprc983mbrq6n9sc0drfw7m3vrip";
type = "gem";
};
version = "1.2.1";
};
docile = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1lxqxgq71rqwj1lpl9q1mbhhhhhhdkkj7my341f2889pwayk85sz";
type = "gem";
};
version = "1.4.0";
};
domain_name = {
- dependencies = ["unf"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "unf" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0lcqjsmixjp52bnlgzh4lg9ppsk52x9hpwdjd53k8jnbah2602h0";
type = "gem";
};
version = "0.5.20190701";
};
doorkeeper = {
- dependencies = ["railties"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "railties" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1q2pywgyn6cbnm0fh3dln5z1qgd1g8hvb4x8rppjc1bpfxnfhi13";
type = "gem";
};
version = "5.6.6";
};
dotenv = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1n0pi8x8ql5h1mijvm8lgn6bhq4xjb5a500p5r1krq4s6j9lg565";
type = "gem";
};
version = "2.8.1";
};
dotenv-rails = {
- dependencies = ["dotenv" "railties"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "dotenv" "railties" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0v0gcbxzypcvy6fqq4gp80jb310xvdwj5n8qw9ci67g5yjvq2nxh";
type = "gem";
};
version = "2.8.1";
};
ed25519 = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0zb2dr2ihb1qiknn5iaj1ha1w9p7lj9yq5waasndlfadz225ajji";
type = "gem";
};
version = "1.3.0";
};
elasticsearch = {
- dependencies = ["elasticsearch-api" "elasticsearch-transport"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "elasticsearch-api" "elasticsearch-transport" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0havyxmvl157a653prspnbhgdchlx44xqxl170v1im5ggxwavcaq";
type = "gem";
};
version = "7.13.3";
};
elasticsearch-api = {
- dependencies = ["multi_json"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "multi_json" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0bmssarkk7lqkjdn8c9j7jvxcnn4hg1zcmhsky8bfvc99k33b3w8";
type = "gem";
};
version = "7.13.3";
};
elasticsearch-dsl = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "174m3fwm3mawbkjg2xbmqvljq7ava4s95m8vpg5khcvfj506wxfk";
type = "gem";
};
version = "0.1.10";
};
elasticsearch-transport = {
- dependencies = ["faraday" "multi_json"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "faraday" "multi_json" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0blfii8qvj0m6bg9sbfynxc40in7zfmw2wpi4clv7d9gclk053db";
type = "gem";
};
version = "7.13.3";
};
encryptor = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0s8rvfl0vn8w7k1sgkc234060jh468s3zd45xa64p1jdmfa3zwmb";
type = "gem";
};
version = "3.0.0";
};
erubi = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "08s75vs9cxlc4r1q2bjg4br8g9wc5lc5x5vl0vv4zq5ivxsdpgi7";
type = "gem";
};
version = "1.12.0";
};
et-orbi = {
- dependencies = ["tzinfo"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "tzinfo" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1d2z4ky2v15dpcz672i2p7lb2nc793dasq3yq3660h2az53kss9v";
type = "gem";
};
version = "1.2.7";
};
excon = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "08r6qgbpkxxsihjmlspk3l1sr69q5hx35p1l4wp7rmkbzys89867";
type = "gem";
};
version = "0.100.0";
};
fabrication = {
- groups = ["test"];
- platforms = [];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0bxssmjp49whzq2zv7w751gr4nkdaiwcxd1vda0byigwyrnj6f5q";
type = "gem";
};
version = "2.30.0";
};
faker = {
- dependencies = ["i18n"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "i18n" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0ysiqlvyy1351bzx7h92r93a35s32l8giyf9bac6sgr142sh3cnn";
type = "gem";
};
version = "3.2.1";
};
faraday = {
- dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1c760q0ks4vj4wmaa7nh1dgvgqiwaw0mjr7v8cymy7i3ffgjxx90";
type = "gem";
};
version = "1.10.3";
};
faraday-em_http = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "12cnqpbak4vhikrh2cdn94assh3yxza8rq2p9w2j34bqg5q4qgbs";
type = "gem";
};
version = "1.0.0";
};
faraday-em_synchrony = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1vgrbhkp83sngv6k4mii9f2s9v5lmp693hylfxp2ssfc60fas3a6";
type = "gem";
};
version = "1.0.0";
};
faraday-excon = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh";
type = "gem";
};
version = "1.1.0";
};
faraday-httpclient = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0fyk0jd3ks7fdn8nv3spnwjpzx2lmxmg2gh4inz3by1zjzqg33sc";
type = "gem";
};
version = "1.0.1";
};
faraday-multipart = {
- dependencies = ["multipart-post"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "multipart-post" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "09871c4hd7s5ws1wl4gs7js1k2wlby6v947m2bbzg43pnld044lh";
type = "gem";
};
version = "1.0.4";
};
faraday-net_http = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1fi8sda5hc54v1w3mqfl5yz09nhx35kglyx72w7b8xxvdr0cwi9j";
type = "gem";
};
version = "1.0.1";
};
faraday-net_http_persistent = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0dc36ih95qw3rlccffcb0vgxjhmipsvxhn6cw71l7ffs0f7vq30b";
type = "gem";
};
version = "1.2.0";
};
faraday-patron = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "19wgsgfq0xkski1g7m96snv39la3zxz6x7nbdgiwhg5v82rxfb6w";
type = "gem";
};
version = "1.0.0";
};
faraday-rack = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1h184g4vqql5jv9s9im6igy00jp6mrah2h14py6mpf9bkabfqq7g";
type = "gem";
};
version = "1.0.0";
};
faraday-retry = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd";
type = "gem";
};
version = "1.0.3";
};
faraday_middleware = {
- dependencies = ["faraday"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "faraday" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy";
type = "gem";
};
version = "1.2.0";
};
fast_blank = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1shpmamyzyhyxmv95r96ja5rylzaw60r19647d0fdm7y2h2c77r6";
type = "gem";
};
version = "1.0.1";
};
fastimage = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1pd7pamzhdz2w0fbcvsfn2nyslznvphnwj16zw35g2b28zd2xyzx";
type = "gem";
};
version = "2.2.7";
};
ffi = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
type = "gem";
};
version = "1.15.5";
};
ffi-compiler = {
- dependencies = ["ffi" "rake"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "ffi" "rake" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0c2caqm9wqnbidcb8dj4wd3s902z15qmgxplwyfyqbwa0ydki7q1";
type = "gem";
};
version = "1.0.1";
};
fog-core = {
- dependencies = ["builder" "excon" "formatador" "mime-types"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "builder" "excon" "formatador" "mime-types" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1agd6xgzk0rxrsjdpn94v4hy89s0nm2cs4zg2p880w2dan9xgrak";
type = "gem";
};
version = "2.1.0";
};
fog-json = {
- dependencies = ["fog-core" "multi_json"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "fog-core" "multi_json" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1zj8llzc119zafbmfa4ai3z5s7c4vp9akfs0f9l2piyvcarmlkyx";
type = "gem";
};
version = "1.2.0";
};
fog-openstack = {
- dependencies = ["fog-core" "fog-json" "ipaddress"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "fog-core" "fog-json" "ipaddress" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "11j18h61d3p0pcp9k5346lbj1lahab1dqybkrx9338932lmjn7ap";
type = "gem";
};
version = "0.3.10";
};
formatador = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0mprf1dwznz5ld0q1jpbyl59fwnwk6azspnd0am7zz7kfg3pxhv5";
type = "gem";
};
version = "0.3.0";
};
fugit = {
- dependencies = ["et-orbi" "raabro"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "et-orbi" "raabro" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1cm2lrvhrpqq19hbdsxf4lq2nkb2qdldbdxh3gvi15l62dlb5zqq";
type = "gem";
};
version = "1.8.1";
};
fuubar = {
- dependencies = ["rspec-core" "ruby-progressbar"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "rspec-core" "ruby-progressbar" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1028vn7j3kc5qqwswrf3has3qm4j9xva70xmzb3n29i89f0afwmj";
type = "gem";
};
version = "2.5.1";
};
globalid = {
- dependencies = ["activesupport"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "activesupport" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0kqm5ndzaybpnpxqiqkc41k4ksyxl41ln8qqr6kb130cdxsf2dxk";
type = "gem";
};
version = "1.1.0";
};
haml = {
- dependencies = ["temple" "thor" "tilt"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "temple" "thor" "tilt" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "154svzqlkdq7gslv3p8mfih28gbw4gsj4pd8wr1wpwz6nyzmhh8m";
type = "gem";
};
version = "6.1.2";
};
haml-rails = {
- dependencies = ["actionpack" "activesupport" "haml" "railties"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "activesupport" "haml" "railties" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1sjrdwc4azzfpsp2xk0365z031482gcrs0c54d5wx0igkqca0fr7";
type = "gem";
};
version = "2.1.0";
};
haml_lint = {
- dependencies = ["haml" "parallel" "rainbow" "rubocop" "sysexits"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "haml" "parallel" "rainbow" "rubocop" "sysexits" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1qics7sll6yw7fm499q4b1frfr5f3gav94ach0fwy49zprl9yk33";
type = "gem";
};
version = "0.50.0";
};
hashdiff = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1nynpl0xbj0nphqx1qlmyggq58ms1phf5i03hk64wcc0a17x1m1c";
type = "gem";
};
version = "1.0.1";
};
hashie = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1nh3arcrbz1rc1cr59qm53sdhqm137b258y8rcb4cvd3y98lwv4x";
type = "gem";
};
version = "5.0.0";
};
hcaptcha = {
- dependencies = ["json"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "json" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0fh6391zlv2ikvzqj2gymb70k1avk1j9da8bzgw0scsz2wqq98m2";
type = "gem";
};
version = "7.1.0";
};
highline = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1f8cr014j7mdqpdb9q17fp5vb5b8n1pswqaif91s3ylg5x3pygfn";
type = "gem";
};
version = "2.1.0";
};
hiredis = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "04jj8k7lxqxw24sp0jiravigdkgsyrpprxpxm71ba93x1wr2w1bz";
type = "gem";
};
version = "0.6.3";
};
hkdf = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "04fixg0a51n4vy0j6c1hvisa2yl33m3jrrpxpb5sq6j511vjriil";
type = "gem";
};
version = "0.3.0";
};
htmlentities = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj";
type = "gem";
};
version = "4.3.4";
};
http = {
- dependencies = ["addressable" "http-cookie" "http-form_data" "llhttp-ffi"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "addressable" "http-cookie" "http-form_data" "llhttp-ffi" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1bzb8p31kzv6q5p4z5xq88mnqk414rrw0y5rkhpnvpl29x5c3bpw";
type = "gem";
};
version = "5.1.1";
};
http-cookie = {
- dependencies = ["domain_name"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "domain_name" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "13rilvlv8kwbzqfb644qp6hrbsj82cbqmnzcvqip1p6vqx36sxbk";
type = "gem";
};
version = "1.0.5";
};
http-form_data = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1wx591jdhy84901pklh1n9sgh74gnvq1qyqxwchni1yrc49ynknc";
type = "gem";
};
version = "2.3.0";
};
http_accept_language = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0d0nlfz9vm4jr1l6q0chx4rp2hrnrfbx3gadc1dz930lbbaz0hq0";
type = "gem";
};
version = "2.1.1";
};
httpclient = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
type = "gem";
};
version = "2.8.3";
};
httplog = {
- dependencies = ["rack" "rainbow"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "rack" "rainbow" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0zjsgrlvwpqsnrza4ijlxjld4550c661sgbqp2j2wp638nlnls1a";
type = "gem";
};
version = "1.6.2";
};
i18n = {
- dependencies = ["concurrent-ruby"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "concurrent-ruby" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx";
type = "gem";
};
version = "1.14.1";
};
i18n-tasks = {
- dependencies = ["activesupport" "ast" "better_html" "erubi" "highline" "i18n" "parser" "rails-i18n" "rainbow" "terminal-table"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "activesupport" "ast" "better_html" "erubi" "highline" "i18n" "parser" "rails-i18n" "rainbow" "terminal-table" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "19zkcsqwzc3i6vizj26mxxww6m5grv9zmp6yxyswbqq9kyzb081z";
type = "gem";
};
version = "1.0.12";
};
idn-ruby = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0dy04jx3n1ddz744b80mg7hp87miysnjp0h21lqr43hpmhdglxih";
type = "gem";
};
version = "0.1.5";
};
ipaddress = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1x86s0s11w202j6ka40jbmywkrx8fhq8xiy8mwvnkhllj57hqr45";
type = "gem";
};
version = "0.8.3";
};
jmespath = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1cdw9vw2qly7q7r41s7phnac264rbsdqgj4l0h4nqgbjb157g393";
type = "gem";
};
version = "1.6.2";
};
json = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0nalhin1gda4v8ybk6lq8f407cgfrj6qzn234yra4ipkmlbfmal6";
type = "gem";
};
version = "2.6.3";
};
json-canonicalization = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1rvsalsrs8njk2gqxgq0ydg5cd02jqdawskbq2ccz663qxz8wwq5";
type = "gem";
};
version = "0.3.2";
};
json-jwt = {
- dependencies = ["activesupport" "aes_key_wrap" "bindata" "httpclient"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "aes_key_wrap" "bindata" "httpclient" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "04315mf4p9qa97grdfqv922paghzdfrbb982ap0p99rqwla4znv6";
type = "gem";
};
version = "1.15.3";
};
json-ld = {
- dependencies = ["htmlentities" "json-canonicalization" "link_header" "multi_json" "rack" "rdf"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "htmlentities" "json-canonicalization" "link_header" "multi_json" "rack" "rdf" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1z3kqacjmqs02vwwqm9di7sw7f7nchxx99v84myrrzmh64c6zfcq";
type = "gem";
};
version = "3.2.5";
};
json-ld-preloaded = {
- dependencies = ["json-ld" "rdf"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "json-ld" "rdf" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "004s52m37b2kbw8dv4rdfm2d90h1023z1mw9zfcs0x87v8aq7zyn";
type = "gem";
};
version = "3.2.2";
};
json-schema = {
- dependencies = ["addressable"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "addressable" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "155rygs093i8i04i38a97hs5icmqk2jkkhx76w31yxyr3bxfbgx3";
type = "gem";
};
version = "4.0.0";
};
jsonapi-renderer = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0ys4drd0k9rw5ixf8n8fx8v0pjh792w4myh0cpdspd317l1lpi5m";
type = "gem";
};
version = "0.2.2";
};
jwt = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "16z11alz13vfc4zs5l3fk6n51n2jw9lskvc4h4prnww0y797qd87";
type = "gem";
};
version = "2.7.1";
};
kaminari = {
- dependencies = ["activesupport" "kaminari-actionview" "kaminari-activerecord" "kaminari-core"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "kaminari-actionview" "kaminari-activerecord" "kaminari-core" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0gia8irryvfhcr6bsr64kpisbgdbqjsqfgrk12a11incmpwny1y4";
type = "gem";
};
version = "1.2.2";
};
kaminari-actionview = {
- dependencies = ["actionview" "kaminari-core"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionview" "kaminari-core" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "02f9ghl3a9b5q7l079d3yzmqjwkr4jigi7sldbps992rigygcc0k";
type = "gem";
};
version = "1.2.2";
};
kaminari-activerecord = {
- dependencies = ["activerecord" "kaminari-core"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activerecord" "kaminari-core" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0c148z97s1cqivzbwrak149z7kl1rdmj7dxk6rpkasimmdxsdlqd";
type = "gem";
};
version = "1.2.2";
};
kaminari-core = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1zw3pg6kj39y7jxakbx7if59pl28lhk98fx71ks5lr3hfgn6zliv";
type = "gem";
};
version = "1.2.2";
};
kt-paperclip = {
- dependencies = ["activemodel" "activesupport" "marcel" "mime-types" "terrapin"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activemodel" "activesupport" "marcel" "mime-types" "terrapin" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0qrv9xyxxhxr482p25f3m7nfghw66i8jl02hy9b6pwam8m1knngp";
type = "gem";
};
version = "7.2.0";
};
language_server-protocol = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0gvb1j8xsqxms9mww01rmdl78zkd72zgxaap56bhv8j45z05hp1x";
type = "gem";
};
version = "3.17.0.3";
};
launchy = {
- dependencies = ["addressable"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "addressable" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "06r43899384das2bkbrpsdxsafyyqa94il7111053idfalb4984a";
type = "gem";
};
version = "2.5.2";
};
letter_opener = {
- dependencies = ["launchy"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "launchy" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1y5d4ip4l12v58bgazadl45iv3a5j7jp2gwg96b6jy378zn42a1d";
type = "gem";
};
version = "1.8.1";
};
letter_opener_web = {
- dependencies = ["actionmailer" "letter_opener" "railties" "rexml"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "actionmailer" "letter_opener" "railties" "rexml" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0vvvaz2ngaxv0s6sj25gdvp73vd8pfl8q3jharadg18p3va0m1ik";
type = "gem";
};
version = "2.0.0";
};
link_header = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1yamrdq4rywmnpdhbygnkkl9fdy249fg5r851nrkkxr97gj5rihm";
type = "gem";
};
version = "0.0.8";
};
llhttp-ffi = {
- dependencies = ["ffi-compiler" "rake"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "ffi-compiler" "rake" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "00dh6zmqdj59rhcya0l4b9aaxq6n8xizfbil93k0g06gndyk5xz5";
type = "gem";
};
version = "0.4.0";
};
lograge = {
- dependencies = ["actionpack" "activesupport" "railties" "request_store"];
- groups = ["production"];
- platforms = [];
+ dependencies = [ "actionpack" "activesupport" "railties" "request_store" ];
+ groups = [ "production" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "01kdw5dbzimb89rq4zf44zf8990czb5qxvib0hzja1l4hrha8cki";
type = "gem";
};
version = "0.13.0";
};
loofah = {
- dependencies = ["crass" "nokogiri"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "crass" "nokogiri" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1p744kjpb5zk2ihklbykzii77alycjc04vpnm2ch2f3cp65imlj3";
type = "gem";
};
version = "2.21.3";
};
mail = {
- dependencies = ["mini_mime" "net-imap" "net-pop" "net-smtp"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "mini_mime" "net-imap" "net-pop" "net-smtp" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1bf9pysw1jfgynv692hhaycfxa8ckay1gjw5hz3madrbrynryfzc";
type = "gem";
};
version = "2.8.1";
};
marcel = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0kky3yiwagsk8gfbzn3mvl2fxlh3b39v6nawzm4wpjs6xxvvc4x0";
type = "gem";
};
version = "1.0.2";
};
mario-redis-lock = {
- dependencies = ["redis"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "redis" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1v9wdjcjqzpns2migxp4a5b4w82mipi0fwihbqz3q2qj2qm7wc17";
type = "gem";
};
version = "1.2.1";
};
matrix = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1h2cgkpzkh3dd0flnnwfq6f3nl2b1zff9lvqz8xs853ssv5kq23i";
type = "gem";
};
version = "0.4.2";
};
md-paperclip-azure = {
- dependencies = ["addressable" "azure-storage-blob" "hashie"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "addressable" "azure-storage-blob" "hashie" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1hb1a06x3i8zrhl715jf46ha8r4iy0srcpdhnmp9l14qnnhzn0l5";
type = "gem";
};
version = "2.2.0";
};
memory_profiler = {
- groups = ["development" "test"];
- platforms = [];
+ groups = [ "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1c81d68r4wx0ckbmqxlfqc2qpd94jwcmqdm0xgr0s46r48pv9k9q";
type = "gem";
};
version = "1.0.1";
};
method_source = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1pnyh44qycnf9mzi1j6fywd5fkskv3x7nmsqrrws0rjn5dd4ayfp";
type = "gem";
};
version = "1.0.0";
};
mime-types = {
- dependencies = ["mime-types-data"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "mime-types-data" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0q8d881k1b3rbsfcdi3fx0b5vpdr5wcrhn88r2d9j7zjdkxp5mw5";
type = "gem";
};
version = "3.5.1";
};
mime-types-data = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "17zdim7kzrh5j8c97vjqp4xp78wbyz7smdp4hi5iyzk0s9imdn5a";
type = "gem";
};
version = "3.2023.0808";
};
mini_mime = {
- groups = ["default" "development" "test"];
- platforms = [];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1vycif7pjzkr29mfk4dlqv3disc5dn0va04lkwajlpr1wkibg0c6";
type = "gem";
};
version = "1.1.5";
};
mini_portile2 = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "02mj8mpd6ck5gpcnsimx5brzggw5h5mmmpq2djdypfq16wcw82qq";
type = "gem";
};
version = "2.8.4";
};
minitest = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0jnpsbb2dbcs95p4is4431l2pw1l5pn7dfg3vkgb4ga464j0c5l6";
type = "gem";
};
version = "5.19.0";
};
msgpack = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "06n7556vxr3awh92xy1k5bli98bvq4pjm08mnl68ay4fzln7lcsg";
type = "gem";
};
version = "1.7.1";
};
multi_json = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0pb1g1y3dsiahavspyzkdy39j4q377009f6ix0bh1ag4nqw43l0z";
type = "gem";
};
version = "1.15.0";
};
multipart-post = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0lgyysrpl50wgcb9ahg29i4p01z0irb3p9lirygma0kkfr5dgk9x";
type = "gem";
};
version = "2.3.0";
};
net-http = {
- dependencies = ["uri"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "uri" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0y55ib1v2b8prqfi9ij7hca60b1j94s2bzr6vskwi3i5735472wq";
type = "gem";
};
version = "0.3.2";
};
net-http-persistent = {
- dependencies = ["connection_pool"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "connection_pool" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0i1as2lgnw7b4jid0gw5glv5hnxz36nmfsbr9rmxbcap72ijgy03";
type = "gem";
};
version = "4.0.2";
};
net-imap = {
- dependencies = ["date" "net-protocol"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "date" "net-protocol" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0lf7wqg7czhaj51qsnmn28j7jmcxhkh3m28rl1cjrqsgjxhwj7r3";
type = "gem";
};
version = "0.3.7";
};
net-ldap = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0xqcffn3c1564c4fizp10dzw2v5g2pabdzrcn25hq05bqhsckbar";
type = "gem";
};
version = "0.18.0";
};
net-pop = {
- dependencies = ["net-protocol"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "net-protocol" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1wyz41jd4zpjn0v1xsf9j778qx1vfrl24yc20cpmph8k42c4x2w4";
type = "gem";
};
version = "0.1.2";
};
net-protocol = {
- dependencies = ["timeout"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "timeout" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0dxckrlw4q1lcn3qg4mimmjazmg9bma5gllv72f8js3p36fb3b91";
type = "gem";
};
version = "0.2.1";
};
net-scp = {
- dependencies = ["net-ssh"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "net-ssh" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1si2nq9l6jy5n2zw1q59a5gaji7v9vhy8qx08h4fg368906ysbdk";
type = "gem";
};
version = "4.0.0";
};
net-smtp = {
- dependencies = ["net-protocol"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "net-protocol" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1c6md06hm5bf6rv53sk54dl2vg038pg8kglwv3rayx0vk2mdql9x";
type = "gem";
};
version = "0.3.3";
};
net-ssh = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0yx0pb5fmziz92bw8qzbh8vf20lr56nd3s6q8h0gsgr307lki687";
type = "gem";
};
version = "7.1.0";
};
nio4r = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0w9978zwjf1qhy3amkivab0f9syz6a7k0xgydjidaf7xc831d78f";
type = "gem";
};
version = "2.5.9";
};
nokogiri = {
- dependencies = ["mini_portile2" "racc"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "mini_portile2" "racc" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0k9w2z0953mnjrsji74cshqqp08q7m1r6zhadw1w0g34xzjh3a74";
type = "gem";
};
version = "1.15.4";
};
nsa = {
- dependencies = ["activesupport" "concurrent-ruby" "sidekiq" "statsd-ruby"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "concurrent-ruby" "sidekiq" "statsd-ruby" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
fetchSubmodules = false;
rev = "e020fcc3a54d993ab45b7194d89ab720296c111b";
@@ -1890,30 +1890,30 @@
version = "0.2.8";
};
oj = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0m4vsd6i093kmyz9gckvzpnws997laldaiaf86hg5lza1ir82x7n";
type = "gem";
};
version = "3.16.1";
};
omniauth = {
- dependencies = ["hashie" "rack" "rack-protection"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "hashie" "rack" "rack-protection" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "15xjsxis357np7dy1lak39x1n8g8wxljb08wplw5i4gxi743zr7j";
type = "gem";
};
version = "2.1.1";
};
omniauth-cas = {
- dependencies = ["addressable" "nokogiri" "omniauth"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "addressable" "nokogiri" "omniauth" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
fetchSubmodules = false;
rev = "4211e6d05941b4a981f9a36b49ec166cecd0e271";
@@ -1924,382 +1924,382 @@
version = "2.0.0";
};
omniauth-rails_csrf_protection = {
- dependencies = ["actionpack" "omniauth"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "omniauth" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1kwswnkyl8ym6i4wv65qh3qchqbf2n0c6lbhfgbvkds3gpmnlm7w";
type = "gem";
};
version = "1.0.1";
};
omniauth-saml = {
- dependencies = ["omniauth" "ruby-saml"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "omniauth" "ruby-saml" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "01k9rkg97npcgm8r4x3ja8y20hsg4zy0dcjpzafx148q4yxbg74n";
type = "gem";
};
version = "2.1.0";
};
omniauth_openid_connect = {
- dependencies = ["omniauth" "openid_connect"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "omniauth" "openid_connect" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "08yl0x203k6nrshc70zawfqh79ap1c3fyka9zwwy61cvn7sih4sz";
type = "gem";
};
version = "0.6.1";
};
openid_connect = {
- dependencies = ["activemodel" "attr_required" "json-jwt" "net-smtp" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activemodel" "attr_required" "json-jwt" "net-smtp" "rack-oauth2" "swd" "tzinfo" "validate_email" "validate_url" "webfinger" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1k9kdivp45v6vhzdrnl5fzhd378gjj2hl4w9bazbqnfm15rsnzc8";
type = "gem";
};
version = "1.4.2";
};
openssl = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0c649921vg2l939z5cc3jwd8p1v49099pdhxfk7sb9qqx5wi5873";
type = "gem";
};
version = "3.1.0";
};
openssl-signature_algorithm = {
- dependencies = ["openssl"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "openssl" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "103yjl68wqhl5kxaciir5jdnyi7iv9yckishdr52s5knh9g0pd53";
type = "gem";
};
version = "1.3.0";
};
orm_adapter = {
- groups = ["default" "pam_authentication"];
- platforms = [];
+ groups = [ "default" "pam_authentication" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1fg9jpjlzf5y49qs9mlpdrgs5rpcyihq1s4k79nv9js0spjhnpda";
type = "gem";
};
version = "0.5.0";
};
ox = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1yq0h1niimm8z6z8p1yxb104kxqw69bvbrax84598zfjxifcxhxz";
type = "gem";
};
version = "2.14.17";
};
parallel = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0jcc512l38c0c163ni3jgskvq1vc3mr8ly5pvjijzwvfml9lf597";
type = "gem";
};
version = "1.23.0";
};
parser = {
- dependencies = ["ast" "racc"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "ast" "racc" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1swigds85jddb5gshll1g8lkmbcgbcp9bi1d4nigwvxki8smys0h";
type = "gem";
};
version = "3.2.2.3";
};
parslet = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "01pnw6ymz6nynklqvqxs4bcai25kcvnd5x4id9z3vd1rbmlk0lfl";
type = "gem";
};
version = "2.0.0";
};
pastel = {
- dependencies = ["tty-color"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "tty-color" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0xash2gj08dfjvq4hy6l1z22s5v30fhizwgs10d6nviggpxsj7a8";
type = "gem";
};
version = "0.8.0";
};
pg = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0pfj771p5a29yyyw58qacks464sl86d5m3jxjl5rlqqw2m3v5xq4";
type = "gem";
};
version = "1.5.4";
};
pghero = {
- dependencies = ["activerecord"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activerecord" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "002v32dzyyr29xd9cdsqp55g5gx19skvq9b4a4hr9lrs4i1xsavm";
type = "gem";
};
version = "3.3.3";
};
posix-spawn = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0cmb0svalqcxfzlzc5fvrci12b79x7bakasr8gkl3q5rz6di1q52";
type = "gem";
};
version = "0.3.15";
};
premailer = {
- dependencies = ["addressable" "css_parser" "htmlentities"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "addressable" "css_parser" "htmlentities" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "10rzwdz43yy20lwzsr2as6aivhvwjvqh4nd48sa0ga57sizf1fb4";
type = "gem";
};
version = "1.21.0";
};
premailer-rails = {
- dependencies = ["actionmailer" "net-smtp" "premailer"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionmailer" "net-smtp" "premailer" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0004f73kgrglida336fqkgx906m6n05nnfc17mypzg5rc78iaf61";
type = "gem";
};
version = "1.12.0";
};
private_address_check = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "05phz0vscfh9chv90yc9091pifw3cpwkh76flnhrmvja1q3na4cy";
type = "gem";
};
version = "0.5.0";
};
public_suffix = {
- groups = ["default" "development" "test"];
- platforms = [];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0n9j7mczl15r3kwqrah09cxj8hxdfawiqxa60kga2bmxl9flfz9k";
type = "gem";
};
version = "5.0.3";
};
puma = {
- dependencies = ["nio4r"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "nio4r" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1x4dwx2shx0p7lsms97r85r7ji7zv57bjy3i1kmcpxc8bxvrr67c";
type = "gem";
};
version = "6.3.1";
};
pundit = {
- dependencies = ["activesupport"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1wb03yzy1j41822rbfh9nn77im3zh1f5v8di05cd8rsrdpws542b";
type = "gem";
};
version = "2.3.0";
};
raabro = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "10m8bln9d00dwzjil1k42i5r7l82x25ysbi45fwyv4932zsrzynl";
type = "gem";
};
version = "1.4.0";
};
racc = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "11v3l46mwnlzlc371wr3x6yylpgafgwdf0q7hc7c1lzx6r414r5g";
type = "gem";
};
version = "1.7.1";
};
rack = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "15rdwbyk71c9nxvd527bvb8jxkcys8r3dj3vqra5b3sa63qs30vv";
type = "gem";
};
version = "2.2.8";
};
rack-attack = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "rack" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0z6pj5vjgl6swq7a33gssf795k958mss8gpmdb4v4cydcs7px91w";
type = "gem";
};
version = "6.7.0";
};
rack-cors = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "rack" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "02lvkg1nb4z3zc2nry545dap7a64bb9h2k8waxfz0jkabkgnpimw";
type = "gem";
};
version = "2.0.1";
};
rack-oauth2 = {
- dependencies = ["activesupport" "attr_required" "httpclient" "json-jwt" "rack"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "attr_required" "httpclient" "json-jwt" "rack" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1fknwsxz4429w1hndl6y30cmm2n34wmmaaj2hhp6jrm8ssfsfwjf";
type = "gem";
};
version = "1.21.3";
};
rack-protection = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "rack" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1a12m1mv8dc0g90fs1myvis8vsgr427k1arg1q4a9qlfw6fqyhis";
type = "gem";
};
version = "3.0.5";
};
rack-proxy = {
- dependencies = ["rack"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "rack" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1a62439xwn5v6hsl9s11hdk4wj58czhcbg7lminv23mnkc0ca147";
type = "gem";
};
version = "0.7.6";
};
rack-test = {
- dependencies = ["rack"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "rack" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1ysx29gk9k14a14zsp5a8czys140wacvp91fja8xcja0j1hzqq8c";
type = "gem";
};
version = "2.1.0";
};
rails = {
- dependencies = ["actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actioncable" "actionmailbox" "actionmailer" "actionpack" "actiontext" "actionview" "activejob" "activemodel" "activerecord" "activestorage" "activesupport" "railties" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0pxi3psfl4kpgjf6bhch1albjy9knn9c2s6sammy9lyckhh7akhq";
type = "gem";
};
version = "7.0.7.2";
};
rails-controller-testing = {
- dependencies = ["actionpack" "actionview" "activesupport"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "actionpack" "actionview" "activesupport" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "151f303jcvs8s149mhx2g5mn67487x0blrf9dzl76q1nb7dlh53l";
type = "gem";
};
version = "1.0.5";
};
rails-dom-testing = {
- dependencies = ["activesupport" "minitest" "nokogiri"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "activesupport" "minitest" "nokogiri" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "17g05y7q7934z0ib4aph8h71c2qwjmlakkm7nb2ab45q0aqkfgjd";
type = "gem";
};
version = "2.1.1";
};
rails-html-sanitizer = {
- dependencies = ["loofah" "nokogiri"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "loofah" "nokogiri" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1pm4z853nyz1bhhqr7fzl44alnx4bjachcr6rh6qjj375sfz3sc6";
type = "gem";
};
version = "1.6.0";
};
rails-i18n = {
- dependencies = ["i18n" "railties"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "i18n" "railties" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1bbh5gsw46djmrgddwaq3wsjmj9rsh5dk13wkclwxf1rg9jpkn3g";
type = "gem";
};
version = "7.0.7";
};
rails-settings-cached = {
- dependencies = ["rails"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "rails" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
fetchSubmodules = false;
rev = "86328ef0bd04ce21cc0504ff5e334591e8c2ccab";
@@ -2310,954 +2310,954 @@
version = "0.6.6";
};
railties = {
- dependencies = ["actionpack" "activesupport" "method_source" "rake" "thor" "zeitwerk"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "actionpack" "activesupport" "method_source" "rake" "thor" "zeitwerk" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "01pdn9sn7kawwrvrbr3vz44j287xbka8mm7nrv9cl510y8gzxi2x";
type = "gem";
};
version = "7.0.7.2";
};
rainbow = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
type = "gem";
};
version = "3.1.1";
};
rake = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
type = "gem";
};
version = "13.0.6";
};
rdf = {
- dependencies = ["link_header"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "link_header" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1jx4xyip4inrhr099zac8ah5232g70rv39mm19p85sgpwg80a6ip";
type = "gem";
};
version = "3.2.11";
};
rdf-normalize = {
- dependencies = ["rdf"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "rdf" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "12slrdq6xch5rqj1m79k1wv09264pmhs76nm300j1jsjpcfmdg0r";
type = "gem";
};
version = "0.6.1";
};
redcarpet = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1sg9sbf9pm91l7lac7fs4silabyn0vflxwaa2x3lrzsm0ff8ilca";
type = "gem";
};
version = "3.6.0";
};
redis = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0fikjg6j12ka6hh36dxzhfkpqqmilzjfzcdf59iwkzsgd63f0ziq";
type = "gem";
};
version = "4.8.1";
};
redis-namespace = {
- dependencies = ["redis"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "redis" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0f92i9cwlp6xj6fyn7qn4qsaqvxfw4wqvayll7gbd26qnai1l6p9";
type = "gem";
};
version = "1.11.0";
};
redlock = {
- dependencies = ["redis"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "redis" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0xvjwfzq7rqj4k311kidwmv5app3i7glz4miys6ixqy6c8yylz3c";
type = "gem";
};
version = "1.3.2";
};
regexp_parser = {
- groups = ["default" "development" "test"];
- platforms = [];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "136br91alxdwh1s85z912dwz23qlhm212vy6i3wkinz3z8mkxxl3";
type = "gem";
};
version = "2.8.1";
};
request_store = {
- dependencies = ["rack"];
- groups = ["default" "production"];
- platforms = [];
+ dependencies = [ "rack" ];
+ groups = [ "default" "production" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "13ppgmsbrqah08j06bybd3cddv6dml79yzyjn7r8j1src78h98h7";
type = "gem";
};
version = "1.5.1";
};
responders = {
- dependencies = ["actionpack" "railties"];
- groups = ["default" "pam_authentication"];
- platforms = [];
+ dependencies = [ "actionpack" "railties" ];
+ groups = [ "default" "pam_authentication" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0m9s0mkkprrz02gxhq0ijlwjy0nx1j5yrjf8ssjnhyagnx03lyrx";
type = "gem";
};
version = "3.1.0";
};
rexml = {
- groups = ["default" "development" "test"];
- platforms = [];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "05i8518ay14kjbma550mv0jm8a6di8yp5phzrd8rj44z9qnrlrp0";
type = "gem";
};
version = "3.2.6";
};
rotp = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "10mmzc85y7andsich586ndykw678qn1ns2wpjxrg0sc0gr4w3pig";
type = "gem";
};
version = "6.2.2";
};
rouge = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0pym2zjwl6dwdfvbn7rbvmds32r70jx9qddhvvi6pqy6987ack1v";
type = "gem";
};
version = "4.1.2";
};
rpam2 = {
- groups = ["default" "pam_authentication"];
- platforms = [];
+ groups = [ "default" "pam_authentication" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1zvli3s4z1hf2l7gyfickm5i3afjrnycc3ihbiax6ji6arpbyf33";
type = "gem";
};
version = "4.0.2";
};
rqrcode = {
- dependencies = ["chunky_png" "rqrcode_core"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "chunky_png" "rqrcode_core" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1hggzz8i1l62pkkiybhiqv6ypxw7q844sddrrbbfczjcnj5sivi3";
type = "gem";
};
version = "2.2.0";
};
rqrcode_core = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "06ld6386hbdhy5h0k09axmgn424kavpc8f27k1vjhknjhbf8jjfg";
type = "gem";
};
version = "1.2.0";
};
rspec-core = {
- dependencies = ["rspec-support"];
- groups = ["default" "development" "test"];
- platforms = [];
+ dependencies = [ "rspec-support" ];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0l95bnjxdabrn79hwdhn2q1n7mn26pj7y1w5660v5qi81x458nqm";
type = "gem";
};
version = "3.12.2";
};
rspec-expectations = {
- dependencies = ["diff-lcs" "rspec-support"];
- groups = ["default" "development" "test"];
- platforms = [];
+ dependencies = [ "diff-lcs" "rspec-support" ];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "05j44jfqlv7j2rpxb5vqzf9hfv7w8ba46wwgxwcwd8p0wzi1hg89";
type = "gem";
};
version = "3.12.3";
};
rspec-mocks = {
- dependencies = ["diff-lcs" "rspec-support"];
- groups = ["default" "development" "test"];
- platforms = [];
+ dependencies = [ "diff-lcs" "rspec-support" ];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1hfm17xakfvwya236graj6c2arr4sb9zasp35q5fykhyz8mhs0w2";
type = "gem";
};
version = "3.12.5";
};
rspec-rails = {
- dependencies = ["actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support"];
- groups = ["development" "test"];
- platforms = [];
+ dependencies = [ "actionpack" "activesupport" "railties" "rspec-core" "rspec-expectations" "rspec-mocks" "rspec-support" ];
+ groups = [ "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "086qdyz7c4s5dslm6j06mq7j4jmj958whc3yinhabnqqmz7i463d";
type = "gem";
};
version = "6.0.3";
};
rspec-sidekiq = {
- dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks" "sidekiq"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "rspec-core" "rspec-expectations" "rspec-mocks" "sidekiq" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0dijmcwjn8k6lrld3yqbqfrqb5g73l57yx98y5frx54p5qxjzbzy";
type = "gem";
};
version = "4.0.1";
};
rspec-support = {
- groups = ["default" "development" "test"];
- platforms = [];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1ky86j3ksi26ng9ybd7j0qsdf1lpr8mzrmn98yy9gzv801fvhsgr";
type = "gem";
};
version = "3.12.1";
};
rspec_chunked = {
- groups = ["test"];
- platforms = [];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0h4bsj3m7vb47qnx5bry4v0xscrb3lhg1f1vyxl524znb3i2qqzv";
type = "gem";
};
version = "0.6";
};
rubocop = {
- dependencies = ["base64" "json" "language_server-protocol" "parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "base64" "json" "language_server-protocol" "parallel" "parser" "rainbow" "regexp_parser" "rexml" "rubocop-ast" "ruby-progressbar" "unicode-display_width" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1hr8g9pqw3w87a83kqcxpayrx4jmsziharrg4vqw0gr9kksx2dfv";
type = "gem";
};
version = "1.56.2";
};
rubocop-ast = {
- dependencies = ["parser"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "parser" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "188bs225kkhrb17dsf3likdahs2p1i1sqn0pr3pvlx50g6r2mnni";
type = "gem";
};
version = "1.29.0";
};
rubocop-capybara = {
- dependencies = ["rubocop"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "rubocop" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "01fn05a87g009ch1sh00abdmgjab87i995msap26vxq1a5smdck6";
type = "gem";
};
version = "2.18.0";
};
rubocop-factory_bot = {
- dependencies = ["rubocop"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "rubocop" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0kqchl8f67k2g56sq2h1sm2wb6br5gi47s877hlz94g5086f77n1";
type = "gem";
};
version = "2.23.1";
};
rubocop-performance = {
- dependencies = ["rubocop" "rubocop-ast"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "rubocop" "rubocop-ast" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1v3a2g3wk3aqa0k0zzla10qkxlc625zkj3yf4zcsybs86r5bm4xn";
type = "gem";
};
version = "1.19.0";
};
rubocop-rails = {
- dependencies = ["activesupport" "rack" "rubocop"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "activesupport" "rack" "rubocop" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "05r46ds0dm44fb4p67hbz721zck8mdwblzssz2y25yh075hvs36j";
type = "gem";
};
version = "2.20.2";
};
rubocop-rspec = {
- dependencies = ["rubocop" "rubocop-capybara" "rubocop-factory_bot"];
- groups = ["development"];
- platforms = [];
+ dependencies = [ "rubocop" "rubocop-capybara" "rubocop-factory_bot" ];
+ groups = [ "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0ylwy4afnxhbrvlaf8an9nrizj78axnzggiyfcp8v531cv8six5f";
type = "gem";
};
version = "2.23.2";
};
ruby-prof = {
- groups = ["development" "test"];
- platforms = [];
+ groups = [ "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "13fsfw43zx9pcix1fzxb95g09yadqjvc8971k74krrjz81vbyh51";
type = "gem";
};
version = "1.6.3";
};
ruby-progressbar = {
- groups = ["default" "development" "test"];
- platforms = [];
+ groups = [ "default" "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0cwvyb7j47m7wihpfaq7rc47zwwx9k4v7iqd9s1xch5nm53rrz40";
type = "gem";
};
version = "1.13.0";
};
ruby-saml = {
- dependencies = ["nokogiri" "rexml"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "nokogiri" "rexml" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "18vnbzin5ypxrgcs9lllg7x311b69dyrdw2w1pwz84438hmxm79s";
type = "gem";
};
version = "1.15.0";
};
ruby2_keywords = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
type = "gem";
};
version = "0.0.5";
};
rubyzip = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0grps9197qyxakbpw02pda59v45lfgbgiyw48i0mq9f2bn9y6mrz";
type = "gem";
};
version = "2.3.2";
};
rufus-scheduler = {
- dependencies = ["fugit"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "fugit" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "14lr8c2sswn0sisvrfi4448pmr34za279k3zlxgh581rl1y0gjjz";
type = "gem";
};
version = "3.9.1";
};
safety_net_attestation = {
- dependencies = ["jwt"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "jwt" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1khq0y5w7lf2b9a220298hphf3pakd216jc9a4x4a9pdwxs2vgln";
type = "gem";
};
version = "0.4.0";
};
sanitize = {
- dependencies = ["crass" "nokogiri"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "crass" "nokogiri" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1kymrjdpbmn4yaml3aaqyj1dzj8gqmm9h030dc2rj5mvja7fpi28";
type = "gem";
};
version = "6.0.2";
};
scenic = {
- dependencies = ["activerecord" "railties"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activerecord" "railties" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "04sd4jmgnwpilr3k061x87yyryya2mj15a8602fip49lfxza5548";
type = "gem";
};
version = "1.7.0";
};
selenium-webdriver = {
- dependencies = ["rexml" "rubyzip" "websocket"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "rexml" "rubyzip" "websocket" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0ws0mh230l1pvyxcrlcr48w01alfhprjs1jbd8yrn463drsr2yac";
type = "gem";
};
version = "4.11.0";
};
semantic_range = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1dlp97vg95plrsaaqj7x8l7z9vsjbhnqk4rw1l30gy26lmxpfrih";
type = "gem";
};
version = "3.0.0";
};
sidekiq = {
- dependencies = ["connection_pool" "rack" "redis"];
- groups = ["default" "test"];
- platforms = [];
+ dependencies = [ "connection_pool" "rack" "redis" ];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0iv7vgqyrpymiwvc3ca24sl4lda8m627p657p0v4xzdpzincrnbr";
type = "gem";
};
version = "6.5.9";
};
sidekiq-bulk = {
- dependencies = ["sidekiq"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "sidekiq" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "08nyxzmgf742irafy3l4fj09d4s5pyvsh0dzlh8y4hl51rgkh4xv";
type = "gem";
};
version = "0.2.0";
};
sidekiq-scheduler = {
- dependencies = ["rufus-scheduler" "sidekiq" "tilt"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "rufus-scheduler" "sidekiq" "tilt" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0p5jjs3x2pa2fy494xs39xbq642pri13809dcr1l3hjsm56qvp1h";
type = "gem";
};
version = "5.0.3";
};
sidekiq-unique-jobs = {
- dependencies = ["brpoplpush-redis_script" "concurrent-ruby" "redis" "sidekiq" "thor"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "brpoplpush-redis_script" "concurrent-ruby" "redis" "sidekiq" "thor" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "02f91b24hrrn688wqvxb13lwvcgqb7g9k3sxylnydd6v89wr8mcg";
type = "gem";
};
version = "7.1.29";
};
simple-navigation = {
- dependencies = ["activesupport"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1wc1rapwhqymcjfxmlgam4cvbyhnzfxada2damq88ij2p77pjz4q";
type = "gem";
};
version = "4.4.0";
};
simple_form = {
- dependencies = ["actionpack" "activemodel"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "activemodel" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0z4df65w9qpri315lpvzazdxa9xb7yj0j3d77q06wf0jnpvw4mzs";
type = "gem";
};
version = "5.2.0";
};
simplecov = {
- dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "docile" "simplecov-html" "simplecov_json_formatter" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "198kcbrjxhhzca19yrdcd6jjj9sb51aaic3b0sc3pwjghg3j49py";
type = "gem";
};
version = "0.22.0";
};
simplecov-html = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb";
type = "gem";
};
version = "0.12.3";
};
simplecov_json_formatter = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j";
type = "gem";
};
version = "0.1.4";
};
smart_properties = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0jrqssk9qhwrpq41arm712226vpcr458xv6xaqbk8cp94a0kycpr";
type = "gem";
};
version = "1.17.0";
};
sprockets = {
- dependencies = ["concurrent-ruby" "rack"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "concurrent-ruby" "rack" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "182jw5a0fbqah5w9jancvfmjbk88h8bxdbwnl4d3q809rpxdg8ay";
type = "gem";
};
version = "3.7.2";
};
sprockets-rails = {
- dependencies = ["actionpack" "activesupport" "sprockets"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "actionpack" "activesupport" "sprockets" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1b9i14qb27zs56hlcc2hf139l0ghbqnjpmfi0054dxycaxvk5min";
type = "gem";
};
version = "3.4.2";
};
sshkit = {
- dependencies = ["net-scp" "net-ssh"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "net-scp" "net-ssh" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "14a717mr2cmpgld5fcdd124cvlc5b634f96rhwlnmmc4m8bbkcp9";
type = "gem";
};
version = "1.21.5";
};
stackprof = {
- groups = ["development" "test"];
- platforms = [];
+ groups = [ "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0bhdgfb0pmw9mav1kw9fn0ka012sa0i3h5ppvqssw5xq48nhxnr8";
type = "gem";
};
version = "0.2.25";
};
statsd-ruby = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "028136c463nbravckxb1qi5c5nnv9r6vh2cyhiry423lac4xz79n";
type = "gem";
};
version = "1.5.0";
};
stoplight = {
- dependencies = ["redlock"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "redlock" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1vhqx7q8qpq3x9ba504n7bp0r9dxcck0r0hd73cac2iqkix6khlv";
type = "gem";
};
version = "3.0.2";
};
strong_migrations = {
- dependencies = ["activerecord"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activerecord" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0wz4zhsp4xia8zcpi98v4sgjlv2prd515l8jz4f7j0wk45dfkjs1";
type = "gem";
};
version = "0.8.0";
};
swd = {
- dependencies = ["activesupport" "attr_required" "httpclient"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "attr_required" "httpclient" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "12b3q2sw42nnilfb51nlqdv07f31vdv2j595kd99asnkw4cjlf5w";
type = "gem";
};
version = "1.3.0";
};
sysexits = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0qjng6pllznmprzx8vb0zg0c86hdrkyjs615q41s9fjpmv2430jr";
type = "gem";
};
version = "1.2.0";
};
temple = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "09p32vp94sa1mbr0if0adf02yzc4ns00lsmpwns2xbkncwpzrqm4";
type = "gem";
};
version = "0.10.2";
};
terminal-table = {
- dependencies = ["unicode-display_width"];
- groups = ["default" "development"];
- platforms = [];
+ dependencies = [ "unicode-display_width" ];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "14dfmfjppmng5hwj7c5ka6qdapawm3h6k9lhn8zj001ybypvclgr";
type = "gem";
};
version = "3.0.2";
};
terrapin = {
- dependencies = ["climate_control"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "climate_control" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0p18f05r0c5s70571gqig3z2ym74wx79s6rd45sprp207bqskzn9";
type = "gem";
};
version = "0.6.0";
};
test-prof = {
- groups = ["development" "test"];
- platforms = [];
+ groups = [ "development" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "08j5456rdpgxvv8bs44x81jrxzpxb79wxfxdq4fqwxyircxzi2jj";
type = "gem";
};
version = "1.2.2";
};
thor = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0k7j2wn14h1pl4smibasw0bp66kg626drxb59z7rzflch99cd4rg";
type = "gem";
};
version = "1.2.2";
};
tilt = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0bmjgbv8158klwp2r3klxjwaj93nh1sbl4xvj9wsha0ic478avz7";
type = "gem";
};
version = "2.2.0";
};
timeout = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1d9cvm0f4zdpwa795v3zv4973y5zk59j7s1x3yn90jjrhcz1yvfd";
type = "gem";
};
version = "0.4.0";
};
tpm-key_attestation = {
- dependencies = ["bindata" "openssl" "openssl-signature_algorithm"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "bindata" "openssl" "openssl-signature_algorithm" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0v8y5dibsyskv1ncdgszhxwzq0gzmvb0zl7sgmx0xvsgy86dhcz1";
type = "gem";
};
version = "0.12.0";
};
tty-color = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0aik4kmhwwrmkysha7qibi2nyzb4c8kp42bd5vxnf8sf7b53g73g";
type = "gem";
};
version = "0.6.0";
};
tty-cursor = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0j5zw041jgkmn605ya1zc151bxgxl6v192v2i26qhxx7ws2l2lvr";
type = "gem";
};
version = "0.7.1";
};
tty-prompt = {
- dependencies = ["pastel" "tty-reader"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "pastel" "tty-reader" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1j4y8ik82azjxshgd4i1v4wwhsv3g9cngpygxqkkz69qaa8cxnzw";
type = "gem";
};
version = "0.23.1";
};
tty-reader = {
- dependencies = ["tty-cursor" "tty-screen" "wisper"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "tty-cursor" "tty-screen" "wisper" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1cf2k7w7d84hshg4kzrjvk9pkyc2g1m3nx2n1rpmdcf0hp4p4af6";
type = "gem";
};
version = "0.9.0";
};
tty-screen = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "18jr6s1cg8yb26wzkqa6874q0z93rq0y5aw092kdqazk71y6a235";
type = "gem";
};
version = "0.8.1";
};
twitter-text = {
- dependencies = ["idn-ruby" "unf"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "idn-ruby" "unf" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1dnmp0bj3l01nbb52zby2c7hrazcdwfg846knkrjdfl0yfmv793z";
type = "gem";
};
version = "3.1.0";
};
tzinfo = {
- dependencies = ["concurrent-ruby"];
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ dependencies = [ "concurrent-ruby" ];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd";
type = "gem";
};
version = "2.0.6";
};
tzinfo-data = {
- dependencies = ["tzinfo"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "tzinfo" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0m2d0gpsgqnv29j5h2d6g57g0rayvd460b8s2vjr8sn46bqf89m5";
type = "gem";
};
version = "1.2023.3";
};
unf = {
- dependencies = ["unf_ext"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "unf_ext" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
type = "gem";
};
version = "0.1.4";
};
unf_ext = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1yj2nz2l101vr1x9w2k83a0fag1xgnmjwp8w8rw4ik2rwcz65fch";
type = "gem";
};
version = "0.0.8.2";
};
unicode-display_width = {
- groups = ["default" "development"];
- platforms = [];
+ groups = [ "default" "development" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1gi82k102q7bkmfi7ggn9ciypn897ylln1jk9q67kjhr39fj043a";
type = "gem";
};
version = "2.4.2";
};
uri = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0fa49cdssxllj1j37a56kq27wsibx5lmqxkqdk1rz3452y0bsydy";
type = "gem";
};
version = "0.12.2";
};
validate_email = {
- dependencies = ["activemodel" "mail"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activemodel" "mail" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1r1fz29l699arka177c9xw7409d1a3ff95bf7a6pmc97slb91zlx";
type = "gem";
};
version = "0.1.6";
};
validate_url = {
- dependencies = ["activemodel" "public_suffix"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activemodel" "public_suffix" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0lblym140w5n88ijyfgcvkxvpfj8m6z00rxxf2ckmmhk0x61dzkj";
type = "gem";
};
version = "1.0.15";
};
warden = {
- dependencies = ["rack"];
- groups = ["default" "pam_authentication"];
- platforms = [];
+ dependencies = [ "rack" ];
+ groups = [ "default" "pam_authentication" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1l7gl7vms023w4clg02pm4ky9j12la2vzsixi2xrv9imbn44ys26";
type = "gem";
};
version = "1.2.9";
};
webauthn = {
- dependencies = ["android_key_attestation" "awrence" "bindata" "cbor" "cose" "openssl" "safety_net_attestation" "tpm-key_attestation"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "android_key_attestation" "awrence" "bindata" "cbor" "cose" "openssl" "safety_net_attestation" "tpm-key_attestation" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1ri09bf640kkw4v6k2g90q2nw1mx2hsghhngaqgb7958q8id8xrz";
type = "gem";
};
version = "3.0.0";
};
webfinger = {
- dependencies = ["activesupport" "httpclient"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "httpclient" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "18jj50b44a471ig7hw1ax90wxaaz40acmrf6cm7m2iyshlffy53q";
type = "gem";
};
version = "1.2.0";
};
webmock = {
- dependencies = ["addressable" "crack" "hashdiff"];
- groups = ["test"];
- platforms = [];
+ dependencies = [ "addressable" "crack" "hashdiff" ];
+ groups = [ "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0vfispr7wd2p1fs9ckn1qnby1yyp4i1dl7qz8n482iw977iyxrza";
type = "gem";
};
version = "3.19.1";
};
webpacker = {
- dependencies = ["activesupport" "rack-proxy" "railties" "semantic_range"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "activesupport" "rack-proxy" "railties" "semantic_range" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0fh4vijqiq1h7w28llk67y9csc0m4wkdivrsl4fsxg279v6j5z3i";
type = "gem";
};
version = "5.4.4";
};
webpush = {
- dependencies = ["hkdf" "jwt"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "hkdf" "jwt" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
fetchSubmodules = false;
rev = "f14a4d52e201128b1b00245d11b6de80d6cfdcd9";
@@ -3268,72 +3268,72 @@
version = "0.3.8";
};
websocket = {
- groups = ["default" "test"];
- platforms = [];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0dib6p55sl606qb4vpwrvj5wh881kk4aqn2zpfapf8ckx7g14jw8";
type = "gem";
};
version = "1.2.9";
};
websocket-driver = {
- dependencies = ["websocket-extensions"];
- groups = ["default"];
- platforms = [];
+ dependencies = [ "websocket-extensions" ];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1nyh873w4lvahcl8kzbjfca26656d5c6z3md4sbqg5y1gfz0157n";
type = "gem";
};
version = "0.7.6";
};
websocket-extensions = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0hc2g9qps8lmhibl5baa91b4qx8wqw872rgwagml78ydj8qacsqw";
type = "gem";
};
version = "0.1.5";
};
wisper = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1rpsi0ziy78cj82sbyyywby4d0aw0a5q84v65qd28vqn79fbq5yf";
type = "gem";
};
version = "2.0.1";
};
xorcist = {
- groups = ["default"];
- platforms = [];
+ groups = [ "default" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1dbbiy8xlcfvn9ais37xfb5rci4liwakkmxzbkp72wmvlgcrf339";
type = "gem";
};
version = "1.1.3";
};
xpath = {
- dependencies = ["nokogiri"];
- groups = ["default" "test"];
- platforms = [];
+ dependencies = [ "nokogiri" ];
+ groups = [ "default" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "0bh8lk9hvlpn7vmi6h4hkcwjzvs2y0cmkk3yjjdr8fxvj6fsgzbd";
type = "gem";
};
version = "3.2.0";
};
zeitwerk = {
- groups = ["default" "development" "pam_authentication" "production" "test"];
- platforms = [];
+ groups = [ "default" "development" "pam_authentication" "production" "test" ];
+ platforms = [ ];
source = {
- remotes = ["https://rubygems.org"];
+ remotes = [ "https://rubygems.org" ];
sha256 = "1mwdd445w63khz13hpv17m2br5xngyjl3jdj08xizjbm78i2zrxd";
type = "gem";
};
diff --git a/nixos/pkgs/glitch-soc/source.nix b/nixos/pkgs/glitch-soc/source.nix
index cf57d44..9f67c32 100644
--- a/nixos/pkgs/glitch-soc/source.nix
+++ b/nixos/pkgs/glitch-soc/source.nix
@@ -1,11 +1,13 @@
# This file was generated by pkgs.mastodon.updateScript.
-{ fetchgit, applyPatches }: let
+{ fetchgit, applyPatches }:
+let
src = fetchgit {
url = "https://github.com/glitch-soc/mastodon.git";
rev = "a1df9fdb06854bd55f018918236132ccfa7d9d84";
sha256 = "0amqiigq3qgag6qm119aaysmd2k93vwgr1aynxjxmbpn35ykcay3";
};
-in applyPatches {
+in
+applyPatches {
inherit src;
- patches = [];
+ patches = [ ];
}
diff --git a/nixos/pkgs/glitch-soc/update.nix b/nixos/pkgs/glitch-soc/update.nix
index 40a7fe5..a4318e7 100644
--- a/nixos/pkgs/glitch-soc/update.nix
+++ b/nixos/pkgs/glitch-soc/update.nix
@@ -1,5 +1,14 @@
-{ runCommand, lib, makeWrapper, yarn2nix, bundix, coreutils, diffutils
-, nix-prefetch-git, gnused, jq }:
+{ runCommand
+, lib
+, makeWrapper
+, yarn2nix
+, bundix
+, coreutils
+, diffutils
+, nix-prefetch-git
+, gnused
+, jq
+}:
let
binPath = lib.makeBinPath [
yarn2nix
@@ -10,7 +19,9 @@ let
gnused
jq
];
-in runCommand "mastodon-update-script" {
+in
+runCommand "mastodon-update-script"
+{
nativeBuildInputs = [ makeWrapper ];
meta = {
diff --git a/nixos/pkgs/plex-pass/raw.nix b/nixos/pkgs/plex-pass/raw.nix
index b2f13ff..425928b 100644
--- a/nixos/pkgs/plex-pass/raw.nix
+++ b/nixos/pkgs/plex-pass/raw.nix
@@ -2,8 +2,10 @@
let
sources = builtins.fromJSON (builtins.readFile ./sources.json);
source = lib.findFirst (x: x.platform == stdenv.hostPlatform.system)
- (throw "unsupported platform: ${stdenv.hostPlatform.system}") sources;
-in plexRaw.overrideAttrs (attrs: {
+ (throw "unsupported platform: ${stdenv.hostPlatform.system}")
+ sources;
+in
+plexRaw.overrideAttrs (attrs: {
pname = attrs.pname + "-plexpass";
inherit (source) version;
src = fetchurl {
diff --git a/nixos/pkgs/roundcube-swipe/default.nix b/nixos/pkgs/roundcube-swipe/default.nix
index 1287e7b..50aeb28 100644
--- a/nixos/pkgs/roundcube-swipe/default.nix
+++ b/nixos/pkgs/roundcube-swipe/default.nix
@@ -6,7 +6,8 @@ let
mkdir -p $out/plugins/
cp -r ${src} $out/plugins/swipe
'';
-in roundcubePlugin rec {
+in
+roundcubePlugin rec {
pname = "roundcube-swipe";
version = "0.5";
diff --git a/nixos/util.nix b/nixos/util.nix
index 3ed3f20..5a55aa5 100644
--- a/nixos/util.nix
+++ b/nixos/util.nix
@@ -7,19 +7,21 @@ let
mailserver.nixosModules.mailserver
attic.nixosModules.atticd
];
- type_import = let
- import_cases = {
- "lxc" = [
- "${nixpkgs}/nixos/modules/virtualisation/lxc-container.nix"
- ./common/generic-lxc.nix
- ];
- "vm" = [ ./common/generic-vm.nix ];
- "local" = [
- lanzaboote.nixosModules.lanzaboote
- ./common/desktop
- ];
- };
- in type: import_cases.${type} ++ base_imports;
+ type_import =
+ let
+ import_cases = {
+ "lxc" = [
+ "${nixpkgs}/nixos/modules/virtualisation/lxc-container.nix"
+ ./common/generic-lxc.nix
+ ];
+ "vm" = [ ./common/generic-vm.nix ];
+ "local" = [
+ lanzaboote.nixosModules.lanzaboote
+ ./common/desktop
+ ];
+ };
+ in
+ type: import_cases.${type} ++ base_imports;
# Helper function to resolve what should be imported depending on the type of config (lxc, vm, bare metal)
resolve_imports = { hostname, realm, profile ? hostname, type ? "lxc", ... }:
type_import type
@@ -38,7 +40,7 @@ let
# Flatten all hosts to a single list
flatten_hosts = realms:
concatMap (mapAttrsToList (name: value: value // { hostname = name; }))
- (attrValues realms);
+ (attrValues realms);
# Filter out all hosts which aren't nixos
filter_nix_hosts = filter ({ nix ? true, ... }: nix);
@@ -46,12 +48,20 @@ let
# outputs
# Helper function to build a colmena host definition
- mkColmenaHost = { ip ? null, exposes ? null, hostname, tags, realm
- , type ? "lxc", ... }@host:
+ mkColmenaHost =
+ { ip ? null
+ , exposes ? null
+ , hostname
+ , tags
+ , realm
+ , type ? "lxc"
+ , ...
+ }@host:
let
# this makes local apply work a bit nicer
name = if type == "local" then hostname else "${hostname}.${realm}";
- in {
+ in
+ {
"${name}" = {
imports = resolve_imports host;
networking = {
@@ -73,4 +83,5 @@ let
hosts = add_realm_to_tags (import ./hosts);
flat_hosts = flatten_hosts hosts;
nixHosts = filter_nix_hosts flat_hosts;
-in { inherit base_imports mkColmenaHost hosts flat_hosts nixHosts; }
+in
+{ inherit base_imports mkColmenaHost hosts flat_hosts nixHosts; }
diff --git a/repl.nix b/repl.nix
index 592bf14..7141319 100644
--- a/repl.nix
+++ b/repl.nix
@@ -1,6 +1,7 @@
let
flake = builtins.getFlake (toString ./.);
nixpkgs = import { };
-in {
+in
+{
inherit flake;
} // flake // builtins // nixpkgs // nixpkgs.lib // flake.nixosConfigurations