mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 09:07:21 +01:00
feat: vars in _module.args instead of options
This commit is contained in:
parent
c3060b2be9
commit
c5c09b0358
11 changed files with 437 additions and 439 deletions
|
|
@ -3645,17 +3645,15 @@ These are system-level settings specific to NixOS machines. All settings that ar
|
|||
This section is for setting things that should be used on hosts that are using the default NixOS configuration. This means that servers should NOT import this, as much of these imported modules are user-configured.
|
||||
|
||||
#+begin_src nix-ts :tangle modules/nixos/common/default.nix
|
||||
{ self, lib, ... }:
|
||||
let
|
||||
importNames = lib.swarselsystems.readNix "modules/nixos/common";
|
||||
in
|
||||
{
|
||||
imports = lib.swarselsystems.mkImports importNames "modules/nixos/common" ++ [
|
||||
"${self}/modules/shared/sharedsetup.nix"
|
||||
];
|
||||
|
||||
|
||||
}
|
||||
{ lib, ... }:
|
||||
let
|
||||
importNames = lib.swarselsystems.readNix "modules/nixos/common";
|
||||
sharedNames = lib.swarselsystems.readNix "modules/shared";
|
||||
in
|
||||
{
|
||||
imports = lib.swarselsystems.mkImports importNames "modules/nixos/common" ++
|
||||
lib.swarselsystems.mkImports sharedNames "modules/shared";
|
||||
}
|
||||
|
||||
#+end_src
|
||||
|
||||
|
|
@ -5036,7 +5034,7 @@ By default, [[https://github.com/danth/stylix][stylix]] wants to style GRUB as w
|
|||
=theme= is defined in [[#h:5bc1b0c9-dc59-4c81-b5b5-e60699deda78][Theme (stylix)]].
|
||||
|
||||
#+begin_src nix-ts :noweb yes :tangle modules/nixos/client/stylix.nix
|
||||
{ self, lib, config, ... }:
|
||||
{ self, lib, config, vars, ... }:
|
||||
{
|
||||
options.swarselmodules.stylix = lib.mkEnableOption "stylix config";
|
||||
config = {
|
||||
|
|
@ -5049,10 +5047,10 @@ By default, [[https://github.com/danth/stylix][stylix]] wants to style GRUB as w
|
|||
targets.grub.enable = false; # the styling makes grub more ugly
|
||||
image = config.swarselsystems.wallpaper;
|
||||
}
|
||||
config.swarselsystems.stylix);
|
||||
vars.stylix);
|
||||
home-manager.users."${config.swarselsystems.mainUser}" = {
|
||||
stylix = {
|
||||
targets = config.swarselsystems.stylixHomeTargets;
|
||||
targets = vars.stylixHomeTargets;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -10327,321 +10325,14 @@ The general structure is the same as in the [[#h:6da812f5-358c-49cb-aff2-0a94f20
|
|||
This section sets up all the imports that are used in the home-manager section.
|
||||
|
||||
#+begin_src nix-ts :tangle modules/home/common/default.nix
|
||||
{ self, lib, ... }:
|
||||
{ lib, ... }:
|
||||
let
|
||||
importNames = lib.swarselsystems.readNix "modules/home/common";
|
||||
sharedNames = lib.swarselsystems.readNix "modules/shared";
|
||||
in
|
||||
{
|
||||
imports = lib.swarselsystems.mkImports importNames "modules/home/common" ++ [
|
||||
"${self}/modules/shared/sharedsetup.nix"
|
||||
];
|
||||
}
|
||||
#+end_src
|
||||
|
||||
**** Shared Configuration Options (holds firefox & stylix config parts)
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:79f7150f-b162-4f57-abdf-07f40dffd932
|
||||
:END:
|
||||
|
||||
Provides settings related to nix-darwin systems. At the moment, I am only making use of a =isDarwin= flag.
|
||||
|
||||
At work I am using several services that are using SSO login - however, as I am using four different accounts at work, this becomes a chore here. Hence, I have defined multiple profiles in [[#h:f0b2ea93-94c8-48d8-8d47-6fe58f58e0e6][Work]] that are all practically using the same configuration. To save screen space, I template that profile here.
|
||||
Set in firefox =about:config > toolkit.legacyUserProfileCustomizations.stylesheets= to true. This should in principle be set automatically using the below config, but it seems not to be working reliably
|
||||
|
||||
For styling, I am using the [[https://github.com/danth/stylix][stylix]] NixOS module, loaded by flake. This package is really great, as it adds nix expressions for basically everything. Ever since switching to this, I did not have to play around with theming anywhere else.
|
||||
|
||||
The full list of nerd-fonts can be found here: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/data/fonts/nerd-fonts/manifests/fonts.json
|
||||
|
||||
This is where the theme for the whole OS is defined. Originally, this noweb-ref section could not be copied to the general NixOS config since they are on different folder structure levels in the config, which would have made the flake impure. By now, I have found out that using the =${self}= method for referencing the flake root, I could circumvent this problem. Also, the noweb-ref block could in general be replaced by a custom attribute set (see for example [[#h:e7f98ad8-74a6-4860-a368-cce154285ff0][firefox]]). The difference here was, for a long time, that this block is used in a NixOS and a home-manager-only configuration, verbatim. If I were to use an attribute set, I would have to duplicate this block once each for NixOS and home-manager. Alas, this block stays (for now). However, I learned how to use an attribute set in a custom home-manager module and pass it to both NixOS and home-manager configurations, which also removed the need for that use of it.
|
||||
|
||||
#+begin_src nix-ts :noweb yes :tangle modules/shared/sharedsetup.nix
|
||||
{ self, config, lib, pkgs, ... }:
|
||||
{
|
||||
options.swarselsystems = {
|
||||
withHomeManager = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
isSwap = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
swapSize = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "8G";
|
||||
};
|
||||
rootDisk = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
mainUser = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "swarsel";
|
||||
};
|
||||
isCrypted = lib.mkEnableOption "uses full disk encryption";
|
||||
|
||||
isImpermanence = lib.mkEnableOption "use impermanence on this system";
|
||||
isSecureBoot = lib.mkEnableOption "use secure boot on this system";
|
||||
isLaptop = lib.mkEnableOption "laptop host";
|
||||
isNixos = lib.mkEnableOption "nixos host";
|
||||
isPublic = lib.mkEnableOption "is a public machine (no secrets)";
|
||||
isDarwin = lib.mkEnableOption "darwin host";
|
||||
isLinux = lib.mkEnableOption "whether this is a linux machine";
|
||||
isBtrfs = lib.mkEnableOption "use btrfs filesystem";
|
||||
sopsFile = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "${config.swarselsystems.flakePath}/secrets/${config.node.name}/secrets.yaml";
|
||||
};
|
||||
homeDir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/home/swarsel";
|
||||
};
|
||||
xdgDir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/run/user/1000";
|
||||
};
|
||||
flakePath = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/home/swarsel/.dotfiles";
|
||||
};
|
||||
wallpaper = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "${self}/files/wallpaper/lenovowp.png";
|
||||
};
|
||||
sharescreen = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
lowResolution = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
highResolution = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
|
||||
stylix = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = {
|
||||
polarity = "dark";
|
||||
opacity.popups = 0.5;
|
||||
cursor = {
|
||||
package = pkgs.banana-cursor;
|
||||
# package = pkgs.capitaine-cursors;
|
||||
name = "Banana";
|
||||
# name = "capitaine-cursors";
|
||||
size = 16;
|
||||
};
|
||||
fonts = {
|
||||
sizes = {
|
||||
terminal = 10;
|
||||
applications = 11;
|
||||
};
|
||||
serif = {
|
||||
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
|
||||
package = pkgs.cantarell-fonts;
|
||||
# package = pkgs.montserrat;
|
||||
name = "Cantarell";
|
||||
# name = "FiraCode Nerd Font Propo";
|
||||
# name = "Montserrat";
|
||||
};
|
||||
sansSerif = {
|
||||
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
|
||||
package = pkgs.cantarell-fonts;
|
||||
# package = pkgs.montserrat;
|
||||
name = "Cantarell";
|
||||
# name = "FiraCode Nerd Font Propo";
|
||||
# name = "Montserrat";
|
||||
};
|
||||
monospace = {
|
||||
package = pkgs.nerd-fonts.fira-mono; # has overrides
|
||||
name = "FiraCode Nerd Font Mono";
|
||||
};
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
stylixHomeTargets = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = {
|
||||
emacs.enable = false;
|
||||
waybar.enable = false;
|
||||
sway.useWallpaper = false;
|
||||
firefox.profileNames = [ "default" ];
|
||||
};
|
||||
};
|
||||
|
||||
firefox = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = {
|
||||
userChrome = builtins.readFile "${self}/files/firefox/chrome/userChrome.css";
|
||||
extensions = {
|
||||
packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
tridactyl
|
||||
tampermonkey
|
||||
sidebery
|
||||
browserpass
|
||||
clearurls
|
||||
darkreader
|
||||
enhancer-for-youtube
|
||||
istilldontcareaboutcookies
|
||||
translate-web-pages
|
||||
ublock-origin
|
||||
reddit-enhancement-suite
|
||||
sponsorblock
|
||||
web-archives
|
||||
onepassword-password-manager
|
||||
single-file
|
||||
widegithub
|
||||
enhanced-github
|
||||
unpaywall
|
||||
don-t-fuck-with-paste
|
||||
plasma-integration
|
||||
noscript
|
||||
|
||||
# configure a shortcut 'ctrl+shift+c' with behaviour 'do nothing' in order to disable the dev console shortcut
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = "shortkeys";
|
||||
version = "4.0.2";
|
||||
addonId = "Shortkeys@Shortkeys.com";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/3673761/shortkeys-4.0.2.xpi";
|
||||
sha256 = "c6fe12efdd7a871787ac4526eea79ecc1acda8a99724aa2a2a55c88a9acf467c";
|
||||
meta = with lib;
|
||||
{
|
||||
description = "Easily customizable custom keyboard shortcuts for Firefox. To configure this addon go to Addons (ctrl+shift+a) ->Shortkeys ->Options. Report issues here (please specify that the issue is found in Firefox): https://github.com/mikecrittenden/shortkeys";
|
||||
mozPermissions = [
|
||||
"tabs"
|
||||
"downloads"
|
||||
"clipboardWrite"
|
||||
"browsingData"
|
||||
"storage"
|
||||
"bookmarks"
|
||||
"sessions"
|
||||
"<all_urls>"
|
||||
];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
settings =
|
||||
{
|
||||
"extensions.autoDisableScopes" = 0;
|
||||
"browser.bookmarks.showMobileBookmarks" = true;
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
"browser.search.suggest.enabled" = false;
|
||||
"browser.search.suggest.enabled.private" = false;
|
||||
"browser.urlbar.suggest.searches" = false;
|
||||
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
||||
"browser.topsites.contile.enabled" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.snippets" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||
};
|
||||
|
||||
search = {
|
||||
# default = "Kagi";
|
||||
default = "google";
|
||||
# privateDefault = "Kagi";
|
||||
privateDefault = "google";
|
||||
engines = {
|
||||
"Kagi" = {
|
||||
urls = [{
|
||||
template = "https://kagi.com/search";
|
||||
params = [
|
||||
{ name = "q"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
icon = "https://kagi.com/favicon.ico";
|
||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
||||
definedAliases = [ "@k" ];
|
||||
};
|
||||
|
||||
"Nix Packages" = {
|
||||
urls = [{
|
||||
template = "https://search.nixos.org/packages";
|
||||
params = [
|
||||
{ name = "type"; value = "packages"; }
|
||||
{ name = "query"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = [ "@np" ];
|
||||
};
|
||||
|
||||
"NixOS Wiki" = {
|
||||
urls = [{
|
||||
template = "https://nixos.wiki/index.php?search={searchTerms}";
|
||||
}];
|
||||
icon = "https://nixos.wiki/favicon.png";
|
||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
||||
definedAliases = [ "@nw" ];
|
||||
};
|
||||
|
||||
"NixOS Options" = {
|
||||
urls = [{
|
||||
template = "https://search.nixos.org/options";
|
||||
params = [
|
||||
{ name = "query"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = [ "@no" ];
|
||||
};
|
||||
|
||||
"Home Manager Options" = {
|
||||
urls = [{
|
||||
template = "https://home-manager-options.extranix.com/";
|
||||
params = [
|
||||
{ name = "query"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = [ "@hm" "@ho" "@hmo" ];
|
||||
};
|
||||
|
||||
"Confluence search" = {
|
||||
urls = [{
|
||||
template = "https://vbc.atlassian.net/wiki/search";
|
||||
params = [
|
||||
{ name = "text"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
|
||||
definedAliases = [ "@c" "@cf" "@confluence" ];
|
||||
};
|
||||
|
||||
"Jira search" = {
|
||||
urls = [{
|
||||
template = "https://vbc.atlassian.net/issues/";
|
||||
params = [
|
||||
{ name = "jql"; value = "textfields ~ \"{searchTerms}*\"&wildcardFlag=true"; }
|
||||
];
|
||||
}];
|
||||
|
||||
definedAliases = [ "@j" "@jire" ];
|
||||
};
|
||||
|
||||
"google".metaData.alias = "@g";
|
||||
};
|
||||
force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
imports = lib.swarselsystems.mkImports importNames "modules/home/common" ++
|
||||
lib.swarselsystems.mkImports sharedNames "modules/shared";
|
||||
}
|
||||
#+end_src
|
||||
|
||||
|
|
@ -11135,16 +10826,16 @@ This section has been notably empty ever since switching to stylix. Only Emacs i
|
|||
=theme= is defined in [[#h:5bc1b0c9-dc59-4c81-b5b5-e60699deda78][Theme (stylix)]].
|
||||
|
||||
#+begin_src nix-ts :noweb yes :tangle modules/home/common/stylix.nix
|
||||
{ lib, config, ... }:
|
||||
{ lib, config, vars, ... }:
|
||||
{
|
||||
options.swarselmodules.stylix = lib.mkEnableOption "stylix settings";
|
||||
config = lib.mkIf config.swarselmodules.stylix {
|
||||
stylix = lib.mkIf (!config.swarselsystems.isNixos) (lib.recursiveUpdate
|
||||
{
|
||||
image = config.swarselsystems.wallpaper;
|
||||
targets = config.swarselsystems.stylixHomeTargets;
|
||||
targets = vars.stylixHomeTargets;
|
||||
}
|
||||
config.swarselsystems.stylix);
|
||||
vars.stylix);
|
||||
};
|
||||
}
|
||||
#+end_src
|
||||
|
|
@ -12661,7 +12352,7 @@ Also, I setup some search aliases for functions I often use, such as NixOS optio
|
|||
I used to build the firefox addon =bypass-paywalls-clean= myself here, but the maintainer always deletes old packages, and it became a chore for me to maintain here, so I no longer do that.
|
||||
|
||||
#+begin_src nix-ts :tangle modules/home/common/firefox.nix
|
||||
{ config, pkgs, lib, ... }:
|
||||
{ config, pkgs, lib, vars, ... }:
|
||||
{
|
||||
options.swarselmodules.firefox = lib.mkEnableOption "firefox settings";
|
||||
config = lib.mkIf config.swarselmodules.firefox {
|
||||
|
|
@ -12806,7 +12497,7 @@ I used to build the firefox addon =bypass-paywalls-clean= myself here, but the m
|
|||
"browser.startup.homepage" = "https://lobste.rs";
|
||||
};
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -13628,7 +13319,8 @@ This section sets up all the imports that are used in the home-manager section.
|
|||
home.stateVersion = "23.05";
|
||||
imports = [
|
||||
"${self}/modules/home/common/settings.nix"
|
||||
"${self}/modules/shared/sharedsetup.nix"
|
||||
"${self}/modules/shared/options.nix"
|
||||
"${self}/modules/shared/vars.nix"
|
||||
];
|
||||
}
|
||||
#+end_src
|
||||
|
|
@ -13708,7 +13400,7 @@ The rest of the settings is at [[#h:fb3f3e01-7df4-4b06-9e91-aa9cac61a431][gaming
|
|||
The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]. Here, I am setting up the different firefox profiles that I need for the SSO sites that I need to access at work as well as a few ssh shorthands.
|
||||
|
||||
#+begin_src nix-ts :tangle modules/home/optional/work.nix :noweb yes
|
||||
{ self, config, pkgs, lib, nixosConfig ? config, ... }:
|
||||
{ self, config, pkgs, lib, vars, nixosConfig ? config, ... }:
|
||||
let
|
||||
inherit (config.swarselsystems) homeDir;
|
||||
in
|
||||
|
|
@ -13836,7 +13528,7 @@ The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]
|
|||
"browser.startup.homepage" = "${site1}|${site2}";
|
||||
};
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
"${user2}" = lib.recursiveUpdate
|
||||
{
|
||||
inherit isDefault;
|
||||
|
|
@ -13845,13 +13537,13 @@ The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]
|
|||
"browser.startup.homepage" = "${site3}";
|
||||
};
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
"${user3}" = lib.recursiveUpdate
|
||||
{
|
||||
inherit isDefault;
|
||||
id = 3;
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
work = lib.recursiveUpdate
|
||||
{
|
||||
inherit isDefault;
|
||||
|
|
@ -13860,7 +13552,7 @@ The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]
|
|||
"browser.startup.homepage" = "${site4}|${site5}|${site6}|${site7}";
|
||||
};
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -14182,6 +13874,315 @@ This holds configuration that is specific to framework laptops.
|
|||
};
|
||||
}
|
||||
#+end_src
|
||||
** Shared
|
||||
*** Configuration options
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:79f7150f-b162-4f57-abdf-07f40dffd932
|
||||
:END:
|
||||
|
||||
#+begin_src nix-ts :noweb yes :tangle modules/shared/options.nix
|
||||
{ self, config, lib, ... }:
|
||||
{
|
||||
options.swarselsystems = {
|
||||
withHomeManager = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
isSwap = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
swapSize = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "8G";
|
||||
};
|
||||
rootDisk = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
mainUser = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "swarsel";
|
||||
};
|
||||
isCrypted = lib.mkEnableOption "uses full disk encryption";
|
||||
|
||||
isImpermanence = lib.mkEnableOption "use impermanence on this system";
|
||||
isSecureBoot = lib.mkEnableOption "use secure boot on this system";
|
||||
isLaptop = lib.mkEnableOption "laptop host";
|
||||
isNixos = lib.mkEnableOption "nixos host";
|
||||
isPublic = lib.mkEnableOption "is a public machine (no secrets)";
|
||||
isDarwin = lib.mkEnableOption "darwin host";
|
||||
isLinux = lib.mkEnableOption "whether this is a linux machine";
|
||||
isBtrfs = lib.mkEnableOption "use btrfs filesystem";
|
||||
sopsFile = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "${config.swarselsystems.flakePath}/secrets/${config.node.name}/secrets.yaml";
|
||||
};
|
||||
homeDir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/home/swarsel";
|
||||
};
|
||||
xdgDir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/run/user/1000";
|
||||
};
|
||||
flakePath = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/home/swarsel/.dotfiles";
|
||||
};
|
||||
wallpaper = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "${self}/files/wallpaper/lenovowp.png";
|
||||
};
|
||||
sharescreen = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
lowResolution = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
highResolution = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
}
|
||||
#+end_src
|
||||
|
||||
*** Variables (vars; holds firefox & stylix config parts)
|
||||
|
||||
At work I am using several services that are using SSO login - however, as I am using four different accounts at work, this becomes a chore here. Hence, I have defined multiple profiles in [[#h:f0b2ea93-94c8-48d8-8d47-6fe58f58e0e6][Work]] that are all practically using the same configuration. To save screen space, I template that profile here.
|
||||
Set in firefox =about:config > toolkit.legacyUserProfileCustomizations.stylesheets= to true. This should in principle be set automatically using the below config, but it seems not to be working reliably
|
||||
|
||||
For styling, I am using the [[https://github.com/danth/stylix][stylix]] NixOS module, loaded by flake. This package is really great, as it adds nix expressions for basically everything. Ever since switching to this, I did not have to play around with theming anywhere else.
|
||||
|
||||
The full list of nerd-fonts can be found here: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/data/fonts/nerd-fonts/manifests/fonts.json
|
||||
|
||||
This is where the theme for the whole OS is defined. Originally, this noweb-ref section could not be copied to the general NixOS config since they are on different folder structure levels in the config, which would have made the flake impure. By now, I have found out that using the =${self}= method for referencing the flake root, I could circumvent this problem. Also, the noweb-ref block could in general be replaced by a custom attribute set (see for example [[#h:e7f98ad8-74a6-4860-a368-cce154285ff0][firefox]]). The difference here was, for a long time, that this block is used in a NixOS and a home-manager-only configuration, verbatim. If I were to use an attribute set, I would have to duplicate this block once each for NixOS and home-manager. Alas, this block stays (for now). However, I learned how to use an attribute set in a custom home-manager module and pass it to both NixOS and home-manager configurations, which also removed the need for that use of it.
|
||||
|
||||
#+begin_src nix-ts :noweb yes :tangle modules/shared/vars.nix
|
||||
{ self, lib, pkgs, ... }:
|
||||
{
|
||||
_module.args = {
|
||||
vars = {
|
||||
stylix = {
|
||||
polarity = "dark";
|
||||
opacity.popups = 0.5;
|
||||
cursor = {
|
||||
package = pkgs.banana-cursor;
|
||||
# package = pkgs.capitaine-cursors;
|
||||
name = "Banana";
|
||||
# name = "capitaine-cursors";
|
||||
size = 16;
|
||||
};
|
||||
fonts = {
|
||||
sizes = {
|
||||
terminal = 10;
|
||||
applications = 11;
|
||||
};
|
||||
serif = {
|
||||
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
|
||||
package = pkgs.cantarell-fonts;
|
||||
# package = pkgs.montserrat;
|
||||
name = "Cantarell";
|
||||
# name = "FiraCode Nerd Font Propo";
|
||||
# name = "Montserrat";
|
||||
};
|
||||
sansSerif = {
|
||||
# package = (pkgs.nerdfonts.override { fonts = [ "FiraMono" "FiraCode"]; });
|
||||
package = pkgs.cantarell-fonts;
|
||||
# package = pkgs.montserrat;
|
||||
name = "Cantarell";
|
||||
# name = "FiraCode Nerd Font Propo";
|
||||
# name = "Montserrat";
|
||||
};
|
||||
monospace = {
|
||||
package = pkgs.nerd-fonts.fira-mono; # has overrides
|
||||
name = "FiraCode Nerd Font Mono";
|
||||
};
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
stylixHomeTargets = {
|
||||
emacs.enable = false;
|
||||
waybar.enable = false;
|
||||
sway.useWallpaper = false;
|
||||
firefox.profileNames = [ "default" ];
|
||||
};
|
||||
|
||||
firefox = {
|
||||
userChrome = builtins.readFile "${self}/files/firefox/chrome/userChrome.css";
|
||||
extensions = {
|
||||
packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
tridactyl
|
||||
tampermonkey
|
||||
sidebery
|
||||
browserpass
|
||||
clearurls
|
||||
darkreader
|
||||
enhancer-for-youtube
|
||||
istilldontcareaboutcookies
|
||||
translate-web-pages
|
||||
ublock-origin
|
||||
reddit-enhancement-suite
|
||||
sponsorblock
|
||||
web-archives
|
||||
onepassword-password-manager
|
||||
single-file
|
||||
widegithub
|
||||
enhanced-github
|
||||
unpaywall
|
||||
don-t-fuck-with-paste
|
||||
plasma-integration
|
||||
noscript
|
||||
|
||||
# configure a shortcut 'ctrl+shift+c' with behaviour 'do nothing' in order to disable the dev console shortcut
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = "shortkeys";
|
||||
version = "4.0.2";
|
||||
addonId = "Shortkeys@Shortkeys.com";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/3673761/shortkeys-4.0.2.xpi";
|
||||
sha256 = "c6fe12efdd7a871787ac4526eea79ecc1acda8a99724aa2a2a55c88a9acf467c";
|
||||
meta = with lib;
|
||||
{
|
||||
description = "Easily customizable custom keyboard shortcuts for Firefox. To configure this addon go to Addons (ctrl+shift+a) ->Shortkeys ->Options. Report issues here (please specify that the issue is found in Firefox): https://github.com/mikecrittenden/shortkeys";
|
||||
mozPermissions = [
|
||||
"tabs"
|
||||
"downloads"
|
||||
"clipboardWrite"
|
||||
"browsingData"
|
||||
"storage"
|
||||
"bookmarks"
|
||||
"sessions"
|
||||
"<all_urls>"
|
||||
];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
settings =
|
||||
{
|
||||
"extensions.autoDisableScopes" = 0;
|
||||
"browser.bookmarks.showMobileBookmarks" = true;
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
"browser.search.suggest.enabled" = false;
|
||||
"browser.search.suggest.enabled.private" = false;
|
||||
"browser.urlbar.suggest.searches" = false;
|
||||
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
||||
"browser.topsites.contile.enabled" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.snippets" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||
};
|
||||
|
||||
search = {
|
||||
# default = "Kagi";
|
||||
default = "google";
|
||||
# privateDefault = "Kagi";
|
||||
privateDefault = "google";
|
||||
engines = {
|
||||
"Kagi" = {
|
||||
urls = [{
|
||||
template = "https://kagi.com/search";
|
||||
params = [
|
||||
{ name = "q"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
icon = "https://kagi.com/favicon.ico";
|
||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
||||
definedAliases = [ "@k" ];
|
||||
};
|
||||
|
||||
"Nix Packages" = {
|
||||
urls = [{
|
||||
template = "https://search.nixos.org/packages";
|
||||
params = [
|
||||
{ name = "type"; value = "packages"; }
|
||||
{ name = "query"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = [ "@np" ];
|
||||
};
|
||||
|
||||
"NixOS Wiki" = {
|
||||
urls = [{
|
||||
template = "https://nixos.wiki/index.php?search={searchTerms}";
|
||||
}];
|
||||
icon = "https://nixos.wiki/favicon.png";
|
||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
||||
definedAliases = [ "@nw" ];
|
||||
};
|
||||
|
||||
"NixOS Options" = {
|
||||
urls = [{
|
||||
template = "https://search.nixos.org/options";
|
||||
params = [
|
||||
{ name = "query"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = [ "@no" ];
|
||||
};
|
||||
|
||||
"Home Manager Options" = {
|
||||
urls = [{
|
||||
template = "https://home-manager-options.extranix.com/";
|
||||
params = [
|
||||
{ name = "query"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
|
||||
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||
definedAliases = [ "@hm" "@ho" "@hmo" ];
|
||||
};
|
||||
|
||||
"Confluence search" = {
|
||||
urls = [{
|
||||
template = "https://vbc.atlassian.net/wiki/search";
|
||||
params = [
|
||||
{ name = "text"; value = "{searchTerms}"; }
|
||||
];
|
||||
}];
|
||||
|
||||
definedAliases = [ "@c" "@cf" "@confluence" ];
|
||||
};
|
||||
|
||||
"Jira search" = {
|
||||
urls = [{
|
||||
template = "https://vbc.atlassian.net/issues/";
|
||||
params = [
|
||||
{ name = "jql"; value = "textfields ~ \"{searchTerms}*\"&wildcardFlag=true"; }
|
||||
];
|
||||
}];
|
||||
|
||||
definedAliases = [ "@j" "@jire" ];
|
||||
};
|
||||
|
||||
"google".metaData.alias = "@g";
|
||||
};
|
||||
force = true; # this is required because otherwise the search.json.mozlz4 symlink gets replaced on every firefox restart
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
#+end_src
|
||||
|
||||
** Packages
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:64a5cc16-6b16-4802-b421-c67ccef853e1
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
{ self, lib, ... }:
|
||||
{ lib, ... }:
|
||||
let
|
||||
importNames = lib.swarselsystems.readNix "modules/home/common";
|
||||
sharedNames = lib.swarselsystems.readNix "modules/shared";
|
||||
in
|
||||
{
|
||||
imports = lib.swarselsystems.mkImports importNames "modules/home/common" ++ [
|
||||
"${self}/modules/shared/sharedsetup.nix"
|
||||
];
|
||||
imports = lib.swarselsystems.mkImports importNames "modules/home/common" ++
|
||||
lib.swarselsystems.mkImports sharedNames "modules/shared";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{ config, pkgs, lib, vars, ... }:
|
||||
{
|
||||
options.swarselmodules.firefox = lib.mkEnableOption "firefox settings";
|
||||
config = lib.mkIf config.swarselmodules.firefox {
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
"browser.startup.homepage" = "https://lobste.rs";
|
||||
};
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
{ lib, config, ... }:
|
||||
{ lib, config, vars, ... }:
|
||||
{
|
||||
options.swarselmodules.stylix = lib.mkEnableOption "stylix settings";
|
||||
config = lib.mkIf config.swarselmodules.stylix {
|
||||
stylix = lib.mkIf (!config.swarselsystems.isNixos) (lib.recursiveUpdate
|
||||
{
|
||||
image = config.swarselsystems.wallpaper;
|
||||
targets = config.swarselsystems.stylixHomeTargets;
|
||||
targets = vars.stylixHomeTargets;
|
||||
}
|
||||
config.swarselsystems.stylix);
|
||||
vars.stylix);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
home.stateVersion = "23.05";
|
||||
imports = [
|
||||
"${self}/modules/home/common/settings.nix"
|
||||
"${self}/modules/shared/sharedsetup.nix"
|
||||
"${self}/modules/shared/options.nix"
|
||||
"${self}/modules/shared/vars.nix"
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ self, config, pkgs, lib, nixosConfig ? config, ... }:
|
||||
{ self, config, pkgs, lib, vars, nixosConfig ? config, ... }:
|
||||
let
|
||||
inherit (config.swarselsystems) homeDir;
|
||||
in
|
||||
|
|
@ -126,7 +126,7 @@ in
|
|||
"browser.startup.homepage" = "${site1}|${site2}";
|
||||
};
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
"${user2}" = lib.recursiveUpdate
|
||||
{
|
||||
inherit isDefault;
|
||||
|
|
@ -135,13 +135,13 @@ in
|
|||
"browser.startup.homepage" = "${site3}";
|
||||
};
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
"${user3}" = lib.recursiveUpdate
|
||||
{
|
||||
inherit isDefault;
|
||||
id = 3;
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
work = lib.recursiveUpdate
|
||||
{
|
||||
inherit isDefault;
|
||||
|
|
@ -150,7 +150,7 @@ in
|
|||
"browser.startup.homepage" = "${site4}|${site5}|${site6}|${site7}";
|
||||
};
|
||||
}
|
||||
config.swarselsystems.firefox;
|
||||
vars.firefox;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{ self, lib, config, ... }:
|
||||
{ self, lib, config, vars, ... }:
|
||||
{
|
||||
options.swarselmodules.stylix = lib.mkEnableOption "stylix config";
|
||||
config = {
|
||||
|
|
@ -11,10 +11,10 @@
|
|||
targets.grub.enable = false; # the styling makes grub more ugly
|
||||
image = config.swarselsystems.wallpaper;
|
||||
}
|
||||
config.swarselsystems.stylix);
|
||||
vars.stylix);
|
||||
home-manager.users."${config.swarselsystems.mainUser}" = {
|
||||
stylix = {
|
||||
targets = config.swarselsystems.stylixHomeTargets;
|
||||
targets = vars.stylixHomeTargets;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
{ self, lib, ... }:
|
||||
{ lib, ... }:
|
||||
let
|
||||
importNames = lib.swarselsystems.readNix "modules/nixos/common";
|
||||
sharedNames = lib.swarselsystems.readNix "modules/shared";
|
||||
in
|
||||
{
|
||||
imports = lib.swarselsystems.mkImports importNames "modules/nixos/common" ++ [
|
||||
"${self}/modules/shared/sharedsetup.nix"
|
||||
];
|
||||
|
||||
|
||||
imports = lib.swarselsystems.mkImports importNames "modules/nixos/common" ++
|
||||
lib.swarselsystems.mkImports sharedNames "modules/shared";
|
||||
}
|
||||
|
|
|
|||
67
modules/shared/options.nix
Normal file
67
modules/shared/options.nix
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
{ self, config, lib, ... }:
|
||||
{
|
||||
options.swarselsystems = {
|
||||
withHomeManager = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
isSwap = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
swapSize = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "8G";
|
||||
};
|
||||
rootDisk = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
mainUser = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "swarsel";
|
||||
};
|
||||
isCrypted = lib.mkEnableOption "uses full disk encryption";
|
||||
|
||||
isImpermanence = lib.mkEnableOption "use impermanence on this system";
|
||||
isSecureBoot = lib.mkEnableOption "use secure boot on this system";
|
||||
isLaptop = lib.mkEnableOption "laptop host";
|
||||
isNixos = lib.mkEnableOption "nixos host";
|
||||
isPublic = lib.mkEnableOption "is a public machine (no secrets)";
|
||||
isDarwin = lib.mkEnableOption "darwin host";
|
||||
isLinux = lib.mkEnableOption "whether this is a linux machine";
|
||||
isBtrfs = lib.mkEnableOption "use btrfs filesystem";
|
||||
sopsFile = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "${config.swarselsystems.flakePath}/secrets/${config.node.name}/secrets.yaml";
|
||||
};
|
||||
homeDir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/home/swarsel";
|
||||
};
|
||||
xdgDir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/run/user/1000";
|
||||
};
|
||||
flakePath = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/home/swarsel/.dotfiles";
|
||||
};
|
||||
wallpaper = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "${self}/files/wallpaper/lenovowp.png";
|
||||
};
|
||||
sharescreen = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
lowResolution = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
highResolution = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,72 +1,8 @@
|
|||
{ self, config, lib, pkgs, ... }:
|
||||
{ self, lib, pkgs, ... }:
|
||||
{
|
||||
options.swarselsystems = {
|
||||
withHomeManager = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
isSwap = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
};
|
||||
swapSize = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "8G";
|
||||
};
|
||||
rootDisk = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
mainUser = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "swarsel";
|
||||
};
|
||||
isCrypted = lib.mkEnableOption "uses full disk encryption";
|
||||
|
||||
isImpermanence = lib.mkEnableOption "use impermanence on this system";
|
||||
isSecureBoot = lib.mkEnableOption "use secure boot on this system";
|
||||
isLaptop = lib.mkEnableOption "laptop host";
|
||||
isNixos = lib.mkEnableOption "nixos host";
|
||||
isPublic = lib.mkEnableOption "is a public machine (no secrets)";
|
||||
isDarwin = lib.mkEnableOption "darwin host";
|
||||
isLinux = lib.mkEnableOption "whether this is a linux machine";
|
||||
isBtrfs = lib.mkEnableOption "use btrfs filesystem";
|
||||
sopsFile = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "${config.swarselsystems.flakePath}/secrets/${config.node.name}/secrets.yaml";
|
||||
};
|
||||
homeDir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/home/swarsel";
|
||||
};
|
||||
xdgDir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/run/user/1000";
|
||||
};
|
||||
flakePath = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/home/swarsel/.dotfiles";
|
||||
};
|
||||
wallpaper = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "${self}/files/wallpaper/lenovowp.png";
|
||||
};
|
||||
sharescreen = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
lowResolution = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
highResolution = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
};
|
||||
|
||||
stylix = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = {
|
||||
_module.args = {
|
||||
vars = {
|
||||
stylix = {
|
||||
polarity = "dark";
|
||||
opacity.popups = 0.5;
|
||||
cursor = {
|
||||
|
|
@ -107,20 +43,15 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
stylixHomeTargets = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = {
|
||||
|
||||
stylixHomeTargets = {
|
||||
emacs.enable = false;
|
||||
waybar.enable = false;
|
||||
sway.useWallpaper = false;
|
||||
firefox.profileNames = [ "default" ];
|
||||
};
|
||||
};
|
||||
|
||||
firefox = lib.mkOption {
|
||||
type = lib.types.attrs;
|
||||
default = {
|
||||
firefox = {
|
||||
userChrome = builtins.readFile "${self}/files/firefox/chrome/userChrome.css";
|
||||
extensions = {
|
||||
packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"data": "ENC[AES256_GCM,data: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,iv:0eoQAssueYsHRvU1qHTSdryeZxeTYv+mDMt2uQR64hA=,tag:N62wqpHutX4mUAFkfiS6vQ==,type:str]",
|
||||
"data": "ENC[AES256_GCM,data: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,iv:I78O1MiGdRLzf7mA2MpIO0fdwjin1dDh82q4sRbOuMg=,tag:UQyx7W8C8FWmKGyVT9SpCg==,type:str]",
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
|
|
@ -27,8 +27,8 @@
|
|||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtU240VjVRZmJ5TGsrclJF\nRXRLbTRCZURtR0Z3d2E2eDNNeGRDODlXVEY4CllTeVFYbDJQWlRSS1RFLzAxSnlM\nZi9NU1c3cWo3YWRLcUJ2U2ZFWFBBVEEKLS0tIGtmZU9qSWdBT3RDeStaaFFDSWtk\ndkUzZXJwZUl4LzVxYXdidmxXRnNnclUKyAMZqCKSY/RQvTR4bbjLaPnGKwdBcHXc\nvtiVSrLdIdzMa6id/J07TJH5UesUmcp0wjU41MDa4aMBLy+cXhuBHA==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2025-07-17T19:51:34Z",
|
||||
"mac": "ENC[AES256_GCM,data:c+ayFaTrFkoUcXF2YU5boi4twMg3ZUEPwAc8CUvIjxZWDVgqb4WZHPJ9j9T4hdZZq0URGAPTi4x8EXGTxv0pl7EQnAEYZEXPFwFjbuMzBvmsRfCsxeGFkgX1R3wg2PPs5ssXP22+rm7nuLKa91bloX5h3H7b1VbFQkWDJMg5QtM=,iv:5SblNcf0wAYHGd8NvCvxKTsg3ktr96aF6nUBtuZnfoM=,tag:ZIbmfUuW97RYbEqZn7iEnA==,type:str]",
|
||||
"lastmodified": "2025-07-21T20:19:47Z",
|
||||
"mac": "ENC[AES256_GCM,data:vInt6XxnE3LhpOS/Q9gKI9We9PhC5hWcDDUTQ8LjGbLeXmC3wZb3E1gk8xZZRSCHr87Mb5tFG4fuMYLBLF9TGzbW5fYE6QgyshtszQZTh6CrbxrIQT2AWPPnUkBn46bOT1NEcIi3/oMUPUlDm5DxM2VUX5WnbzNTjif1g/khhtg=,iv:vAK5b2WB+ly48b92/Nd+6JjkPSikVYOuGN2KdF0W1Q0=,tag:xBS8uvcoh1D89qIcXSuy6A==,type:str]",
|
||||
"pgp": [
|
||||
{
|
||||
"created_at": "2025-06-13T20:13:06Z",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue