diff --git a/configuration.nix b/configuration.nix index 49d042c..f6be3e1 100644 --- a/configuration.nix +++ b/configuration.nix @@ -14,7 +14,7 @@ nixpkgs.config.allowUnfree = true; imports = [ ./modules - + # ./options.nix ]; environment.pathsToLink = [ diff --git a/home/apps/default.nix b/home/apps/default.nix new file mode 100644 index 0000000..c915cba --- /dev/null +++ b/home/apps/default.nix @@ -0,0 +1,12 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + imports = [ + ./terminal + ]; +} diff --git a/home/apps/terminal/default.nix b/home/apps/terminal/default.nix index 29ec7df..3350007 100644 --- a/home/apps/terminal/default.nix +++ b/home/apps/terminal/default.nix @@ -8,5 +8,6 @@ { imports = [ ./kitty.nix + ./ranger.nix ]; } diff --git a/home/apps/terminal/kitty.nix b/home/apps/terminal/kitty.nix index 101e0fb..dc7f5b1 100644 --- a/home/apps/terminal/kitty.nix +++ b/home/apps/terminal/kitty.nix @@ -2,6 +2,7 @@ config, lib, pkgs, + osConfig, ... }: diff --git a/home/default.nix b/home/default.nix index 0b8dd11..7364e83 100644 --- a/home/default.nix +++ b/home/default.nix @@ -8,5 +8,6 @@ { imports = [ ./desktop + ./apps ]; } diff --git a/home/desktop/shell/noctalia.nix b/home/desktop/shell/noctalia.nix index e7529db..38bd638 100644 --- a/home/desktop/shell/noctalia.nix +++ b/home/desktop/shell/noctalia.nix @@ -8,12 +8,20 @@ }: { - config = lib.mkIf osConfig.desktop.shell.noctalia.enable { + imports = + if true then + [ + inputs.noctalia.homeModules.default + ] + else + [ ]; + config = { + programs.noctalia-shell = + if osConfig.desktop.shell.noctalia.enable then + { + enable = true; + } + else + { }; }; - -imports = lib.mkIf osConfig.desktop.shell.noctalia.enable [ - inputs.noctalia.homeModules.default - ] } - - diff --git a/home/desktop/shell/walker.nix b/home/desktop/shell/walker.nix index f8e503f..0b7bb4d 100644 --- a/home/desktop/shell/walker.nix +++ b/home/desktop/shell/walker.nix @@ -8,19 +8,27 @@ }: { - config = lib.mkIf osConfig.desktop.shell.walker.enable { - programs = { - walker = { - enable = true; - runAsService = true; - config = { - theme = "noctalia"; + config = + if osConfig.desktop.shell.walker.enable then + { + programs = { + walker = { + enable = true; + runAsService = true; + config = { + theme = "noctalia"; + }; + }; }; - }; - }; - }; + } + else + { }; - imports = lib.mkIf osConfig.desktop.shell.walker.enable [ - inputs.walker.homeManagerModules.default - ] + imports = + if osConfig.desktop.shell.walker.enable then + [ + inputs.walker.homeManagerModules.default + ] + else + [ ]; } diff --git a/home/desktop/window-managers/hyprland.nix b/home/desktop/window-managers/hyprland.nix index de919e8..b31ee1b 100644 --- a/home/desktop/window-managers/hyprland.nix +++ b/home/desktop/window-managers/hyprland.nix @@ -11,6 +11,7 @@ options = { desktop = { hyprland = { + enable = lib.mkEnableOption "enable hyprland"; monitors = lib.mkOption { default = [ ",preferred,auto,1" @@ -44,7 +45,7 @@ }; }; - config = lib.mkIf osConfig.desktop.hyprland.enable { + config = lib.mkIf osConfig.desktop.window-managers.hyprland.enable { xdg.portal = { enable = true; configPackages = [ @@ -97,9 +98,9 @@ (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" - )) + (lib.mkIf (osConfig.desktop.shell.walker.enable && 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," diff --git a/home/desktop/window-managers/niri.nix b/home/desktop/window-managers/niri.nix index 70f0aaa..6a20cd7 100644 --- a/home/desktop/window-managers/niri.nix +++ b/home/desktop/window-managers/niri.nix @@ -7,106 +7,103 @@ ... }: -let - modifier = lib.mkIf (${osConfig.keybinds.modifier} == "Meta") "Mod"; +let + modifier = if (osConfig.keybinds.modifier == "Meta") then "Mod" else null; kb-layout = builtins.substring 0 2 osConfig.system.locale; -in +in { - options = { - desktop.window-managers = { - niri = { - }; - }; + config = + if osConfig.desktop.window-managers.niri.enable then + { + home.file = { + "~/.config/niri/config.kdl" = '' + input { - }; - config = lib.mkIf osConfig.desktop.window-managers.niri.enable { - home.file = { - "~/.config/niri/config.kdl" = '' -input { + keyboard { + xkb { + layout "${kb-layout}" + } + repeat-delay 600 + repeat-rate 20 + track-layout "global" + } + touchpad { + tap + dwt + accel-profile "flat" + accel-speed 0.0 + scroll-method "two-finger" + - keyboard { - xkb { - layout "${kb-layout}" - } - repeat-delay 600 - repeat-rate 20 - track-layout "global" - } - touchpad { - tap - dwt - accel-profile "flat" - accel-speed 0.0 - scroll-method "two-finger" - + } + mouse { + accel-speed 0.5 + accel-profile "flat" - } - mouse { - accel-speed 0.5 - accel-profile "flat" + } + } - } -} - -gestures { - hot-corners { - off - } - -} - -cursor { - hide-when-typing - hide-after-inactive-ms 2000 -} - -xwayland-satellite { - path "xwayland-satellite" -} - -hotkey-overlay { - hide-not-bound -} - -binds { - ${modifier}+Down cooldown-ms=150 { focus-workspace-down; } - ${modifier}+Up cooldown-ms=150 { focus-workspace-up; } - ${modifier}+${osConfig.keybinds.hotkeys.terminal} { spawn "${osConfig.terminal.binary}";} - ${modifier}+Left {focus-column-left; } - ${modifier}+Right {focus-column-right; } - ${modifier}+${osConfig.keybinds.hotkeys.browser} { spawn "${osConfig.apps.browser.default}";} - ${modifier}+${osConfig.keybinds.hotkeys.launcher} { spawn "${osConfig.desktop.window-managers.shell.launcher.default}";} - Print { screenshot;} - ${modifier}+Shift+${osConfig.keybinds.hotkeys.close-window} { close-window; } - ${modifier}+Shift+${osConfig.keybinds.hotkeys.editor} { spawn "${osConfig.apps.development.editor.default}";} -} - -spawn-at-startup "elephant" -spawn-at-startup "noctalia-shell" - - -layout { - gaps 20 - focus-ring { - width 5 - } - border { - off - } -} -window-rule { - geometry-corner-radius 20 - clip-to-geometry true -} - - -prefer-no-csd - -include "noctalia.kdl" - - - ''; - }; - }; + gestures { + hot-corners { + off + } + + } + + cursor { + hide-when-typing + hide-after-inactive-ms 2000 + } + + xwayland-satellite { + path "xwayland-satellite" + } + + hotkey-overlay { + hide-not-bound + } + + binds { + ${modifier}+Down cooldown-ms=150 { focus-workspace-down; } + ${modifier}+Up cooldown-ms=150 { focus-workspace-up; } + ${modifier}+${osConfig.keybinds.hotkeys.terminal} { spawn "${osConfig.terminal.binary}";} + ${modifier}+Left {focus-column-left; } + ${modifier}+Right {focus-column-right; } + ${modifier}+${osConfig.keybinds.hotkeys.browser} { spawn "${osConfig.apps.browser.default}";} + ${modifier}+${osConfig.keybinds.hotkeys.launcher} { spawn "${osConfig.desktop.window-managers.shell.launcher.default}";} + Print { screenshot;} + ${modifier}+Shift+${osConfig.keybinds.hotkeys.close-window} { close-window; } + ${modifier}+Shift+${osConfig.keybinds.hotkeys.editor} { spawn "${osConfig.apps.development.editor.default}";} + } + + spawn-at-startup "elephant" + spawn-at-startup "noctalia-shell" + + + layout { + gaps 20 + focus-ring { + width 5 + } + border { + off + } + } + window-rule { + geometry-corner-radius 20 + clip-to-geometry true + } + + + prefer-no-csd + + include "noctalia.kdl" + + + ''; + }; + } + else + { }; } diff --git a/home/desktop/window-managers/sway.nix b/home/desktop/window-managers/sway.nix index 6cf21e3..371f50c 100644 --- a/home/desktop/window-managers/sway.nix +++ b/home/desktop/window-managers/sway.nix @@ -3,70 +3,68 @@ pkgs, lib, inputs, + osConfig, ... }: { - options = { - desktop.window-managers = { - sway = { - }; - }; + config = + if osConfig.desktop.window-managers.sway.enable then + { + wayland.windowManager.sway = { + enable = true; + package = pkgs.swayfx; + config = { + modifier = "Mod4"; + startup = [ + { command = "elephant"; } + ]; + keybindings = + let + modifier = config.wayland.windowManager.sway.config.modifier; + in + { + "${modifier}+Return" = "exec ${config.wayland.windowManager.sway.config.terminal}"; + "${modifier}+Shift+q" = "kill"; + "${modifier}+d" = "exec walker"; + "${modifier}+o" = "exec zen"; + "${modifier}+Control+right" = "exec /home/marty/.config/sway/scripts/workspaceswitcher right"; + "${modifier}+Control+left" = "exec /home/marty/.config/sway/scripts/workspaceswitcher left"; + "${modifier}+f" = "fullscreen"; - }; - config = lib.mkIf osConfig.desktop.window-managers.sway.enable { - wayland.windowManager.sway = { - enable = true; - package = pkgs.swayfx; - config = { - modifier = "Mod4"; - startup = [ - { command = "elephant"; } - ]; - keybindings = - let - modifier = config.wayland.windowManager.sway.config.modifier; - in - { - "${modifier}+Return" = "exec ${config.wayland.windowManager.sway.config.terminal}"; - "${modifier}+Shift+q" = "kill"; - "${modifier}+d" = "exec walker"; - "${modifier}+o" = "exec zen"; - "${modifier}+Control+right" = "exec /home/marty/.config/sway/scripts/workspaceswitcher right"; - "${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"; + "${modifier}+4" = "workspace number 4"; + "${modifier}+5" = "workspace number 5"; + "${modifier}+6" = "workspace number 6"; + "${modifier}+7" = "workspace number 7"; + "${modifier}+8" = "workspace number 8"; + "${modifier}+9" = "workspace number 9"; + "${modifier}+s" = "workspace number 0"; - "${modifier}+1" = "workspace number 1"; - "${modifier}+2" = "workspace number 2"; - "${modifier}+3" = "workspace number 3"; - "${modifier}+4" = "workspace number 4"; - "${modifier}+5" = "workspace number 5"; - "${modifier}+6" = "workspace number 6"; - "${modifier}+7" = "workspace number 7"; - "${modifier}+8" = "workspace number 8"; - "${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"; - "${modifier}+Shift+4" = "move container to workspace number 4"; - "${modifier}+Shift+5" = "move container to workspace number 5"; - "${modifier}+Shift+6" = "move container to workspace number 6"; - "${modifier}+Shift+7" = "move container to workspace number 7"; - "${modifier}+Shift+8" = "move container to workspace number 8"; - "${modifier}+Shift+9" = "move container to workspace number 9"; - "${modifier}+Shift+s" = "move container to workspace number 0"; - }; - input = { - "*" = { - xkb_layout = builtins.substring 0 2 osConfig.system.locale; + "${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"; + "${modifier}+Shift+4" = "move container to workspace number 4"; + "${modifier}+Shift+5" = "move container to workspace number 5"; + "${modifier}+Shift+6" = "move container to workspace number 6"; + "${modifier}+Shift+7" = "move container to workspace number 7"; + "${modifier}+Shift+8" = "move container to workspace number 8"; + "${modifier}+Shift+9" = "move container to workspace number 9"; + "${modifier}+Shift+s" = "move container to workspace number 0"; + }; + input = { + "*" = { + xkb_layout = builtins.substring 0 2 osConfig.system.locale; + }; + }; + defaultWorkspace = "workspace number 1"; + terminal = osConfig.desktop.defaults.terminal.binary; }; + checkConfig = false; }; - defaultWorkspace = "workspace number 1"; - terminal = osConfig.desktop.defaults.terminal.binary; - }; - checkConfig = false; - }; - }; + } + else + { }; } diff --git a/hosts/marty-pc/home.nix b/hosts/marty-pc/home.nix index dfff422..13c06ff 100644 --- a/hosts/marty-pc/home.nix +++ b/hosts/marty-pc/home.nix @@ -40,7 +40,7 @@ }; imports = [ - ./../../modules + ./../../home ]; programs.home-manager.enable = true; } diff --git a/modules/apps/audio/default.nix b/modules/apps/audio/default.nix index f3cfc85..bf6549b 100644 --- a/modules/apps/audio/default.nix +++ b/modules/apps/audio/default.nix @@ -16,11 +16,26 @@ }; config = { - environment.systemPackages = with pkgs; [ - (lib.mkIf (apps.audio.base.enable) pavucontrol) - (lib.mkIf (apps.audio.base.enable) playerctl) - (lib.mkIf (apps.audio.editing.enable) tenacity) - (lib.mkIf (apps.audio.editing.enable) flac) - ]; + environment.systemPackages = + with pkgs; + [ ] + ++ ( + if (config.apps.audio.base.enable) then + [ + pavucontrol + playerctl + ] + else + [ ] + ) + ++ ( + if (config.apps.audio.editing.enable) then + [ + tenacity + flac + ] + else + [ ] + ); }; } diff --git a/modules/apps/default.nix b/modules/apps/default.nix index 9d741e1..d9fd732 100644 --- a/modules/apps/default.nix +++ b/modules/apps/default.nix @@ -14,6 +14,7 @@ ./misc ./peripherals ./video + ./sync ./terminal ]; } diff --git a/modules/apps/development/default.nix b/modules/apps/development/default.nix index 875388b..f0307e3 100644 --- a/modules/apps/development/default.nix +++ b/modules/apps/development/default.nix @@ -7,7 +7,6 @@ { imports = [ - ./git.nix ./editor.nix ./godot.nix ./languages.nix diff --git a/modules/apps/development/editor.nix b/modules/apps/development/editor.nix index ef93334..f030ed0 100644 --- a/modules/apps/development/editor.nix +++ b/modules/apps/development/editor.nix @@ -11,44 +11,54 @@ editor = { vscodium.enable = lib.mkEnableOption "enable vscodium"; emacs.enable = lib.mkEnableOption "enable emacs"; - default = "vscodium"; + default = lib.mkOption { + default = "vscodium"; + description = "default editor"; + }; }; }; }; config = { - environment.systemPackages = with pkgs; [ - (lib.mkIf config.development.editor.vscodium.enable vscodium) - nixfmt - ]; + environment.systemPackages = + with pkgs; + [ + nixfmt + ] + ++ (if config.development.editor.vscodium.enable then [ vscodium ] else [ ]); programs = { - vscode = lib.mkIf config.development.editor.vscodium.enable { - enable = true; - package = pkgs.vscodium; - defaultEditor = lib.mkIf (config.development.editor.default == "vscodium") true; - 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 - ]; - }; + vscode = + if config.development.editor.vscodium.enable then + { + enable = true; + package = pkgs.vscodium; + defaultEditor = if (config.development.editor.default == "vscodium") then true else false; + # 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 + # ]; + } + else + { }; }; services = { - emacs = lib.mkIf config.development.editor.emacs.enable { - enable = true; - install = true; - defaultEditor = lib.mkIf (config.development.editor.default == "emacs") true; - }; - }; - home.sessionVariables = { - EDITOR = lib.mkDefault "codium"; + emacs = + if config.development.editor.emacs.enable then + { + enable = true; + install = true; + defaultEditor = if (config.development.editor.default == "emacs") then true else false; + } + else + { }; }; }; } diff --git a/modules/apps/development/godot.nix b/modules/apps/development/godot.nix index dbde233..35c5210 100644 --- a/modules/apps/development/godot.nix +++ b/modules/apps/development/godot.nix @@ -12,9 +12,14 @@ }; }; - config = lib.mkIf config.apps.development.godot.enable { - systemPackages = with pkgs; [ - godot - ]; + config = { + environment.systemPackages = + if config.apps.development.godot.enable then + with pkgs; + [ + godot + ] + else + [ ]; }; } diff --git a/modules/apps/development/languages.nix b/modules/apps/development/languages.nix index b6280cc..579a615 100644 --- a/modules/apps/development/languages.nix +++ b/modules/apps/development/languages.nix @@ -8,13 +8,15 @@ { options = { apps.development.languages = { - python = lib.mkEnableOption "enable python"; + python.enable = lib.mkEnableOption "enable python"; }; }; config = { - environment.systemPackages = with pkgs; [ - (lib.mkIf lib.mkIf config.development.languages.python.enable virtualenv) - ]; + environment.systemPackages = + with pkgs; + [ + ] + ++ (if config.apps.development.languages.python.enable then [ virtualenv ] else [ ]); }; } diff --git a/modules/apps/gaming/default.nix b/modules/apps/gaming/default.nix index 214d4cd..72a4372 100644 --- a/modules/apps/gaming/default.nix +++ b/modules/apps/gaming/default.nix @@ -6,8 +6,65 @@ }: { - imports = [ - ./steam.nix - ./minecraft.nix - ]; + options = { + apps.gaming = { + enable = lib.mkEnableOption "enable gaming"; + steam.enable = lib.mkEnableOption "enable steam"; + minecraft.enable = lib.mkEnableOption "enable minecraft"; + }; + }; + + config = { + environment.systemPackages = + with pkgs; + [ ] + ++ ( + if (config.apps.gaming.enable) then + [ + cartridges + lutris + ] + else + [ ] + ) + ++ ( + if (config.apps.gaming.minecraft.enable) then + + [ prismlauncher ] + else + [ ] + ) + ++ ( + if (config.apps.gaming.steam.enable) then + + [ adwsteamgtk ] + else + [ ] + ); + programs = { + steam = + if config.apps.gaming.steam.enable then + { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + gamescopeSession.enable = true; + protontricks.enable = true; + extraCompatPackages = with pkgs; [ + proton-ge-bin + ]; + extraPackages = with pkgs; [ + gamescope + ]; + } + else + { }; + gamescope = { + enable = true; + capSysNice = true; + }; + }; + }; + } diff --git a/modules/apps/gaming/minecraft.nix b/modules/apps/gaming/minecraft.nix deleted file mode 100644 index 60bae60..0000000 --- a/modules/apps/gaming/minecraft.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - options = { - apps.gaming = { - minecraft.enable = lib.mkEnableOption "enable minecraft"; - }; - }; - - config = lib.mkIf config.apps.gaming.minecraft.enable { - environment.systemPackages = with pkgs; [ - prismlauncher - ]; - }; -} diff --git a/modules/apps/gaming/steam.nix b/modules/apps/gaming/steam.nix deleted file mode 100644 index 2da6f0d..0000000 --- a/modules/apps/gaming/steam.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - options = { - apps.gaming = { - steam.enable = lib.mkEnableOption "enable steam"; - }; - }; - - config = lib.mkIf config.apps.gaming.steam.enable { - environment.systemPackages = with pkgs; [ - adwsteamgtk - ]; - programs = { - steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - localNetworkGameTransfers.openFirewall = true; - gamescopeSession.enable = true; - protontricks.enable = true; - extraCompatPackages = with pkgs; [ - proton-ge-bin - ]; - extraPackages = with pkgs; [ - gamescope - ]; - }; - gamescope = { - enable = true; - capSysNice = true; - }; - }; - }; - -} diff --git a/modules/apps/image/default.nix b/modules/apps/image/default.nix index d3e1f7a..058657e 100644 --- a/modules/apps/image/default.nix +++ b/modules/apps/image/default.nix @@ -15,10 +15,25 @@ }; config = { - environment.systemPackages = with pkgs; [ - (lib.mkIf (apps.image.base.enable) nomacs) - (lib.mkIf (apps.image.editing.enable) gimp3-with-plugins) - (lib.mkIf (apps.image.editing.enable) krita) - ]; + environment.systemPackages = + with pkgs; + [ ] + ++ ( + if (config.apps.image.base.enable) then + + [ nomacs ] + else + [ ] + ) + ++ ( + if (config.apps.image.editing.enable) then + + [ + gimp3-with-plugins + krita + ] + else + [ ] + ); }; } diff --git a/modules/apps/internet/browser.nix b/modules/apps/internet/browser.nix index 6e6bc96..9f2b534 100644 --- a/modules/apps/internet/browser.nix +++ b/modules/apps/internet/browser.nix @@ -26,9 +26,19 @@ }; config = { - environment.systemPackages = [ - (lib.mkIf config.apps.internet.browsers.zen-browser.enable config.apps.internet.browsers.zen-browser.package) - (lib.mkIf config.apps.internet.browsers.tor-browser.enable config.apps.internet.browsers.tor-browser.package) - ]; + environment.systemPackages = + [ ] + ++ ( + if config.apps.internet.browsers.zen-browser.enable then + [ config.apps.internet.browsers.zen-browser.package ] + else + [ ] + ) + ++ ( + if config.apps.internet.browsers.tor-browser.enable then + [ config.apps.internet.browsers.tor-browser.package ] + else + [ ] + ); }; } diff --git a/modules/apps/misc/default.nix b/modules/apps/misc/default.nix index 3192aea..d31ab39 100644 --- a/modules/apps/misc/default.nix +++ b/modules/apps/misc/default.nix @@ -16,16 +16,43 @@ }; config = { - environment.systemPackages = with pkgs; [ - (lib.mkIf (config.apps.misc.obsidian.enable) obsidian) - (lib.mkIf (config.apps.misc.bitwarden.enable) rbw ( - lib.mkIf (config.desktop.shell.rofi.enable) pinentry-curses rofi-rbw - )) - (lib.mkIf (config.apps.misc.blender.enable) blender) - libsecret - gcr_4 - pass - ]; + environment.systemPackages = + with pkgs; + [ + libsecret + gcr_4 + pass + ] + ++ ( + if (config.apps.misc.obsidian.enable) then + + [ obsidian ] + else + [ ] + ) + ++ ( + if (config.apps.misc.bitwarden.enable) then + + [ rbw ] + ++ ( + if (config.desktop.shell.rofi.enable) then + [ + pinentry-curses + rofi-rbw + ] + else + [ ] + ) + else + [ ] + ) + ++ ( + if (config.apps.misc.blender.enable) then + + [ blender ] + else + [ ] + ); programs = { seahorse.enable = true; }; diff --git a/modules/apps/sync/default.nix b/modules/apps/sync/default.nix index b2908fd..e1aca06 100644 --- a/modules/apps/sync/default.nix +++ b/modules/apps/sync/default.nix @@ -31,22 +31,30 @@ }; config = { programs = { - kdeconnect = lib.mkIf config.apps.sync.kde-connect.enable { - enable = true; - }; + kdeconnect = + if config.apps.sync.kde-connect.enable then + { + enable = true; + } + else + { }; }; services = { - syncthing = lib.mkIf config.apps.sync.syncthing.enable { - enable = true; - tray.enable = true; - guiAddress = "0.0.0.0:8384"; - settings = { - devices = config.apps.sync.syncthing.devices; - folders = config.apps.sync.syncthing.folders; - }; - overrideDevices = lib.mkIf (config.apps.sync.syncthing.devices == { }) false; - overrideFolders = lib.mkIf (config.apps.sync.syncthing.folders == { }) false; - }; + syncthing = + if config.apps.sync.syncthing.enable then + { + enable = true; + tray.enable = true; + guiAddress = "0.0.0.0:8384"; + settings = { + devices = config.apps.sync.syncthing.devices; + folders = config.apps.sync.syncthing.folders; + }; + overrideDevices = if (config.apps.sync.syncthing.devices == { }) then false else true; + overrideFolders = if (config.apps.sync.syncthing.folders == { }) then false else true; + } + else + { }; }; }; } diff --git a/modules/apps/terminal/base-packages.nix b/modules/apps/terminal/base-packages.nix index 4d2c5aa..ffd207b 100644 --- a/modules/apps/terminal/base-packages.nix +++ b/modules/apps/terminal/base-packages.nix @@ -19,15 +19,20 @@ bc openssl ] - ++ lib.mkIf config.apps.terminal.toys [ + ++ ( + if config.apps.terminal.toys then + [ - asciiquarium-transparent - cava - bunnyfetch - nerdfetch - fastfetch - cmatrix - astroterm - ]; + asciiquarium-transparent + cava + bunnyfetch + nerdfetch + fastfetch + cmatrix + astroterm + ] + else + [ ] + ); }; } diff --git a/modules/apps/terminal/kitty.nix b/modules/apps/terminal/kitty.nix index d5fb705..084272a 100644 --- a/modules/apps/terminal/kitty.nix +++ b/modules/apps/terminal/kitty.nix @@ -13,13 +13,25 @@ }; }; - config = lib.mkIf config.apps.terminal.kitty.enable { - terminal = lib.mkIf (config.apps.terminal.default == "kitty") { - package = pkgs.kitty; - binary = "${pkgs.kitty}/bin/kitty"; - }; - environment.systemPackages = with pkgs; [ - kitty - ]; + config = { + # apps.terminal = + # if (config.apps.terminal.default == "kitty") then + # { + # package = pkgs.kitty; + # binary = "${pkgs.kitty}/bin/kitty"; + # } + # else + # { }; + environment.systemPackages = + with pkgs; + [ ] + ++ ( + if config.apps.terminal.kitty.enable then + [ + kitty + ] + else + [ ] + ); }; } diff --git a/modules/apps/terminal/tui.nix b/modules/apps/terminal/tui.nix index 9f7298d..1ea179c 100644 --- a/modules/apps/terminal/tui.nix +++ b/modules/apps/terminal/tui.nix @@ -18,8 +18,16 @@ in }; config = { - environment.systemPackages = with pkgs; [ - (lib.mkIf (tt.ranger.enable) ranger) - ]; + environment.systemPackages = + with pkgs; + [ + ] + ++ ( + if tt.ranger.enable then + + [ ranger ] + else + [ ] + ); }; } diff --git a/modules/apps/video/default.nix b/modules/apps/video/default.nix index 210bef0..b7218f1 100644 --- a/modules/apps/video/default.nix +++ b/modules/apps/video/default.nix @@ -16,11 +16,32 @@ }; config = { - environment.systemPackages = with pkgs; [ - (lib.mkIf (apps.video.base.enable) mpv) - (lib.mkIf (apps.video.editing.enable) kdePackages.kdenlive) - (lib.mkIf (apps.video.media.enable) jellyfin-desktop) - (lib.mkIf (apps.video.media.enable) pipeline) - ]; + environment.systemPackages = + with pkgs; + [ ] + ++ ( + if config.apps.video.base.enable then + + [ mpv ] + else + [ ] + ) + ++ ( + if config.apps.video.editing.enable then + + [ kdePackages.kdenlive ] + else + [ ] + ) + ++ ( + if config.apps.video.media.enable then + + [ + jellyfin-desktop + pipeline + ] + else + [ ] + ); }; } diff --git a/modules/desktop/display-manager.nix b/modules/desktop/display-manager.nix index 040a58f..b2c114d 100644 --- a/modules/desktop/display-manager.nix +++ b/modules/desktop/display-manager.nix @@ -30,22 +30,35 @@ programs = { uwsm = { waylandCompositors = { - hyprland = lib.mkIf config.desktop.window-managers.hyprland.enable { - prettyName = "Hyprland"; - comment = "Hyprland"; - binPath = "${config.programs.hyprland.package}/bin/start-hyprland"; - }; - sway = lib.mkIf config.desktop.window-managers.sway.enable { - prettyName = "Sway"; - comment = "Sway"; - binPath = "${config.programs.sway.package}/bin/sway --session"; - }; - niri = lib.mkIf config.desktop.window-managers.niri.enable { - prettyName = "Niri"; - comment = "Niri"; - binPath = "${config.programs.niri.package}/bin/niri-session"; - }; + hyprland = + if config.desktop.window-managers.hyprland.enable then + { + prettyName = "Hyprland"; + comment = "Hyprland"; + binPath = "${config.programs.hyprland.package}/bin/start-hyprland"; + } + else + { }; + sway = + if config.desktop.window-managers.sway.enable then + { + prettyName = "Sway"; + comment = "Sway"; + binPath = "${config.programs.sway.package}/bin/sway --session"; + } + else + { }; + niri = + if config.desktop.window-managers.niri.enable then + { + prettyName = "Niri"; + comment = "Niri"; + binPath = "${config.programs.niri.package}/bin/niri-session"; + } + else + { }; }; }; }; + xdg.portal.enable = true; } diff --git a/modules/desktop/shell/launcher.nix b/modules/desktop/shell/launcher.nix index 31af404..4eb3312 100644 --- a/modules/desktop/shell/launcher.nix +++ b/modules/desktop/shell/launcher.nix @@ -12,20 +12,23 @@ walker.enable = lib.mkEnableOption "enable walker"; rofi.enable = lib.mkEnableOption "enable rofi"; launcher = lib.mkOption { - default = (lib.mkIf config.desktop.shell.walker.enable "walker"); + default = (if config.desktop.shell.walker.enable then "walker" else null); description = "default launcher"; }; }; }; - config = { - programs = { - walker = lib.mkIf config.desktop.shell.walker.enable { - enable = true; - }; - }; - environment.systemPackages = with pkgs; [ - (lib.mkIf (config.desktop.shell.rofi.enable) rofi) - ]; + config = { + environment.systemPackages = + with pkgs; + [ + ] + ++ ( + if config.desktop.shell.rofi.enable then + + [ rofi ] + else + [ ] + ); }; } diff --git a/modules/desktop/shell/noctalia.nix b/modules/desktop/shell/noctalia.nix index 76202e4..bd8eaaf 100644 --- a/modules/desktop/shell/noctalia.nix +++ b/modules/desktop/shell/noctalia.nix @@ -12,13 +12,4 @@ noctalia.enable = lib.mkEnableOption "enable noctalia"; }; }; - imports = lib.mkIf config.desktop.shell.noctalia.enable [ - inputs.noctalia.homeModules.default - ]; - config = lib.mkIf config.desktop.shell.noctalia.enable { - desktop.shell.swww.enable = lib.mkDefault false; - programs.noctalia-shell = { - enable = true; - }; - }; } diff --git a/modules/desktop/shell/swww.nix b/modules/desktop/shell/swww.nix index e1c8222..13acdfa 100644 --- a/modules/desktop/shell/swww.nix +++ b/modules/desktop/shell/swww.nix @@ -13,10 +13,20 @@ }; }; - config = lib.mkIf config.desktop.shell.swww.enable { - environment.systemPackages = with pkgs; [ - waypaper - swww - ]; - }; + config = + + { + environment.systemPackages = + with pkgs; + [ ] + ++ ( + if config.desktop.shell.swww.enable then + [ + waypaper + swww + ] + else + [ ] + ); + }; } diff --git a/modules/desktop/shell/waybar.nix b/modules/desktop/shell/waybar.nix index e8e6f62..a693801 100644 --- a/modules/desktop/shell/waybar.nix +++ b/modules/desktop/shell/waybar.nix @@ -12,11 +12,15 @@ }; }; - config = lib.mkIf config.desktop.shell.waybar.enable { - programs = { - waybar = { - enable = true; - }; - }; + config = { + programs = + if config.desktop.shell.waybar.enable then + { + waybar = { + enable = true; + }; + } + else + { }; }; } diff --git a/modules/desktop/utilities/grimblast.nix b/modules/desktop/utilities/grimblast.nix index 7b1f676..eb0fbee 100644 --- a/modules/desktop/utilities/grimblast.nix +++ b/modules/desktop/utilities/grimblast.nix @@ -13,10 +13,21 @@ }; }; - config = lib.mkIf config.desktop.utilities.grimblast.enable { - environment.systemPackages = with pkgs; [ - grimblast - gradia - ]; - }; + config = + + { + environment.systemPackages = + with pkgs; + [ ] + ++ ( + if config.desktop.utilities.grimblast.enable then + with pkgs; + [ + grimblast + gradia + ] + else + [ ] + ); + }; } diff --git a/modules/desktop/window-managers/hyprland.nix b/modules/desktop/window-managers/hyprland.nix index 18f46f6..4347b85 100644 --- a/modules/desktop/window-managers/hyprland.nix +++ b/modules/desktop/window-managers/hyprland.nix @@ -14,14 +14,20 @@ }; }; }; - config = lib.mkIf config.desktop.window-managers.hyprland.enable { - programs.hyprland = { - enable = true; - withUWSM = true; - xwayland.enable = true; - package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; - portalPackage = - inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + config = + + { + programs.hyprland = + if config.desktop.window-managers.hyprland.enable then + { + enable = true; + withUWSM = true; + xwayland.enable = true; + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + portalPackage = + inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + } + else + { }; }; - }; } diff --git a/modules/desktop/window-managers/niri.nix b/modules/desktop/window-managers/niri.nix index 69036f5..f554d92 100644 --- a/modules/desktop/window-managers/niri.nix +++ b/modules/desktop/window-managers/niri.nix @@ -13,13 +13,24 @@ }; }; }; - config = lib.mkIf config.desktop.window-managers.niri.enable { - services.gnome.gnome-keyring.enable = true; - environment.systemPackages = with pkgs; [ - xwayland-satellite - ]; - programs.niri = { - enable = true; - }; + config = { + environment.systemPackages = + with pkgs; + [ ] + ++ ( + if config.desktop.window-managers.niri.enable then + [ + xwayland-satellite + ] + else + [ ] + ); + programs.niri = + if config.desktop.window-managers.niri.enable then + { + enable = true; + } + else + { }; }; } diff --git a/modules/desktop/window-managers/sway.nix b/modules/desktop/window-managers/sway.nix index 972c1ae..e4d4a34 100644 --- a/modules/desktop/window-managers/sway.nix +++ b/modules/desktop/window-managers/sway.nix @@ -13,12 +13,15 @@ }; }; }; - config = lib.mkIf config.desktop.window-managers.sway.enable { - services.gnome.gnome-keyring.enable = true; - programs.sway = { - enable = true; - wrapperFeatures.gtk = true; - package = null; - }; + config = { + programs.sway = + if config.desktop.window-managers.sway.enable then + { + enable = true; + wrapperFeatures.gtk = true; + package = null; + } + else + { }; }; } diff --git a/modules/system/default.nix b/modules/system/default.nix index 34aceda..2b0bc73 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -8,6 +8,7 @@ { imports = [ ./boot.nix + ./git.nix ./shell.nix ./networking.nix ./localization.nix diff --git a/modules/apps/development/git.nix b/modules/system/git.nix similarity index 94% rename from modules/apps/development/git.nix rename to modules/system/git.nix index 7445de6..780c03b 100644 --- a/modules/apps/development/git.nix +++ b/modules/system/git.nix @@ -10,7 +10,7 @@ programs = { git = { enable = true; - settings = { + config = { init = { defaultBranch = "main"; }; diff --git a/modules/system/networking.nix b/modules/system/networking.nix index ea37bf8..60891ae 100644 --- a/modules/system/networking.nix +++ b/modules/system/networking.nix @@ -2,7 +2,7 @@ { networking = { - domain = config.domain; + domain = "maty.tf"; networkmanager.enable = true; firewall = { enable = true;