diff --git a/home/dot_config/zed/keymap.json b/home/dot_config/zed/keymap.json index 1030004..c1f5eed 100644 --- a/home/dot_config/zed/keymap.json +++ b/home/dot_config/zed/keymap.json @@ -65,6 +65,7 @@ "bindings": { "space space": "file_finder::Toggle", "space ;": "command_palette::Toggle", + "space !": "workspace::NewTerminal", "space /": "pane::DeploySearch", "space f c": "zed::OpenSettings", "space f e c": "zed::OpenSettings", diff --git a/nixcfgs/.gitignore b/nixcfgs/.gitignore index 89b3a77..1046b48 100644 --- a/nixcfgs/.gitignore +++ b/nixcfgs/.gitignore @@ -1 +1 @@ -secrets.nix +secrets # TODO diff --git a/nixcfgs/hosts/zephyrus/default.nix b/nixcfgs/hosts/zephyrus/default.nix index 1fabc89..c1f6123 100644 --- a/nixcfgs/hosts/zephyrus/default.nix +++ b/nixcfgs/hosts/zephyrus/default.nix @@ -20,15 +20,15 @@ ../../modules/nixos/hardware/udev/basys3.nix # desktop environment and display manager - ../../modules/nixos/desktop/de/kde.nix - ../../modules/nixos/desktop/de/hyprland.nix - ../../modules/nixos/desktop/dm/sddm.nix + ../../modules/nixos/desktop/de/gnome.nix + ../../modules/nixos/desktop/dm/gdm.nix # desktop programs ../../modules/nixos/programs/chromium.nix ../../modules/nixos/programs/firefox.nix ../../modules/nixos/programs/libvirt.nix ../../modules/nixos/programs/obs-studio.nix + ../../modules/nixos/programs/rime.nix ../../modules/nixos/programs/steam.nix ../../modules/nixos/programs/waydroid.nix ../../modules/nixos/programs/winboat.nix @@ -50,5 +50,6 @@ # Disable modem networking.modemmanager.enable = false; + services.flatpak.enable = true; system.stateVersion = "25.05"; } diff --git a/nixcfgs/modules/home/dev/typst.nix b/nixcfgs/modules/home/dev/typst.nix new file mode 100644 index 0000000..048aa6c --- /dev/null +++ b/nixcfgs/modules/home/dev/typst.nix @@ -0,0 +1,10 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + typst + typstyle + ]; + + programs.vscode.profiles.default.extensions = with pkgs.vscode-extensions; [ + myriad-dreamin.tinymist + ]; +} diff --git a/nixcfgs/modules/nixos/default.nix b/nixcfgs/modules/nixos/default.nix index 2e220ba..ce084a5 100644 --- a/nixcfgs/modules/nixos/default.nix +++ b/nixcfgs/modules/nixos/default.nix @@ -1,7 +1,6 @@ -{pkgs, ...}: { +{...}: { imports = [ ./core/configuration.nix ./core/packages.nix ]; } - diff --git a/nixcfgs/modules/nixos/desktop/de/gnome.nix b/nixcfgs/modules/nixos/desktop/de/gnome.nix index 12eb750..e5e5f25 100644 --- a/nixcfgs/modules/nixos/desktop/de/gnome.nix +++ b/nixcfgs/modules/nixos/desktop/de/gnome.nix @@ -1,5 +1,12 @@ { pkgs, ... }: - { services.desktopManager.gnome.enable = true; + environment.systemPackages = with pkgs; [ + gnome-menus + ]; + environment.gnome.excludePackages = with pkgs; [ + evince + totem + papers + ]; } diff --git a/nixcfgs/secrets/secrets.nix b/nixcfgs/secrets/secrets.nix new file mode 100644 index 0000000..5b854b3 --- /dev/null +++ b/nixcfgs/secrets/secrets.nix @@ -0,0 +1,8 @@ +let + defaultAge = "age1mcvqpg39t32ll684r4m2l8j0l9zag6endg0h6zjw8svkgdwc4pjqkk5fvj"; +in { + age.identityPaths = [ + "~/.config/age/keys.txt" + ]; + "ts.age".publicKeys = [defaultAge]; +} diff --git a/nixcfgs/secrets/ts.age b/nixcfgs/secrets/ts.age new file mode 100644 index 0000000..6360f02 Binary files /dev/null and b/nixcfgs/secrets/ts.age differ diff --git a/nixcfgs/users/js0ny/default.nix b/nixcfgs/users/js0ny/default.nix index 182ec3b..185e6d2 100644 --- a/nixcfgs/users/js0ny/default.nix +++ b/nixcfgs/users/js0ny/default.nix @@ -1,12 +1,11 @@ # ~/.config/nixcfgs/users/js0ny/default.nix -{pkgs, ...}: let +{ pkgs, ... }: +let username = "js0ny"; -in { +in +{ home.username = username; - home.homeDirectory = - if pkgs.stdenv.isDarwin - then "/Users/${username}" - else "/home/${username}"; + home.homeDirectory = if pkgs.stdenv.isDarwin then "/Users/${username}" else "/home/${username}"; home.packages = with pkgs; [ home-manager diff --git a/nixcfgs/users/js0ny/packages/flatpak.nix b/nixcfgs/users/js0ny/packages/flatpak.nix index 4b682b8..5163337 100644 --- a/nixcfgs/users/js0ny/packages/flatpak.nix +++ b/nixcfgs/users/js0ny/packages/flatpak.nix @@ -1,5 +1,6 @@ # https://github.com/gmodena/nix-flatpak -{...}: { +{ ... }: +{ services.flatpak.enable = true; services.flatpak.remotes = [ { @@ -27,7 +28,6 @@ services.flatpak.overrides = { global = { Context = { - # Force wayland by default filesystems = [ "/run/current-system/sw/share/fonts:ro" "xdg-config/fontconfig:ro" @@ -39,14 +39,15 @@ ]; }; }; - "com.qq.QQ".Context.sockets = ["x11"]; + "com.qq.QQ".Context.sockets = [ "x11" ]; "com.tencent.WeChat" = { - Context.sockets = ["x11"]; + Context.sockets = [ "x11" ]; Environment = { # WeChat does not support wayland & wayland-ime QT_IM_MODULE = "fcitx"; }; }; - "md.obsidian.Obsidian".Context.sockets = ["wayland"]; + "md.obsidian.Obsidian".Context.sockets = [ "wayland" ]; + "com.getpostman.Postman".Context.persistent = [ "Postman" ]; }; } diff --git a/nixcfgs/users/js0ny/packages/gui.nix b/nixcfgs/users/js0ny/packages/gui.nix index ddf883d..b62ad6c 100644 --- a/nixcfgs/users/js0ny/packages/gui.nix +++ b/nixcfgs/users/js0ny/packages/gui.nix @@ -1,14 +1,23 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { home.packages = with pkgs; [ + # Terminal Emulator + ghostty # default kitty - ghostty alacritty + warp-terminal + # Explorer kdePackages.dolphin - kdePackages.okular - kdePackages.elisa + kdePackages.dolphin-plugins # dolphin git integration + kdePackages.konsole # dolphin terminal integration + yazi # terminal file manager + # PDF Viewer + kdePackages.okular # default + sioyek + # Image Viewer + nsxiv # default + loupe # SUPER FAST 有催人跑的感觉 w/ GPU Accel. papirus-icon-theme - firefox + kdePackages.elisa pcloud telegram-desktop steam @@ -19,16 +28,10 @@ (jetbrains.rider.override { vmopts = ''-Dawt.toolkit.name=WLToolkit''; }) - warp-terminal - # clash-verge-rev haruna - sioyek - vimiv-qt - imv localsend neovide cherry-studio - vivaldi kdePackages.kdeconnect-kde picard qutebrowser @@ -40,6 +43,9 @@ mpv neovim-qt goldendict-ng + kdePackages.kdenlive + gimp + steam-run ]; xdg.desktopEntries = { diff --git a/nixcfgs/users/js0ny/programs/firefox.nix b/nixcfgs/users/js0ny/programs/firefox.nix index 25e0b4a..5b6edc8 100644 --- a/nixcfgs/users/js0ny/programs/firefox.nix +++ b/nixcfgs/users/js0ny/programs/firefox.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { programs.firefox = { enable = true; profiles.default = { @@ -12,7 +11,7 @@ } ]; icon = "https://archlinux.org/favicon.ico"; - definedAliases = [ "@aw" ]; + definedAliases = ["@aw"]; }; aur = { name = "Arch User Repository"; @@ -22,43 +21,49 @@ } ]; icon = "https://archlinux.org/favicon.ico"; - definedAliases = [ "@aur" ]; + definedAliases = ["@aur"]; }; arch-packages = { name = "ArchLinux Packages"; - urls = [ { template = "https://archlinux.org/?q={searchTerms}"; } ]; + urls = [{template = "https://archlinux.org/packages/?q={searchTerms}";}]; icon = "https://archlinux.org/favicon.ico"; - definedAliases = [ "@pac" ]; + definedAliases = ["@pac"]; }; chatgpt = { name = "ChatGPT"; - urls = [ { template = "https://chatgpt.com/?q={searchTerms}"; } ]; + urls = [{template = "https://chatgpt.com/?q={searchTerms}";}]; icon = "https://chatgpt.com/favicon.ico"; - definedAliases = [ "@gpt" ]; + definedAliases = ["@gpt"]; }; scoop = { name = "scoop"; - urls = [ { template = "https://scoop.sh/#/apps?q={searchTerms}"; } ]; + urls = [{template = "https://scoop.sh/#/apps?q={searchTerms}";}]; icon = "https://scoop.sh/favicon.ico"; - definedAliases = [ "@sc" ]; + definedAliases = ["@sc"]; }; perplexity = { name = "Perplexity"; - urls = [ { template = "https://www.perplexity.ai/?q={searchTerms}"; } ]; + urls = [{template = "https://www.perplexity.ai/?q={searchTerms}";}]; icon = "https://perplexity.ai/favicon.ico"; - definedAliases = [ "@pplx" ]; + definedAliases = ["@pplx"]; }; winget = { name = "Windows Package Manager"; - urls = [ { template = "https://winget.ragerworks.com/search/all/{searchTerms}"; } ]; + urls = [{template = "https://winget.ragerworks.com/search/all/{searchTerms}";}]; icon = "https://microsoft.com/favicon.ico"; - definedAliases = [ "@win" ]; + definedAliases = ["@win"]; }; github = { name = "GitHub Repository"; - urls = [ { template = "https://github.com/search?type=repositories&q={searchTerms}"; } ]; + urls = [{template = "https://github.com/search?type=repositories&q={searchTerms}";}]; icon = "https://github.com/favicon.ico"; - definedAliases = [ "@gh" ]; + definedAliases = ["@gh"]; + }; + repology = { + name = "Repology"; + urls = [{template = "https://repology.org/projects/?search={searchTerms}";}]; + icon = "https://repology.org/favicon.ico"; + definedAliases = ["@repo"]; }; }; extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ diff --git a/nixcfgs/users/js0ny/programs/gnome.nix b/nixcfgs/users/js0ny/programs/gnome.nix index 76160d3..b2135e9 100644 --- a/nixcfgs/users/js0ny/programs/gnome.nix +++ b/nixcfgs/users/js0ny/programs/gnome.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { home.packages = with pkgs; [ gnome-tweaks sushi @@ -14,18 +13,20 @@ gnomeExtensions.blur-my-shell gnomeExtensions.appindicator gnomeExtensions.gsconnect + gnomeExtensions.resource-monitor + gnomeExtensions.lunar-calendar ]; programs.gnome-shell.enable = true; programs.gnome-shell.extensions = [ - { package = pkgs.gnomeExtensions.dash-to-dock; } - { package = pkgs.gnomeExtensions.caffeine; } - { package = pkgs.gnomeExtensions.logo-menu; } - { package = pkgs.gnomeExtensions.kimpanel; } - { package = pkgs.gnomeExtensions.appindicator; } - { package = pkgs.gnomeExtensions.gsconnect; } - { package = pkgs.gnomeExtensions.clipboard-indicator; } - { package = pkgs.gnomeExtensions.advanced-alttab-window-switcher; } - { package = pkgs.gnomeExtensions.blur-my-shell; } + {package = pkgs.gnomeExtensions.dash-to-dock;} + {package = pkgs.gnomeExtensions.caffeine;} + {package = pkgs.gnomeExtensions.logo-menu;} + {package = pkgs.gnomeExtensions.kimpanel;} + {package = pkgs.gnomeExtensions.appindicator;} + {package = pkgs.gnomeExtensions.gsconnect;} + {package = pkgs.gnomeExtensions.clipboard-indicator;} + {package = pkgs.gnomeExtensions.advanced-alttab-window-switcher;} + # {package = pkgs.gnomeExtensions.blur-my-shell;} ]; dconf.settings = { @@ -49,6 +50,9 @@ symbolic-icon = true; use-custom-icon = false; }; + "org/gnome/shell/extensions/clipboard-indicator" = { + toggle-menu = ["v"]; + }; "org/gnome/shell" = { favorite-apps = [ "com.mitchellh.ghostty.desktop" @@ -56,6 +60,24 @@ "code.desktop" ]; }; + "org/gnome/shell/keybindings" = { + toggle-overview = ["w"]; + toggle-message-tray = ["n"]; + # G14 Compatibility + show-screenshot-ui = ["s"]; + }; + "org/gnome/desktop/wm/keybindings" = { + activate-window-menu = ["F3"]; + show-desktop = ["d"]; + close = ["q" "F4"]; + switch-windows = ["Tab"]; + switch-windows-backward = ["Tab"]; + switch-applications = ["Tab"]; + switch-applications-backward = ["Tab"]; + }; + "org/gnome/settings-daemon/plugins/media-keys" = { + www = ["b"]; + }; "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-0" = { name = "Open File Explorer"; command = "dolphin"; @@ -78,6 +100,7 @@ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom-2/" ]; }; + # Scanned directory in GNOME Search "org/freedesktop/tracker/miner/files" = { "index-recursive-directories" = [ "&DESKTOP" @@ -88,6 +111,9 @@ "/home/js0ny/Obsidian" ]; }; + "ca/desrt/dconf-editor" = { + show-warning = false; + }; }; # qt.style.name = "adwaita"; diff --git a/nixcfgs/users/js0ny/programs/mime.nix b/nixcfgs/users/js0ny/programs/mime.nix index ab43f62..d728cfd 100644 --- a/nixcfgs/users/js0ny/programs/mime.nix +++ b/nixcfgs/users/js0ny/programs/mime.nix @@ -3,16 +3,29 @@ xdg.mime.enable = true; xdg.mimeApps = { enable = true; + # In Dolphin, middle click to open with 2nd order default app defaultApplications = { + # PDF "application/pdf" = "org.kde.okular.desktop"; + # Plain text "text/plain" = "nvim-qt.desktop"; + # Source Code - C "text/x-csrc" = "nvim-qt.desktop"; "text/x-chdr" = "nvim-qt.desktop"; + # File Explorer "inode/directory" = "org.kde.dolphin.desktop"; - "x-scheme-handler/tg" = "org.telegram.desktop.desktop"; - "x-scheme-handler/tonsite" = "org.telegram.desktop.desktop"; - }; - associations.added = { + # Image Viewer + "image/jpeg" = "nsxiv.desktop;org.gnome.Loupe.desktop"; + "image/jpg" = "nsxiv.desktop;org.gnome.Loupe.desktop"; + "image/png" = "nsxiv.desktop;org.gnome.Loupe.desktop"; + "image/gif" = "nsxiv.desktop;org.gnome.Loupe.desktop"; + "image/bmp" = "nsxiv.desktop;org.gnome.Loupe.desktop"; + "image/webp" = "nsxiv.desktop;org.gnome.Loupe.desktop"; + # Browser + "text/html" = "firefox.desktop;chromium-browser.desktop"; + "x-scheme-handler/http" = "firefox.desktop;chromium-browser.desktop"; + "x-scheme-handler/httpss" = "firefox.desktop;chromium-browser.desktop"; + # URL Scheme "x-scheme-handler/tg" = "org.telegram.desktop.desktop"; "x-scheme-handler/tonsite" = "org.telegram.desktop.desktop"; }; diff --git a/nixcfgs/users/js0ny/zephyrus.nix b/nixcfgs/users/js0ny/zephyrus.nix index d48b5bb..376574b 100644 --- a/nixcfgs/users/js0ny/zephyrus.nix +++ b/nixcfgs/users/js0ny/zephyrus.nix @@ -1,37 +1,50 @@ # ~/.config/nixcfgs/users/js0ny/default.nix {...}: { imports = [ + # General config ./default.nix + + # Use Gnome-keyring for GUI setup + ../../modules/home/gnome-keyrings.nix + + # Packages ./packages/cli.nix ./packages/gui.nix ./packages/flatpak.nix ./packages/fonts.nix ./packages/catppuccin.nix + + # Personal Program ./programs/chromium.nix - ./programs/emacs.nix - # ./programs/gnome.nix - ./programs/plasma.nix - ./programs/shell.nix - ./programs/vscode.nix ./programs/firefox.nix + ./programs/emacs.nix + ./programs/vscode.nix + ./programs/shell.nix ./programs/distrobox.nix ./programs/mime.nix ./programs/zed-editor.nix ./programs/rime.nix - ../../modules/home/gnome-keyrings.nix + + # Desktop Linux + ./programs/gnome.nix + + # General Program config + ../../modules/home/programs/nvim.nix + ../../modules/home/programs/eza.nix + ../../modules/home/programs/winboat.nix + ../../modules/home/programs/fzf.nix + ../../modules/home/programs/lsd.nix + ../../modules/home/programs/starship.nix + ../../modules/home/programs/zoxide.nix + + # Development setup ../../modules/home/dev/c.nix ../../modules/home/dev/go.nix ../../modules/home/dev/java.nix ../../modules/home/dev/lua.nix ../../modules/home/dev/nix.nix ../../modules/home/dev/python.nix - ../../modules/home/programs/eza.nix - ../../modules/home/programs/winboat.nix - ../../modules/home/programs/fzf.nix - ../../modules/home/programs/lsd.nix - ../../modules/home/programs/nvim.nix - ../../modules/home/programs/starship.nix - ../../modules/home/programs/zoxide.nix + ../../modules/home/dev/typst.nix ]; home.stateVersion = "25.05";