From 7e7c8947fc2ff5598124c4a4c18bd28432fa017e Mon Sep 17 00:00:00 2001 From: Collin Williams <96917990+bluedragon1221@users.noreply.github.com> Date: Mon, 8 Sep 2025 14:01:35 -0500 Subject: rework most of config; probably broke jupiter again; working to add ganymede (non-nixos) to this repo --- modules/desktop/hjem/default.nix | 12 +++ modules/desktop/hjem/gtk.nix | 37 ++++++++ modules/desktop/hjem/programs/firefox.nix | 26 ++++++ modules/desktop/hjem/programs/foot.nix | 61 +++++++++++++ modules/desktop/hjem/wm/dunst.nix | 36 ++++++++ modules/desktop/hjem/wm/fuzzel.nix | 49 ++++++++++ modules/desktop/hjem/wm/sway.nix | 110 +++++++++++++++++++++++ modules/desktop/home/default.nix | 2 +- modules/desktop/home/gtk.nix | 18 ++++ modules/desktop/home/gtk/adwaita.nix | 33 ------- modules/desktop/home/gtk/catppuccin.nix | 33 ------- modules/desktop/home/gtk/default.nix | 26 ------ modules/desktop/nixos/default.nix | 11 +++ modules/desktop/nixos/gnome.nix | 120 +++++++++++++++++++++++++ modules/desktop/nixos/greeters/gdm.nix | 13 +++ modules/desktop/nixos/greeters/greetd.nix | 19 ++++ modules/desktop/nixos/programs/blackbox.nix | 31 +++++++ modules/desktop/nixos/programs/firefox.nix | 37 ++++++++ modules/desktop/options.nix | 92 +++++++++++++++---- modules/desktop/system/components/dunst.nix | 38 -------- modules/desktop/system/components/fuzzel.nix | 50 ----------- modules/desktop/system/default.nix | 13 --- modules/desktop/system/environments/gnome.nix | 124 -------------------------- modules/desktop/system/environments/sway.nix | 120 ------------------------- modules/desktop/system/programs/blackbox.nix | 31 ------- modules/desktop/system/programs/firefox.nix | 51 ----------- modules/desktop/system/programs/foot.nix | 63 ------------- 27 files changed, 654 insertions(+), 602 deletions(-) create mode 100644 modules/desktop/hjem/default.nix create mode 100644 modules/desktop/hjem/gtk.nix create mode 100644 modules/desktop/hjem/programs/firefox.nix create mode 100644 modules/desktop/hjem/programs/foot.nix create mode 100644 modules/desktop/hjem/wm/dunst.nix create mode 100644 modules/desktop/hjem/wm/fuzzel.nix create mode 100644 modules/desktop/hjem/wm/sway.nix create mode 100644 modules/desktop/home/gtk.nix delete mode 100644 modules/desktop/home/gtk/adwaita.nix delete mode 100644 modules/desktop/home/gtk/catppuccin.nix delete mode 100644 modules/desktop/home/gtk/default.nix create mode 100644 modules/desktop/nixos/default.nix create mode 100644 modules/desktop/nixos/gnome.nix create mode 100644 modules/desktop/nixos/greeters/gdm.nix create mode 100644 modules/desktop/nixos/greeters/greetd.nix create mode 100644 modules/desktop/nixos/programs/blackbox.nix create mode 100644 modules/desktop/nixos/programs/firefox.nix delete mode 100644 modules/desktop/system/components/dunst.nix delete mode 100644 modules/desktop/system/components/fuzzel.nix delete mode 100644 modules/desktop/system/default.nix delete mode 100644 modules/desktop/system/environments/gnome.nix delete mode 100644 modules/desktop/system/environments/sway.nix delete mode 100644 modules/desktop/system/programs/blackbox.nix delete mode 100644 modules/desktop/system/programs/firefox.nix delete mode 100644 modules/desktop/system/programs/foot.nix (limited to 'modules/desktop') diff --git a/modules/desktop/hjem/default.nix b/modules/desktop/hjem/default.nix new file mode 100644 index 0000000..a1a28c5 --- /dev/null +++ b/modules/desktop/hjem/default.nix @@ -0,0 +1,12 @@ +{ + imports = [ + ./gtk.nix + + ./wm/sway.nix + ./wm/dunst.nix + ./wm/fuzzel.nix + + ./programs/foot.nix + ./programs/firefox.nix + ]; +} diff --git a/modules/desktop/hjem/gtk.nix b/modules/desktop/hjem/gtk.nix new file mode 100644 index 0000000..bee5936 --- /dev/null +++ b/modules/desktop/hjem/gtk.nix @@ -0,0 +1,37 @@ +{ + pkgs, + config, + lib, + ... +}: let + cfg = config.collinux.desktop.gtk; +in { + packages = with pkgs; [ + dconf + + papirus-icon-theme + cfg.cursor_data.package + cfg.theme_data.package + ]; + + xdg.config.files = let + value.Settings = { + gtk-cursor-theme-name = cfg.cursor_data.name; + gtk-cursor-size = 24; + gtk-icon-theme-name = "Papirus"; + gtk-theme-name = cfg.theme_data.name; + }; + in { + "gtk-3.0/settings.ini" = { + generator = lib.generators.toINI {}; + inherit value; + }; + "gtk-4.0/settings.ini" = { + generator = lib.generators.toINI {}; + inherit value; + }; + "gtk-4.0/gtk.css".text = '' + @import url("file://${cfg.theme_data.package}/gtk-4.0/gtk.css"); + ''; + }; +} diff --git a/modules/desktop/hjem/programs/firefox.nix b/modules/desktop/hjem/programs/firefox.nix new file mode 100644 index 0000000..73040d2 --- /dev/null +++ b/modules/desktop/hjem/programs/firefox.nix @@ -0,0 +1,26 @@ +{ + pkgs, + lib, + config, + ... +}: let + cfg = config.collinux.desktop.programs.firefox; +in + lib.mkIf cfg.enable { + files.".mozilla/firefox/profiles.ini" = { + generator = lib.generators.toINI {}; + value = { + Profile0 = { + Name = "collin"; + IsRelative = 1; + Path = "collin"; + Default = 1; + }; + General = { + StartWithLastProfile = 1; + Version = 2; + }; + }; + }; + packages = [pkgs.firefox]; + } diff --git a/modules/desktop/hjem/programs/foot.nix b/modules/desktop/hjem/programs/foot.nix new file mode 100644 index 0000000..4d630c6 --- /dev/null +++ b/modules/desktop/hjem/programs/foot.nix @@ -0,0 +1,61 @@ +{ + pkgs, + config, + lib, + ... +}: let + cfg = config.collinux.desktop.programs.foot; + + settings = { + main = { + font = "Iosevka Nerd Font:size=12"; + shell = "${pkgs.fish}/bin/fish"; + }; + + colors = { + foreground = "cdd6f4"; + background = "1e1e2e"; + cursor = "11111b f5e0dc"; + + regular0 = "45475a"; + regular1 = "f38ba8"; + regular2 = "a6e3a1"; + regular3 = "f9e2af"; + regular4 = "89b4fa"; + regular5 = "f5c2e7"; + regular6 = "94e2d5"; + regular7 = "bac2de"; + + bright0 = "585b70"; + bright1 = "f38ba8"; + bright2 = "a6e3a1"; + bright3 = "f9e2af"; + bright4 = "89b4fa"; + bright5 = "f5c2e7"; + bright6 = "94e2d5"; + bright7 = "a6adc8"; + + "16" = "fab387"; + "17" = "f5e0dc"; + + selection-foreground = "cdd6f4"; + selection-background = "414356"; + + search-box-no-match = "11111b f38ba8"; + search-box-match = "cdd6f4 313244"; + + jump-labels = "11111b fab387"; + urls = "89b4fa"; + }; + }; +in + lib.mkIf cfg.enable { + files = { + ".config/foot/foot.ini" = { + generator = lib.generators.toINI {}; + value = settings; + }; + }; + + packages = [pkgs.foot]; + } diff --git a/modules/desktop/hjem/wm/dunst.nix b/modules/desktop/hjem/wm/dunst.nix new file mode 100644 index 0000000..38a8240 --- /dev/null +++ b/modules/desktop/hjem/wm/dunst.nix @@ -0,0 +1,36 @@ +{ + lib, + config, + pkgs, + ... +}: let + cfg = config.collinux.desktop.sway.components.dunst; + + settings = '' + [global] + frame_color = "#89b4fa" + separator_color = frame + highlight = "#89b4fa" + offset = "(8,8)" + origin = "top-right" + transparency = 10 + font = "Iosevka Nerd Font" + + [urgency_low] + background = "#1e1e2e" + foreground = "#cdd6f4" + + [urgency_normal] + background = "#1e1e2e" + foreground = "#cdd6f4" + + [urgency_critical] + background = "#1e1e2e" + foreground = "#cdd6f4" + frame_color = "#fab387" + ''; +in + lib.mkIf cfg.enable { + files.".config/dunst/dunstrc".text = settings; + packages = with pkgs; [dunst inotify-tools]; + } diff --git a/modules/desktop/hjem/wm/fuzzel.nix b/modules/desktop/hjem/wm/fuzzel.nix new file mode 100644 index 0000000..7b9d075 --- /dev/null +++ b/modules/desktop/hjem/wm/fuzzel.nix @@ -0,0 +1,49 @@ +{ + lib, + config, + pkgs, + ... +}: let + cfg = config.collinux.desktop.sway.components.fuzzel; + + 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 = { + background = "1e1e2edd"; + text = "cdd6f4ff"; + prompt = "bac2deff"; + placeholder = "7f849cff"; + input = "cdd6f4ff"; + match = "89b4faff"; + selection = "585b70ff"; + selection-text = "cdd6f4ff"; + selection-match = "89b4faff"; + counter = "7f849cff"; + border = "89b4faff"; + }; + }; +in + lib.mkIf cfg.enable { + files.".config/fuzzel/fuzzel.ini" = { + generator = lib.generators.toINI {}; + value = settings; + }; + + packages = [pkgs.fuzzel]; + } diff --git a/modules/desktop/hjem/wm/sway.nix b/modules/desktop/hjem/wm/sway.nix new file mode 100644 index 0000000..1cd7750 --- /dev/null +++ b/modules/desktop/hjem/wm/sway.nix @@ -0,0 +1,110 @@ +{ + pkgs, + config, + lib, + ... +}: let + cfg = config.collinux.desktop.sway; + + colors = '' + set $rosewater #f5e0dc + set $flamingo #f2cdcd + set $pink #f5c2e7 + set $mauve #cba6f7 + set $red #f38ba8 + set $maroon #eba0ac + set $peach #fab387 + set $yellow #f9e2af + set $green #a6e3a1 + set $teal #94e2d5 + set $sky #89dceb + set $sapphire #74c7ec + set $blue #89b4fa + set $lavender #b4befe + set $text #cdd6f4 + set $subtext1 #bac2de + set $subtext0 #a6adc8 + set $overlay2 #9399b2 + set $overlay1 #7f849c + set $overlay0 #6c7086 + set $surface2 #585b70 + set $surface1 #45475a + set $surface0 #313244 + set $base #1e1e2e + set $mantle #181825 + set $crust #11111b + ''; + + settings = '' + exec ${pkgs.foot}/bin/foot --server + exec ${pkgs.swaybg}/bin/swaybg -i ${config.collinux.desktop.wallpaper} + exec ${pkgs.dunst}/bin/dunst + + include catppuccin-mocha + + # target title bg text indicator border + client.focused $lavender $base $text $rosewater $lavender + client.focused_inactive $overlay0 $base $text $rosewater $overlay0 + client.unfocused $overlay0 $base $text $rosewater $overlay0 + client.urgent $peach $base $peach $overlay0 $peach + client.placeholder $overlay0 $base $text $overlay0 $overlay0 + client.background $base + + input type:keyboard { + xkb_options caps:none + } + + bindsym Mod4+1 workspace number 1 + bindsym Mod4+2 workspace number 2 + bindsym Mod4+3 workspace number 3 + bindsym Mod4+4 workspace number 4 + bindsym Mod4+5 workspace number 5 + bindsym Mod4+6 workspace number 6 + bindsym Mod4+7 workspace number 7 + bindsym Mod4+8 workspace number 8 + bindsym Mod4+9 workspace number 9 + + bindsym Mod4+Shift+1 move container to workspace number 1 + bindsym Mod4+Shift+2 move container to workspace number 2 + bindsym Mod4+Shift+3 move container to workspace number 3 + bindsym Mod4+Shift+4 move container to workspace number 4 + bindsym Mod4+Shift+5 move container to workspace number 5 + bindsym Mod4+Shift+6 move container to workspace number 6 + bindsym Mod4+Shift+7 move container to workspace number 7 + bindsym Mod4+Shift+8 move container to workspace number 8 + bindsym Mod4+Shift+9 move container to workspace number 9 + + bindsym Mod4+Return exec ${pkgs.foot}/bin/footclient + bindsym Mod4+Shift+Return exec ${pkgs.foot}/bin/foot + bindsym Mod4+Space exec ${pkgs.fuzzel}/bin/fuzzel + bindsym Mod4+b exec ${pkgs.firefox}/bin/firefox + bindsym Mod4+Shift+b exec ${pkgs.qutebrowser}/bin/qutebrowser + bindsym Mod4+q kill + + bindsym XF86AudioRaiseVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | ${pkgs.bc}/bin/bc)"' + bindsym XF86AudioLowerVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | ${pkgs.bc}/bin/bc)"' + + bindsym XF86MonBrightnessUp exec 'brightnessctl set 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:brightness "Brightness: " -h "int:value:$(g=$(brightnessctl get);m=$(brightnessctl max);echo $((g * 100 / m)))"' + bindsym XF86MonBrightnessDown exec 'brightnessctl set 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:brightness "Brightness: " -h "int:value:$(g=$(brightnessctl get);m=$(brightnessctl max);echo $((g * 100 / m)))"' + + bindsym Home exec 'playerctl previous' + bindsym End exec 'playerctl play-pause' + bindsym Insert exec 'playerctl next' + + default_border pixel 2 + smart_borders on + smart_gaps on + ''; +in + lib.mkIf cfg.enable { + files = { + ".config/sway/config".text = settings; + ".config/sway/catppuccin-mocha".text = colors; + }; + + packages = with pkgs; [ + sway + brightnessctl + playerctl + ]; + } diff --git a/modules/desktop/home/default.nix b/modules/desktop/home/default.nix index be5e97f..7671378 100644 --- a/modules/desktop/home/default.nix +++ b/modules/desktop/home/default.nix @@ -1,5 +1,5 @@ { imports = [ - ./gtk + ./gtk.nix ]; } diff --git a/modules/desktop/home/gtk.nix b/modules/desktop/home/gtk.nix new file mode 100644 index 0000000..a8f6be0 --- /dev/null +++ b/modules/desktop/home/gtk.nix @@ -0,0 +1,18 @@ +{ + lib, + config, + ... +}: let + cfg = config.collinux.desktop.gtk; +in + lib.mkIf (cfg.enable && cfg.theme == "adwaita") { + dconf = { + enable = true; + settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + enable-hot-corners = false; + }; + }; + }; + } diff --git a/modules/desktop/home/gtk/adwaita.nix b/modules/desktop/home/gtk/adwaita.nix deleted file mode 100644 index 1a17d13..0000000 --- a/modules/desktop/home/gtk/adwaita.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - 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 deleted file mode 100644 index 81f0d3d..0000000 --- a/modules/desktop/home/gtk/catppuccin.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - 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 deleted file mode 100644 index 8dc00f2..0000000 --- a/modules/desktop/home/gtk/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - 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/nixos/default.nix b/modules/desktop/nixos/default.nix new file mode 100644 index 0000000..23deeca --- /dev/null +++ b/modules/desktop/nixos/default.nix @@ -0,0 +1,11 @@ +{...}: { + imports = [ + ./gnome.nix + + ./greeters/greetd.nix + ./greeters/gdm.nix + + ./programs/firefox.nix + ./programs/blackbox.nix + ]; +} diff --git a/modules/desktop/nixos/gnome.nix b/modules/desktop/nixos/gnome.nix new file mode 100644 index 0000000..967452e --- /dev/null +++ b/modules/desktop/nixos/gnome.nix @@ -0,0 +1,120 @@ +{ + pkgs, + config, + lib, + ... +}: let + cfg = config.collinux.desktop.gnome; +in + lib.mkIf cfg.enable { + services.desktopManager.gnome.enable = true; + + environment.gnome.excludePackages = with pkgs; [ + orca + evince + # file-roller + geary + # gnome-disk-utility + seahorse + # sushi + # sysprof + # gnome-shell-extensions + adwaita-icon-theme + # nixos-background-info + gnome-backgrounds + # gnome-bluetooth + # gnome-color-manager + # gnome-control-center + # gnome-shell-extensions + gnome-tour # GNOME Shell detects the .desktop file on first log-in. + gnome-user-docs + # glib # for gsettings program + # gnome-menus + # gtk3.out # for gtk-launch program + # xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ + # xdg-user-dirs-gtk # Used to create the default bookmarks + # + baobab + epiphany + gnome-text-editor + gnome-calculator + gnome-calendar + gnome-characters + # gnome-clocks + gnome-console + gnome-contacts + gnome-font-viewer + gnome-logs + gnome-maps + gnome-music + # gnome-system-monitor + gnome-weather + # loupe + # nautilus + gnome-connections + simple-scan + snapshot + totem + yelp + gnome-software + ]; + + hjem.users."${config.collinux.user.name}".packages = with pkgs.gnomeExtensions; [blur-my-shell dash-to-dock]; + + programs.dconf = { + enable = true; + profiles.user.databases = [ + { + 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 = lib.gvariant.mkInt16 0; + }; + "org/gnome/settings-daemon/plugins/power" = { + sleep-inactive-ac-type = "nothing"; + }; + + # Keybindings + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { + binding = "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 = lib.gvariant.mkInt16 48; + show-trash = false; + show-mounts = false; + }; + }; + } + ]; + }; + } diff --git a/modules/desktop/nixos/greeters/gdm.nix b/modules/desktop/nixos/greeters/gdm.nix new file mode 100644 index 0000000..598114a --- /dev/null +++ b/modules/desktop/nixos/greeters/gdm.nix @@ -0,0 +1,13 @@ +{ + config, + lib, + ... +}: let + cfg = config.collinux.desktop.gdm; +in + lib.mkIf cfg.enable { + services.displayManager.gdm = { + enable = true; + wayland = true; + }; + } diff --git a/modules/desktop/nixos/greeters/greetd.nix b/modules/desktop/nixos/greeters/greetd.nix new file mode 100644 index 0000000..42ff9a7 --- /dev/null +++ b/modules/desktop/nixos/greeters/greetd.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: let + cfg = config.collinux.desktop.greetd; +in + lib.mkIf cfg.enable { + services.greetd = { + enable = true; + settings = rec { + initial_session = { + command = lib.getExe cfg.command; + user = config.collinux.user.name; + }; + default_session = initial_session; + }; + }; + } diff --git a/modules/desktop/nixos/programs/blackbox.nix b/modules/desktop/nixos/programs/blackbox.nix new file mode 100644 index 0000000..37567b5 --- /dev/null +++ b/modules/desktop/nixos/programs/blackbox.nix @@ -0,0 +1,31 @@ +{ + pkgs, + config, + lib, + ... +}: let + cfg = config.collinux.desktop.programs.blackbox; +in + lib.mkIf cfg.enable { + programs.dconf.profiles.user.databases = [ + { + settings = { + "com/raggesilver/BlackBox" = { + context-aware-header-bar = true; + fill-tabs = true; + notify-process-completion = true; + opacity = lib.gvariant.mkInt16 100; + pixel-scrolling = true; + pretty = true; + show-scrollbars = false; + terminal-padding = lib.gvariant.mkTuple (builtins.map lib.gvariant.mkInt16 [10 10 10 10]); + + floating-controls = false; + show-headerbar = true; + }; + }; + } + ]; + + hjem.users."${config.collinux.user.name}".packages = [pkgs.blackbox-terminal]; + } diff --git a/modules/desktop/nixos/programs/firefox.nix b/modules/desktop/nixos/programs/firefox.nix new file mode 100644 index 0000000..8ca4b30 --- /dev/null +++ b/modules/desktop/nixos/programs/firefox.nix @@ -0,0 +1,37 @@ +{ + lib, + config, + ... +}: let + cfg = config.collinux.desktop.programs.firefox; +in + lib.mkIf cfg.enable { + programs.firefox = { + enable = true; + policies = { + PasswordManagerEnabled = false; # use bitwarden instead + DisableAccounts = true; + DisablePocket = true; + + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + + ExtensionSettings = let + ext = name: { + installation_mode = "force_installed"; + install_url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi"; + }; + in + lib.mkMerge [ + { + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = ext "bitwarden-password-manager"; + "uBlock0@raymondhill.net" = ext "uBlock0@raymondhill.net"; + "addon@darkreader.org" = ext "addon@darkreader.org"; + } + (lib.optionalAttrs (cfg.theme == "catppuccin") { + "{88b098c8-19be-421e-8ffa-85ddd1f3f004}" = ext "catppuccin-mocha-blue"; + }) + ]; + }; + }; + } diff --git a/modules/desktop/options.nix b/modules/desktop/options.nix index 9bc4099..9a60ff6 100644 --- a/modules/desktop/options.nix +++ b/modules/desktop/options.nix @@ -1,4 +1,5 @@ { + pkgs, config, lib, my-lib, @@ -9,32 +10,85 @@ in { options = { collinux.desktop = { - greeter = mkOption { - type = types.enum ["gdm" "greetd"]; - default = let - cfg = config.collinux.desktop; - in - if (cfg.sway.enable && !cfg.gnome.enable) - then "greetd" - else "gdm"; - }; - wallpaper = mkOption { - type = types.path; + type = with types; oneOf [str path]; + description = "File to use as the wallpaper on this machine"; }; - components = { - waybar = mkProgramOption "waybar"; - dunst = mkProgramOption "dunst"; - fuzzel = mkProgramOption "fuzzel"; + greetd = { + enable = mkEnableOption "greetd greeter"; + command = mkOption { + type = lib.types.package; + default = let + cfg = config.collinux.desktop; + in + if (cfg.sway.enable && !cfg.gnome.enable) + then pkgs.sway + else null; + }; }; + gdm.enable = mkEnableOption "gdm display manager"; - sway.enable = mkEnableOption "sway"; + sway = { + enable = mkEnableOption "sway"; + components = { + # waybar = mkProgramOption "waybar"; + dunst = mkProgramOption "dunst"; + fuzzel = mkProgramOption "fuzzel"; + }; + }; gnome.enable = mkEnableOption "gnome"; - gtk.theme = mkOption { - type = types.enum ["catppuccin" "adwaita"]; - default = config.collinux.theme; + gtk = { + theme = mkOption { + type = types.enum ["catppuccin" "adwaita"]; + default = config.collinux.theme; + }; + cursor_data = { + package = mkOption { + type = lib.types.package; + default = + if (config.collinux.desktop.gtk.theme == "catppuccin") + then pkgs.catppuccin-cursors.mochaDark + else if (config.collinux.desktop.gtk.theme == "adwaita") + then pkgs.vanilla-dmz + else null; + }; + name = mkOption { + type = lib.types.str; + default = + if (config.collinux.desktop.gtk.theme == "catppuccin") + then "catppuccin-mocha-dark-cursors" + else if (config.collinux.desktop.gtk.theme == "adwaita") + then "Vanilla-DMZ" + else null; + }; + }; + theme_data = { + package = mkOption { + type = lib.types.package; + default = + if (config.collinux.desktop.gtk.theme == "catppuccin") + then + (pkgs.catppuccin-gtk.override { + variant = "mocha"; + accents = ["blue"]; + size = "standard"; + }) + else if (config.collinux.desktop.gtk.theme == "adwaita") + then pkgs.adw-gtk3 + else ""; + }; + name = mkOption { + type = lib.types.str; + default = + if (config.collinux.desktop.gtk.theme == "catppuccin") + then "catppuccin-mocha-blue-standard" + else if (config.collinux.desktop.gtk.theme == "adwaita") + then "adw-gtk3" + else ""; + }; + }; }; programs = { diff --git a/modules/desktop/system/components/dunst.nix b/modules/desktop/system/components/dunst.nix deleted file mode 100644 index 1069087..0000000 --- a/modules/desktop/system/components/dunst.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: let - cfg = config.collinux.desktop.components.dunst; - - settings = '' - [global] - frame_color = "#89b4fa" - separator_color = frame - highlight = "#89b4fa" - offset = "(8,8)" - origin = "top-right" - transparency = 10 - font = "Iosevka Nerd Font" - - [urgency_low] - background = "#1e1e2e" - foreground = "#cdd6f4" - - [urgency_normal] - background = "#1e1e2e" - foreground = "#cdd6f4" - - [urgency_critical] - background = "#1e1e2e" - foreground = "#cdd6f4" - frame_color = "#fab387" - ''; -in - lib.mkIf cfg.enable { - hjem.users."${config.collinux.user.name}" = { - files.".config/dunst/dunstrc".text = settings; - packages = [pkgs.dunst pkgs.inotify-tools]; - }; - } diff --git a/modules/desktop/system/components/fuzzel.nix b/modules/desktop/system/components/fuzzel.nix deleted file mode 100644 index f5937c6..0000000 --- a/modules/desktop/system/components/fuzzel.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: let - cfg = config.collinux.desktop.components.fuzzel; - ini' = pkgs.formats.ini {}; - - settings = ini'.generate "fuzzel.ini" { - 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 = { - background = "1e1e2edd"; - text = "cdd6f4ff"; - prompt = "bac2deff"; - placeholder = "7f849cff"; - input = "cdd6f4ff"; - match = "89b4faff"; - selection = "585b70ff"; - selection-text = "cdd6f4ff"; - selection-match = "89b4faff"; - counter = "7f849cff"; - border = "89b4faff"; - }; - }; -in - lib.mkIf cfg.enable { - hjem.users."${config.collinux.user.name}" = { - files = { - ".config/fuzzel/fuzzel.ini".source = settings; - }; - packages = [pkgs.fuzzel]; - }; - } diff --git a/modules/desktop/system/default.nix b/modules/desktop/system/default.nix deleted file mode 100644 index efc39bc..0000000 --- a/modules/desktop/system/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{...}: { - imports = [ - ./environments/gnome.nix - ./environments/sway.nix - - ./programs/firefox.nix - ./programs/foot.nix - ./programs/blackbox.nix - - ./components/fuzzel.nix - ./components/dunst.nix - ]; -} diff --git a/modules/desktop/system/environments/gnome.nix b/modules/desktop/system/environments/gnome.nix deleted file mode 100644 index e298756..0000000 --- a/modules/desktop/system/environments/gnome.nix +++ /dev/null @@ -1,124 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: let - cfg = config.collinux.desktop.gnome; -in - lib.mkIf cfg.enable { - services.displayManager.gdm = { - enable = true; - wayland = true; - }; - services.desktopManager.gnome.enable = true; - - environment.gnome.excludePackages = with pkgs; [ - orca - evince - file-roller - geary - gnome-disk-utility - seahorse - # sushi - # sysprof - # gnome-shell-extensions - adwaita-icon-theme - # nixos-background-info - gnome-backgrounds - # gnome-bluetooth - # gnome-color-manager - # gnome-control-center - # gnome-shell-extensions - gnome-tour # GNOME Shell detects the .desktop file on first log-in. - gnome-user-docs - # glib # for gsettings program - # gnome-menus - # gtk3.out # for gtk-launch program - # xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ - # xdg-user-dirs-gtk # Used to create the default bookmarks - # - baobab - epiphany - gnome-text-editor - gnome-calculator - gnome-calendar - gnome-characters - # gnome-clocks - gnome-console - gnome-contacts - gnome-font-viewer - gnome-logs - gnome-maps - gnome-music - # gnome-system-monitor - gnome-weather - # loupe - # nautilus - gnome-connections - simple-scan - snapshot - totem - yelp - gnome-software - ]; - - hjem.users."${config.collinux.user.name}".packages = with pkgs.gnomeExtensions; [blur-my-shell dash-to-dock]; - - programs.dconf = { - enable = true; - profiles.user.databases = [ - { - 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 = lib.gvariant.mkInt16 0; - }; - "org/gnome/settings-daemon/plugins/power" = { - sleep-inactive-ac-type = "nothing"; - }; - - # Keybindings - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { - binding = "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 = lib.gvariant.mkInt16 48; - show-trash = false; - show-mounts = false; - }; - }; - } - ]; - }; - } diff --git a/modules/desktop/system/environments/sway.nix b/modules/desktop/system/environments/sway.nix deleted file mode 100644 index dec071a..0000000 --- a/modules/desktop/system/environments/sway.nix +++ /dev/null @@ -1,120 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: let - cfg = config.collinux.desktop.sway; - - colors = '' - set $rosewater #f5e0dc - set $flamingo #f2cdcd - set $pink #f5c2e7 - set $mauve #cba6f7 - set $red #f38ba8 - set $maroon #eba0ac - set $peach #fab387 - set $yellow #f9e2af - set $green #a6e3a1 - set $teal #94e2d5 - set $sky #89dceb - set $sapphire #74c7ec - set $blue #89b4fa - set $lavender #b4befe - set $text #cdd6f4 - set $subtext1 #bac2de - set $subtext0 #a6adc8 - set $overlay2 #9399b2 - set $overlay1 #7f849c - set $overlay0 #6c7086 - set $surface2 #585b70 - set $surface1 #45475a - set $surface0 #313244 - set $base #1e1e2e - set $mantle #181825 - set $crust #11111b - ''; - - settings = '' - exec ${pkgs.foot}/bin/foot --server - exec ${pkgs.swaybg}/bin/swaybg -i ${config.collinux.desktop.wallpaper} - exec ${pkgs.dunst}/bin/dunst - - include catppuccin-mocha - - # target title bg text indicator border - client.focused $lavender $base $text $rosewater $lavender - client.focused_inactive $overlay0 $base $text $rosewater $overlay0 - client.unfocused $overlay0 $base $text $rosewater $overlay0 - client.urgent $peach $base $peach $overlay0 $peach - client.placeholder $overlay0 $base $text $overlay0 $overlay0 - client.background $base - - input type:keyboard { - xkb_options caps:none - } - - bindsym Mod4+1 workspace number 1 - bindsym Mod4+2 workspace number 2 - bindsym Mod4+3 workspace number 3 - bindsym Mod4+4 workspace number 4 - bindsym Mod4+5 workspace number 5 - bindsym Mod4+6 workspace number 6 - bindsym Mod4+7 workspace number 7 - bindsym Mod4+8 workspace number 8 - bindsym Mod4+9 workspace number 9 - - bindsym Mod4+Shift+1 move container to workspace number 1 - bindsym Mod4+Shift+2 move container to workspace number 2 - bindsym Mod4+Shift+3 move container to workspace number 3 - bindsym Mod4+Shift+4 move container to workspace number 4 - bindsym Mod4+Shift+5 move container to workspace number 5 - bindsym Mod4+Shift+6 move container to workspace number 6 - bindsym Mod4+Shift+7 move container to workspace number 7 - bindsym Mod4+Shift+8 move container to workspace number 8 - bindsym Mod4+Shift+9 move container to workspace number 9 - - bindsym Mod4+Return exec ${pkgs.foot}/bin/footclient - bindsym Mod4+Shift+Return exec ${pkgs.foot}/bin/foot - bindsym Mod4+Space exec ${pkgs.fuzzel}/bin/fuzzel - bindsym Mod4+b exec ${pkgs.firefox}/bin/firefox - bindsym Mod4+Shift+b exec ${pkgs.qutebrowser}/bin/qutebrowser - bindsym Mod4+q kill - - bindsym XF86AudioRaiseVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | bc)"' - bindsym XF86AudioLowerVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | bc)"' - - bindsym XF86MonBrightnessUp exec 'brightnessctl set 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:brightness "Brightness: " -h "int:value:$(g=$(brightnessctl get);m=$(brightnessctl max);echo $((g * 100 / m)))"' - bindsym XF86MonBrightnessDown exec 'brightnessctl set 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:brightness "Brightness: " -h "int:value:$(g=$(brightnessctl get);m=$(brightnessctl max);echo $((g * 100 / m)))"' - - bindsym Home exec 'playerctl previous' - bindsym End exec 'playerctl play-pause' - bindsym Insert exec 'playerctl next' - - default_border pixel 2 - smart_borders on - smart_gaps on - ''; -in - lib.mkIf cfg.enable { - hjem.users."${config.collinux.user.name}" = { - files = { - ".config/sway/config".text = settings; - ".config/sway/catppuccin-mocha".text = colors; - }; - - packages = [pkgs.sway pkgs.bc pkgs.brightnessctl pkgs.playerctl]; - }; - - # Greetd - services.greetd = { - enable = true; - settings = rec { - initial_session = { - command = "${pkgs.sway}/bin/sway"; - user = config.collinux.user.name; - }; - default_session = initial_session; - }; - }; - } diff --git a/modules/desktop/system/programs/blackbox.nix b/modules/desktop/system/programs/blackbox.nix deleted file mode 100644 index 37567b5..0000000 --- a/modules/desktop/system/programs/blackbox.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: let - cfg = config.collinux.desktop.programs.blackbox; -in - lib.mkIf cfg.enable { - programs.dconf.profiles.user.databases = [ - { - settings = { - "com/raggesilver/BlackBox" = { - context-aware-header-bar = true; - fill-tabs = true; - notify-process-completion = true; - opacity = lib.gvariant.mkInt16 100; - pixel-scrolling = true; - pretty = true; - show-scrollbars = false; - terminal-padding = lib.gvariant.mkTuple (builtins.map lib.gvariant.mkInt16 [10 10 10 10]); - - floating-controls = false; - show-headerbar = true; - }; - }; - } - ]; - - hjem.users."${config.collinux.user.name}".packages = [pkgs.blackbox-terminal]; - } diff --git a/modules/desktop/system/programs/firefox.nix b/modules/desktop/system/programs/firefox.nix deleted file mode 100644 index b2d83f3..0000000 --- a/modules/desktop/system/programs/firefox.nix +++ /dev/null @@ -1,51 +0,0 @@ -{ - lib, - config, - ... -}: let - cfg = config.collinux.desktop.programs.firefox; -in - lib.mkIf cfg.enable { - programs.firefox = { - enable = true; - policies = { - PasswordManagerEnabled = false; # use bitwarden instead - DisableAccounts = true; - DisablePocket = true; - - OverrideFirstRunPage = ""; - OverridePostUpdatePage = ""; - - ExtensionSettings = let - ext = name: { - installation_mode = "force_installed"; - install_url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi"; - }; - in - lib.mkMerge [ - { - "{446900e4-71c2-419f-a6a7-df9c091e268b}" = ext "bitwarden-password-manager"; - "uBlock0@raymondhill.net" = ext "uBlock0@raymondhill.net"; - "addon@darkreader.org" = ext "addon@darkreader.org"; - } - (lib.optionalAttrs (cfg.theme == "catppuccin") { - "{88b098c8-19be-421e-8ffa-85ddd1f3f004}" = ext "catppuccin-mocha-blue"; - }) - ]; - }; - }; - - hjem.users."${config.collinux.user.name}".files = { - ".mozilla/firefox/profiles.ini".text = '' - [Profile0] - Name=collin - IsRelative=1 - Path=collin - Default=1 - - [General] - StartWithLastProfile=1 - Version=2 - ''; - }; - } diff --git a/modules/desktop/system/programs/foot.nix b/modules/desktop/system/programs/foot.nix deleted file mode 100644 index 1b99ce3..0000000 --- a/modules/desktop/system/programs/foot.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: let - cfg = config.collinux.desktop.programs.foot; - - settings = { - main = { - font = "Iosevka Nerd Font:size=12"; - shell = "${pkgs.fish}/bin/fish"; - }; - - colors = { - foreground = "cdd6f4"; - background = "1e1e2e"; - cursor = "11111b f5e0dc"; - - regular0 = "45475a"; - regular1 = "f38ba8"; - regular2 = "a6e3a1"; - regular3 = "f9e2af"; - regular4 = "89b4fa"; - regular5 = "f5c2e7"; - regular6 = "94e2d5"; - regular7 = "bac2de"; - - bright0 = "585b70"; - bright1 = "f38ba8"; - bright2 = "a6e3a1"; - bright3 = "f9e2af"; - bright4 = "89b4fa"; - bright5 = "f5c2e7"; - bright6 = "94e2d5"; - bright7 = "a6adc8"; - - "16" = "fab387"; - "17" = "f5e0dc"; - - selection-foreground = "cdd6f4"; - selection-background = "414356"; - - search-box-no-match = "11111b f38ba8"; - search-box-match = "cdd6f4 313244"; - - jump-labels = "11111b fab387"; - urls = "89b4fa"; - }; - }; -in - lib.mkIf cfg.enable { - hjem.users."${config.collinux.user.name}" = { - files = { - ".config/foot/foot.ini" = { - generator = lib.generators.toINI {}; - value = settings; - }; - }; - - packages = [pkgs.foot]; - }; - } -- cgit v1.3.1