aboutsummaryrefslogtreecommitdiff
path: root/modules/desktop/home
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2025-06-09 17:40:46 +0000
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2025-06-09 17:40:46 +0000
commita45c4551712c1ba5cb82eaf290f311ab0e8690e4 (patch)
treef62b23489fb31f8ea58fef77f99619efd784eb36 /modules/desktop/home
big changes
Diffstat (limited to 'modules/desktop/home')
-rw-r--r--modules/desktop/home/default.nix14
-rw-r--r--modules/desktop/home/environments/gnome/default.nix67
-rw-r--r--modules/desktop/home/environments/hyprland/default.nix14
-rw-r--r--modules/desktop/home/environments/hyprland/dunst.nix44
-rw-r--r--modules/desktop/home/environments/hyprland/fuzzel.nix44
-rw-r--r--modules/desktop/home/environments/hyprland/hyprland/catppuccin.conf79
-rw-r--r--modules/desktop/home/environments/hyprland/hyprland/default.nix96
-rw-r--r--modules/desktop/home/environments/hyprland/hyprland/wallpaper.jpgbin0 -> 169046 bytes
-rw-r--r--modules/desktop/home/environments/hyprland/waybar/catppuccin.scss26
-rw-r--r--modules/desktop/home/environments/hyprland/waybar/config.nix59
-rw-r--r--modules/desktop/home/environments/hyprland/waybar/default.nix20
-rw-r--r--modules/desktop/home/environments/hyprland/waybar/power_menu.xml23
-rw-r--r--modules/desktop/home/environments/hyprland/waybar/style.scss86
-rw-r--r--modules/desktop/home/gtk/adwaita.nix33
-rw-r--r--modules/desktop/home/gtk/catppuccin.nix33
-rw-r--r--modules/desktop/home/gtk/default.nix26
-rw-r--r--modules/desktop/home/programs/firefox/adwaita.nix25
-rw-r--r--modules/desktop/home/programs/firefox/catppuccin.nix20
-rw-r--r--modules/desktop/home/programs/firefox/default.nix17
-rw-r--r--modules/desktop/home/programs/firefox/profile.nix38
-rw-r--r--modules/desktop/home/programs/musescore.nix13
21 files changed, 777 insertions, 0 deletions
diff --git a/modules/desktop/home/default.nix b/modules/desktop/home/default.nix
new file mode 100644
index 0000000..47d8687
--- /dev/null
+++ b/modules/desktop/home/default.nix
@@ -0,0 +1,14 @@
+let
+ findPrograms =
+ builtins.attrValues
+ (builtins.mapAttrs
+ (file: type: ./programs/${file})
+ (builtins.readDir ./programs));
+in {
+ imports =
+ [
+ ./environments/gnome
+ ./gtk
+ ]
+ ++ findPrograms;
+}
diff --git a/modules/desktop/home/environments/gnome/default.nix b/modules/desktop/home/environments/gnome/default.nix
new file mode 100644
index 0000000..9b248ea
--- /dev/null
+++ b/modules/desktop/home/environments/gnome/default.nix
@@ -0,0 +1,67 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.gnome;
+in
+ lib.mkIf cfg.enable {
+ home.packages = with pkgs.gnomeExtensions; [
+ blur-my-shell
+ dash-to-dock
+ ];
+
+ dconf = {
+ enable = true;
+ settings = {
+ "org/gnome/mutter" = {
+ workspaces-only-on-primary = false;
+ };
+ "org/gnome/shell/app-switcher" = {
+ current-workspace-only = true;
+ };
+
+ # Idle settings
+ "org/gnome/desktop/session" = {
+ idle-delay = 0;
+ };
+ "org/gnome/settings-daemon/plugins/power" = {
+ sleep-inactive-ac-type = "nothing";
+ };
+
+ # Keybindings
+ "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
+ binding = "<Super>Return";
+ command = "blackbox";
+ name = "Terminal";
+ };
+ "org/gnome/settings-daemon/plugins/media-keys" = {
+ custom-keybindings = [
+ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
+ ];
+ };
+
+ # Background
+ "org/gnome/desktop/background" = rec {
+ picture-uri = "file://${pkgs.gnome-backgrounds}/share/backgrounds/gnome/blobs-d.svg";
+ picture-uri-dark = picture-uri;
+ };
+
+ # Extensions
+ "org/gnome/shell" = {
+ disable-user-extensions = false;
+ enabled-extensions = with pkgs.gnomeExtensions; [
+ blur-my-shell.extensionUuid
+ dash-to-dock.extensionUuid
+ ];
+ };
+
+ "org/gnome/shell/extensions/dash-to-dock" = {
+ dash-max-icon-size = 48;
+ show-trash = false;
+ show-mounts = false;
+ };
+ };
+ };
+ }
diff --git a/modules/desktop/home/environments/hyprland/default.nix b/modules/desktop/home/environments/hyprland/default.nix
new file mode 100644
index 0000000..85abeaa
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/default.nix
@@ -0,0 +1,14 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.hyprland;
+in {
+ imports = [
+ ./hyprland
+ ./dunst.nix
+ ./fuzzel.nix
+ ./waybar
+ ];
+}
diff --git a/modules/desktop/home/environments/hyprland/dunst.nix b/modules/desktop/home/environments/hyprland/dunst.nix
new file mode 100644
index 0000000..6a5a0d1
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/dunst.nix
@@ -0,0 +1,44 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.hyprland.components.dunst;
+in
+ lib.mkIf cfg.enable {
+ services.dunst = {
+ enable = true;
+ settings = lib.mkMerge [
+ {
+ global = {
+ offset = "8x30";
+ origin = "top-right";
+ transparency = 10;
+ font = "Iosevka Nerd Font";
+ };
+ }
+ (lib.mkIf (cfg.theme == "catppuccin") {
+ global = {
+ frame_color = "#89b4fa";
+ highlight = "#89b4fa";
+ };
+
+ urgency_low = {
+ background = "#1e1e2e";
+ foreground = "#cdd6f4";
+ };
+
+ urgency_normal = {
+ background = "#1e1e2e";
+ foreground = "#cdd6f4";
+ };
+
+ urgency_critical = {
+ background = "#1e1e2e";
+ foreground = "#cdd6f4";
+ frame_color = "#fab387";
+ };
+ })
+ ];
+ };
+ }
diff --git a/modules/desktop/home/environments/hyprland/fuzzel.nix b/modules/desktop/home/environments/hyprland/fuzzel.nix
new file mode 100644
index 0000000..6dca3fb
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/fuzzel.nix
@@ -0,0 +1,44 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.collinux.desktop.hyprland.components.fuzzel;
+in
+ lib.mkIf cfg.enable {
+ programs.fuzzel = {
+ enable = true;
+ settings = {
+ main = {
+ prompt = " ";
+ dpi-aware = false;
+
+ font = "Iosevka Nerd Font";
+ line-height = 25;
+ lines = 10;
+ width = 30;
+
+ horizontal-pad = 8;
+ vertical-pad = 8;
+ };
+ border = {
+ radius = 0;
+ width = 2;
+ };
+
+ colors = lib.mkIf (cfg.theme == "catppuccin") {
+ background = "1e1e2edd";
+ text = "cdd6f4ff";
+ prompt = "bac2deff";
+ placeholder = "7f849cff";
+ input = "cdd6f4ff";
+ match = "89b4faff";
+ selection = "585b70ff";
+ selection-text = "cdd6f4ff";
+ selection-match = "89b4faff";
+ counter = "7f849cff";
+ border = "89b4faff";
+ };
+ };
+ };
+ }
diff --git a/modules/desktop/home/environments/hyprland/hyprland/catppuccin.conf b/modules/desktop/home/environments/hyprland/hyprland/catppuccin.conf
new file mode 100644
index 0000000..572cb7e
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/hyprland/catppuccin.conf
@@ -0,0 +1,79 @@
+$rosewater = rgb(f5e0dc)
+$rosewaterAlpha = f5e0dc
+
+$flamingo = rgb(f2cdcd)
+$flamingoAlpha = f2cdcd
+
+$pink = rgb(f5c2e7)
+$pinkAlpha = f5c2e7
+
+$mauve = rgb(cba6f7)
+$mauveAlpha = cba6f7
+
+$red = rgb(f38ba8)
+$redAlpha = f38ba8
+
+$maroon = rgb(eba0ac)
+$maroonAlpha = eba0ac
+
+$peach = rgb(fab387)
+$peachAlpha = fab387
+
+$yellow = rgb(f9e2af)
+$yellowAlpha = f9e2af
+
+$green = rgb(a6e3a1)
+$greenAlpha = a6e3a1
+
+$teal = rgb(94e2d5)
+$tealAlpha = 94e2d5
+
+$sky = rgb(89dceb)
+$skyAlpha = 89dceb
+
+$sapphire = rgb(74c7ec)
+$sapphireAlpha = 74c7ec
+
+$blue = rgb(89b4fa)
+$blueAlpha = 89b4fa
+
+$lavender = rgb(b4befe)
+$lavenderAlpha = b4befe
+
+$text = rgb(cdd6f4)
+$textAlpha = cdd6f4
+
+$subtext1 = rgb(bac2de)
+$subtext1Alpha = bac2de
+
+$subtext0 = rgb(a6adc8)
+$subtext0Alpha = a6adc8
+
+$overlay2 = rgb(9399b2)
+$overlay2Alpha = 9399b2
+
+$overlay1 = rgb(7f849c)
+$overlay1Alpha = 7f849c
+
+$overlay0 = rgb(6c7086)
+$overlay0Alpha = 6c7086
+
+$surface2 = rgb(585b70)
+$surface2Alpha = 585b70
+
+$surface1 = rgb(45475a)
+$surface1Alpha = 45475a
+
+$surface0 = rgb(313244)
+$surface0Alpha = 313244
+
+$base = rgb(1e1e2e)
+$baseAlpha = 1e1e2e
+
+$mantle = rgb(181825)
+$mantleAlpha = 181825
+
+$crust = rgb(11111b)
+$crustAlpha = 11111b
+
+$accent = $mauve
diff --git a/modules/desktop/home/environments/hyprland/hyprland/default.nix b/modules/desktop/home/environments/hyprland/hyprland/default.nix
new file mode 100644
index 0000000..1c3c2b8
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/hyprland/default.nix
@@ -0,0 +1,96 @@
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.hyprland;
+in
+ lib.mkIf cfg.enable {
+ home.file."${config.xdg.configHome}/uwsm/env" = lib.mkIf cfg.useUwsm {
+ text = ''export QT_QPA_PLATFORM=wayland'';
+ };
+
+ home.packages = with pkgs; [wl-clipboard hyprshot brightnessctl];
+
+ wayland.windowManager.hyprland = {
+ enable = true;
+ systemd.enable = !cfg.useUwsm; # conflicts with uwsm
+
+ settings = {
+ source = "${./catppuccin.conf}";
+
+ xwayland.enabled = false; # all of my apps are compatible with wayland
+ general = {
+ "col.active_border" = "$accent";
+ "col.inactive_border" = "$base";
+ border_size = 2;
+ gaps_in = 5;
+ gaps_out = 8;
+ };
+
+ # TODO these should be dependent on what applications are enabled
+ bind =
+ [
+ "Mod4, q, killactive"
+ "Mod4, x, exec, footclient"
+ "Mod4, b, exec, firefox"
+ "Mod4, h, exec, obsidian"
+ "Mod4, SPACE, exec, fuzzel"
+ ]
+ ++ (
+ # workspaces
+ # binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
+ builtins.concatLists (builtins.genList (
+ i: let
+ ws = i + 1;
+ in [
+ "Mod4, code:1${toString i}, workspace, ${toString ws}"
+ "Mod4 SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
+ ]
+ )
+ 9)
+ );
+
+ binde = [
+ ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
+ ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
+
+ ", XF86MonBrightnessUp, exec, brightnessctl s 5%+"
+ ", XF86MonBrightnessDown, exec, brightnessctl s 5%-"
+ ];
+
+ bindm = [
+ "Mod4, mouse:272, movewindow"
+ "Mod4, mouse:273, resizewindow"
+ ];
+
+ monitor = ", prefred, auto, 1";
+ animations = {
+ bezier = [
+ "ease, 0.25, 0.1, 0.25, 1"
+ "menu_decel, 0.1, 1, 0, 1"
+ ];
+ animation = [
+ "workspaces, 1, 2, ease"
+ "workspaces, 1, 7, menu_decel, slidefade 15%"
+ "global, 1, 2.5, ease"
+ "windowsIn, 1, 2.75, ease, slide"
+ "windowsOut, 1.275, ease, slide"
+ ];
+ };
+ misc.disable_hyprland_logo = true;
+ };
+ };
+
+ home.file."Pictures/wallpaper.jpg".source = ./wallpaper.jpg;
+
+ services.hyprpaper = {
+ enable = true;
+ settings = {
+ ipc = false;
+ preload = ["Pictures/wallpaper.jpg"];
+ wallpaper = ",Pictures/wallpaper.jpg";
+ };
+ };
+ }
diff --git a/modules/desktop/home/environments/hyprland/hyprland/wallpaper.jpg b/modules/desktop/home/environments/hyprland/hyprland/wallpaper.jpg
new file mode 100644
index 0000000..039afcc
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/hyprland/wallpaper.jpg
Binary files differ
diff --git a/modules/desktop/home/environments/hyprland/waybar/catppuccin.scss b/modules/desktop/home/environments/hyprland/waybar/catppuccin.scss
new file mode 100644
index 0000000..0eb6a82
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/waybar/catppuccin.scss
@@ -0,0 +1,26 @@
+@define-color rosewater #f5e0dc;
+@define-color flamingo #f2cdcd;
+@define-color pink #f5c2e7;
+@define-color mauve #cba6f7;
+@define-color red #f38ba8;
+@define-color maroon #eba0ac;
+@define-color peach #fab387;
+@define-color yellow #f9e2af;
+@define-color green #a6e3a1;
+@define-color teal #94e2d5;
+@define-color sky #89dceb;
+@define-color sapphire #74c7ec;
+@define-color blue #89b4fa;
+@define-color lavender #b4befe;
+@define-color text #cdd6f4;
+@define-color subtext1 #bac2de;
+@define-color subtext0 #a6adc8;
+@define-color overlay2 #9399b2;
+@define-color overlay1 #7f849c;
+@define-color overlay0 #6c7086;
+@define-color surface2 #585b70;
+@define-color surface1 #45475a;
+@define-color surface0 #313244;
+@define-color base #1e1e2e;
+@define-color mantle #181825;
+@define-color crust #11111b;
diff --git a/modules/desktop/home/environments/hyprland/waybar/config.nix b/modules/desktop/home/environments/hyprland/waybar/config.nix
new file mode 100644
index 0000000..7afa83c
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/waybar/config.nix
@@ -0,0 +1,59 @@
+{pkgs, ...}: {
+ spacing = 4;
+ modules-left = ["custom/launcher" "hyprland/workspaces"];
+ modules-center = ["hyprland/window"];
+ modules-right = ["bluetooth" "wireplumber" "battery" "clock" "custom/power"];
+
+ "custom/launcher" = {
+ format = " ";
+ on-click = "${pkgs.fuzzel}/bin/fuzzel";
+ };
+ "hyprland/workspaces" = {
+ disable-scroll = true;
+ all-outputs = true;
+ warp-on-scroll = false;
+ format = "{icon}";
+ format-icons = {
+ "1" = "";
+ "2" = "󰈹";
+ "3" = "󰝚";
+ "4" = "󰎚";
+ "5" = "";
+ };
+ };
+ "hyprland/window" = {
+ on-click = "hyprctl dispatch float";
+ };
+ "bluetooth" = {
+ format = "";
+ format-connected = "󰂯 {device_alias}";
+ };
+ "battery" = {
+ format = "{icon} {capacity}%";
+ format-alt = "{icon}";
+ format-icons = [" " " " " " " " " "];
+ };
+ "wireplumber" = {
+ format = "{icon} {volume}%";
+ format-alt = "{icon}";
+ format-muted = "󰖁 {volume}%";
+ format-icons.default = ["󰕿" "󰖀" "󰕾"];
+ tooltip = false;
+ };
+ "clock" = {
+ format = "{:%I:%M}";
+ format-alt = "/{:%Y/%b/%d-%a}";
+ tooltip = false;
+ };
+ "custom/power" = {
+ format = " collin";
+ tooltip = false;
+ menu = "on-click";
+ menu-file = "${./power_menu.xml}";
+ menu-actions = {
+ logout = "hyprctl dispatch exit";
+ reboot = "reboot";
+ shutdown = "poweroff";
+ };
+ };
+}
diff --git a/modules/desktop/home/environments/hyprland/waybar/default.nix b/modules/desktop/home/environments/hyprland/waybar/default.nix
new file mode 100644
index 0000000..3b73a78
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/waybar/default.nix
@@ -0,0 +1,20 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.hyprland.components.waybar;
+in
+ lib.mkIf cfg.enable {
+ programs.waybar = {
+ enable = true;
+ systemd.enable = true;
+ settings."mainBar" = import ./config.nix {inherit pkgs;};
+ style = lib.mkIf (cfg.theme == "catppuccin") ''
+ @import "${./catppuccin.scss}";
+
+ ${builtins.readFile ./style.scss}
+ '';
+ };
+ }
diff --git a/modules/desktop/home/environments/hyprland/waybar/power_menu.xml b/modules/desktop/home/environments/hyprland/waybar/power_menu.xml
new file mode 100644
index 0000000..2935c89
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/waybar/power_menu.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <object class="GtkMenu" id="menu">
+ <child>
+ <object class="GtkMenuItem" id="logout">
+ <property name="label">Log Out</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem" id="delimiter1"/>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="reboot">
+ <property name="label">Reboot</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkMenuItem" id="shutdown">
+ <property name="label">Shutdown</property>
+ </object>
+ </child>
+ </object>
+</interface>
diff --git a/modules/desktop/home/environments/hyprland/waybar/style.scss b/modules/desktop/home/environments/hyprland/waybar/style.scss
new file mode 100644
index 0000000..7674164
--- /dev/null
+++ b/modules/desktop/home/environments/hyprland/waybar/style.scss
@@ -0,0 +1,86 @@
+* {
+ font-family: Iosevka Nerd Font;
+ font-size: 10pt;
+ min-height: 0;
+}
+
+#waybar {
+ background: @base;
+ color: @text;
+}
+
+#workspaces,
+#clock,
+#battery,
+#wireplumber,
+#bluetooth.connected,
+#custom-power {
+ color: @text;
+ background: @surface0;
+
+ padding: 0.5rem 1rem;
+ border-radius: 1rem;
+
+ margin: 5px 0;
+}
+
+#workspaces button {
+ color: @lavender;
+ border-radius: 1rem;
+ padding: 0rem 0.75rem;
+}
+
+#workspaces button.active {
+ color: @sky;
+}
+
+#workspaces button:hover {
+ box-shadow: inherit;
+ text-shadow: inherit;
+ background: none;
+ border: none;
+ border-color: transparent;
+ padding: 0 0.75rem;
+ margin: 0;
+}
+
+#window {
+ font-size: 12pt;
+}
+
+#custom-launcher {
+ color: @blue;
+ font-size: 12pt;
+ padding: 0;
+ margin: 0;
+
+ margin-left: 1rem;
+ margin-right: 1rem;
+}
+
+#bluetooth.connected {
+ color: @blue;
+}
+
+#wireplumber {
+ color: @maroon;
+ border-radius: 1rem 0 0 1rem;
+ margin-left: 1rem;
+}
+
+#battery {
+ color: @green;
+ border-radius: 0;
+}
+
+#clock {
+ color: @blue;
+ border-radius: 0 1rem 1rem 0;
+ margin-right: 1rem;
+}
+
+#custom-power {
+ color: @rosewater;
+ margin-right: 1rem;
+ /* border: @rosewater 1px solid; */
+} \ No newline at end of file
diff --git a/modules/desktop/home/gtk/adwaita.nix b/modules/desktop/home/gtk/adwaita.nix
new file mode 100644
index 0000000..1a17d13
--- /dev/null
+++ b/modules/desktop/home/gtk/adwaita.nix
@@ -0,0 +1,33 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.collinux.desktop.gtk;
+in
+ lib.mkIf (cfg.theme == "adwaita") {
+ home.pointerCursor = {
+ gtk.enable = true;
+ dotIcons.enable = false;
+
+ package = pkgs.vanilla-dmz;
+ name = "Vanilla-DMZ";
+ size = 24;
+ };
+
+ gtk.theme = {
+ name = "adw-gtk3";
+ package = pkgs.adw-gtk3;
+ };
+
+ dconf = {
+ enable = true;
+ settings = {
+ "org/gnome/desktop/interface" = {
+ color-scheme = "prefer-dark";
+ enable-hot-corners = false;
+ };
+ };
+ };
+ }
diff --git a/modules/desktop/home/gtk/catppuccin.nix b/modules/desktop/home/gtk/catppuccin.nix
new file mode 100644
index 0000000..81f0d3d
--- /dev/null
+++ b/modules/desktop/home/gtk/catppuccin.nix
@@ -0,0 +1,33 @@
+{
+ pkgs,
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.collinux.desktop.gtk;
+in
+ lib.mkIf (cfg.theme == "catppuccin") {
+ home.pointerCursor = {
+ hyprcursor = {
+ enable = true;
+ size = 24;
+ };
+ gtk.enable = true;
+ dotIcons.enable = false;
+
+ package = pkgs.catppuccin-cursors.mochaDark;
+ name = "catppuccin-mocha-dark-cursors";
+ size = 24;
+ };
+
+ gtk = {
+ theme = {
+ package = pkgs.catppuccin-gtk.override {
+ accents = ["blue"];
+ variant = "mocha";
+ size = "standard";
+ };
+ name = "catppuccin-mocha-blue-standard";
+ };
+ };
+ }
diff --git a/modules/desktop/home/gtk/default.nix b/modules/desktop/home/gtk/default.nix
new file mode 100644
index 0000000..8dc00f2
--- /dev/null
+++ b/modules/desktop/home/gtk/default.nix
@@ -0,0 +1,26 @@
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.gtk;
+in {
+ imports = [
+ ./catppuccin.nix
+ ./adwaita.nix
+ ];
+
+ config = {
+ home.packages = [pkgs.dconf];
+
+ gtk = {
+ enable = true;
+ iconTheme = {
+ package = pkgs.papirus-icon-theme;
+ name = "Papirus";
+ };
+ gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
+ };
+ };
+}
diff --git a/modules/desktop/home/programs/firefox/adwaita.nix b/modules/desktop/home/programs/firefox/adwaita.nix
new file mode 100644
index 0000000..2655f42
--- /dev/null
+++ b/modules/desktop/home/programs/firefox/adwaita.nix
@@ -0,0 +1,25 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.collinux.desktop.programs.firefox;
+
+ firefox-gnome-theme = builtins.fetchGit {
+ url = "https://github.com/rafaelmardojai/firefox-gnome-theme";
+ rev = "59e3de00f01e5adb851d824cf7911bd90c31083a";
+ };
+in
+ lib.mkIf (cfg.enable && cfg.theme == "adwaita") {
+ home.file.".mozilla/firefox/${cfg.profileName}/chrome" = {
+ recursive = true;
+ source = firefox-gnome-theme;
+ };
+
+ programs.firefox.profiles."${cfg.profileName}" = {
+ settings = {
+ "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
+ "svg.context-properties.content.enabled" = true;
+ };
+ };
+ }
diff --git a/modules/desktop/home/programs/firefox/catppuccin.nix b/modules/desktop/home/programs/firefox/catppuccin.nix
new file mode 100644
index 0000000..7c78fab
--- /dev/null
+++ b/modules/desktop/home/programs/firefox/catppuccin.nix
@@ -0,0 +1,20 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.programs.firefox;
+in
+ lib.mkIf (cfg.enable && cfg.theme == "catppuccin") {
+ programs.firefox.profiles."${cfg.profileName}".settings = {
+ "browser.compactmode.show" = true;
+ "browser.uidensity" = 1;
+
+ "browser.tabs.inTitlebar" = 0;
+ "sidebar.verticalTabs" = true;
+ "sidebar.main.tools" = "";
+
+ "browser.uiCustomization.state" = ''{"placements":{"widget-overflow-fixed-list":[],"unified-extensions-area":[],"nav-bar":["sidebar-button","customizableui-special-spring4","back-button","forward-button","urlbar-container","ublock0_raymondhill_net-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","unified-extensions-button","vertical-spacer"],"toolbar-menubar":["menubar-items"],"TabsToolbar":[],"vertical-tabs":["tabbrowser-tabs"],"PersonalToolbar":["import-button","personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","ublock0_raymondhill_net-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action"],"dirtyAreaCache":["nav-bar","TabsToolbar","vertical-tabs","PersonalToolbar","toolbar-menubar","unified-extensions-area"],"currentVersion":21,"newElementCount":6}'';
+ "browser.uiCustomization.navBarWhenVerticalTabs" = ''["sidebar-button","customizableui-special-spring4","back-button","forward-button","urlbar-container","ublock0_raymondhill_net-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","unified-extensions-button","vertical-spacer"]'';
+ };
+ }
diff --git a/modules/desktop/home/programs/firefox/default.nix b/modules/desktop/home/programs/firefox/default.nix
new file mode 100644
index 0000000..91230d9
--- /dev/null
+++ b/modules/desktop/home/programs/firefox/default.nix
@@ -0,0 +1,17 @@
+{
+ lib,
+ config,
+ ...
+}: let
+ cfg = config.collinux.desktop.programs.firefox;
+in {
+ imports = [
+ ./profile.nix
+ ./adwaita.nix
+ ./catppuccin.nix
+ ];
+
+ config = lib.mkIf (cfg.enable) {
+ programs.firefox.enable = true;
+ };
+}
diff --git a/modules/desktop/home/programs/firefox/profile.nix b/modules/desktop/home/programs/firefox/profile.nix
new file mode 100644
index 0000000..cab8f40
--- /dev/null
+++ b/modules/desktop/home/programs/firefox/profile.nix
@@ -0,0 +1,38 @@
+{
+ config,
+ lib,
+ ...
+}: let
+ cfg = config.collinux.desktop.programs.firefox;
+in
+ lib.mkIf cfg.enable {
+ programs.firefox.profiles."${cfg.profileName}" = {
+ isDefault = true;
+ search.default = "ddg";
+
+ containersForce = true;
+ containers = {
+ "school" = {
+ color = "orange";
+ icon = "briefcase";
+ id = 3;
+ };
+ "personal" = {
+ color = "blue";
+ icon = "fingerprint";
+ id = 2;
+ };
+ "default" = {
+ color = "red";
+ icon = "circle";
+ id = 1;
+ };
+ };
+
+ settings = {
+ "browser.aboutConfig.showWarning" = false;
+ "browser.toolbars.bookmarks.visibility" = "never";
+ "browser.urlbar.groupLabels.enabled" = false;
+ };
+ };
+ }
diff --git a/modules/desktop/home/programs/musescore.nix b/modules/desktop/home/programs/musescore.nix
new file mode 100644
index 0000000..5fbf0f5
--- /dev/null
+++ b/modules/desktop/home/programs/musescore.nix
@@ -0,0 +1,13 @@
+{
+ lib,
+ pkgs,
+ config,
+ ...
+}: let
+ cfg = config.collinux.desktop.programs.musescore;
+in
+ lib.mkIf cfg.enable {
+ home.packages = [pkgs.musescore];
+
+ # TODO: is there a way to declare a musescore configuration?
+ }