feat: refactored configs to follow modules pattern
This commit is contained in:
parent
149f4f151f
commit
4eb36ddfc7
29 changed files with 169 additions and 1481 deletions
|
|
@ -1,16 +0,0 @@
|
||||||
{...}: {
|
|
||||||
host = {
|
|
||||||
users = {
|
|
||||||
leyla = {
|
|
||||||
isDesktopUser = true;
|
|
||||||
isTerminalUser = true;
|
|
||||||
isPrincipleUser = true;
|
|
||||||
};
|
|
||||||
eve.isNormalUser = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = 5;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./configuration.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
users = config.host.users;
|
|
||||||
in {
|
|
||||||
leyla = lib.mkIf users.leyla.isNormalUser (import ./leyla);
|
|
||||||
eve = lib.mkIf users.eve.isNormalUser (import ./eve);
|
|
||||||
git = lib.mkIf (osConfig.services.forgejo.enable or false) (import ./git);
|
|
||||||
}
|
|
||||||
|
|
@ -1,56 +0,0 @@
|
||||||
{osConfig, ...}: let
|
|
||||||
userConfig = osConfig.host.users.eve;
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
./packages.nix
|
|
||||||
./gnomeconf.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = userConfig.name;
|
|
||||||
homeDirectory = osConfig.users.users.eve.home;
|
|
||||||
|
|
||||||
# This value determines the Home Manager release that your configuration is
|
|
||||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
|
||||||
# introduces backwards incompatible changes.
|
|
||||||
#
|
|
||||||
# You should not change this value, even if you update Home Manager. If you do
|
|
||||||
# want to update the value, then make sure to first check the Home Manager
|
|
||||||
# release notes.
|
|
||||||
stateVersion = "23.11"; # Please read the comment before changing.
|
|
||||||
|
|
||||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
|
||||||
# plain files is through 'home.file'.
|
|
||||||
file = {
|
|
||||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
|
||||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
|
||||||
# # symlink to the Nix store copy.
|
|
||||||
# ".screenrc".source = dotfiles/screenrc;
|
|
||||||
|
|
||||||
# # You can also set the file content immediately.
|
|
||||||
# ".gradle/gradle.properties".text = ''
|
|
||||||
# org.gradle.console=verbose
|
|
||||||
# org.gradle.daemon.idletimeout=3600000
|
|
||||||
# '';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Home Manager can also manage your environment variables through
|
|
||||||
# 'home.sessionVariables'. If you don't want to manage your shell through Home
|
|
||||||
# Manager then you have to manually source 'hm-session-vars.sh' located at
|
|
||||||
# either
|
|
||||||
#
|
|
||||||
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
# or
|
|
||||||
#
|
|
||||||
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
# or
|
|
||||||
#
|
|
||||||
# /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
sessionVariables = {
|
|
||||||
# EDITOR = "emacs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
{
|
|
||||||
osConfig,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config = {
|
|
||||||
gnome = lib.mkMerge [
|
|
||||||
{
|
|
||||||
colorScheme = "prefer-dark";
|
|
||||||
accentColor = "slate";
|
|
||||||
clockFormat = "24h";
|
|
||||||
nightLight = {
|
|
||||||
enable = true;
|
|
||||||
automatic = false;
|
|
||||||
fromTime = 12.0;
|
|
||||||
toTime = 11.999999999999;
|
|
||||||
temperature = 2700;
|
|
||||||
};
|
|
||||||
extraWindowControls = true;
|
|
||||||
extensions = {
|
|
||||||
dash-to-panel = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
(lib.mkIf (osConfig.networking.hostName == "horizon") {
|
|
||||||
displayScaling = 125;
|
|
||||||
experimentalFeatures = {
|
|
||||||
scaleMonitorFramebuffer = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
dconf = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
userConfig = osConfig.host.users.eve;
|
|
||||||
hardware = osConfig.host.hardware;
|
|
||||||
in {
|
|
||||||
config = {
|
|
||||||
nixpkgs.config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Packages that can be installed without any extra configuration
|
|
||||||
# See https://search.nixos.org/packages for all options
|
|
||||||
home.packages = lib.lists.optionals userConfig.isDesktopUser (
|
|
||||||
with pkgs; [
|
|
||||||
gnomeExtensions.dash-to-panel
|
|
||||||
claude-code
|
|
||||||
friture
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
# Packages that need to be installed with some extra configuration
|
|
||||||
# See https://home-manager-options.extranix.com/ for all options
|
|
||||||
programs = lib.mkMerge [
|
|
||||||
{
|
|
||||||
# Let Home Manager install and manage itself.
|
|
||||||
home-manager.enable = true;
|
|
||||||
}
|
|
||||||
(lib.mkIf (config.user.isDesktopUser || config.user.isTerminalUser) {
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
signing.format = "openpgp";
|
|
||||||
settings = {
|
|
||||||
user.name = "Eve";
|
|
||||||
user.email = "evesnrobins@gmail.com";
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
openssh = {
|
|
||||||
enable = true;
|
|
||||||
hostKeys = [
|
|
||||||
{
|
|
||||||
type = "ed25519";
|
|
||||||
path = "${config.home.username}_${osConfig.networking.hostName}_ed25519";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(lib.mkIf config.user.isDesktopUser {
|
|
||||||
vscode = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.vscodium;
|
|
||||||
};
|
|
||||||
|
|
||||||
firefox.enable = true;
|
|
||||||
bitwarden.enable = true;
|
|
||||||
discord.enable = true;
|
|
||||||
makemkv.enable = true;
|
|
||||||
signal-desktop.enable = true;
|
|
||||||
steam.enable = true;
|
|
||||||
piper.enable = hardware.piperMouse.enable;
|
|
||||||
krita.enable = true;
|
|
||||||
ungoogled-chromium.enable = true;
|
|
||||||
|
|
||||||
inkscape.enable = true;
|
|
||||||
obsidian.enable = true;
|
|
||||||
obs-studio.enable = true;
|
|
||||||
kdenlive.enable = true;
|
|
||||||
tor-browser.enable = true;
|
|
||||||
olympus.enable = true;
|
|
||||||
libreoffice.enable = true;
|
|
||||||
noita-entangled-worlds.enable = true;
|
|
||||||
|
|
||||||
opencode.enable = osConfig.host.ai.enable;
|
|
||||||
|
|
||||||
e621-downloader.enable = true;
|
|
||||||
|
|
||||||
# Windows applications that we need to figure out how to install
|
|
||||||
guild-wars-2.enable = false;
|
|
||||||
vortex.enable = false;
|
|
||||||
dungeon-draft.enable = false;
|
|
||||||
vmware-workstation.enable = true;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{osConfig, ...}: {
|
|
||||||
impermanence.fallbackPersistence.enable = false;
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = osConfig.users.users.git.name;
|
|
||||||
homeDirectory = osConfig.users.users.git.home;
|
|
||||||
|
|
||||||
# This value determines the Home Manager release that your configuration is
|
|
||||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
|
||||||
# introduces backwards incompatible changes.
|
|
||||||
#
|
|
||||||
# You should not change this value, even if you update Home Manager. If you do
|
|
||||||
# want to update the value, then make sure to first check the Home Manager
|
|
||||||
# release notes.
|
|
||||||
stateVersion = "23.11"; # Please read the comment before changing.
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh.extraConfig = ''
|
|
||||||
AuthorizedKeysFile
|
|
||||||
/var/lib/forgejo/.ssh/authorized_keys
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -1,101 +0,0 @@
|
||||||
{...}: {
|
|
||||||
config = {
|
|
||||||
gnome = {
|
|
||||||
extraWindowControls = true;
|
|
||||||
colorScheme = "prefer-dark";
|
|
||||||
clockFormat = "24h";
|
|
||||||
nightLight = {
|
|
||||||
enable = true;
|
|
||||||
automatic = false;
|
|
||||||
fromTime = 12.0;
|
|
||||||
toTime = 11.999999999999;
|
|
||||||
temperature = 2700;
|
|
||||||
};
|
|
||||||
extensions = {
|
|
||||||
dash-to-dock = {
|
|
||||||
enable = true;
|
|
||||||
options = {
|
|
||||||
"dock-position" = "LEFT";
|
|
||||||
"intellihide-mode" = "ALL_WINDOWS";
|
|
||||||
"show-trash" = false;
|
|
||||||
"require-pressure-to-show" = false;
|
|
||||||
"show-mounts" = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
hotkeys = {
|
|
||||||
"Open Terminal" = {
|
|
||||||
binding = "<Super>t";
|
|
||||||
command = "kgx";
|
|
||||||
};
|
|
||||||
"Open Firefox" = {
|
|
||||||
binding = "<Super>f";
|
|
||||||
command = "firefox";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
dconf = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
"org/gnome/shell" = {
|
|
||||||
favorite-apps = ["org.gnome.Nautilus.desktop" "firefox.desktop" "codium.desktop" "steam.desktop" "org.gnome.Console.desktop"];
|
|
||||||
# app-picker-layout =
|
|
||||||
# builtins.map (
|
|
||||||
# applications:
|
|
||||||
# lib.hm.gvariant (builtins.listToAttrs (lib.lists.imap0 (i: v: lib.attrsets.nameValuePair v (lib.hm.gvariant.mkVariant "{'position': <${i}>}")) applications))
|
|
||||||
# ) [
|
|
||||||
# [
|
|
||||||
# "org.gnome.Nautilus.desktop"
|
|
||||||
# "bitwarden.desktop"
|
|
||||||
# "firefox.desktop"
|
|
||||||
# "torbrowser.desktop"
|
|
||||||
# "chromium-browser.desktop"
|
|
||||||
# "codium.desktop"
|
|
||||||
# "idea-community.desktop"
|
|
||||||
# "org.gnome.TextEditor.desktop"
|
|
||||||
# "dbeaver.desktop"
|
|
||||||
# "bruno.desktop"
|
|
||||||
# "anki.desktop"
|
|
||||||
# "obsidian.desktop"
|
|
||||||
# "signal-desktop.desktop"
|
|
||||||
# "discord.desktop"
|
|
||||||
# "gimp.desktop"
|
|
||||||
# "org.inkscape.Inkscape.desktop"
|
|
||||||
# "org.kde.krita.desktop"
|
|
||||||
# "davinci-resolve.desktop"
|
|
||||||
# "com.obsproject.Studio.desktop"
|
|
||||||
# "org.freecad.FreeCAD.desktop"
|
|
||||||
# "makemkv.desktop"
|
|
||||||
# "easytag.desktop"
|
|
||||||
# "transmission-gtk.desktop"
|
|
||||||
# ]
|
|
||||||
# [
|
|
||||||
# "SteamVR.desktop"
|
|
||||||
# "Beat Saber.desktop"
|
|
||||||
# "Noun Town.desktop"
|
|
||||||
# "WEBFISHING.desktop"
|
|
||||||
# "Factorio.desktop"
|
|
||||||
# ]
|
|
||||||
# [
|
|
||||||
# "org.gnome.Settings.desktop"
|
|
||||||
# "org.gnome.SystemMonitor.desktop"
|
|
||||||
# "org.gnome.Snapshot.desktop"
|
|
||||||
# "org.gnome.Usage.desktop"
|
|
||||||
# "org.gnome.DiskUtility.desktop"
|
|
||||||
# "org.gnome.Evince.desktop"
|
|
||||||
# "org.gnome.fonts.desktop"
|
|
||||||
# "noisetorch.desktop"
|
|
||||||
# "nvidia-settings.desktop"
|
|
||||||
# "OpnRGB.desktop"
|
|
||||||
# "org.freedesktop.Piper.desktop"
|
|
||||||
# "via-nativia.desktop"
|
|
||||||
# "protonvpn-app.desktop"
|
|
||||||
# "simple-scan.desktop"
|
|
||||||
# ]
|
|
||||||
# ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
./packages
|
|
||||||
./i18n.nix
|
|
||||||
./impermanence.nix
|
|
||||||
./dconf.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
impermanence.enable = osConfig.storage.impermanence.enable;
|
|
||||||
|
|
||||||
# Home Manager needs a bit of information about you and the paths it should
|
|
||||||
# manage.
|
|
||||||
home = {
|
|
||||||
username = osConfig.host.users.leyla.name;
|
|
||||||
homeDirectory = osConfig.users.users.leyla.home;
|
|
||||||
|
|
||||||
# This value determines the Home Manager release that your configuration is
|
|
||||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
|
||||||
# introduces backwards incompatible changes.
|
|
||||||
#
|
|
||||||
# You should not change this value, even if you update Home Manager. If you do
|
|
||||||
# want to update the value, then make sure to first check the Home Manager
|
|
||||||
# release notes.
|
|
||||||
stateVersion = "23.11"; # Please read the comment before changing.
|
|
||||||
|
|
||||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
|
||||||
# plain files is through 'home.file'.
|
|
||||||
file = {
|
|
||||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
|
||||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
|
||||||
# # symlink to the Nix store copy.
|
|
||||||
# ".screenrc".source = dotfiles/screenrc;
|
|
||||||
|
|
||||||
# # You can also set the file content immediately.
|
|
||||||
# ".gradle/gradle.properties".text = ''
|
|
||||||
# org.gradle.console=verbose
|
|
||||||
# org.gradle.daemon.idletimeout=3600000
|
|
||||||
# '';
|
|
||||||
"${config.xdg.configHome}/user-dirs.dirs" = {
|
|
||||||
force = true;
|
|
||||||
text = ''
|
|
||||||
# This file is written by xdg-user-dirs-update
|
|
||||||
# If you want to change or add directories, just edit the line you're
|
|
||||||
# interested in. All local changes will be retained on the next run.
|
|
||||||
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
|
||||||
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
|
||||||
# absolute path. No other format is supported.
|
|
||||||
#
|
|
||||||
XDG_DESKTOP_DIR="$HOME/desktop"
|
|
||||||
XDG_DOWNLOAD_DIR="$HOME/downloads"
|
|
||||||
XDG_DOCUMENTS_DIR="$HOME/documents"
|
|
||||||
XDG_TEMPLATES_DIR="$HOME/documents/templates"
|
|
||||||
XDG_MUSIC_DIR="$HOME/documents/music"
|
|
||||||
XDG_PICTURES_DIR="$HOME/documents/photos"
|
|
||||||
XDG_VIDEOS_DIR="$HOME/documents/videos"
|
|
||||||
XDG_PUBLICSHARE_DIR="$HOME/documents/public"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
keyboard.layout = "us,it,de";
|
|
||||||
|
|
||||||
# Home Manager can also manage your environment variables through
|
|
||||||
# 'home.sessionVariables'. If you don't want to manage your shell through Home
|
|
||||||
# Manager then you have to manually source 'hm-session-vars.sh' located at
|
|
||||||
# either
|
|
||||||
#
|
|
||||||
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
# or
|
|
||||||
#
|
|
||||||
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
# or
|
|
||||||
#
|
|
||||||
# /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
sessionVariables = {
|
|
||||||
# EDITOR = "emacs";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: move this into a fonts module
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
aileron
|
|
||||||
];
|
|
||||||
fonts.fontconfig.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
{...}: {
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = "en_IE.UTF-8";
|
|
||||||
|
|
||||||
extraLocaleSettings = {
|
|
||||||
# LC_ADDRESS = "en_IE.UTF-8"; # lets just get used to this one now
|
|
||||||
# LC_TELEPHONE = "en_IE.UTF-8"; # lets just get used to this one now
|
|
||||||
LC_MONETARY = "en_US.UTF-8"; # to be changed once I move
|
|
||||||
LC_PAPER = "en_US.UTF-8"; # convenient for american printers until I move
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config = lib.mkIf (config.impermanence.enable) {
|
|
||||||
home.persistence."${config.impermanence.persistencePath}" = {
|
|
||||||
directories = [
|
|
||||||
"desktop"
|
|
||||||
"downloads"
|
|
||||||
"documents"
|
|
||||||
];
|
|
||||||
files = [
|
|
||||||
".bash_history" # keep shell history around
|
|
||||||
"${config.xdg.dataHome}/recently-used.xbel" # gnome recently viewed files
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,98 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
hardware = osConfig.host.hardware;
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
./vscode
|
|
||||||
./firefox
|
|
||||||
./direnv.nix
|
|
||||||
./openssh.nix
|
|
||||||
./git.nix
|
|
||||||
./makemkv.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
config = lib.mkMerge [
|
|
||||||
{
|
|
||||||
programs = lib.mkMerge [
|
|
||||||
{
|
|
||||||
# Let Home Manager install and manage itself.
|
|
||||||
home-manager.enable = true;
|
|
||||||
}
|
|
||||||
(lib.mkIf (config.user.isTerminalUser || config.user.isDesktopUser) {
|
|
||||||
bash.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
openssh.enable = true;
|
|
||||||
})
|
|
||||||
(lib.mkIf config.user.isDesktopUser {
|
|
||||||
bitwarden.enable = true;
|
|
||||||
obs-studio.enable = hardware.graphicsAcceleration.enable;
|
|
||||||
qbittorrent.enable = true;
|
|
||||||
prostudiomasters.enable = true;
|
|
||||||
protonvpn-gui.enable = true;
|
|
||||||
dbeaver-bin.enable = true;
|
|
||||||
bruno.enable = true;
|
|
||||||
piper.enable = hardware.piperMouse.enable;
|
|
||||||
proxmark3.enable = true;
|
|
||||||
openrgb.enable = hardware.openRGB.enable;
|
|
||||||
via.enable = hardware.viaKeyboard.enable;
|
|
||||||
claude-code.enable = osConfig.host.ai.enable;
|
|
||||||
opencode.enable = osConfig.host.ai.enable;
|
|
||||||
davinci-resolve.enable = hardware.graphicsAcceleration.enable;
|
|
||||||
mfoc.enable = true;
|
|
||||||
})
|
|
||||||
(lib.mkIf (hardware.directAccess.enable && config.user.isDesktopUser) {
|
|
||||||
anki.enable = true;
|
|
||||||
android-studio.enable = true;
|
|
||||||
makemkv.enable = true;
|
|
||||||
discord.enable = true;
|
|
||||||
signal-desktop.enable = true;
|
|
||||||
calibre.enable = true;
|
|
||||||
obsidian.enable = true;
|
|
||||||
jetbrains.idea-oss.enable = true;
|
|
||||||
vscode.enable = true;
|
|
||||||
firefox.enable = true;
|
|
||||||
steam.enable = true;
|
|
||||||
krita.enable = true;
|
|
||||||
ungoogled-chromium.enable = true;
|
|
||||||
libreoffice.enable = true;
|
|
||||||
mapillary-uploader.enable = true;
|
|
||||||
inkscape.enable = true;
|
|
||||||
gimp.enable = true;
|
|
||||||
freecad.enable = true;
|
|
||||||
onionshare.enable = true;
|
|
||||||
pdfarranger.enable = true;
|
|
||||||
picard.enable = true;
|
|
||||||
qflipper.enable = true;
|
|
||||||
openvpn.enable = true;
|
|
||||||
noisetorch.enable = true;
|
|
||||||
noita-entangled-worlds.enable = true;
|
|
||||||
tor-browser.enable = true;
|
|
||||||
gdx-liftoff.enable = true;
|
|
||||||
proton-mail-pwa.enable = true;
|
|
||||||
proton-calendar-pwa.enable = true;
|
|
||||||
matrix-cyberia-pwa.enable = true;
|
|
||||||
kicad.enable = true;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
(lib.mkIf config.user.isTerminalUser {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# command line tools
|
|
||||||
sox
|
|
||||||
yt-dlp
|
|
||||||
ffmpeg
|
|
||||||
imagemagick
|
|
||||||
];
|
|
||||||
})
|
|
||||||
(lib.mkIf config.user.isDesktopUser {
|
|
||||||
nixpkgs.config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
userConfig = osConfig.host.users.leyla;
|
|
||||||
in {
|
|
||||||
config = lib.mkIf userConfig.isDesktopUser {
|
|
||||||
programs = {
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
config = {
|
|
||||||
global.hide_env_diff = true;
|
|
||||||
whitelist.exact = ["${config.home.homeDirectory}/documents/code/nix-config"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,161 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.firefox = {
|
|
||||||
profiles.leyla = {
|
|
||||||
bookmarks = {
|
|
||||||
force = true;
|
|
||||||
settings = [
|
|
||||||
# Personal Services
|
|
||||||
{
|
|
||||||
name = "Media";
|
|
||||||
url = "https://media.jan-leila.com/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Photos";
|
|
||||||
url = "https://photos.jan-leila.com";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Git";
|
|
||||||
url = "https://git.jan-leila.com/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Home Automation";
|
|
||||||
url = "https://home.jan-leila.com/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Search";
|
|
||||||
url = "https://search.jan-leila.com/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Budget";
|
|
||||||
url = "https://budget.jan-leila.com/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Documents";
|
|
||||||
url = "https://documents.jan-leila.com/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
|
|
||||||
# Defiant Server Services
|
|
||||||
{
|
|
||||||
name = "QBittorrent";
|
|
||||||
url = "http://defiant:8084";
|
|
||||||
keyword = "";
|
|
||||||
tags = ["defiant"];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Sonarr";
|
|
||||||
url = "http://defiant:8989";
|
|
||||||
keyword = "";
|
|
||||||
tags = ["defiant"];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Radarr";
|
|
||||||
url = "http://defiant:7878";
|
|
||||||
keyword = "";
|
|
||||||
tags = ["defiant"];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Bazarr";
|
|
||||||
url = "http://defiant:6767";
|
|
||||||
keyword = "";
|
|
||||||
tags = ["defiant"];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Lidarr";
|
|
||||||
url = "http://defiant:8686";
|
|
||||||
keyword = "";
|
|
||||||
tags = ["defiant"];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Jackett";
|
|
||||||
url = "http://defiant:9117";
|
|
||||||
keyword = "";
|
|
||||||
tags = ["defiant"];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Crab-hole DNS";
|
|
||||||
url = "http://defiant:8085";
|
|
||||||
keyword = "";
|
|
||||||
tags = ["defiant"];
|
|
||||||
}
|
|
||||||
|
|
||||||
# External Services
|
|
||||||
{
|
|
||||||
name = "Mail";
|
|
||||||
url = "https://mail.protonmail.com";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Open Street Map";
|
|
||||||
url = "https://www.openstreetmap.org/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Password Manager";
|
|
||||||
url = "https://vault.bitwarden.com/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Mastodon";
|
|
||||||
url = "https://mspsocial.net";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Linked In";
|
|
||||||
url = "https://www.linkedin.com/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Job Search";
|
|
||||||
url = "https://www.jobsinnetwork.com/?state=cleaned_history&language%5B%5D=en&query=react&locations.countryCode%5B%5D=IT&locations.countryCode%5B%5D=DE&locations.countryCode%5B%5D=NL&experience%5B%5D=medior&experience%5B%5D=junior&page=1";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "React Docs";
|
|
||||||
url = "https://react.dev/";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Cyberia Matrix";
|
|
||||||
url = "https://chat.cyberia.club";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Cyberia Git";
|
|
||||||
url = "https://git.cyberia.club";
|
|
||||||
keyword = "";
|
|
||||||
tags = [""];
|
|
||||||
}
|
|
||||||
# Template
|
|
||||||
# {
|
|
||||||
# name = "";
|
|
||||||
# url = "";
|
|
||||||
# keyword = "";
|
|
||||||
# tags = [""];
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
./firefox.nix
|
|
||||||
./bookmarks.nix
|
|
||||||
./harden.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
programs.firefox = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,191 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.firefox = {
|
|
||||||
profiles.leyla = {
|
|
||||||
settings = {
|
|
||||||
"browser.search.defaultenginename" = "Searx";
|
|
||||||
"browser.search.order.1" = "Searx";
|
|
||||||
};
|
|
||||||
|
|
||||||
search = {
|
|
||||||
force = true;
|
|
||||||
default = "Searx";
|
|
||||||
engines = {
|
|
||||||
"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"];
|
|
||||||
};
|
|
||||||
"Searx" = {
|
|
||||||
urls = [{template = "https://search.jan-leila.com/?q={searchTerms}";}];
|
|
||||||
icon = "https://nixos.wiki/favicon.png";
|
|
||||||
updateInterval = 24 * 60 * 60 * 1000; # every day
|
|
||||||
definedAliases = ["@searx"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extensions.packages = with inputs.firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; [
|
|
||||||
bitwarden
|
|
||||||
terms-of-service-didnt-read
|
|
||||||
multi-account-containers
|
|
||||||
shinigami-eyes
|
|
||||||
|
|
||||||
ublock-origin
|
|
||||||
sponsorblock
|
|
||||||
dearrow
|
|
||||||
df-youtube
|
|
||||||
return-youtube-dislikes
|
|
||||||
|
|
||||||
privacy-badger
|
|
||||||
decentraleyes
|
|
||||||
clearurls
|
|
||||||
localcdn
|
|
||||||
|
|
||||||
snowflake
|
|
||||||
|
|
||||||
pkgs.firefox-extensions.deutsch-de-language-pack
|
|
||||||
dictionary-german
|
|
||||||
|
|
||||||
tab-session-manager
|
|
||||||
|
|
||||||
pkgs.firefox-extensions.italiano-it-language-pack
|
|
||||||
pkgs.firefox-extensions.dizionario-italiano
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Disable irritating first-run stuff
|
|
||||||
"browser.disableResetPrompt" = true;
|
|
||||||
"browser.download.panel.shown" = true;
|
|
||||||
"browser.feeds.showFirstRunUI" = false;
|
|
||||||
"browser.messaging-system.whatsNewPanel.enabled" = false;
|
|
||||||
"browser.rights.3.shown" = true;
|
|
||||||
"browser.shell.checkDefaultBrowser" = false;
|
|
||||||
"browser.shell.defaultBrowserCheckCount" = 1;
|
|
||||||
"browser.startup.homepage_override.mstone" = "ignore";
|
|
||||||
"browser.uitour.enabled" = false;
|
|
||||||
"startup.homepage_override_url" = "";
|
|
||||||
"trailhead.firstrun.didSeeAboutWelcome" = true;
|
|
||||||
"browser.bookmarks.restore_default_bookmarks" = false;
|
|
||||||
"browser.bookmarks.addedImportButton" = true;
|
|
||||||
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
|
||||||
|
|
||||||
# Usage Experience
|
|
||||||
"browser.startup.homepage" = "about:home";
|
|
||||||
"browser.download.useDownloadDir" = false;
|
|
||||||
"browser.uiCustomization.state" = builtins.toJSON {
|
|
||||||
"currentVersion" = 20;
|
|
||||||
"newElementCount" = 6;
|
|
||||||
"dirtyAreaCache" = [
|
|
||||||
"nav-bar"
|
|
||||||
"PersonalToolbar"
|
|
||||||
"toolbar-menubar"
|
|
||||||
"TabsToolbar"
|
|
||||||
"unified-extensions-area"
|
|
||||||
"vertical-tabs"
|
|
||||||
];
|
|
||||||
"placements" = {
|
|
||||||
"widget-overflow-fixed-list" = [];
|
|
||||||
"unified-extensions-area" = [
|
|
||||||
# bitwarden
|
|
||||||
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
|
|
||||||
"ublock0_raymondhill_net-browser-action"
|
|
||||||
"sponsorblocker_ajay_app-browser-action"
|
|
||||||
"dearrow_ajay_app-browser-action"
|
|
||||||
"jid1-mnnxcxisbpnsxq_jetpack-browser-action"
|
|
||||||
"_testpilot-containers-browser-action"
|
|
||||||
"addon_simplelogin-browser-action"
|
|
||||||
"_74145f27-f039-47ce-a470-a662b129930a_-browser-action"
|
|
||||||
"jid1-bofifl9vbdl2zq_jetpack-browser-action"
|
|
||||||
"dfyoutube_example_com-browser-action"
|
|
||||||
"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action"
|
|
||||||
"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action"
|
|
||||||
"_b11bea1f-a888-4332-8d8a-cec2be7d24b9_-browse-action"
|
|
||||||
"jid0-3guet1r69sqnsrca5p8kx9ezc3u_jetpack-browser-action"
|
|
||||||
];
|
|
||||||
"nav-bar" = [
|
|
||||||
"back-button"
|
|
||||||
"forward-button"
|
|
||||||
"stop-reload-button"
|
|
||||||
"urlbar-container"
|
|
||||||
"downloads-button"
|
|
||||||
"unified-extensions-button"
|
|
||||||
"reset-pbm-toolbar-button"
|
|
||||||
];
|
|
||||||
"toolbar-menubar" = [
|
|
||||||
"menubar-items"
|
|
||||||
];
|
|
||||||
"TabsToolbar" = [
|
|
||||||
"firefox-view-button"
|
|
||||||
"tabbrowser-tabs"
|
|
||||||
"new-tab-button"
|
|
||||||
"alltabs-button"
|
|
||||||
];
|
|
||||||
"vertical-tabs" = [];
|
|
||||||
"PersonalToolbar" = [
|
|
||||||
"import-button"
|
|
||||||
"personal-bookmarks"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"seen" = [
|
|
||||||
"save-to-pocket-button"
|
|
||||||
"developer-button"
|
|
||||||
"privacy_privacy_com-browser-action"
|
|
||||||
"sponsorblocker_ajay_app-browser-action"
|
|
||||||
"ublock0_raymondhill_net-browser-action"
|
|
||||||
"addon_simplelogin-browser-action"
|
|
||||||
"dearrow_ajay_app-browser-action"
|
|
||||||
"_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"
|
|
||||||
"_74145f27-f039-47ce-a470-a662b129930a_-browser-action"
|
|
||||||
"jid1-bofifl9vbdl2zq_jetpack-browser-action"
|
|
||||||
"dfyoutube_example_com-browser-action"
|
|
||||||
"_testpilot-containers-browser-action"
|
|
||||||
"_b86e4813-687a-43e6-ab65-0bde4ab75758_-browser-action"
|
|
||||||
"jid1-mnnxcxisbpnsxq_jetpack-browser-action"
|
|
||||||
"_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action"
|
|
||||||
"_b11bea1f-a888-4332-8d8a-cec2be7d24b9_-browser-action"
|
|
||||||
"jid0-3guet1r69sqnsrca5p8kx9ezc3u_jetpack-browser-action"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"browser.newtabpage.activity-stream.feeds.topsites" = false;
|
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
|
||||||
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts" = false;
|
|
||||||
"browser.newtabpage.blocked" = lib.genAttrs [
|
|
||||||
# Facebook
|
|
||||||
"4gPpjkxgZzXPVtuEoAL9Ig=="
|
|
||||||
# Reddit
|
|
||||||
"gLv0ja2RYVgxKdp0I5qwvA=="
|
|
||||||
# Amazon
|
|
||||||
"K00ILysCaEq8+bEqV/3nuw=="
|
|
||||||
# Twitter
|
|
||||||
"T9nJot5PurhJSy8n038xGA=="
|
|
||||||
] (_: 1);
|
|
||||||
"identity.fxaccounts.enabled" = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,50 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.firefox = {
|
|
||||||
profiles.leyla = {
|
|
||||||
settings = {
|
|
||||||
# Security
|
|
||||||
"privacy.trackingprotection.enabled" = true;
|
|
||||||
"dom.security.https_only_mode" = true;
|
|
||||||
"dom.security.https_only_mode_pbm" = true;
|
|
||||||
"dom.security.https_only_mode_error_page_user_suggestions" = true;
|
|
||||||
|
|
||||||
# Privacy & Data Protection
|
|
||||||
"extensions.formautofill.addresses.enabled" = false;
|
|
||||||
"extensions.formautofill.creditCards.enabled" = false;
|
|
||||||
"signon.rememberSignons" = false;
|
|
||||||
"privacy.sanitize.sanitizeOnShutdown" = true;
|
|
||||||
"privacy.clearOnShutdown_v2.cache" = true;
|
|
||||||
"privacy.clearOnShutdown_v2.cookiesAndStorage" = true;
|
|
||||||
"privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = true;
|
|
||||||
"urlclassifier.trackingSkipURLs" = "";
|
|
||||||
"urlclassifier.features.socialtracking.skipURLs" = "";
|
|
||||||
|
|
||||||
# Disable telemetry and data collection
|
|
||||||
"app.shield.optoutstudies.enabled" = false;
|
|
||||||
"browser.discovery.enabled" = false;
|
|
||||||
"browser.newtabpage.activity-stream.feeds.telemetry" = false;
|
|
||||||
"browser.newtabpage.activity-stream.telemetry" = false;
|
|
||||||
"browser.ping-centre.telemetry" = false;
|
|
||||||
"datareporting.healthreport.service.enabled" = false;
|
|
||||||
"datareporting.healthreport.uploadEnabled" = false;
|
|
||||||
"datareporting.policy.dataSubmissionEnabled" = false;
|
|
||||||
"datareporting.sessions.current.clean" = true;
|
|
||||||
"devtools.onboarding.telemetry.logged" = false;
|
|
||||||
"toolkit.telemetry.archive.enabled" = false;
|
|
||||||
"toolkit.telemetry.bhrPing.enabled" = false;
|
|
||||||
"toolkit.telemetry.enabled" = false;
|
|
||||||
"toolkit.telemetry.firstShutdownPing.enabled" = false;
|
|
||||||
"toolkit.telemetry.hybridContent.enabled" = false;
|
|
||||||
"toolkit.telemetry.newProfilePing.enabled" = false;
|
|
||||||
"toolkit.telemetry.prompted" = 2;
|
|
||||||
"toolkit.telemetry.rejected" = true;
|
|
||||||
"toolkit.telemetry.reportingpolicy.firstRun" = false;
|
|
||||||
"toolkit.telemetry.server" = "";
|
|
||||||
"toolkit.telemetry.shutdownPingSender.enabled" = false;
|
|
||||||
"toolkit.telemetry.unified" = false;
|
|
||||||
"toolkit.telemetry.unifiedIsOptIn" = false;
|
|
||||||
"toolkit.telemetry.updatePing.enabled" = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
{...}: {
|
|
||||||
config = {
|
|
||||||
programs = {
|
|
||||||
git = {
|
|
||||||
signing.format = "openpgp";
|
|
||||||
settings = {
|
|
||||||
user.name = "Leyla Becker";
|
|
||||||
user.email = "git@jan-leila.com";
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config = {
|
|
||||||
sops.secrets = {
|
|
||||||
"application-keys/makemkv" = {
|
|
||||||
sopsFile = "${inputs.secrets}/application-keys.yaml";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.makemkv = {
|
|
||||||
appKeyFile = config.sops.placeholder."application-keys/makemkv";
|
|
||||||
destinationDir = "/home/leyla/downloads/makemkv";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config = {
|
|
||||||
programs = {
|
|
||||||
openssh = {
|
|
||||||
authorizedKeys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJHeItmt8TRW43uNcOC+eIurYC7Eunc0V3LGocQqLaYj leyla@horizon"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIILimFIW2exEH/Xo7LtXkqgE04qusvnPNpPWSCeNrFkP leyla@defiant"
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKBiZkg1c2aaNHiieBX4cEziqvJVj9pcDfzUrKU/mO0I leyla@twilight"
|
|
||||||
];
|
|
||||||
hostKeys = [
|
|
||||||
{
|
|
||||||
type = "ed25519";
|
|
||||||
path = "${config.home.username}_${osConfig.networking.hostName}_ed25519";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,142 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
nix-development-enabled = osConfig.host.nix-development.enable;
|
|
||||||
ai-tooling-enabled = osConfig.host.ai.enable;
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
./user-words.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
config = lib.mkIf config.user.isDesktopUser {
|
|
||||||
programs = {
|
|
||||||
bash.shellAliases = {
|
|
||||||
code = "codium";
|
|
||||||
};
|
|
||||||
|
|
||||||
vscode = {
|
|
||||||
package = pkgs.vscodium;
|
|
||||||
|
|
||||||
mutableExtensionsDir = false;
|
|
||||||
|
|
||||||
profiles.default = {
|
|
||||||
enableUpdateCheck = false;
|
|
||||||
enableExtensionUpdateCheck = false;
|
|
||||||
|
|
||||||
userSettings = lib.mkMerge [
|
|
||||||
{
|
|
||||||
"javascript.updateImportsOnFileMove.enabled" = "always";
|
|
||||||
"editor.tabSize" = 2;
|
|
||||||
"editor.insertSpaces" = false;
|
|
||||||
# "terminal.integrated.fontFamily" = "'Droid Sans Mono', 'monospace', monospace";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
extraExtensions = {
|
|
||||||
# vs code feel
|
|
||||||
oneDark.enable = true;
|
|
||||||
atomKeybindings.enable = true;
|
|
||||||
openRemoteSsh.enable = true;
|
|
||||||
# openDyslexicFont.enable = false;
|
|
||||||
|
|
||||||
# html development
|
|
||||||
autoRenameTag.enable = true;
|
|
||||||
liveServer.enable = true;
|
|
||||||
|
|
||||||
# js development
|
|
||||||
es7ReactJsSnippets.enable = true;
|
|
||||||
tauriVscode.enable = true;
|
|
||||||
vscodeEslint.enable = true;
|
|
||||||
vscodeJest.enable = true;
|
|
||||||
vitest.enable = true;
|
|
||||||
vscodeStandard.enable = true;
|
|
||||||
vscodeStylelint.enable = true;
|
|
||||||
|
|
||||||
nearley.enable = true;
|
|
||||||
|
|
||||||
# graphql
|
|
||||||
graphql.enable = true;
|
|
||||||
|
|
||||||
# astro development
|
|
||||||
vscodeMdx.enable = true;
|
|
||||||
astroVscode.enable = true;
|
|
||||||
|
|
||||||
# nix development
|
|
||||||
alejandra.enable = nix-development-enabled;
|
|
||||||
nixIde.enable = nix-development-enabled;
|
|
||||||
|
|
||||||
# go development
|
|
||||||
go.enable = true;
|
|
||||||
|
|
||||||
# rust development
|
|
||||||
rustAnalyzer.enable = true;
|
|
||||||
|
|
||||||
# arduino development
|
|
||||||
platformIO.enable = false;
|
|
||||||
|
|
||||||
# claude development
|
|
||||||
claudeDev = lib.mkIf ai-tooling-enabled {
|
|
||||||
enable = false;
|
|
||||||
mcp = {
|
|
||||||
nixos = {
|
|
||||||
enable = true;
|
|
||||||
autoApprove = {
|
|
||||||
nixos_search = true;
|
|
||||||
nixos_info = true;
|
|
||||||
home_manager_search = true;
|
|
||||||
home_manager_info = true;
|
|
||||||
darwin_search = true;
|
|
||||||
darwin_info = true;
|
|
||||||
nixos_flakes_search = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
eslint = {
|
|
||||||
enable = true;
|
|
||||||
autoApprove = {
|
|
||||||
lint-files = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
vitest = {
|
|
||||||
enable = true;
|
|
||||||
autoApprove = {
|
|
||||||
list_tests = true;
|
|
||||||
run_tests = true;
|
|
||||||
analyze_coverage = true;
|
|
||||||
set_project_root = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
sleep = {
|
|
||||||
enable = true;
|
|
||||||
timeout = 18000; # 5 hours to match claude codes timeout
|
|
||||||
autoApprove = {
|
|
||||||
sleep = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# misc extensions
|
|
||||||
evenBetterToml.enable = true;
|
|
||||||
direnv.enable = config.programs.direnv.enable;
|
|
||||||
conventionalCommits.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
extensions = let
|
|
||||||
extension-pkgs = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version;
|
|
||||||
in (
|
|
||||||
with extension-pkgs.open-vsx; [
|
|
||||||
# vs code feel extensions
|
|
||||||
streetsidesoftware.code-spell-checker
|
|
||||||
streetsidesoftware.code-spell-checker-german
|
|
||||||
streetsidesoftware.code-spell-checker-italian
|
|
||||||
]
|
|
||||||
);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,127 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
config.programs.vscode.profiles.default.userSettings = {
|
|
||||||
"cSpell.userWords" = [
|
|
||||||
"leyla"
|
|
||||||
"Cyberia"
|
|
||||||
];
|
|
||||||
|
|
||||||
"cSpell.languageSettings" = [
|
|
||||||
{
|
|
||||||
"languageId" = "nix";
|
|
||||||
"locale" = "*";
|
|
||||||
"dictionaries" = [
|
|
||||||
"applications"
|
|
||||||
"ai-words"
|
|
||||||
"nix-words"
|
|
||||||
|
|
||||||
# We need to include all other dictionaries in the nix language settings because they exist in this file
|
|
||||||
# TODO: see if there is a way to make this only apply for this file
|
|
||||||
"js-words"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"languageId" = "javascript,typescript,js,ts";
|
|
||||||
"locale" = "*";
|
|
||||||
"dictionaries" = [
|
|
||||||
"js-words"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
"cSpell.customDictionaries" = {
|
|
||||||
applications = {
|
|
||||||
name = "applications";
|
|
||||||
description = "application names";
|
|
||||||
path = pkgs.writeText "applications.txt" (lib.strings.concatLines [
|
|
||||||
"ollama"
|
|
||||||
"syncthing"
|
|
||||||
"immich"
|
|
||||||
"sonos"
|
|
||||||
"makemkv"
|
|
||||||
"hass"
|
|
||||||
"qbittorent"
|
|
||||||
"prostudiomasters"
|
|
||||||
"protonmail"
|
|
||||||
"pulseaudio"
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
|
|
||||||
ai-words = {
|
|
||||||
name = "ai-words";
|
|
||||||
description = "common words used for ai development";
|
|
||||||
path = pkgs.writeText "ai-words.txt" (lib.strings.concatLines [
|
|
||||||
"ollama"
|
|
||||||
"deepseek"
|
|
||||||
"qwen"
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
|
|
||||||
nix-words = {
|
|
||||||
name = "nix-words";
|
|
||||||
description = "words used in nix configurations";
|
|
||||||
path = pkgs.writeText "nix-words.txt" (lib.strings.concatLines [
|
|
||||||
"pname"
|
|
||||||
"direnv"
|
|
||||||
"tmpfiles"
|
|
||||||
"Networkd"
|
|
||||||
"networkmanager"
|
|
||||||
"dialout"
|
|
||||||
"adbusers"
|
|
||||||
"authkey"
|
|
||||||
"netdevs"
|
|
||||||
"atomix"
|
|
||||||
"geary"
|
|
||||||
"gedit"
|
|
||||||
"hitori"
|
|
||||||
"iagno"
|
|
||||||
"alsa"
|
|
||||||
"timezoned"
|
|
||||||
"pipewire"
|
|
||||||
"rtkit"
|
|
||||||
"disko"
|
|
||||||
"ashift"
|
|
||||||
"autotrim"
|
|
||||||
"canmount"
|
|
||||||
"mountpoint"
|
|
||||||
"xattr"
|
|
||||||
"acltype"
|
|
||||||
"relatime"
|
|
||||||
"keyformat"
|
|
||||||
"keylocation"
|
|
||||||
"vdevs"
|
|
||||||
|
|
||||||
# codium extensions
|
|
||||||
"akamud"
|
|
||||||
"onedark"
|
|
||||||
"jeanp"
|
|
||||||
"dsznajder"
|
|
||||||
"dbaeumer"
|
|
||||||
"orta"
|
|
||||||
"tauri"
|
|
||||||
"unifiedjs"
|
|
||||||
"tamasfe"
|
|
||||||
"pinage"
|
|
||||||
"jnoortheen"
|
|
||||||
"kamadorueda"
|
|
||||||
"karyfoundation"
|
|
||||||
"nearley"
|
|
||||||
|
|
||||||
# nix.optimise is spelled wrong
|
|
||||||
"optimise"
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
|
|
||||||
js-words = {
|
|
||||||
name = "js-words";
|
|
||||||
description = "words used in js development";
|
|
||||||
path = pkgs.writeText "js-words.txt" (lib.strings.concatLines [
|
|
||||||
"webdav"
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,19 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [(modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix")];
|
|
||||||
|
|
||||||
systemd.services.sshd.wantedBy = pkgs.lib.mkForce ["multi-user.target"];
|
|
||||||
users.users.root.openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AaAeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee username@host"
|
|
||||||
];
|
|
||||||
|
|
||||||
isoImage.squashfsCompression = "gzip -Xcompression-level 1";
|
|
||||||
|
|
||||||
networking.hostName = "installer";
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
}
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./configuration.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,119 +0,0 @@
|
||||||
{config, ...}: {
|
|
||||||
folders = {
|
|
||||||
leyla_documents = {
|
|
||||||
id = "hvrj0-9bm1p";
|
|
||||||
};
|
|
||||||
leyla_calendar = {
|
|
||||||
id = "8oatl-1rv6w";
|
|
||||||
};
|
|
||||||
leyla_supernote_notes = {
|
|
||||||
id = "dwbuv-zffnf";
|
|
||||||
};
|
|
||||||
eve_records = {
|
|
||||||
id = "by6at-d4h9n";
|
|
||||||
};
|
|
||||||
share = {
|
|
||||||
id = "73ot0-cxmkx";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
devices = {
|
|
||||||
defiant = {
|
|
||||||
id = "3R6E6Y4-2F7MF2I-IGB4WE6-A3SQSMV-LIBYSAM-2OXHHU2-KJ6CGIV-QNMCPAR";
|
|
||||||
folders = {
|
|
||||||
leyla_documents = {
|
|
||||||
folder = config.folders.leyla_documents;
|
|
||||||
path = "/mnt/sync/leyla/documents";
|
|
||||||
};
|
|
||||||
leyla_calendar = {
|
|
||||||
folder = config.folders.leyla_calendar;
|
|
||||||
path = "/mnt/sync/leyla/calendar";
|
|
||||||
};
|
|
||||||
leyla_supernote_notes = {
|
|
||||||
folder = config.folders.leyla_supernote_notes;
|
|
||||||
path = "/mnt/sync/leyla/notes";
|
|
||||||
};
|
|
||||||
eve_records = {
|
|
||||||
folder = config.folders.eve_records;
|
|
||||||
path = "/mnt/sync/eve/records";
|
|
||||||
};
|
|
||||||
share = {
|
|
||||||
folder = config.folders.share;
|
|
||||||
path = "/mnt/sync/default/share";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
twilight = {
|
|
||||||
id = "UDIYL7V-OAZ2BI3-EJRAWFB-GZYVDWR-JNUYW3F-FFQ35MU-XBTGWEF-QD6K6QN";
|
|
||||||
folders = {
|
|
||||||
leyla_documents = {
|
|
||||||
folder = config.folders.leyla_documents;
|
|
||||||
path = "/mnt/sync/leyla/documents";
|
|
||||||
};
|
|
||||||
share = {
|
|
||||||
folder = config.folders.share;
|
|
||||||
path = "/mnt/sync/default/share";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
horizon = {
|
|
||||||
id = "OGPAEU6-5UR56VL-SP7YC4Y-IMVCRTO-XFD4CYN-Z6T5TZO-PFZNAT6-4MKWPQS";
|
|
||||||
folders = {
|
|
||||||
leyla_documents = {
|
|
||||||
folder = config.folders.leyla_documents;
|
|
||||||
path = "/mnt/sync/leyla/documents";
|
|
||||||
};
|
|
||||||
share = {
|
|
||||||
folder = config.folders.share;
|
|
||||||
path = "/mnt/sync/default/share";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
coven = {
|
|
||||||
id = "QGU7NN6-OMXTWVA-YCZ73S5-2O7ECTS-MUCTN4M-YH6WLEL-U4U577I-7PBNCA5";
|
|
||||||
folders = {
|
|
||||||
leyla_documents = {
|
|
||||||
folder = config.folders.leyla_documents;
|
|
||||||
};
|
|
||||||
share = {
|
|
||||||
folder = config.folders.share;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
ceder = {
|
|
||||||
id = "MGXUJBS-7AENXHB-7YQRNWG-QILKEJD-5462U2E-WAQW4R4-I2TVK5H-SMK6LAA";
|
|
||||||
folders = {
|
|
||||||
share = {
|
|
||||||
folder = config.folders.share;
|
|
||||||
};
|
|
||||||
leyla_documents = {
|
|
||||||
folder = config.folders.leyla_documents;
|
|
||||||
};
|
|
||||||
leyla_calendar = {
|
|
||||||
folder = config.folders.leyla_calendar;
|
|
||||||
};
|
|
||||||
leyla_notes = {
|
|
||||||
folder = config.folders.leyla_supernote_notes;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
emergent = {
|
|
||||||
id = "6MIDMKJ-7IFHXVX-FIR3YTB-KVE75LN-PA6IOTN-I257LWR-MMC4K6C-5H4SHQN";
|
|
||||||
folders = {
|
|
||||||
eve_records = {
|
|
||||||
folder = config.folders.eve_records;
|
|
||||||
};
|
|
||||||
share = {
|
|
||||||
folder = config.folders.share;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
shale = {
|
|
||||||
id = "AOAXEVD-QJ2IVRA-6G44Q7Q-TGUPXU2-FWWKOBH-DPKWC5N-LBAEHWJ-7EQF4AM";
|
|
||||||
folders = {
|
|
||||||
share = {
|
|
||||||
folder = config.folders.share;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -106,13 +106,6 @@
|
||||||
default = {};
|
default = {};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
({...}: {
|
|
||||||
flake.syncthingConfiguration = inputs.nix-syncthing.lib.syncthingConfiguration {
|
|
||||||
modules = [
|
|
||||||
(import ./configurations/syncthing)
|
|
||||||
];
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(inputs.import-tree ./modules)
|
(inputs.import-tree ./modules)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
26
modules/hosts/nixos/installer/configuration.nix
Normal file
26
modules/hosts/nixos/installer/configuration.nix
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{...}: {
|
||||||
|
flake.nixosModules.installer-configuration = {
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [(modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix")];
|
||||||
|
|
||||||
|
systemd.services.sshd.wantedBy = pkgs.lib.mkForce ["multi-user.target"];
|
||||||
|
users.users.root.openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AaAeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee username@host"
|
||||||
|
];
|
||||||
|
|
||||||
|
isoImage.squashfsCompression = "gzip -Xcompression-level 1";
|
||||||
|
|
||||||
|
networking.hostName = "installer";
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
|
||||||
|
host.users.leyla = {
|
||||||
|
isPrincipleUser = true;
|
||||||
|
isTerminalUser = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
18
modules/hosts/nixos/installer/default.nix
Normal file
18
modules/hosts/nixos/installer/default.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# installer ISO
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
flake.nixosConfigurations.installer = inputs.nixpkgs.lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
config.flake.nixosModules.nixosModules
|
||||||
|
config.flake.nixosModules.installer-configuration
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
syncthingConfiguration = inputs.self.syncthingConfiguration;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
125
modules/syncthing/default.nix
Normal file
125
modules/syncthing/default.nix
Normal file
|
|
@ -0,0 +1,125 @@
|
||||||
|
{inputs, ...}: {
|
||||||
|
flake.syncthingConfiguration = inputs.nix-syncthing.lib.syncthingConfiguration {
|
||||||
|
modules = [
|
||||||
|
({config, ...}: {
|
||||||
|
folders = {
|
||||||
|
leyla_documents = {
|
||||||
|
id = "hvrj0-9bm1p";
|
||||||
|
};
|
||||||
|
leyla_calendar = {
|
||||||
|
id = "8oatl-1rv6w";
|
||||||
|
};
|
||||||
|
leyla_supernote_notes = {
|
||||||
|
id = "dwbuv-zffnf";
|
||||||
|
};
|
||||||
|
eve_records = {
|
||||||
|
id = "by6at-d4h9n";
|
||||||
|
};
|
||||||
|
share = {
|
||||||
|
id = "73ot0-cxmkx";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
devices = {
|
||||||
|
defiant = {
|
||||||
|
id = "3R6E6Y4-2F7MF2I-IGB4WE6-A3SQSMV-LIBYSAM-2OXHHU2-KJ6CGIV-QNMCPAR";
|
||||||
|
folders = {
|
||||||
|
leyla_documents = {
|
||||||
|
folder = config.folders.leyla_documents;
|
||||||
|
path = "/mnt/sync/leyla/documents";
|
||||||
|
};
|
||||||
|
leyla_calendar = {
|
||||||
|
folder = config.folders.leyla_calendar;
|
||||||
|
path = "/mnt/sync/leyla/calendar";
|
||||||
|
};
|
||||||
|
leyla_supernote_notes = {
|
||||||
|
folder = config.folders.leyla_supernote_notes;
|
||||||
|
path = "/mnt/sync/leyla/notes";
|
||||||
|
};
|
||||||
|
eve_records = {
|
||||||
|
folder = config.folders.eve_records;
|
||||||
|
path = "/mnt/sync/eve/records";
|
||||||
|
};
|
||||||
|
share = {
|
||||||
|
folder = config.folders.share;
|
||||||
|
path = "/mnt/sync/default/share";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
twilight = {
|
||||||
|
id = "UDIYL7V-OAZ2BI3-EJRAWFB-GZYVDWR-JNUYW3F-FFQ35MU-XBTGWEF-QD6K6QN";
|
||||||
|
folders = {
|
||||||
|
leyla_documents = {
|
||||||
|
folder = config.folders.leyla_documents;
|
||||||
|
path = "/mnt/sync/leyla/documents";
|
||||||
|
};
|
||||||
|
share = {
|
||||||
|
folder = config.folders.share;
|
||||||
|
path = "/mnt/sync/default/share";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
horizon = {
|
||||||
|
id = "OGPAEU6-5UR56VL-SP7YC4Y-IMVCRTO-XFD4CYN-Z6T5TZO-PFZNAT6-4MKWPQS";
|
||||||
|
folders = {
|
||||||
|
leyla_documents = {
|
||||||
|
folder = config.folders.leyla_documents;
|
||||||
|
path = "/mnt/sync/leyla/documents";
|
||||||
|
};
|
||||||
|
share = {
|
||||||
|
folder = config.folders.share;
|
||||||
|
path = "/mnt/sync/default/share";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
coven = {
|
||||||
|
id = "QGU7NN6-OMXTWVA-YCZ73S5-2O7ECTS-MUCTN4M-YH6WLEL-U4U577I-7PBNCA5";
|
||||||
|
folders = {
|
||||||
|
leyla_documents = {
|
||||||
|
folder = config.folders.leyla_documents;
|
||||||
|
};
|
||||||
|
share = {
|
||||||
|
folder = config.folders.share;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ceder = {
|
||||||
|
id = "MGXUJBS-7AENXHB-7YQRNWG-QILKEJD-5462U2E-WAQW4R4-I2TVK5H-SMK6LAA";
|
||||||
|
folders = {
|
||||||
|
share = {
|
||||||
|
folder = config.folders.share;
|
||||||
|
};
|
||||||
|
leyla_documents = {
|
||||||
|
folder = config.folders.leyla_documents;
|
||||||
|
};
|
||||||
|
leyla_calendar = {
|
||||||
|
folder = config.folders.leyla_calendar;
|
||||||
|
};
|
||||||
|
leyla_notes = {
|
||||||
|
folder = config.folders.leyla_supernote_notes;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
emergent = {
|
||||||
|
id = "6MIDMKJ-7IFHXVX-FIR3YTB-KVE75LN-PA6IOTN-I257LWR-MMC4K6C-5H4SHQN";
|
||||||
|
folders = {
|
||||||
|
eve_records = {
|
||||||
|
folder = config.folders.eve_records;
|
||||||
|
};
|
||||||
|
share = {
|
||||||
|
folder = config.folders.share;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
shale = {
|
||||||
|
id = "AOAXEVD-QJ2IVRA-6G44Q7Q-TGUPXU2-FWWKOBH-DPKWC5N-LBAEHWJ-7EQF4AM";
|
||||||
|
folders = {
|
||||||
|
share = {
|
||||||
|
folder = config.folders.share;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue