From 01961ca374f54a264f0751ccab4755c36cf39607 Mon Sep 17 00:00:00 2001 From: Greg Hellings Date: Mon, 26 Feb 2024 11:39:56 -0600 Subject: [PATCH] Change from Gnome to Sway --- flake.lock | 6 +-- home/gui/chat.nix | 19 -------- home/gui/default.nix | 42 ----------------- home/gui/firefox.nix | 49 -------------------- home/home.nix | 7 ++- home/hosts/jude/default.nix | 2 + home/modules/default.nix | 2 + home/modules/gui.nix | 89 +++++++++++++++++++++++++++++++++++++ home/modules/sway.nix | 71 +++++++++++++++++++++++++++++ hosts/default.nix | 10 +---- hosts/jude/default.nix | 3 +- modules/nixos/default.nix | 1 + modules/nixos/gnome.nix | 1 - modules/nixos/sway.nix | 42 +++++++++++++++++ 14 files changed, 217 insertions(+), 127 deletions(-) delete mode 100644 home/gui/chat.nix delete mode 100644 home/gui/default.nix delete mode 100644 home/gui/firefox.nix create mode 100644 home/modules/gui.nix create mode 100644 home/modules/sway.nix create mode 100644 modules/nixos/sway.nix diff --git a/flake.lock b/flake.lock index 8f347a7..debc007 100644 --- a/flake.lock +++ b/flake.lock @@ -406,11 +406,11 @@ }, "nixunstable": { "locked": { - "lastModified": 1707092692, - "narHash": "sha256-ZbHsm+mGk/izkWtT4xwwqz38fdlwu7nUUKXTOmm4SyE=", + "lastModified": 1708475490, + "narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "faf912b086576fd1a15fca610166c98d47bc667e", + "rev": "0e74ca98a74bc7270d28838369593635a5db3260", "type": "github" }, "original": { diff --git a/home/gui/chat.nix b/home/gui/chat.nix deleted file mode 100644 index 913e0e0..0000000 --- a/home/gui/chat.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, lib, ... }: - -let - darwinPkgs = []; - x86Pkgs = with pkgs; [ - discord - element-desktop - slack - ]; - armPkgs = with pkgs; [ - element-desktop - ]; -in { - home.packages = ( if ( pkgs.stdenv.hostPlatform.isDarwin ) then darwinPkgs else - ( if ( lib.hasPrefix "aarch64" pkgs.system ) then armPkgs else - ( if ( lib.hasPrefix "x86_64" pkgs.system ) then x86Pkgs else [] ) - ) - ); -} diff --git a/home/gui/default.nix b/home/gui/default.nix deleted file mode 100644 index e81d251..0000000 --- a/home/gui/default.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ pkgs, ... }: - -let - excludes = systems: opts: ( - if ( builtins.all (x: pkgs.system != x) systems ) then opts else [] - ); - -in -{ - imports = [ - ./chat.nix - ./firefox.nix - ]; - - # These packages are Linux only - home.packages = with pkgs; ( excludes ["x86_64-darwin" "aarch64-darwin"] - [ - cdrtools - vlc - x265 - ]) ++ - - # x86_64-linux only - ( excludes ["x86_64-darwin" "aarch64-darwin" "aarch64-linux"] - [ - bitwarden - endeavour - gnucash - jellyfin-media-player - libreoffice - #logseq - nextcloud-client - ]) ++ - - # Items that are not supported on ARM/Linux - ( excludes ["aarch64-linux"] - [ - onlyoffice-bin - synology-drive-client - zoom-us - ]); -} diff --git a/home/gui/firefox.nix b/home/gui/firefox.nix deleted file mode 100644 index 36859a6..0000000 --- a/home/gui/firefox.nix +++ /dev/null @@ -1,49 +0,0 @@ -{ lib, pkgs, ... }: - -let - # For now, we ignore this and don't install it - ffPkgs = if ( pkgs.stdenv.hostPlatform.isDarwin ) - then pkgs.firefox-bin - else pkgs.firefox-wayland.override { cfg.enableGnomeExtensions = true; }; - - vars = { - MOZ_ENABLE_WAYLAND = "1"; - XDG_CURRENT_DESKTOP = "sway"; - }; -in with lib; -{ - programs.firefox = { - enable = (! pkgs.stdenv.hostPlatform.isDarwin); - package = ffPkgs; - profiles = { - default = { - settings = { - "app.update.auto" = false; - "browser.ctrlTab.sortByRecentlyUsed" = true; - "browser.startup.page" = 3; - "browser.startup.homepage" = "https://thehellings.com"; - "doh-rollout.doorhanger-decision" = "UIDisabled"; - "doh-rollout.doneFirstRun" = true; - "signon.rememberSignons" = false; - }; - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ - bitwarden - bypass-paywalls-clean - gsconnect - foxyproxy-standard - multi-account-containers - plasma-integration - octotree - refined-github - tree-style-tab - ublock-origin - unpaywall - ]; - }; - }; - }; - - programs.bash.sessionVariables = vars; - - programs.xonsh.sessionVariables = vars; -} diff --git a/home/home.nix b/home/home.nix index cc236e2..12527fa 100644 --- a/home/home.nix +++ b/home/home.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, gui, gnome, +{ pkgs, lib, inputs, host ? "most", ...}: @@ -15,11 +15,9 @@ ./vim.nix ./xonsh.nix ./hosts/${host} - ] ++ ( if gui then [ ./gui ] else []); + ]; - greg.gnome = gnome; - programs.tmux = { enable = true; keyMode = "vi"; @@ -54,5 +52,6 @@ tree unzip wget + zip ]; } diff --git a/home/hosts/jude/default.nix b/home/hosts/jude/default.nix index c6ee00f..8ef40e8 100644 --- a/home/hosts/jude/default.nix +++ b/home/hosts/jude/default.nix @@ -9,4 +9,6 @@ fluffychat logseq ]; + greg.gui = true; + greg.sway = true; } diff --git a/home/modules/default.nix b/home/modules/default.nix index 81d29d5..05e118f 100644 --- a/home/modules/default.nix +++ b/home/modules/default.nix @@ -3,7 +3,9 @@ { imports = [ ./gnome.nix + ./gui.nix ./python.nix + ./sway.nix ./xonsh.nix ]; } diff --git a/home/modules/gui.nix b/home/modules/gui.nix new file mode 100644 index 0000000..f04b79d --- /dev/null +++ b/home/modules/gui.nix @@ -0,0 +1,89 @@ +{ config, pkgs, lib, ... }: + +let + cfg = config.greg.gui; + + excludes = systems: opts: ( + if ( builtins.all (x: pkgs.system != x) systems ) then opts else [] + ); + + # For now, we ignore this and don't install it + ffPkgs = if ( pkgs.stdenv.hostPlatform.isDarwin ) + then pkgs.firefox-bin + else pkgs.firefox-wayland.override { cfg.enableGnomeExtensions = true; }; + + vars = { + MOZ_ENABLE_WAYLAND = "1"; + XDG_CURRENT_DESKTOP = "sway"; + }; +in { + options.greg.gui = lib.mkEnableOption "Enable GUI programs"; + + config = (lib.mkIf cfg { + # These packages are Linux only + home.packages = with pkgs; ( excludes ["x86_64-darwin" "aarch64-darwin"] + [ + cdrtools + element-desktop + vlc + x265 + ]) ++ + + # x86_64-linux only + ( excludes ["x86_64-darwin" "aarch64-darwin" "aarch64-linux"] + [ + bitwarden + discord + endeavour + gnucash + jellyfin-media-player + libreoffice + #logseq + nextcloud-client + slack + ]) ++ + + # Items that are not supported on ARM/Linux + ( excludes ["aarch64-linux"] + [ + onlyoffice-bin + synology-drive-client + zoom-us + ]); + + programs.firefox = { + enable = (! pkgs.stdenv.hostPlatform.isDarwin); + package = ffPkgs; + profiles = { + default = { + settings = { + "app.update.auto" = false; + "browser.ctrlTab.sortByRecentlyUsed" = true; + "browser.startup.page" = 3; + "browser.startup.homepage" = "https://thehellings.com"; + "doh-rollout.doorhanger-decision" = "UIDisabled"; + "doh-rollout.doneFirstRun" = true; + "signon.rememberSignons" = false; + }; + extensions = with pkgs.nur.repos.rycee.firefox-addons; [ + bitwarden + bypass-paywalls-clean + gsconnect + foxyproxy-standard + multi-account-containers + plasma-integration + octotree + refined-github + tree-style-tab + ublock-origin + unpaywall + ]; + }; + }; + }; + + # This is supposed to be in support of Firefox, but I dunno... + programs.bash.sessionVariables = vars; + programs.xonsh.sessionVariables = vars; + }); +} diff --git a/home/modules/sway.nix b/home/modules/sway.nix new file mode 100644 index 0000000..b289277 --- /dev/null +++ b/home/modules/sway.nix @@ -0,0 +1,71 @@ +{ config, pkgs, lib, ... }: + +let + cfg = config.greg.sway; +in { + options.greg.sway = lib.mkEnableOption "Enable Sway support and settings"; + + config = (lib.mkIf cfg { + programs.swaylock.enable = true; + + wayland.windowManager.sway = { + enable = true; + config = rec { + #fonts.size = 10.0; + keybindings = lib.mkOptionDefault { + "Mod3+l" = "${pkgs.swaylock}/bin/swaylock"; + }; + modifier = "Mod1"; + output = { + "Samsung Electric Company S24E650 H4ZN600985" = { + mode = "1920x1200"; + transform = "90"; + pos = "0 0"; + }; + "ViewSonic Corporation VA2252 Series VMT201800925" = { + mode = "1920x1080"; + pos = "200 1920"; + }; + }; + terminal = "${pkgs.alacritty}/bin/alacritty"; + startup = [ + { command = "firefox"; } + ]; + }; + extraOptions = [ + "--unsupported-gpu" + ]; + extraSessionCommands = '' + export WLR_NO_HARDWARE_CURSORS=1 + ''; + systemd.enable = true; + wrapperFeatures = { + base = true; + gtk = true; + }; + }; + + home.pointerCursor = { + name = "Adwaita"; + package = pkgs.gnome.adwaita-icon-theme; + size = 12; + x11 = { + enable = true; + defaultCursor = "Adwaita"; + }; + }; + + home.packages = with pkgs; [ + arj + dpkg + kate + kget + krename + krusader + p7zip + plocate + rpm + xxdiff + ]; + }); +} diff --git a/hosts/default.nix b/hosts/default.nix index 6e2973d..77d2aad 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -8,8 +8,6 @@ let machine = { channel ? inputs.nixstable, extraMods ? [], - gnome ? false, - gui ? false, name, system ? "x86_64-linux", hm ? inputs.hm @@ -28,7 +26,7 @@ let home-manager.useUserPackages = true; home-manager.users.greg = import ../home/home.nix; home-manager.extraSpecialArgs = { - inherit gnome gui inputs overlays; + inherit inputs overlays; home = "/home/greg"; host = name; }; @@ -41,11 +39,7 @@ let }; in { genesis = machine { name = "genesis"; }; - jude = unstable { - name = "jude"; - gnome = true; - gui = true; - }; + jude = unstable { name = "jude"; }; icdm-root = unstable { name = "icdm-root"; }; linode = machine { name = "linode"; }; mm = unstable { name = "mm"; }; diff --git a/hosts/jude/default.nix b/hosts/jude/default.nix index 3ac3f9c..df8d19c 100644 --- a/hosts/jude/default.nix +++ b/hosts/jude/default.nix @@ -27,7 +27,7 @@ }; greg = { tailscale.enable = true; - gnome.enable = true; + sway.enable = true; kde.enable = false; }; @@ -89,6 +89,7 @@ pulse.enable = true; wireplumber.enable = true; }; + locate.enable = true; xserver.videoDrivers = [ "nvidia" ]; }; hardware = { diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 1a886ef..ad807e1 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -12,6 +12,7 @@ ./proxy.nix ./router.nix ./rpi4.nix + ./sway.nix ./tailscale.nix ]; diff --git a/modules/nixos/gnome.nix b/modules/nixos/gnome.nix index aa9fc4c..b5e8c95 100644 --- a/modules/nixos/gnome.nix +++ b/modules/nixos/gnome.nix @@ -38,7 +38,6 @@ in with lib; { }; programs.dconf.enable = true; - programs.sway.enable = true; # Gives us Wayland xdg.portal = { enable = true; wlr.enable = true; # Enables screen sharing in Wayland diff --git a/modules/nixos/sway.nix b/modules/nixos/sway.nix new file mode 100644 index 0000000..7f92df9 --- /dev/null +++ b/modules/nixos/sway.nix @@ -0,0 +1,42 @@ +{ config, pkgs, lib, ... }: + +let + cfg = config.greg.sway; + +in with lib; { + options = { + greg.sway.enable = mkEnableOption "Enable my default Gnome3 setup"; + }; + + config = mkIf cfg.enable { + services = { + accounts-daemon.enable = true; + + pipewire = { + enable = true; + alsa.enable = true; + audio.enable = true; + jack.enable = true; + pulse.enable = true; + wireplumber.enable = true; + }; + + xserver = { + enable = true; + displayManager.gdm = { + enable = true; + autoSuspend = false; + banner = "Welcome to Greg's JUDE machine. Do I know you?"; + wayland = true; + }; + layout = "us"; + }; + }; + + programs.sway = { + enable = true; # Will be enabled through home-manager + wrapperFeatures.gtk = true; + }; + security.pam.services.swaylock = {}; + }; +}