# Edit this configuration file to define what should be installed on # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running 'nixos-help'). { config, pkgs, lib, inputs, ... }: { services = { # Enable the login manager displayManager.cosmic-greeter.enable = lib.mkDefault true; # Enable the COSMIC DE itself desktopManager.cosmic = { enable = lib.mkDefault true; # Enable XWayland support in COSMIC xwayland.enable = lib.mkDefault true; }; # to avoid a timeout on shutdown, enable the GeoClue 2 service without the demo agent # will not be needed in future version of cosmic : testing or 25.11 geoclue2 = { enable = true; enableDemoAgent = false; }; }; environment.sessionVariables = { # to make Clipboard Manager work COSMIC_DATA_CONTROL_ENABLED = 1; # enable Ozone Wayland support in Chromium and Electron NIXOS_OZONE_WL = "1"; }; # to allow to open link in web browser from any app systemd.user.extraConfig = ''DefaultEnvironment="PATH=/run/wrappers/bin:/etc/profiles/per-user/%u/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin"''; specialisation = { gnome.configuration = { services = { # Disable Cosmic desktopManager.cosmic = { enable = false; xwayland.enable = false; }; displayManager.cosmic-greeter.enable = false; # Enable Gnome xserver = { enable = true; desktopManager.gnome.enable = true; displayManager.gdm.enable = true; }; }; environment.systemPackages = with pkgs; [ adwaita-icon-theme gnomeExtensions.appindicator gnomeExtensions.arcmenu gnomeExtensions.blur-my-shell gnomeExtensions.caffeine gnomeExtensions.clipboard-indicator gnomeExtensions.clipboard-history gnomeExtensions.compiz-alike-magic-lamp-effect gnomeExtensions.compiz-windows-effect gnomeExtensions.coverflow-alt-tab gnomeExtensions.custom-accent-colors gnomeExtensions.dash-to-panel gnomeExtensions.gtk4-desktop-icons-ng-ding # gnomeExtensions.put-windows gnomeExtensions.transparent-window-moving gnomeExtensions.unblank gnomeExtensions.window-state-manager gnome-settings-daemon gnome-themes-extra gnome-tweaks ]; programs.dconf = { enable = true; profiles = { user.databases = [{ settings = with lib.gvariant; { "org/gnome/desktop/interface" = { cursor-theme = "Adwaita"; gtk-theme = "Adwaita"; icon-theme = "Adwaita"; clock-format = "24h"; clock-show-weekday = true; clock-show-seconds = true; show-battery-percentage = true; }; "org/gnome/desktop/calendar".show-weekdate = true; "org/gtk/settings/file-chooser" = { sort-directories-first = true; # show-hidden = true; # view-type = "list"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { binding = "t"; command = "kgx"; name = "Terminal"; }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = { binding = "m"; command = "gnome-system-monitor"; name = "Monitor"; }; "org/gnome/settings-daemon/plugins/media-keys".custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/" ]; "org/gnome/shell".enabled-extensions = [ "appindicatorsupport@rgcjonas.gmail.com" "arcmenu@arcmenu.com" "auto-move-windows@gnome-shell-extensions.gcampax.github.com" "blur-my-shell@aunetx" "caffeine@patapon.info" "clipboard-history@alexsaveau.dev" "CoverflowAltTab@palatis.blogspot.com" "custom-accent-colors@demiskp" "dash-to-panel@jderose9.github.com" "gsconnect@andyholmes.github.io" "gtk4-ding@smedius.gitlab.com" "transparent-window-moving@noobsai.github.com" "user-theme@gnome-shell-extensions.gcampax.github.com" "workspace-switch-wraparound@theychx.org" ]; # "org/gnome/shell".favorite-apps = [ # "firefox.desktop" # "thunderbird.desktop" # "element-desktop.desktop" # "org.keepassxc.KeePassXC.desktop" # "org.gnome.Nautilus.desktop" # "org.gnome.TextEditor.desktop" # ]; "org/gnome/shell/extensions/dash-to-panel" = { # Even when we are not using multiple panels on multiple monitors, # the extension still creates them in the config, so we set the same # configuration for each (up to 2 monitors). animate-appicon-hover = true; dot-position = "BOTTOM"; dot-style-focused = "METRO"; dot-style-unfocused = "DOTS"; intellihide = false; # panel-positions = builtins.toJSON (lib.genAttrs [ "0" "1" ] (x: "TOP")); # panel-sizes = builtins.toJSON (lib.genAttrs [ "0" "1" ] (x: 32)); panel-element-positions = builtins.toJSON (lib.genAttrs [ "0" "1" ] (x: [ { element = "showAppsButton"; visible = false; position = "stackedTL"; } { element = "activitiesButton"; visible = false; position = "stackedTL"; } { element = "leftBox"; visible = true; position = "stackedTL"; } { element = "taskbar"; visible = true; position = "centered"; } { element = "centerBox"; visible = false; position = "stackedBR"; } { element = "rightBox"; visible = true; position = "stackedBR"; } { element = "dateMenu"; visible = true; position = "stackedBR"; } { element = "systemMenu"; visible = true; position = "stackedBR"; } { element = "desktopButton"; visible = false; position = "stackedBR"; } ])); multi-monitors = true; # show-apps-icon-file = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake-white.svg"; # show-apps-icon-padding = mkInt32 4; # focus-highlight-dominant = true; # dot-size = mkInt32 0; # appicon-padding = mkInt32 2; # appicon-margin = mkInt32 0; # trans-use-custom-opacity = true; # trans-panel-opacity = 0.25; # show-favorites = false; # group-apps = false; # isolate-workspaces = true; # hide-overview-on-startup = true; # stockgs-keep-dash = true; }; "org/gnome/shell/extensions/arcmenu" = { menu-layout = "Budgie"; menu-button-icon = "Distro_Icon"; distro-icon = "22"; }; "org/gnome/shell/extensions/custom-accent-colors" = { accent-color = "purple"; theme-flatpak = true; theme-gtk3 = true; theme-shell = true; }; "org/gnome/shell/extensions/user-theme".name = "Custom-Accent-Colors"; }; }]; }; }; system.nixos.tags = [ "Gnome" ]; }; }; }