refactor *started*

This commit is contained in:
martyTF 2026-03-30 22:03:03 +02:00
parent d0413cb830
commit db2103a37d
103 changed files with 1008 additions and 786 deletions

View file

@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
bluetooth = {
enable = lib.mkEnableOption "enable bluetooth";
};
};
config = lib.mkIf config.bluetooth.enable {
home.packages = with pkgs; [
bluez
bluetuith
];
};
}

View file

@ -0,0 +1,15 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./internet
./bluetooth
./mounts
./social-media
];
}

View file

@ -0,0 +1,16 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./librewolf.nix
./zen-browser.nix
./tor.nix
./mail.nix
./rss.nix
];
}

View file

@ -0,0 +1,21 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
internet.browsers = {
librewolf = {
enable = lib.mkEnableOption "enable librewolf";
};
};
};
config = lib.mkIf config.internet.browsers.librewolf.enable {
home.packages = with pkgs; [
librewolf
];
};
}

View file

@ -0,0 +1,34 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
internet = {
mail.enable = lib.mkEnableOption "enable e-mail";
mail.providers.protonmail.enable = lib.mkEnableOption "enable protonmail";
};
};
config = {
programs = {
thunderbird = lib.mkIf config.internet.mail.enable {
enable = true;
profiles."default" = {
isDefault = true;
};
};
};
services = {
protonmail-bridge = lib.mkIf config.internet.mail.providers.protonmail.enable {
enable = true;
package = pkgs.protonmail-bridge;
extraPackages = with pkgs; [
gnome-keyring
];
};
};
};
}

View file

@ -0,0 +1,19 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
internet = {
rss.enable = lib.mkEnableOption "enable rss";
};
};
config = {
home.packages = with pkgs; [
(lib.mkIf (config.internet.rss.enable) newsflash)
];
};
}

View file

@ -0,0 +1,21 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
internet = {
tor.enable = lib.mkEnableOption "enable tor";
browsers.tor-browser.enable = lib.mkEnableOption "enable tor-browser";
};
};
config = {
home.packages = with pkgs; [
(lib.mkIf (config.internet.browsers.tor-browser.enable) tor-browser)
(lib.mkIf (config.internet.tor.enable) oniux)
];
};
}

View file

@ -0,0 +1,98 @@
{
config,
lib,
pkgs,
inputs,
...
}:
let
extension = shortId: guid: {
name = guid;
value = {
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
installation_mode = "normal_installed";
};
};
prefs = {
# Check these out at about:config
"extensions.autoDisableScopes" = 0;
"extensions.pocket.enabled" = false;
"general.autoScroll" = true;
"general.smoothScroll" = true;
"middlemouse.contentLoadURL" = false;
"devtools.debugger.remote-enabled" = true;
"devtools.chrome.enabled" = true;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
"browser.ml.enable" = false;
"browser.ml.chat.enabled" = false;
"browser.ml.chat.menu" = false;
"browser.ml.chat.page" = false;
"browser.ml.chat.page.footerBadge" = false;
"browser.ml.chat.page.menuBadge" = false;
"browser.ml.linkPreview.enabled" = false;
"browser.ml.pageAssist.enabled" = false;
"browser.tabs.groups.smart.enabled" = false;
"browser.tabs.groups.smart.userEnabled" = false;
"extensions.ml.enabled" = false;
"browser.search.visualSearch.featureGate" = false;
# ...
};
extensions = [
# To add additional extensions, find it on addons.mozilla.org, find
# the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/)
# Then go to https://addons.mozilla.org/api/v5/addons/addon/!SHORT_ID!/ to get the guid
(extension "adnauseam" "adnauseam@rednoise.org")
(extension "floccus" "floccus@handmadeideas.org")
(extension "bitwarden-password-manager" "{446900e4-71c2-419f-a6a7-df9c091e268b}")
(extension "simplelogin" "addon@simplelogin")
(extension "localcdn-fork-of-decentraleyes" "{b86e4813-687a-43e6-ab65-0bde4ab75758}")
(extension "catppuccin-web-file-icons" "{bbb880ce-43c9-47ae-b746-c3e0096c5b76}")
(extension "peertube-companion" "peertube-companion@booteille")
(extension "peertubeify" "{01175c8e-4506-4263-bad9-d3ddfd4f5a5f}")
(extension "peertube-picks" "{937c0767-0608-41e2-917a-8bf06601275a}")
# ...
];
in
{
options = {
internet.browsers = {
zen-browser = {
enable = lib.mkEnableOption "enable zen-browser";
};
};
};
config = lib.mkIf config.internet.browsers.zen-browser.enable {
home.packages = [
(pkgs.wrapFirefox
inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.zen-browser-unwrapped
{
extraPrefs = lib.concatLines (
lib.mapAttrsToList (
name: value: ''lockPref(${lib.strings.toJSON name}, ${lib.strings.toJSON value});''
) prefs
);
extraPolicies = {
DisableTelemetry = true;
ExtensionSettings = builtins.listToAttrs extensions;
SearchEngines = {
Default = "MartyTF's Series of Tubes";
Add = [
{
Name = "MartyTF's Series of Tubes";
URLTemplate = "https://search.marty.tf/?q={searchTerms}";
IconURL = "https://wiki.nixos.org/favicon.ico";
Alias = "@sgx";
}
];
};
};
}
)
];
};
}

View file

@ -0,0 +1,12 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./sshfs.nix
];
}

View file

@ -0,0 +1,28 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
};
config = {
programs.sftpman = {
enable = true;
mounts = {
marty-server = {
host = "marty-server";
user = "marty";
mountOptions = [
"/mnt/Server"
];
mountPoint = "/";
};
};
package = pkgs.sshfs;
defaultSshKey = "~/.ssh/id_ed25519";
};
};
}

View file

@ -0,0 +1,15 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./messaging
];
home.packages = with pkgs; [
fedistar
];
}

View file

@ -0,0 +1,31 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
messaging = {
enable = lib.mkEnableOption "enable all messaging";
element.enable = lib.mkEnableOption "enable element";
signal.enable = lib.mkEnableOption "enable signal";
};
};
config = {
messaging = lib.mkIf config.messaging.enable {
element.enable = lib.mkDefault true;
signal.enable = lib.mkDefault true;
};
home.packages = with pkgs; [
(lib.mkIf (config.messaging.signal.enable) signal-desktop)
];
programs = {
element-desktop = lib.mkIf config.messaging.element.enable {
enable = true;
};
};
};
}

View file

@ -0,0 +1,60 @@
{
config,
pkgs,
inputs,
lib,
...
}:
{
options = {
device = {
type = {
laptop = lib.mkEnableOption "laptop";
desktop = lib.mkEnableOption "desktop";
server = lib.mkEnableOption "server";
};
};
};
imports = [
./laptop.nix
./desktop.nix
./server.nix
];
config = {
development = lib.mkDefault {
git.enable = true;
};
terminal = lib.mkDefault {
ranger.enable = true;
};
misc = lib.mkDefault {
bitwarden.enable = true;
};
internet.tor.enable = true;
syncthing = lib.mkDefault {
devices = {
marty-pc = {
id = "6PJZD52-EEWIO7U-MZMJJ5B-33DGNSU-O7DJVRT-GAE7QZG-ZY3VIMV-VSMBDQP";
autoAcceptFolder = true;
};
marty-server = {
id = "UDMXEKZ-HYIFI5S-VAKE75O-K3C65QV-LS43QA5-3JTHWKL-CI5C3Y6-P4NSQQM";
autoAcceptFolders = true;
};
marty-latitude = {
id = "SOAWHKA-BCQGO5G-IJ24WTO-RDETP5M-LNTVO66-MHIOUU2-NNQ57P6-FFKNSA6";
autoAcceptFolders = true;
};
marty-pixel = {
id = "GSBXOGW-6SYLDUQ-HPH7FBJ-CKHWQIK-K5YORB4-CYKGYT6-DLCVSAK-LA2RMAK";
autoAcceptFolders = true;
};
marty-fairphone = {
id = "2ISVWQV-4USY5IA-2OU55CE-Q7VLPD7-4RVQ5WX-FXQSJMY-2ES4EZG-IGFB7QG";
autoAcceptFolders = true;
};
};
};
};
}

View file

@ -0,0 +1,58 @@
{
config,
pkgs,
inputs,
lib,
...
}:
{
config = lib.mkIf config.device.type.desktop {
development = lib.mkDefault {
vscodium.enable = true;
godot.enable = true;
python.enable = true;
};
terminal = lib.mkDefault {
kitty.enable = true;
};
desktop = lib.mkDefault {
hyprland = {
enable = true;
numlock = true;
};
# waybar.enable = true;
walker.enable = true;
wallpaper.enable = true;
grimblast.enable = true;
audio.enable = true;
noctalia.enable = true;
};
messaging.enable = true;
internet = lib.mkDefault {
browsers = {
zen-browser = {
enable = true;
};
tor-browser = {
enable = true;
};
};
mail = {
enable = true;
providers.protonmail.enable = true;
};
rss.enable = true;
};
bluetooth.enable = true;
media = {
images.enable = true;
video.enable = true;
audio.enable = true;
threeD.enable = true;
};
misc = {
obsidian.enable = true;
};
};
}

View file

@ -0,0 +1,51 @@
{
config,
pkgs,
inputs,
lib,
...
}:
{
config = lib.mkIf config.device.type.laptop {
home.packages = with pkgs; [
light
];
development = lib.mkDefault {
vscodium.enable = true;
};
terminal = lib.mkDefault {
kitty.enable = true;
};
desktop = lib.mkDefault {
hyprland = {
enable = true;
};
# waybar.enable = true;
walker.enable = true;
wallpaper.enable = true;
grimblast.enable = true;
audio.enable = true;
noctalia.enable = true;
};
messaging.enable = true;
internet = lib.mkDefault {
browsers = {
zen-browser = {
enable = true;
};
};
mail = {
enable = true;
providers.protonmail.enable = true;
};
rss.enable = true;
};
bluetooth.enable = true;
media = {
images.nomacs.enable = true;
video.mpv.enable = true;
video.tsukimi.enable = true;
};
};
}

View file

@ -0,0 +1,11 @@
{
config,
pkgs,
inputs,
lib,
...
}:
{
}

View file

@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./git.nix
./vscodium.nix
./python.nix
./godot.nix
./openssl.nix
];
home.packages = with pkgs; [
bc
imagemagick
];
}

View file

@ -0,0 +1,34 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
development = {
git.enable = lib.mkEnableOption "enable git";
};
};
config = lib.mkIf config.development.git.enable {
programs = {
git = {
enable = true;
settings = {
init = {
defaultBranch = "main";
};
user = {
email = "marty@marty.tf";
name = "marty";
};
push = {
autoSetupRemote = true;
};
};
};
};
};
}

View file

@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
development = {
godot.enable = lib.mkEnableOption "enable godot";
};
};
config = lib.mkIf config.development.godot.enable {
home.packages = with pkgs; [
godot
];
};
}

View file

@ -0,0 +1,12 @@
{
config,
lib,
pkgs,
...
}:
{
home.packages = with pkgs; [
openssl
];
}

View file

@ -0,0 +1,21 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
development = {
python.enable = lib.mkEnableOption "enable python";
};
};
config = lib.mkIf config.development.python.enable {
home.packages = with pkgs; [
uv
virtualenv
];
};
}

View file

@ -0,0 +1,38 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
development = {
vscodium.enable = lib.mkEnableOption "enable vscodium";
};
};
config = lib.mkIf config.development.vscodium.enable {
programs.vscode = {
enable = true;
package = pkgs.vscodium;
profiles.default.extensions = with pkgs.vscode-extensions; [
catppuccin.catppuccin-vsc
catppuccin.catppuccin-vsc-icons
jnoortheen.nix-ide
alefragnani.project-manager
naumovs.color-highlight
geequlim.godot-tools
stylelint.vscode-stylelint
ecmel.vscode-html-css
esbenp.prettier-vscode
];
};
home.packages = with pkgs; [
nixfmt
];
home.sessionVariables = {
EDITOR = lib.mkDefault "codium";
};
};
}

28
home/modules/media/3d.nix Normal file
View file

@ -0,0 +1,28 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
media = {
threeD = {
enable = lib.mkEnableOption "enable all 3d media";
blender.enable = lib.mkEnableOption "enable blender";
};
};
};
config = {
media.threeD = lib.mkIf config.media.threeD.enable {
blender.enable = lib.mkDefault true;
};
home.packages = with pkgs; [
(lib.mkIf (config.media.threeD.blender.enable) blender)
];
};
}

View file

@ -0,0 +1,22 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
misc = {
bitwarden.enable = lib.mkEnableOption "enable bitwarden";
};
};
config = lib.mkIf config.misc.bitwarden.enable {
home.packages = with pkgs; [
rbw
pinentry-curses
(lib.mkIf (config.desktop.rofi.enable) rofi-rbw)
];
};
}

View file

@ -0,0 +1,15 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./bitwarden.nix
./syncthing.nix
./secrets.nix
./obsidian.nix
];
}

View file

@ -0,0 +1,20 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
misc = {
obsidian.enable = lib.mkEnableOption "enable obsidian";
};
};
config = lib.mkIf config.misc.obsidian.enable {
home.packages = with pkgs; [
obsidian
];
};
}

View file

@ -0,0 +1,17 @@
{
config,
lib,
pkgs,
...
}:
{
home.packages = with pkgs; [
pass
gnome-keyring
seahorse
libsecret
gcr
];
services.gnome-keyring.enable = true;
}

View file

@ -0,0 +1,42 @@
{
config,
lib,
pkgs,
...
}:
{
options = {
syncthing.devices = lib.mkOption {
default = { };
description = ''
set syncthing devices
'';
};
syncthing.folders = lib.mkOption {
default = { };
description = ''
set syncthing folders
'';
};
};
config = {
home.packages = with pkgs; [
localsend
];
services = {
syncthing = {
enable = true;
tray.enable = true;
guiAddress = "0.0.0.0:8384";
settings = {
devices = config.syncthing.devices;
folders = config.syncthing.folders;
};
overrideDevices = lib.mkIf (config.syncthing.devices == { }) false;
overrideFolders = lib.mkIf (config.syncthing.folders == { }) false;
};
};
};
}