aboutsummaryrefslogtreecommitdiff
path: root/modules/desktop/nixos
diff options
context:
space:
mode:
Diffstat (limited to 'modules/desktop/nixos')
-rw-r--r--modules/desktop/nixos/default.nix12
-rw-r--r--modules/desktop/nixos/fonts.nix8
-rw-r--r--modules/desktop/nixos/gnome.nix126
-rw-r--r--modules/desktop/nixos/greeters/gdm.nix13
-rw-r--r--modules/desktop/nixos/greeters/greetd.nix19
-rw-r--r--modules/desktop/nixos/programs/blackbox.nix33
-rw-r--r--modules/desktop/nixos/programs/firefox.nix68
7 files changed, 279 insertions, 0 deletions
diff --git a/modules/desktop/nixos/default.nix b/modules/desktop/nixos/default.nix
new file mode 100644
index 0000000..1301483
--- /dev/null
+++ b/modules/desktop/nixos/default.nix
@@ -0,0 +1,12 @@
+{...}: {
+ imports = [
+ ./gnome.nix
+ ./fonts.nix
+
+ ./greeters/greetd.nix
+ ./greeters/gdm.nix
+
+ ./programs/firefox.nix
+ ./programs/blackbox.nix
+ ];
+}
diff --git a/modules/desktop/nixos/fonts.nix b/modules/desktop/nixos/fonts.nix
new file mode 100644
index 0000000..3f10d92
--- /dev/null
+++ b/modules/desktop/nixos/fonts.nix
@@ -0,0 +1,8 @@
+{pkgs, ...}: {
+ fonts = {
+ enableDefaultPackages = false;
+ # fontDir.enable = true;
+ fontconfig.enable = true;
+ packages = [pkgs.nerd-fonts.iosevka pkgs.ibm-plex]; # for terminal (blackbox or foot)
+ };
+}
diff --git a/modules/desktop/nixos/gnome.nix b/modules/desktop/nixos/gnome.nix
new file mode 100644
index 0000000..c88a809
--- /dev/null
+++ b/modules/desktop/nixos/gnome.nix
@@ -0,0 +1,126 @@
+{
+ 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";
+ };
+
+ # Theming, etc
+ "org/gnome/desktop/interface" = {
+ color-scheme = "prefer-dark";
+ enable-hot-corners = false;
+ };
+
+ # 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 = 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..9cff44a
--- /dev/null
+++ b/modules/desktop/nixos/programs/blackbox.nix
@@ -0,0 +1,33 @@
+{
+ 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]);
+
+ font = "Iosevka Nerd Font 12";
+
+ 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..f2daf43
--- /dev/null
+++ b/modules/desktop/nixos/programs/firefox.nix
@@ -0,0 +1,68 @@
+{
+ pkgs,
+ 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;
+ DisplayBookmarksToolbar = "always";
+
+ OverrideFirstRunPage = "";
+ OverridePostUpdatePage = "";
+
+ NewTabPage = false;
+
+ Preferences = let
+ opt = Value: {
+ inherit Value;
+ Status = "locked";
+ };
+ in {
+ "toolkit.legacyUserProfileCustomizations.stylesheets" = opt true;
+ "browser.tabs.inTitlebar" = opt 0;
+ "browser.tabs.hoverPreview.enabled" = opt 0;
+
+ "browser.tabs.loadBookmarksInTabs" = opt true;
+
+ "accessibility.force_disabled" = opt 1;
+
+ "browser.compactmode.show" = opt true;
+ "browser.uidensity" = opt 1;
+
+ "media.webspeech.synth.enabled" = opt false; # im not disabled
+ "media.webspeech.synth.dont_notify_on_error" = opt true;
+ };
+
+ ExtensionSettings = let
+ ext = name: {
+ installation_mode = "force_installed";
+ install_url = "https://addons.mozilla.org/firefox/downloads/latest/${name}/latest.xpi";
+ };
+ in
+ {
+ "{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";
+ })
+ // (lib.optionalAttrs (cfg.extensions.zotero.enable) {
+ "zotero@chnm.gmu.edu" = {
+ installation_mode = "force_installed";
+ install_url = "https://download.zotero.org/connector/firefox/release/Zotero_Connector-5.0.181.xpi";
+ };
+ });
+ };
+ };
+
+ services.speechd.enable = lib.mkForce false; # gets installed by firefox, but we don't need it
+ }