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,12 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./kitty.nix
];
}

View file

@ -0,0 +1,75 @@
{
config,
lib,
pkgs,
...
}:
{
config = lib.mkIf osConfig.apps.terminal.kitty.enable {
programs = {
kitty = {
enable = true;
enableGitIntegration = true;
shellIntegration = {
enableFishIntegration = true;
enableBashIntegration = true;
enableZshIntegration = true;
};
font = {
name = "FiraCode Nerd Font";
size = 16;
package = pkgs.nerd-fonts.fira-code;
};
settings = {
include = "themes/noctalia.conf";
wayland_titlebar_color = "system";
macos_titlebar_color = "system";
# The most important setting of the whole confiG
confirm_os_window_close = 0;
# Cursor
cursor_shape = "underline";
# Scrollback
scrollback_lines = 10000;
# Link Behaviour
url_style = "straight";
open_url_with = "default";
# Layouts
remember_window_size = "no";
enabled_layouts = "splits, tall";
window_resize_step_cells = 3;
window_resize_step_lines = 3;
window_border_width = "3 pt";
draw_minimal_borders = "yes";
window_margin_width = 10;
window_padding_width = 10;
# Borders/Appearance
inactive_text_alpha = 0.5;
hide_window_decorations = "no";
# tab bar
tab_bar_min_tabs = 1;
tab_bar_edge = "bottom";
tab_bar_style = "powerline";
tab_powerline_style = "slanted";
tab_title_template = "{title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}";
};
};
};
home.sessionVariables = {
TERM = lib.mkDefault "xterm-kitty";
};
};
}

View file

@ -0,0 +1,61 @@
{
config,
lib,
pkgs,
osConfig,
...
}:
{
config = lib.mkIf osConfig.apps.terminal.tui.ranger.enable {
programs = {
ranger = {
enable = true;
extraPackages = [
];
settings = {
viewmode = "miller";
column_ratios = "1,3,4";
show_hidden = true;
confirm_on_delete = "multiple";
use_preview_script = true;
automatically_count_files = true;
open_all_images = true;
vcs_aware = true;
vcs_backend_git = "enabled";
vcs_msg_length = 50;
preview_images = true;
preview_images_method = lib.mkIf config.terminal.kitty.enable "kitty";
preview_files = true;
preview_directories = true;
collapse_preview = false;
save_console_history = true;
status_bar_on_top = false;
draw_progress_bar_in_status_bar = true;
draw_borders = "both";
dirname_in_tabs = true;
mouse_enabled = false;
display_size_in_main_column = true;
display_size_in_status_bar = true;
display_free_space_in_status_bar = true;
display_tags_in_all_columns = true;
update_title = true;
update_tmux_title = true;
shorten_title = 10;
hostname_in_titlebar = true;
tilde_in_titlebar = false;
max_history_size = 100;
max_console_history_size = 200;
scroll_offset = 8;
flushinput = true;
autosave_bookmarks = true;
show_cursor = false;
sort = "natural";
sort_case_insensitive = true;
sort_directories_first = true;
};
};
};
};
}

View file

@ -0,0 +1,36 @@
output "AOC Q27G2WG4" {
mode "2560x1440@144"
position x=3840 y=0
variable-refresh-rate on-demand=true
}
input {
keyboard {
xkb {
layout "de"
}
repeat-delay 600
repeat-rate 20
track-layout "global"
}
touchpad {
}
mouse {
accel-speed 0.5
accel-profile "flat"
}
}
binds {
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Left {focus-column-left; }
Mod+Right {focus-column-right; }
Mod+D { spawn "walker"; }
Mod+Shift+P { quit; }
Mod+Return { spawn "kitty";}
}
include "./noctalia.kdl"

View file

@ -7,6 +7,6 @@
{
imports = [
./sway.nix
./desktop
];
}

13
home/desktop/default.nix Normal file
View file

@ -0,0 +1,13 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./window-managers
./shell
];
}

View file

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

View file

@ -0,0 +1,19 @@
{
config,
pkgs,
inputs,
lib,
osConfig,
...
}:
{
config = lib.mkIf osConfig.desktop.shell.noctalia.enable {
};
imports = lib.mkIf osConfig.desktop.shell.noctalia.enable [
inputs.noctalia.homeModules.default
]
}

View file

@ -0,0 +1,26 @@
{
config,
pkgs,
inputs,
lib,
osConfig,
...
}:
{
config = lib.mkIf osConfig.desktop.shell.walker.enable {
programs = {
walker = {
enable = true;
runAsService = true;
config = {
theme = "noctalia";
};
};
};
};
imports = lib.mkIf osConfig.desktop.shell.walker.enable [
inputs.walker.homeManagerModules.default
]
}

View file

@ -0,0 +1,14 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
./hyprland.nix
./niri.nix
./sway.nix
];
}

View file

@ -0,0 +1,181 @@
{
config,
lib,
pkgs,
inputs,
osConfig,
...
}:
{
options = {
desktop = {
hyprland = {
monitors = lib.mkOption {
default = [
",preferred,auto,1"
];
description = "declare monitors";
};
workspaces = {
workspaces = lib.mkOption {
default = (
builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"${toString i},persistent:true"
]
) config.desktop.hyprland.workspaces.amount
)
);
description = "declare workspace";
};
amount = lib.mkOption {
default = 9;
description = "declare workspace amount";
};
};
numlock = lib.mkEnableOption "numlock by default";
};
};
};
config = lib.mkIf osConfig.desktop.hyprland.enable {
xdg.portal = {
enable = true;
configPackages = [
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
];
extraPortals = [
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-xapp
pkgs.xdg-desktop-portal-gtk
];
config.common = {
"org.freedesktop.portal.OpenURI" = [
"*"
"hyprland"
];
};
};
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
systemd.enable = false;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage =
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
settings = {
monitor = config.desktop.hyprland.monitors;
workspace = config.desktop.hyprland.workspaces.workspaces;
env = [
"XDG_CURRENT_DESKTOP,Hyprland"
"XDG_SESSION_TYPE,wayland"
"XDG_SESSION_DESKTOP,Hyprland"
];
exec-once = [
(lib.mkIf (osConfig.desktop.shell.walker.enable) "elephant")
(lib.mkIf (osConfig.desktop.shell.waybar.enable) "waybar")
(lib.mkIf (osConfig.desktop.shell.noctalia.enable) "noctalia-shell")
(lib.mkIf (osConfig.desktop.shell.noctalia.enable) "noctalia-shell ipc call wallpaper random")
(lib.mkIf (osConfig.desktop.shell.swww.enable) "waypaper --restore --random")
(lib.mkIf (osConfig.gaming.steam.enable) "adwaita-steam-gtk -u; steam -silent")
(lib.mkIf (osConfig.internet.mail.providers.protonmail.enable) "protonmail-bridge -n")
"echo $HYPRLAND_INSTANCE_SIGNATURE > ~/.config/hypr/instance_signature"
];
"$mod" = "SUPER";
"$shiftmod" = "SUPER_SHIFT";
"$controlmod" = "SUPER_CTRL";
bind = [
(lib.mkIf (osConfig.desktop.shell.walker.enable) "$mod, D, exec, walker")
(lib.mkIf (osConfig.desktop.shell.rofi.enable) "$mod, D, exec, rofi -show drun")
"$mod, return, exec, ${osConfig.apps.terminal.binary}"
(lib.mkIf (osConfig.desktop.utilities.grimblast.enable) ", print, exec, GRIMBLAST_EDITOR=gradia grimblast edit area")
(lib.mkIf (osConfig.desktop.shell.walker.enable) (
lib.mkIf (osConfig.misc.bitwarden.enable) "$mod, B, exec, rbw unlocked || kitty --class kitty-floating -e rbw unlock; selected=$(rbw list | walker -d); wl-copy $(rbw get \"$selected\"); sleep 30; rbw lock"
))
"$mod, F, fullscreen, 1"
"$shiftmod, F, fullscreen, 0"
"$shiftmod, Q, killactive,"
"$mod, S, togglespecialworkspace, magic"
"$mod, O, exec, zen"
"$shiftmod, S, movetoworkspace, special:magic"
"$controlmod, right, workspace, m+1"
"$controlmod, left, workspace, m-1"
"$mod, mouse_down, workspace, m-1"
"$mod, mouse_up, workspace, m+1"
"$mod, left, movefocus, l"
"$mod, right, movefocus, r"
"$mod, up, movefocus, u"
"$mod, down, movefocus, d"
"$mod, J, exec, playerctl previous"
"$mod, K, exec, playerctl play-pause"
"$mod, L, exec, playerctl next"
"$mod, G, togglefloating,"
"$mod, F1, exec, hyprlock"
"$shiftmod, E, exec, codium"
"$controlmod, up, exec, light -A 10"
"$controlmod, down, exec, light -U 10"
"$controlmod, Q, exec, hyprctl kill"
]
++ (builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$shiftmod, code:1${toString i}, movetoworkspacesilent, ${toString ws}"
]
) config.desktop.hyprland.workspaces.amount
));
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
bindel = [
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
];
input = {
kb_layout = "de";
numlock_by_default = config.desktop.hyprland.numlock;
follow_mouse = 2;
mouse_refocus = false;
accel_profile = "flat";
sensitivity = 0.2;
touchpad = {
natural_scroll = "no";
disable_while_typing = true;
};
};
cursor = {
inactive_timeout = 0;
no_warps = true;
};
decoration = {
rounding = 20;
blur = {
enabled = true;
size = 3;
passes = 1;
};
shadow = {
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
};
};
};
};
home.sessionVariables.NIXOS_OZONE_WL = "1";
};
}

View file

@ -0,0 +1,22 @@
{
config,
pkgs,
lib,
inputs,
osConfig,
...
}:
{
options = {
desktop.window-managers = {
niri = {
};
};
};
config = lib.mkIf osConfig.desktop.window-managers.niri.enable {
xdg.configFile."niri/config.kdl".source = ../../configs/niri/config.kdl;
};
}

View file

@ -8,14 +8,13 @@
{
options = {
desktop = {
desktop.window-managers = {
sway = {
enable = lib.mkEnableOption "enable sway";
};
};
};
config = {
config = lib.mkIf osConfig.desktop.window-managers.sway.enable {
wayland.windowManager.sway = {
enable = true;
package = pkgs.swayfx;
@ -37,7 +36,6 @@
"${modifier}+Control+left" = "exec /home/marty/.config/sway/scripts/workspaceswitcher left";
"${modifier}+f" = "fullscreen";
"${modifier}+1" = "workspace number 1";
"${modifier}+2" = "workspace number 2";
"${modifier}+3" = "workspace number 3";
@ -49,7 +47,6 @@
"${modifier}+9" = "workspace number 9";
"${modifier}+s" = "workspace number 0";
"${modifier}+Shift+1" = "move container to workspace number 1";
"${modifier}+Shift+2" = "move container to workspace number 2";
"${modifier}+Shift+3" = "move container to workspace number 3";
@ -63,11 +60,11 @@
};
input = {
"*" = {
xkb_layout = "de";
xkb_layout = builtins.substring 0 2 osConfig.system.locale;
};
};
defaultWorkspace = "workspace number 1";
terminal = "${pkgs.kitty}/bin/kitty";
terminal = osConfig.desktop.defaults.terminal.binary;
};
checkConfig = false;
};

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;
};
};
};
}

View file

@ -1,22 +0,0 @@
{
config,
pkgs,
lib,
inputs,
...
}:
{
options = {
desktop = {
sway = {
enable = lib.mkEnableOption "enable sway";
};
};
};
config = {
wayland.windowManager.niri = {
};
};
};