diff --git a/home/crow/common/optional/browsers/default.nix b/home/crow/common/optional/browsers/default.nix deleted file mode 100644 index 50a9ac9..0000000 --- a/home/crow/common/optional/browsers/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - imports = [ - ./firefox.nix - ./chrome.nix - ]; -} diff --git a/home/dragneel/Dragneel.nix b/home/dragneel/Dragneel.nix new file mode 100644 index 0000000..75e417e --- /dev/null +++ b/home/dragneel/Dragneel.nix @@ -0,0 +1,14 @@ +{lib, ...}: { + imports = [ + common/core + common/optional/desktops/kde + common/optional/browsers/firefox.nix + common/optional/browsers/chromium.nix + common/optional/comms + common/optional/media + common/optional/gaming + ]; + + monitors = [ + ]; +} diff --git a/home/dragneel/common/core/default.nix b/home/dragneel/common/core/default.nix new file mode 100644 index 0000000..9baff12 --- /dev/null +++ b/home/dragneel/common/core/default.nix @@ -0,0 +1,54 @@ +{ + config, + lib, + pkgs, + hostSpec, + ... +}: let + platform = + if hostSpec.isDarwin + then "darwin" + else "nixos"; +in { + imports = lib.flatten [ + (map lib.custom.relativeToRoot [ + "modules/common/host-spec.nix" + "modules/home" + ]) + #./${platform.nix} + ./xdg.nix + ./starship.nix + ]; + + home.packages = builtins.attrValues { + inherit + (pkgs) + screen + ouch + bitwarden-cli + ; + }; + + inherit hostSpec; + + home = { + username = lib.mkDefault config.hostSpec.username; + homeDirectory = lib.mkDefault config.hostSpec.home; + stateVersion = lib.mkDefault "24.05"; + + sessionVariables = { + SHELL = "zsh"; + TERM = "foot"; + TERMINAL = "foot"; + VISUAL = "nvim"; + EDITOR = "nvim"; + }; + }; + + #home.pointerCursor = { + # name = "phinger-cursors-dark"; + # package = pkgs.phinger-cursors; + # size = 32; + # gtk.enable = true; + #}; +} diff --git a/home/dragneel/common/core/starship.nix b/home/dragneel/common/core/starship.nix new file mode 100644 index 0000000..1ac420d --- /dev/null +++ b/home/dragneel/common/core/starship.nix @@ -0,0 +1,67 @@ +{config, ...}: { + programs.starship = let + raisin_black = "#262932"; + blood_red = "#710000"; + rich_lemon = "#FDF500"; + keppel = "#1AC5B0"; + electric_blue = "#36EBF3"; + blushing_purple = "#9370DB"; + frostbite = "#E455AE"; + steel_pink = "#CB1DCD"; + pale_silver = "#D1C5C0"; + in { + enable = true; + enableZshIntegration = true; + enableNushellIntegration = true; + settings = { + format = "[ ](${rich_lemon})[ CrOS](bg:${rich_lemon} fg:${raisin_black})$username$hostname[ ](fg:${rich_lemon} bg:${blushing_purple})$directory[ ](fg:${blushing_purple} bg:${frostbite})$git_branch$git_status[ ](fg:${frostbite} bg:${steel_pink})$nix_shell[ ](${steel_pink})"; + right_format = "[ ](${rich_lemon})$time[ ](${rich_lemon})"; + + # Left Modules + username = { + disabled = false; + format = "[ $user]($style)"; + style_user = "fg:${keppel} bg:${rich_lemon}"; + style_root = "fg:${blood_red} bg:${rich_lemon}"; + }; + hostname = { + disabled = false; + format = "[@$hostname ]($style)"; + style = "fg:${keppel} bg:${rich_lemon}"; + ssh_only = false; + ssh_symbol = ""; + }; + directory = { + disabled = false; + format = "[ $path ]($style)"; + style = "bg:${blushing_purple} fg:${raisin_black}"; + truncation_length = 3; + truncation_symbol = "…/"; + }; + git_branch = { + disabled = false; + format = "[ $symbol $branch ]($style)"; + symbol = ""; + style = "fg:${raisin_black} bg:${frostbite}"; + }; + git_status = { + disabled = false; + format = "[$all_status$ahead_behind]($style)"; + style = "fg:${raisin_black} bg:${frostbite}"; + }; + nix_shell = { + disabled = false; + format = "[$symbol $name]($style)"; + style = "bg:${steel_pink} fg:${electric_blue}"; + symbol = ""; + }; + + # Right Modules + time = { + disabled = false; + format = "[$time]($style)"; + style = "fg:${raisin_black} bg:${rich_lemon}"; + }; + }; + }; +} diff --git a/home/dragneel/common/core/xdg.nix b/home/dragneel/common/core/xdg.nix new file mode 100644 index 0000000..ca15cdb --- /dev/null +++ b/home/dragneel/common/core/xdg.nix @@ -0,0 +1,28 @@ +{ + config, + lib, + hostSpec, + ... +}: { + home = { + preferXdgDirectories = true; + }; + + xdg = { + enable = true; + userDirs = { + enable = true; + createDirectories = true; + desktop = "${config.home.homeDirectory}/.desktop"; + documents = "${config.home.homeDirectory}/Documents"; + download = "${config.home.homeDirectory}/Downloads"; + music = "${config.home.homeDirectory}/media/audio"; + pictures = "${config.home.homeDirectory}/media/images"; + videos = "${config.home.homeDirectory}/media/video"; + extraConfig = { + XDG_PUBLICSHARE_DIR = "/var/empty"; + XDG_TEMPLATES_DIR = "/var/empty"; + }; + }; + }; +} diff --git a/home/dragneel/common/optional/browsers/default.nix b/home/dragneel/common/optional/browsers/default.nix new file mode 100644 index 0000000..8799eca --- /dev/null +++ b/home/dragneel/common/optional/browsers/default.nix @@ -0,0 +1,45 @@ +{pkgs, ...}: { + programs.chromium = { + enable = true; + package = pkgs.ungoogled-chromium; + }; + + programs.firefox = { + enable = true; + policies = { + BlockAboutConfig = true; + DisableFirefoxStudies = true; + DisableFormHistory = true; + DisablePasswordReveal = true; + DisablePocket = true; + DisableProfileImport = true; + DontCheckDefaultBrowser = true; + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + OfferToSaveLogins = false; + PasswordManagerEnabled = false; + ExtensionSettings = { + # Bitwarden + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = { + installation_mode = "force_installed"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/{446900e4-71c2-419f-a6a7-df9c091e268b}/latest.xpl"; + default_area = "navbar"; + }; + "uBlock0@raymondhill.net" = { + installation_mode = "force_installed"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/uBlock0@raymondhill.net/latest.xpl"; + default_area = "menupanel"; + }; + "sponsorBlocker@ajay.app" = { + installation_mode = "force_installed"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/sponsorBlocker@ajay.app/latest.xpl"; + default_area = "menupanel"; + }; + }; + }; + }; +} diff --git a/home/dragneel/common/optional/comms/default.nix b/home/dragneel/common/optional/comms/default.nix new file mode 100644 index 0000000..9da8365 --- /dev/null +++ b/home/dragneel/common/optional/comms/default.nix @@ -0,0 +1,8 @@ +{pkgs, ...}: { + home.packages = builtins.attrValues { + inherit + (pkgs) + discord + ; + }; +} diff --git a/home/dragneel/common/optional/desktops/kde/default.nix b/home/dragneel/common/optional/desktops/kde/default.nix new file mode 100644 index 0000000..e69de29 diff --git a/home/dragneel/common/optional/gaming/default.nix b/home/dragneel/common/optional/gaming/default.nix new file mode 100644 index 0000000..5de6275 --- /dev/null +++ b/home/dragneel/common/optional/gaming/default.nix @@ -0,0 +1,43 @@ +# This module just provides a customized .desktop file with gamescope args dynamically created based on the +# host's monitors configuration +{ + pkgs, + config, + lib, + ... +}: let + monitor = lib.head (lib.filter (m: m.primary) config.monitors); + + steam-session = let + gamescope = lib.concatStringsSep " " [ + (lib.getExe pkgs.gamescope) + "--output-width ${toString monitor.width}" + "--output-height ${toString monitor.height}" + "--framerate-limit ${toString monitor.refreshRate}" + "--prefer-output ${monitor.name}" + "--adaptive-sync" + "--expose-wayland" + "--steam" + "--hdr-enabled" + ]; + steam = lib.concatStringsSep " " [ + "steam" + #"steam://open/bigpicture" + ]; + in + pkgs.writeTextDir "share/applications/steam-session.desktop" '' + [Desktop Entry] + Name=Steam Session + Exec=${gamescope} -- ${steam} + Icon=steam + Type=Application + ''; +in { + home.packages = [ + steam-session + #pkgs.vintagestory + pkgs.mudlet + pkgs.r2modman + pkgs.prismlauncher + ]; +} diff --git a/home/dragneel/common/optional/media/default.nix b/home/dragneel/common/optional/media/default.nix new file mode 100644 index 0000000..2d50379 --- /dev/null +++ b/home/dragneel/common/optional/media/default.nix @@ -0,0 +1,9 @@ +{pkgs, ...}: { + home.packages = builtins.attrValues { + inherit + (pkgs) + spotify + vlc + ; + }; +}