diff --git a/modules/capabilities/graphics.nix b/modules/capabilities/graphics.nix index f029b63..e28aea0 100644 --- a/modules/capabilities/graphics.nix +++ b/modules/capabilities/graphics.nix @@ -54,6 +54,8 @@ x264 gparted vlc + iosevka-comfy.comfy + nerd-fonts.jetbrains-mono ]; dconf.settings = { @@ -62,8 +64,21 @@ }; }; + home.pointerCursor = { + enable = true; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Ice"; + size = 22; + gtk.enable = true; + x11.enable = true; + }; + gtk = { enable = true; + colorScheme = "dark"; + + gtk2.configLocation = "${config.home.homeDirectory}/.config/.gtkrc-2.0"; # prevents file conflicts between this and other parts of the nix config + gtk2.force = true; }; }; } \ No newline at end of file diff --git a/modules/components/shells/noctalia.nix b/modules/components/shells/noctalia.nix index 0a84161..c7c66f8 100644 --- a/modules/components/shells/noctalia.nix +++ b/modules/components/shells/noctalia.nix @@ -9,23 +9,23 @@ }; }; - flake.homeModules.graphics = { lib, pkgs, osConfig, ... }: { - config = lib.mkIf ((osConfig.components.shells == "noctalia")||(builtins.elem "noctalia" osConfig.components.shells)) { + flake.homeModules.graphics = { lib, pkgs, osConfig, config, ... }: { + config = lib.mkIf (builtins.hasAttr "osConfig" self) (lib.mkIf ((osConfig.components.shells == "noctalia")||(builtins.elem "noctalia" osConfig.components.shells)) { home.activation = { - symlinkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + symlinkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".local/state/noctalia/settings.toml"; - source = "dotfiles/${osConfig.info.hostName}/noctalia/settings.toml"; + source = "dotfiles/${config.info.hostName}/noctalia/settings.toml"; }); - symlinkNoctaliaStatePlugins = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + symlinkNoctaliaStatePlugins = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".local/state/noctalia/plugins"; - source = "dotfiles/${osConfig.info.hostName}/noctalia/plugins"; + source = "dotfiles/${config.info.hostName}/noctalia/plugins"; isDir = true; }); }; - xdg.configFile."noctalia/settings.toml".source = "${self}/dotfiles/${osConfig.info.hostName}/noctalia/settings.toml"; - xdg.configFile."noctalia/plugins".source = "${self}/dotfiles/${osConfig.info.hostName}/noctalia/plugins"; - }; + xdg.configFile."noctalia/settings.toml".source = "${self}/dotfiles/${config.info.hostName}/noctalia/settings.toml"; + xdg.configFile."noctalia/plugins".source = "${self}/dotfiles/${config.info.hostName}/noctalia/plugins"; + }); }; } \ No newline at end of file diff --git a/modules/components/window-managers/niri.nix b/modules/components/window-managers/niri.nix index 74bdcde..f835135 100644 --- a/modules/components/window-managers/niri.nix +++ b/modules/components/window-managers/niri.nix @@ -39,12 +39,12 @@ }; }; - flake.homeModules.graphics = { lib, osConfig, ... }: { - config = lib.mkIf ((osConfig.components.windowManagers == "niri")||(builtins.elem "niri" osConfig.components.windowManagers)) { - home.activation.symlinkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + flake.homeModules.graphics = { lib, osConfig, config, ... }: { + config = lib.mkIf (builtins.hasAttr "osConfig" self) (lib.mkIf ((osConfig.components.windowManagers == "niri")||(builtins.elem "niri" osConfig.components.windowManagers)) { + home.activation.symlinkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".config/niri/config.kdl"; - source = "dotfiles/${osConfig.info.hostName}/niri.kdl"; + source = "dotfiles/${config.info.hostName}/niri.kdl"; }); - }; + }); }; } \ No newline at end of file diff --git a/modules/features/applications/cli/fastfetch.nix b/modules/features/applications/cli/fastfetch.nix index ad2ab19..9239e54 100644 --- a/modules/features/applications/cli/fastfetch.nix +++ b/modules/features/applications/cli/fastfetch.nix @@ -1,10 +1,8 @@ { inputs, self, ... }: { - flake.nixosModules.global = { lib, config, ... }: { + flake.homeModules.global = { pkgs, lib, config, ... }: { options.features.applications.cli.fastfetch.enable = lib.mkEnableOption "fastfetch"; - }; - flake.homeModules.global = { pkgs, lib, osConfig, ... }: { - config = lib.mkIf (osConfig.features.applications.cli.fastfetch.enable) ({ + config = lib.mkIf (config.features.applications.cli.fastfetch.enable) ({ programs.zsh.initContent = lib.mkOrder 1500 "fastfetch"; programs.fastfetch.enable = true; }); diff --git a/modules/features/applications/gui/equibop.nix b/modules/features/applications/gui/equibop.nix index 91e60ef..672d376 100644 --- a/modules/features/applications/gui/equibop.nix +++ b/modules/features/applications/gui/equibop.nix @@ -1,26 +1,24 @@ { inputs, self, ... }: { - flake.nixosModules.graphics = { pkgs, lib, config, ... }: { + flake.homeModules.graphics = { pkgs, lib, config, ... }: { options.features.applications.gui.equibop.enable = lib.mkEnableOption "equibop"; - }; - flake.homeModules.graphics = { pkgs, lib, osConfig, ... }: { - config = lib.mkIf (osConfig.features.applications.gui.equibop.enable) { + config = lib.mkIf (config.features.applications.gui.equibop.enable) { programs.equibop.enable = true; home.activation = { - linkEquibopConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + linkEquibopConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".config/equibop/settings.json"; - source = "dotfiles/${osConfig.info.hostName}/equibop/settings.json"; + source = "dotfiles/${config.info.hostName}/equibop/settings.json"; }); - linkEquibopConfigEquicordSettings = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + linkEquibopConfigEquicordSettings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".config/equibop/settings/settings.json"; - source = "dotfiles/${osConfig.info.hostName}/equibop/equicord-settings.json"; + source = "dotfiles/${config.info.hostName}/equibop/equicord-settings.json"; }); - linkEquibopConfigQuickCss = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + linkEquibopConfigQuickCss = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".config/equibop/settings/quickCss.css"; - source = "dotfiles/${osConfig.info.hostName}/equibop/quickCss.css"; + source = "dotfiles/${config.info.hostName}/equibop/quickCss.css"; }); }; }; diff --git a/modules/features/applications/gui/floorp.nix b/modules/features/applications/gui/floorp.nix index a0de9e2..68a1c40 100644 --- a/modules/features/applications/gui/floorp.nix +++ b/modules/features/applications/gui/floorp.nix @@ -1,216 +1,213 @@ { inputs, self, ... }: { - flake.nixosModules.graphics = { pkgs, config, lib, ... }: { + flake.homeModules.graphics = { pkgs, lib, config, osConfig, ... }: { options.features.applications.gui.floorp.enable = lib.mkEnableOption "floorp"; - }; - flake.homeModules.graphics = { pkgs, lib, osConfig, ... }: { - config = lib.mkIf (osConfig.features.applications.gui.floorp.enable) ( - let - firefox-addons = with pkgs; inputs.firefox-addons.packages.${system}; - in { - stylix.targets.floorp.profileNames = lib.mkIf (osConfig.features.nixos.stylix.enable) [ "default" ]; - - programs.floorp = { - enable = true; - nativeMessagingHosts = [ - pkgs.firefoxpwa - ]; - policies = { - AIControls.Default = { - Value = "blocked"; - Locked = true; - }; - AutofillAddressEnabled = false; - AutofillCreditCardEnabled = false; - DisableAppUpdate = true; - DisableFeedbackCommands = true; - DisableFirefoxStudies = true; - DisablePocket = true; - DisableTelemetry = true; - NoDefaultBookmarks = true; - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; + config = lib.mkIf (config.features.applications.gui.floorp.enable) ( + let + firefox-addons = with pkgs; inputs.firefox-addons.packages.${system}; + in { + programs.floorp = { + enable = true; + nativeMessagingHosts = [ + pkgs.firefoxpwa + ]; + policies = { + AIControls.Default = { + Value = "blocked"; + Locked = true; }; - profiles.default = { - extensions = { - packages = with firefox-addons; [ - adnauseam - bitwarden - indie-wiki-buddy - pwas-for-firefox - gnome-shell-integration - ]; - - settings = { - ${firefox-addons.adnauseam.addonId} = { - force = true; - settings = { - "firstInstall" = false; - "hidingAds" = true; - "clickingAds" = true; - "blockingMalware" = true; - "disableClickingForDNT" = true; - "clickProbability" = 0.75; - selectedFilterLists = [ - "user-filters" - "adnauseam-filters" - "eff-dnt-whitelist" - "ublock-filters" - "ublock-badware" - "ublock-privacy" - "ublock-quick-fixes" - "ublock-unbreak" - "easylist" - "easyprivacy" - "urlhaus-1" - "fanboy-cookiemonster" - "ublock-cookies-easylist" - "adguard-cookies" - "ublock-cookies-adguard" - "fanboy-ai-suggestions" - "easylist-chat" - "easylist-newsletters" - "easylist-notifications" - "easylist-annoyances" - "adguard-mobile-app-banners" - "adguard-other-annoyances" - "adguard-popup-overlays" - "adguard-widgets" - "ublock-annoyances" - ]; - }; - }; - }; - }; - + AutofillAddressEnabled = false; + AutofillCreditCardEnabled = false; + DisableAppUpdate = true; + DisableFeedbackCommands = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableTelemetry = true; + NoDefaultBookmarks = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + }; + profiles.default = { + extensions = { + packages = with firefox-addons; [ + adnauseam + bitwarden + indie-wiki-buddy + pwas-for-firefox + gnome-shell-integration + ]; settings = { - "signon.rememberSignons" = false; - "signon.autofillForms" = false; - "floorp.panelSidebar.enabled" = false; - "floorp.workspaces.enabled" = false; - "browser.toolbars.bookmarks.visibility" = "newtab"; - "floorp.browser.welcome.page.shown" = true; - "browser.newtabpage.activity-stream.feeds.topsites" = false; - "browser.newtabpage.activity-stream.feeds.section.topstories" = false; - "browser.newtabpage.activity-stream.feeds.adsfeed" = false; - "browser.newtabpage.activity-stream.feeds.telemetry" = false; - "browser.newtabpage.activity-stream.feeds.weatherfeed" = false; - "browser.newtabpage.activity-stream.newtabWallpapers.user.enabled" = true; - "browser.newtabpage.activity-stream.widgets.enabled" = false; - "browser.newtabpage.activity-stream.discoverystream.enabled" = false; - "browser.newtabpage.activity-stream.newtabWallpapers.wallpaper" = "suspension-bridge"; - "floorp.design.configs" = { - globalConfigs = { - userInterface = "proton"; - uiCustomization = { - qrCode.disableButton = true; - disableFloorpStart = true; - }; - }; - }; - "ui.key.menuAccessKeyFocuses" = false; - "floorp.keyboardshortcut.enabled" = true; - "floorp.keyboardshortcut.config" = { - enabled = true; - shortcuts = { - gecko-close-tab = { - modifiers = { - alt = true; - ctrl = false; - meta = false; - shift = false; - }; - key = "Q"; - action = "gecko-close-tab"; - }; - gecko-open-new-tab = { - modifiers = { - alt = true; - ctrl = false; - meta = false; - shift = false; - }; - key = "Enter"; - action = "gecko-open-new-tab"; - }; + ${firefox-addons.adnauseam.addonId} = { + force = true; + settings = { + "firstInstall" = false; + "hidingAds" = true; + "clickingAds" = true; + "blockingMalware" = true; + "disableClickingForDNT" = true; + "clickProbability" = 0.75; + selectedFilterLists = [ + "user-filters" + "adnauseam-filters" + "eff-dnt-whitelist" + "ublock-filters" + "ublock-badware" + "ublock-privacy" + "ublock-quick-fixes" + "ublock-unbreak" + "easylist" + "easyprivacy" + "urlhaus-1" + "fanboy-cookiemonster" + "ublock-cookies-easylist" + "adguard-cookies" + "ublock-cookies-adguard" + "fanboy-ai-suggestions" + "easylist-chat" + "easylist-newsletters" + "easylist-notifications" + "easylist-annoyances" + "adguard-mobile-app-banners" + "adguard-other-annoyances" + "adguard-popup-overlays" + "adguard-widgets" + "ublock-annoyances" + ]; }; }; }; + }; - search = { - force = true; - default = "ddg-noai"; - engines = { - ddg-noai = { - name = "DuckDuckGo No-AI"; - urls = [ - { - template = "https://noai.duckduckgo.com/?q={searchTerms}"; - } - ]; - icon = "https://duckduckgo.com/favicon.ico"; - definedAliases = ["@noai"]; + + settings = { + "signon.rememberSignons" = false; + "signon.autofillForms" = false; + "floorp.panelSidebar.enabled" = false; + "floorp.workspaces.enabled" = false; + "browser.toolbars.bookmarks.visibility" = "newtab"; + "floorp.browser.welcome.page.shown" = true; + "browser.newtabpage.activity-stream.feeds.topsites" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + "browser.newtabpage.activity-stream.feeds.adsfeed" = false; + "browser.newtabpage.activity-stream.feeds.telemetry" = false; + "browser.newtabpage.activity-stream.feeds.weatherfeed" = false; + "browser.newtabpage.activity-stream.newtabWallpapers.user.enabled" = true; + "browser.newtabpage.activity-stream.widgets.enabled" = false; + "browser.newtabpage.activity-stream.discoverystream.enabled" = false; + "browser.newtabpage.activity-stream.newtabWallpapers.wallpaper" = "suspension-bridge"; + "floorp.design.configs" = { + globalConfigs = { + userInterface = "proton"; + uiCustomization = { + qrCode.disableButton = true; + disableFloorpStart = true; }; - nixpkgs = { - name = "nixpkgs packages"; - urls = [ - { - template = "https://search.nixos.org/packages?query={searchTerms}"; - } - ]; - icon = "https://wiki.nixos.org/favicon.ico"; - definedAliases = ["@np"]; + }; + }; + "ui.key.menuAccessKeyFocuses" = false; + "floorp.keyboardshortcut.enabled" = true; + "floorp.keyboardshortcut.config" = { + enabled = true; + shortcuts = { + gecko-close-tab = { + modifiers = { + alt = true; + ctrl = false; + meta = false; + shift = false; + }; + key = "Q"; + action = "gecko-close-tab"; }; - nixos-options = { - name = "NixOS options"; - urls = [ - { - template = "https://search.nixos.org/options?query={searchTerms}"; - } - ]; - icon = "https://wiki.nixos.org/favicon.ico"; - definedAliases = ["@no"]; - }; - nixos-wiki = { - name = "NixOS Wiki"; - urls = [ - { - template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; - } - ]; - icon = "https://wiki.nixos.org/favicon.ico"; - definedAliases = ["@nw"]; - }; - noogle = { - name = "Noogle"; - urls = [ - { - template = "https://noogle.dev/q/?term={searchTerms}"; - } - ]; - icon = "https://noogle.dev/favicon.ico"; - definedAliases = ["@ng"]; - }; - arch-wiki = { - name = "ArchWiki"; - urls = [ - { - template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; - } - ]; - icon = "https://wiki.archlinux.org/favicon.ico"; - definedAliases = ["@aw"]; + gecko-open-new-tab = { + modifiers = { + alt = true; + ctrl = false; + meta = false; + shift = false; + }; + key = "Enter"; + action = "gecko-open-new-tab"; }; }; }; }; + + search = { + force = true; + default = "ddg-noai"; + engines = { + ddg-noai = { + name = "DuckDuckGo No-AI"; + urls = [ + { + template = "https://noai.duckduckgo.com/?q={searchTerms}"; + } + ]; + icon = "https://duckduckgo.com/favicon.ico"; + definedAliases = ["@noai"]; + }; + nixpkgs = { + name = "nixpkgs packages"; + urls = [ + { + template = "https://search.nixos.org/packages?query={searchTerms}"; + } + ]; + icon = "https://wiki.nixos.org/favicon.ico"; + definedAliases = ["@np"]; + }; + nixos-options = { + name = "NixOS options"; + urls = [ + { + template = "https://search.nixos.org/options?query={searchTerms}"; + } + ]; + icon = "https://wiki.nixos.org/favicon.ico"; + definedAliases = ["@no"]; + }; + nixos-wiki = { + name = "NixOS Wiki"; + urls = [ + { + template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; + } + ]; + icon = "https://wiki.nixos.org/favicon.ico"; + definedAliases = ["@nw"]; + }; + noogle = { + name = "Noogle"; + urls = [ + { + template = "https://noogle.dev/q/?term={searchTerms}"; + } + ]; + icon = "https://noogle.dev/favicon.ico"; + definedAliases = ["@ng"]; + }; + arch-wiki = { + name = "ArchWiki"; + urls = [ + { + template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; + } + ]; + icon = "https://wiki.archlinux.org/favicon.ico"; + definedAliases = ["@aw"]; + }; + }; + }; }; - } - ); + }; + }) // lib.optionalAttrs (builtins.hasAttr "osConfig" self) { + stylix.targets.floorp.profileNames = lib.mkIf (config.features.applications.gui.floorp.enable) [ "default" ]; + }; }; } \ No newline at end of file diff --git a/modules/features/applications/gui/kitty.nix b/modules/features/applications/gui/kitty.nix index 21f91d9..a4e5d1e 100644 --- a/modules/features/applications/gui/kitty.nix +++ b/modules/features/applications/gui/kitty.nix @@ -1,10 +1,8 @@ { inputs, self, ... }: { - flake.nixosModules.graphics = { pkgs, config, lib, ... }: { + flake.homeModules.graphics = { pkgs, config, lib, ... }: { options.features.applications.gui.kitty.enable = lib.mkEnableOption "kitty"; - }; - flake.homeModules.graphics = { pkgs, osConfig, lib, ... }: { - config = lib.mkIf (osConfig.features.applications.gui.kitty.enable) { + config = lib.mkIf (config.features.applications.gui.kitty.enable) { programs.kitty = { enable = true; diff --git a/modules/features/applications/gui/nautilus.nix b/modules/features/applications/gui/nautilus.nix index 0538b7d..328e8f6 100644 --- a/modules/features/applications/gui/nautilus.nix +++ b/modules/features/applications/gui/nautilus.nix @@ -19,10 +19,10 @@ }; }; - flake.homeModules.graphics = { pkgs, osConfig, lib, ... }: { - config = lib.mkIf (osConfig.features.applications.gui.nautilus.enable) { + flake.homeModules.graphics = { pkgs, osConfig, config, lib, ... }: { + config = lib.mkIf (builtins.hasAttr "osConfig" self) (lib.mkIf (osConfig.features.applications.gui.nautilus.enable) { gtk.gtk3.bookmarks = [ - "file://${osConfig.info.rootPath} NixOS" + "file://${config.info.rootPath} NixOS" "file:///home/grey/Downloads Downloads" "file:///home/grey/Documents Documents" "file:///home/grey/Pictures Pictures" @@ -30,6 +30,6 @@ "file:///home/grey/Videos Videos" "file:/// Root" ]; - }; + }); }; } \ No newline at end of file diff --git a/modules/features/applications/gui/remmina.nix b/modules/features/applications/gui/remmina.nix index 58b7622..dded089 100644 --- a/modules/features/applications/gui/remmina.nix +++ b/modules/features/applications/gui/remmina.nix @@ -1,18 +1,16 @@ { inputs, self, ... }: { - flake.nixosModules.graphics = { pkgs, config, lib, ... }: { + flake.homeModules.graphics = { pkgs, config, lib, ... }: { options.features.applications.gui.remmina.enable = lib.mkEnableOption "remmina"; - }; - flake.homeModules.graphics = { pkgs, osConfig, lib, ... }: { - config = lib.mkIf (osConfig.features.applications.gui.remmina.enable) { + config = lib.mkIf (config.features.applications.gui.remmina.enable) { home.packages = with pkgs; [ remmina freerdp ]; - home.activation.linkRemminaPresets = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + home.activation.linkRemminaPresets = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".local/share/remmina"; - source = "dotfiles/${osConfig.info.hostName}/remmina"; + source = "dotfiles/${config.info.hostName}/remmina"; isDir = true; }); }; diff --git a/modules/features/applications/gui/spotify.nix b/modules/features/applications/gui/spotify.nix index 443ed88..1025c91 100644 --- a/modules/features/applications/gui/spotify.nix +++ b/modules/features/applications/gui/spotify.nix @@ -1,25 +1,23 @@ { inputs, self, ... }: { - flake.nixosModules.graphics = { lib, ... }: { + flake.homeModules.graphics = { pkgs, config, lib, ... }: { options.features.applications.gui.spotify = { enable = lib.mkEnableOption "spotify"; spicetify.enable = lib.mkEnableOption "spicetify"; }; - }; - flake.homeModules.graphics = { pkgs, config, lib, osConfig, ... }: { imports = [ inputs.spicetify.homeManagerModules.default ]; config = { - home.packages = lib.mkIf (with osConfig.features.applications.gui.spotify; enable && !spicetify.enable) (with pkgs; [ + home.packages = lib.mkIf (with config.features.applications.gui.spotify; enable && !spicetify.enable) (with pkgs; [ spotify ]); programs.spicetify = let spicePkgs = inputs.spicetify.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - in lib.mkIf (with osConfig.features.applications.gui.spotify; enable && spicetify.enable) { + in lib.mkIf (with config.features.applications.gui.spotify; enable && spicetify.enable) { enable = true; enabledExtensions = with spicePkgs.extensions; [ hidePodcasts diff --git a/modules/features/applications/gui/vscode.nix b/modules/features/applications/gui/vscode.nix index 749d60e..262fbda 100644 --- a/modules/features/applications/gui/vscode.nix +++ b/modules/features/applications/gui/vscode.nix @@ -1,19 +1,17 @@ { inputs, self, ... }: { - flake.nixosModules.graphics = { pkgs, config, lib, ... }: { + flake.homeModules.graphics = { config, pkgs, lib, ... }: { options.features.applications.gui.vscode.enable = lib.mkEnableOption "vscode"; - }; - flake.homeModules.graphics = { osConfig, pkgs, lib, ... }: { - config = lib.mkIf (osConfig.features.applications.gui.vscode.enable) { + config = lib.mkIf (config.features.applications.gui.vscode.enable) { home.packages = [ pkgs.vscode ]; home.activation = { - linkVsCodeConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + linkVsCodeConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".config/Code/User/settings.json"; source = "dotfiles/global/vscode/settings.json"; }); - linkVsCodeConfigKeybindings = lib.hm.dag.entryAfter ["writeBoundary"] (osConfig.helpers.mkSymlinkActivationScript { + linkVsCodeConfigKeybindings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { target = ".config/Code/User/keybindings.json"; source = "dotfiles/global/vscode/keybindings.json"; }); diff --git a/modules/features/shells/zsh.nix b/modules/features/shells/zsh.nix index 27b0a1e..379540b 100644 --- a/modules/features/shells/zsh.nix +++ b/modules/features/shells/zsh.nix @@ -12,8 +12,13 @@ }; }; - flake.homeModules.global = { pkgs, osConfig, lib, ... }: { - config = lib.mkIf (osConfig.features.shells.zsh.enable) { + flake.homeModules.global = { pkgs, osConfig, config, lib, ... }: { + options.features.shells.zsh = { + enable = lib.mkEnableOption "zsh"; + antidote.enable = lib.mkEnableOption "antidote"; + }; + + config = (if builtins.hasAttr "osConfig" self then (lib.mkIf (osConfig.features.shells.zsh.enable || config.features.shells.zsh.enable)) else (lib.mkIf (config.features.shells.zsh.enable))) { home.shell.enableZshIntegration = true; programs.kitty.shellIntegration.enableZshIntegration = true; @@ -21,7 +26,7 @@ programs.zsh = { enable = true; completionInit = ""; - antidote = lib.mkIf (osConfig.features.shells.zsh.antidote.enable) { + antidote = (if builtins.hasAttr "osConfig" self then (lib.mkIf (osConfig.features.shells.zsh.antidote.enable || config.features.shells.zsh.antidote.enable)) else (lib.mkIf (config.features.shells.zsh.antidote.enable))) { enable = true; plugins = [ "getantidote/use-omz" diff --git a/modules/global/helpers.nix b/modules/global/helpers.nix index c5d6acd..224fa3f 100644 --- a/modules/global/helpers.nix +++ b/modules/global/helpers.nix @@ -1,5 +1,11 @@ { inputs, self, ... }: { flake.nixosModules.global = { pkgs, config, lib, ... }: { + options.helpers = { + # nothing here yet + }; + }; + + flake.homeModules.global = { pkgs, config, lib, ... }: { options.helpers = { mkSymlinkActivationScript = lib.mkOption { type = lib.types.functionTo lib.types.str; diff --git a/modules/global/home.nix b/modules/global/home.nix index 539eab1..a04dced 100644 --- a/modules/global/home.nix +++ b/modules/global/home.nix @@ -1,5 +1,5 @@ { inputs, self, ... }: { - flake.homeModules.global = { osConfig, config, pkgs, ... }: { + flake.homeModules.global = { config, pkgs, osConfig, ... }: { nix.gc = { automatic = true; persistent = true; @@ -7,13 +7,24 @@ }; home = { - stateVersion = osConfig.info.stateVersion; + stateVersion = config.info.stateVersion; packages = with pkgs; [ speedtest-go - ] ++ osConfig.features.applications.extraUserPackages; + ] ++ config.features.applications.extraPackages + ++ (if !(builtins.hasAttr "osConfig" self) then [ + pkgs.home-manager + ] else []); shell.enableBashIntegration = true; + + username = "grey"; + homeDirectory = "/home/${config.home.username}"; + }; + + xdg = { + enable = true; + localBinInPath = !(builtins.hasAttr "osConfig" self); }; programs = { diff --git a/modules/global/options.nix b/modules/global/options.nix index 7bea9af..01db747 100644 --- a/modules/global/options.nix +++ b/modules/global/options.nix @@ -25,16 +25,35 @@ default = "grub"; }; - features.applications = { - extraPackages = lib.mkOption { - type = lib.types.listOf (lib.types.package); - default = []; + features.applications.extraPackages = lib.mkOption { + type = lib.types.listOf (lib.types.package); + default = []; + }; + }; + }; + + flake.homeModules.global = { pkgs, config, lib, ... }: { + options = { + info = { + rootPath = lib.mkOption { + type = lib.types.str; + default = "/home/grey/nixos"; }; - extraUserPackages = lib.mkOption { - type = lib.types.listOf (lib.types.package); - default = []; + hostName = lib.mkOption { + type = lib.types.str; + default = ""; }; + + stateVersion = lib.mkOption { + type = lib.types.str; + default = ""; + }; + }; + + features.applications.extraPackages = lib.mkOption { + type = lib.types.listOf (lib.types.package); + default = []; }; }; }; diff --git a/modules/hosts/kitagawa/home/fastfetch.nix b/modules/hosts/kitagawa/home/fastfetch.nix index 01b8fb7..a062ac8 100644 --- a/modules/hosts/kitagawa/home/fastfetch.nix +++ b/modules/hosts/kitagawa/home/fastfetch.nix @@ -1,6 +1,6 @@ { inputs, self, ... }: { - flake.homeModules.kitagawa = { pkgs, lib, osConfig, ... }: { - config = lib.mkIf (osConfig.features.applications.cli.fastfetch.enable) ({ + flake.homeModules.kitagawa = { pkgs, lib, config, ... }: { + config = lib.mkIf (config.features.applications.cli.fastfetch.enable) ({ programs.fastfetch = { settings = { logo = { diff --git a/modules/hosts/kitagawa/kitagawa.nix b/modules/hosts/kitagawa/kitagawa.nix index c2b6249..077b16e 100644 --- a/modules/hosts/kitagawa/kitagawa.nix +++ b/modules/hosts/kitagawa/kitagawa.nix @@ -32,39 +32,18 @@ }; applications = { - cli = { - fastfetch.enable = true; - }; - gui = { spotify = { enable = true; spicetify.enable = true; }; - kitty.enable = true; vscode.enable = true; - floorp.enable = true; - equibop.enable = true; - remmina.enable = true; }; extraPackages = with pkgs; [ github-desktop moonlight-qt ]; - - extraUserPackages = with pkgs; [ - obsidian - thunderbird - jetbrains.clion - jetbrains.idea - proton-vpn - ente-auth - signal-desktop - xarchiver - kdePackages.filelight - loupe - ]; }; }; @@ -109,6 +88,39 @@ graphics ]; + info = { + hostName = "kitagawa"; + stateVersion = "26.05"; + }; + + features = { + applications = { + cli = { + fastfetch.enable = true; + }; + + gui = { + equibop.enable = true; + floorp.enable = true; + kitty.enable = true; + remmina.enable = true; + }; + + extraPackages = with pkgs; [ + obsidian + thunderbird + jetbrains.clion + jetbrains.idea + proton-vpn + ente-auth + signal-desktop + xarchiver + kdePackages.filelight + loupe + ]; + }; + }; + /* imports = [ #"${global-configs}/gnome.nix" @@ -129,7 +141,6 @@ }; xdg = { - enable = true; mimeApps.defaultApplications = { "x-scheme-handler/x-github-client" = [ "github-desktop.desktop" ]; "x-scheme-handler/x-github-desktop-dev-auth" = [ "github-desktop.desktop" ]; diff --git a/modules/hosts/takamaki/home/zsh.nix b/modules/hosts/takamaki/home/zsh.nix new file mode 100644 index 0000000..2b875df --- /dev/null +++ b/modules/hosts/takamaki/home/zsh.nix @@ -0,0 +1,7 @@ +{ inputs, self, ... }: { + flake.homeModules.takamaki = { config, pkgs, ... }: { + programs.zsh.shellAliases = { + apply-config = "zsh -c 'cd /home/grey/flake; git add .; home-manager switch --flake .#takamaki -b bak'"; + }; + }; +} \ No newline at end of file diff --git a/modules/hosts/takamaki/takamaki.nix b/modules/hosts/takamaki/takamaki.nix new file mode 100644 index 0000000..f11ef19 --- /dev/null +++ b/modules/hosts/takamaki/takamaki.nix @@ -0,0 +1,72 @@ +{ inputs, self, ... }: { + flake.homeConfigurations.takamaki = inputs.home-manager.lib.homeManagerConfiguration { + pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux; + modules = with self.homeModules; [ + global + graphics + takamaki + ]; + }; + + flake.homeModules.takamaki = { pkgs, config, lib, ... }: { + info = { + rootPath = "/home/grey/flake"; + hostName = "takamaki"; + stateVersion = "26.11"; + }; + + features = { + shells.zsh = { + enable = true; + antidote.enable = true; + }; + + applications = { + cli = { + fastfetch.enable = true; + }; + + extraPackages = with pkgs; [ + (writeShellScriptBin "switch-os" '' + sudo efibootmgr --bootnext 0000 + sudo reboot + '') + (writeShellScriptBin "universal-reboot" '' + sudo reboot + '') + (writeShellScriptBin "universal-shutdown" '' + sudo systemctl poweroff + '') + (writeShellScriptBin "increase-brightness" '' + LOOP_COUNTER=0 + DEVICE=$1 + PRETTY_NAME=$(sudo ddccontrol dev:$DEVICE 2>&1 >/dev/null | grep -oP "/usr/share/ddccontrol-db/monitor/\K.+\.xml" | sed 's/.xml//') + while + RESULT=$(sudo ddccontrol -r 0x10 -W +5 dev:$DEVICE 2> /dev/null) + WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//') + CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//') + LOOP_COUNTER=$(($LOOP_COUNTER + 1)) + [[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 10 ] + do true; done + + noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME" + '') + (writeShellScriptBin "decrease-brightness" '' + LOOP_COUNTER=0 + DEVICE=$1 + PRETTY_NAME=$(sudo ddccontrol dev:$DEVICE 2>&1 >/dev/null | grep -oP "/usr/share/ddccontrol-db/monitor/\K.+\.xml" | sed 's/.xml//') + while + RESULT=$(sudo ddccontrol -r 0x10 -W -5 dev:$DEVICE 2> /dev/null) + WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//') + CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//') + LOOP_COUNTER=$(($LOOP_COUNTER + 1)) + [[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 10 ] + do true; done + + noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME" + '') + ]; + }; + }; + }; +} \ No newline at end of file