diff --git a/home/default.nix b/home/default.nix index 5544d26..521f6d0 100644 --- a/home/default.nix +++ b/home/default.nix @@ -11,7 +11,11 @@ let if username == "root" then "/root" else ( if ( nixpkgs.lib.hasSuffix "-darwin" system ) then "/Users/${username}" else "/home/${username}" ); - mkhome = system: gui: + mkhome = { + system, + gui, + gnome + }: let homeDirectory = home system; @@ -26,15 +30,35 @@ let in home-manager.lib.homeManagerConfiguration rec { inherit pkgs system username homeDirectory; stateVersion = "22.05"; - configuration = import ./home.nix username { - inherit pkgs gui; + configuration = import ./home.nix { + inherit pkgs gui gnome; inherit (pkgs) config lib stdenv; }; }; + + gdm = { + gui = true; + gnome = true; + }; + + cli = { + gui = false; + gnome = false; + }; + + gui = { + gui = true; + gnome = false; + }; + + arch = { system = "aarch64-linux"; }; + x86 = { system = "x86_64-linux"; }; + darwin = { system = "x86_64-darwin"; }; in { - "aarch64-gui" = mkhome "aarch64-linux" true; - "aarch64-nogui" = mkhome "aarch64-linux" false; - "x86_64-gui" = mkhome "x86_64-linux" true; - "x86_64-nogui" = mkhome "x86_64-linux" false; - "x86_64-darwin" = mkhome "x86_64-darwin" true; + "wsl" = mkhome (gui // arch); + "aarch64-gui" = mkhome (gdm // arch); + "aarch64-nogui" = mkhome (cli // arch); + "x86_64-gui" = mkhome (gdm // x86); + "x86_64-nogui" = mkhome (cli // x86); + "x86_64-darwin" = mkhome (gdm // darwin); } diff --git a/home/gui/chat.nix b/home/gui/chat.nix index 89cbfab..f8eee62 100644 --- a/home/gui/chat.nix +++ b/home/gui/chat.nix @@ -1,10 +1,18 @@ { pkgs, lib, ... }: -{ - home.packages = with pkgs; ( if ( lib.hasSuffix "-darwin" pkgs.system) then - [] else - [ +let + darwinPkgs = []; + x86Pkgs = with pkgs; [ element-desktop slack - ]); + ]; + archPkgs = with pkgs; [ + element-desktop + ]; +in { + home.packages = ( if ( pkgs.stdenv.hostPlatform.isDarwin ) then darwinPkgs else + ( if ( lib.hasPrefix "aarch64" pkgs.system ) then archPkgs else + ( if ( lib.hasPrefix "x86_64" pkgs.system ) then x86Pkgs else [] ) + ) + ); } diff --git a/home/gui/default.nix b/home/gui/default.nix index 7c2e405..d43efcf 100644 --- a/home/gui/default.nix +++ b/home/gui/default.nix @@ -3,15 +3,12 @@ { imports = [ ./chat.nix - ./gnome.nix ./firefox.nix - ./terminal.nix ]; home.packages = with pkgs; [ bazel bazel-buildtools - bitwarden cargo # Rustc cdrtools ffmpeg @@ -22,15 +19,19 @@ handbrake jdk11 libtheora - onlyoffice-bin - synology-drive-client vlc x265 - zoom-us - ] ++ ( if pkgs.system != "x86_64-darwin" then + ] ++ ( if ( pkgs.system != "x86_64-darwin" && pkgs.system != "aarch64-linux" ) then [ jellyfin-media-player nextcloud-client ] else [] + ) ++ ( if ( pkgs.system != "aarch64-linux" ) then + [ + bitwarden + onlyoffice-bin + synology-drive-client + zoom-us + ] else [] ); } diff --git a/home/gui/gnome.nix b/home/gui/gnome.nix deleted file mode 100644 index a3ff260..0000000 --- a/home/gui/gnome.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ pkgs, lib, ... }: - -let - gv = lib.hm.gvariant; - -in { - dconf.settings = lib.mkIf ( lib.hasSuffix "-linux" pkgs.system ) { - "org/gnome/desktop/interface" = { - clock-show-weekday = true; - }; - "org/gnome/desktop/wm/keybindings" = { - switch-applications = []; - switch-applications-backward = []; - switch-windows = ["Tab"]; - switch-windows-backward = [ "Tab" ]; - }; - "org/gnome/nautilus/preferences" = { - default-folder-viewer = "icon-view"; - search-filter-time-type = "last_modified"; - search-view = "list-view"; - }; - "org/gnome/shell/window-switcher" = { - app-icon-mode = "both"; - current-workspace-only = true; - }; - "org/gnome/shell" = { - favorite-apps = [ - "org.gnome.Calendar.desktop" - "org.gnome.Nautilus.desktop" - "org.gnome.Console.desktop" - "firefox.desktop" - "vlc.desktop" - ]; - }; - "org/gnome/shell/overrides" = { - attach-modal-dialogs = true; - dynamic-workspaces = true; - edge-tiling = true; - focus-change-on-pointer-rest = true; - workspaces-only-on-primary = true; - }; - "org/virt-manager/virt-manager/connections" = { - autoconnect = [ "qemu://session" "qemu://system" ]; - uris = [ "qemu://session" "qemu://system" ]; - }; - }; -} diff --git a/home/gui/terminal.nix b/home/gui/terminal.nix deleted file mode 100644 index 822b30e..0000000 --- a/home/gui/terminal.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ lib, pkgs, ... }: - -{ - programs.gnome-terminal = lib.mkIf ( pkgs.system != "x86_64-darwin") { - enable = true; - showMenubar = true; - themeVariant = "dark"; - profile.default = { - default = true; - visibleName = "greg"; - }; - }; -} diff --git a/home/home.nix b/home/home.nix index de15528..3bb9acb 100644 --- a/home/home.nix +++ b/home/home.nix @@ -1,10 +1,6 @@ -name: { pkgs, lib, gui, config, ...}: +{ pkgs, lib, gui, gnome, ...}: -let - guiImports = if gui then - [ ./gui ] else []; - -in { +{ imports = [ ./modules ./ansible.nix @@ -15,9 +11,11 @@ in { ./templates.nix ./vim.nix ./xonsh.nix - ] ++ guiImports; + ] ++ ( if gui then [ ./gui ] else []); + greg.gnome = gnome; + programs.tmux = { enable = true; keyMode = "vi"; diff --git a/home/modules/default.nix b/home/modules/default.nix index 3357dd9..a6344c7 100644 --- a/home/modules/default.nix +++ b/home/modules/default.nix @@ -2,6 +2,7 @@ { imports = [ + ./gnome.nix ./xonsh.nix ]; } diff --git a/home/modules/gnome.nix b/home/modules/gnome.nix new file mode 100644 index 0000000..e669be9 --- /dev/null +++ b/home/modules/gnome.nix @@ -0,0 +1,62 @@ +{ config, pkgs, lib, ... }: + +let + gv = lib.hm.gvariant; + cfg = config.greg.gnome; + +in { + options.greg.gnome = lib.mkEnableOption "Enable Gnome support and settings"; + + config = (lib.mkIf cfg { + programs.gnome-terminal = lib.mkIf ( pkgs.system != "x86_64-darwin") { + enable = true; + showMenubar = true; + themeVariant = "dark"; + profile.default = { + default = true; + visibleName = "greg"; + }; + }; + + dconf.settings = { + "org/gnome/desktop/interface" = { + clock-show-weekday = true; + }; + "org/gnome/desktop/wm/keybindings" = { + switch-applications = []; + switch-applications-backward = []; + switch-windows = ["Tab"]; + switch-windows-backward = [ "Tab" ]; + }; + "org/gnome/nautilus/preferences" = { + default-folder-viewer = "icon-view"; + search-filter-time-type = "last_modified"; + search-view = "list-view"; + }; + "org/gnome/shell/window-switcher" = { + app-icon-mode = "both"; + current-workspace-only = true; + }; + "org/gnome/shell" = { + favorite-apps = [ + "org.gnome.Calendar.desktop" + "org.gnome.Nautilus.desktop" + "org.gnome.Console.desktop" + "firefox.desktop" + "vlc.desktop" + ]; + }; + "org/gnome/shell/overrides" = { + attach-modal-dialogs = true; + dynamic-workspaces = true; + edge-tiling = true; + focus-change-on-pointer-rest = true; + workspaces-only-on-primary = true; + }; + "org/virt-manager/virt-manager/connections" = { + autoconnect = [ "qemu://session" "qemu://system" ]; + uris = [ "qemu://session" "qemu://system" ]; + }; + }; + }); +} diff --git a/overlays/hms.sh b/overlays/hms.sh index 005b3dc..5ecffa2 100644 --- a/overlays/hms.sh +++ b/overlays/hms.sh @@ -7,6 +7,9 @@ if [ "$(uname -s)" == "Darwin" ]; then # On macOS src="${HOME}/.config/nix/" target="${arch}-darwin" +elif [ x"${WSL_DISTRO_NAME}" != "x" ]; then + src=/etc/nixos + target="wsl" else # On Linux/WSL2 systems if [ -z "${DISPLAY}" ]; then