diff --git a/nixcfgs/flake.nix b/nixcfgs/flake.nix index ea5dcde..f92c682 100644 --- a/nixcfgs/flake.nix +++ b/nixcfgs/flake.nix @@ -51,6 +51,12 @@ url = "github:nix-community/nix-index-database"; inputs.nixpkgs.follows = "nixpkgs"; }; + elephant.url = "github:abenz1267/elephant"; + + walker = { + url = "github:abenz1267/walker"; + inputs.elephant.follows = "elephant"; + }; }; outputs = { @@ -72,6 +78,7 @@ nixcord, catppuccin, nix-index-database, + walker, ... } @ inputs: let overlays = [ @@ -96,6 +103,9 @@ "nixvirt" "polder" ]; + darwinHosts = [ + "zen" + ]; mkNixosSystem = hostname: nixpkgs.lib.nixosSystem { @@ -109,27 +119,22 @@ {nixpkgs.overlays = overlays;} ]; }; + mkDarwinSystem = hostname: + nix-darwin.lib.darwinSystem { + system = "aarch64-darwin"; + inherit specialArgs; + modules = [ + ./hosts/${hostname} + {nixpkgs.overlays = overlays;} + ]; + }; in { # This will automatically generate nixOS config for `nixosHosts' # Include the module ./hosts/${hostname} by default. nixosConfigurations = nixpkgs.lib.genAttrs nixosHosts mkNixosSystem; - - darwinConfigurations."zen" = nix-darwin.lib.darwinSystem { - system = "aarch64-darwin"; - inherit specialArgs; - modules = [ - ./hosts/zen - ]; - }; + darwinConfigurations = nixpkgs.lib.genAttrs darwinHosts mkDarwinSystem; homeConfigurations = { - js0ny = home-manager.lib.homeManagerConfiguration { - pkgs = forSystem "x86_64-linux"; - extraSpecialArgs = specialArgs; - modules = [ - ./users/js0ny - ]; - }; "js0ny@zephyrus" = home-manager.lib.homeManagerConfiguration { pkgs = forSystem "x86_64-linux"; extraSpecialArgs = specialArgs; @@ -143,20 +148,7 @@ nixcord.homeModules.nixcord catppuccin.homeModules.catppuccin nix-index-database.homeModules.nix-index - ]; - }; - "js0ny@nixvirt" = home-manager.lib.homeManagerConfiguration { - pkgs = forSystem "x86_64-linux"; - extraSpecialArgs = specialArgs; - modules = [ - ./users/js0ny/nixvirt.nix - ]; - }; - "js0ny@polder" = home-manager.lib.homeManagerConfiguration { - pkgs = forSystem "x86_64-linux"; - extraSpecialArgs = specialArgs; - modules = [ - ./users/js0ny/polder.nix + walker.homeManagerModules.default ]; }; "js0ny@zen" = home-manager.lib.homeManagerConfiguration { diff --git a/nixcfgs/modules/nixos/desktop/xremap.nix b/nixcfgs/modules/nixos/desktop/xremap.nix index f06f457..17f7db8 100644 --- a/nixcfgs/modules/nixos/desktop/xremap.nix +++ b/nixcfgs/modules/nixos/desktop/xremap.nix @@ -47,6 +47,7 @@ "telegram-desktop" "io.github.kukuruzka165.materialgram" "materialgram" + "com.ayugram.desktop" "wechat" ]; }; diff --git a/nixcfgs/users/js0ny/packages/gui.nix b/nixcfgs/users/js0ny/packages/gui.nix index b8b2d8e..4bd19d6 100644 --- a/nixcfgs/users/js0ny/packages/gui.nix +++ b/nixcfgs/users/js0ny/packages/gui.nix @@ -42,6 +42,20 @@ '' ) ); + # run wmname LG3D + mkLegacyJavaGUIApp = builtins.map ( + p: + lib.hiPrio ( + pkgs.runCommand "${p.name}-wrapped" {nativeBuildInputs = with pkgs; [makeWrapper wmname];} '' + mkdir -p $out/bin + ln -s ${p}/share $out/share + makeWrapper \ + ${p}/bin/${p.meta.mainProgram or p.pname} \ + $out/bin/${p.meta.mainProgram or p.pname} \ + --run 'wmname LG3D' + '' + ) + ); in { home.packages = with pkgs; [ @@ -103,7 +117,6 @@ in { bruno-cli kicad blender - logisim-evolution onlyoffice-desktopeditors wayland-bongocat kdePackages.qttools @@ -111,6 +124,7 @@ in { nur.repos.forkprince.helium-nightly prismlauncher obsidian + file-roller ] ++ (mkFcitxIM [ pkgs.neovim-qt @@ -118,6 +132,9 @@ in { ++ (mkElectronWayland [ # pkgs.ticktick pkgs.cider-2 + ]) + ++ (mkLegacyJavaGUIApp [ + pkgs.logisim-evolution ]); home.sessionVariables = { diff --git a/nixcfgs/users/js0ny/polder.nix b/nixcfgs/users/js0ny/polder.nix deleted file mode 100644 index 730d324..0000000 --- a/nixcfgs/users/js0ny/polder.nix +++ /dev/null @@ -1,13 +0,0 @@ -# ~/.config/nixcfgs/users/js0ny/polder.nix -{...}: { - imports = [ - ./default.nix - ./programs/shell.nix - ../../modules/home/dev/nix.nix - ../../modules/home/programs/fzf.nix - ../../modules/home/programs/lsd.nix - ../../modules/home/programs/nvim.nix - ]; - - home.stateVersion = "25.05"; -} diff --git a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/keymaps.nix b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/keymaps.nix index 3ba94e8..7f4cf19 100644 --- a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/keymaps.nix +++ b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/keymaps.nix @@ -9,7 +9,7 @@ iconTheme = config.currentUser.iconTheme; explorer = config.currentUser.defaultExplorer; explorerTerm = config.currentUser.defaultTerminalExplorer; - launcher = "rofi"; + launcher = "walker"; kbdBacklightDev = config.currentHost.keyboardBacklightDevice; kbdBacklightStep = config.currentHost.keyboardBacklightStep; nirictl = import ./scripts.nix {inherit pkgs;}; @@ -23,6 +23,7 @@ in { "Mod+B".action = spawn "${lib.getExe nirictl.focusOrLaunch}" "firefox" "firefox"; "Mod+Shift+B".hotkey-overlay.title = "Launch web browser in private mode"; "Mod+Shift+B".action = spawn "firefox" "--private-window"; + "Mod+A".action = spawn-sh "${termRunner} --class=terminal-popup -e aichat --session"; "Mod+Shift+A".hotkey-overlay.title = "Focus or launch CherryStudio (AI assistant)"; "Mod+Shift+A".action = spawn "${lib.getExe nirictl.focusOrLaunch}" "CherryStudio" "cherry-studio"; "Mod+O".hotkey-overlay.title = "Focus or launch Obsidian"; @@ -30,10 +31,12 @@ in { # TODO: Change "org.kde.dolphin" to a more generic explorer app id via config.currentUser "Mod+E".hotkey-overlay.title = "Focus or launch file explorer"; "Mod+E".action = spawn "${lib.getExe nirictl.focusOrLaunch}" "org.kde.dolphin" "dolphin"; + "Mod+T".action = spawn-sh "${termRunner} --class=terminal-popup"; + "Mod+Shift+T".action = spawn-sh "${termRunner} --class=${termRunner}-terminal-popup --working-directory='${config.home.homeDirectory}/.config/shells/nohist' -e nix develop"; "Mod+Semicolon".action = spawn "neovide" "${config.home.homeDirectory}/Atelier"; "Mod+Apostrophe".action = - spawn-sh "EDITOR_MINIMAL=1 ${termRunner} -o close_on_child_death=yes --class=edit-clipboard-popup -e edit-clipboard --minimal"; + spawn-sh "EDITOR_MINIMAL=1 ${termRunner} -o close_on_child_death=yes --class=terminal-popup -e edit-clipboard --minimal"; "Mod+Shift+Slash".action = show-hotkey-overlay; @@ -42,17 +45,19 @@ in { "Mod+D".hotkey-overlay.title = "Run an Application: rofi"; "Mod+D".action = - spawn "${launcher}" "-show" "drun" "-icon-theme" "${iconTheme}" "-show-icons"; + spawn "${launcher}" "-m" "desktopapplications"; "Alt+Space".hotkey-overlay.title = "Run an Application: rofi"; "Alt+Space".action = - spawn "${launcher}" "-show" "drun" "-icon-theme" "${iconTheme}" "-show-icons"; + spawn "${launcher}" "-m" "desktopapplications"; "Mod+W".hotkey-overlay.title = "Search open Window: rofi"; "Mod+W".action = - spawn "${launcher}" "-show" "window" "-icon-theme" "${iconTheme}" "-show-icons"; + spawn "${launcher}" "-m" "windows"; - "Mod+V".action = spawn-sh "cliphist list | ${launcher} -dmenu | cliphist decode | wl-copy"; + "Mod+V".action = + # spawn-sh "cliphist list | ${launcher} -dmenu | cliphist decode | wl-copy"; + spawn "${launcher}" "-m" "clipboard"; "XF86AudioRaiseVolume".allow-when-locked = true; "XF86AudioRaiseVolume".action = diff --git a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/window-rules.nix b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/window-rules.nix index c442ec5..f2b8755 100644 --- a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/window-rules.nix +++ b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/niri/window-rules.nix @@ -5,7 +5,7 @@ { matches = [ { - app-id = "^edit-clipboard-popup$"; + app-id = "^.*terminal-popup$"; } ]; @@ -100,7 +100,7 @@ } { app-id = "^com.ayugram.desktop$"; - title = "^Media viewer$"; + title = "^m|Media viewer$"; } { app-id = "^io.github.kukuruzka165.materialgram$"; diff --git a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/packages.nix b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/packages.nix index 526fd42..e082325 100644 --- a/nixcfgs/users/js0ny/programs/desktop/wayland-wm/packages.nix +++ b/nixcfgs/users/js0ny/programs/desktop/wayland-wm/packages.nix @@ -33,7 +33,7 @@ ''; in { imports = [ - ../../rofi.nix + ../../walker.nix ./waybar ./swww.nix ./kanshi.nix diff --git a/nixcfgs/users/js0ny/programs/kitty.nix b/nixcfgs/users/js0ny/programs/kitty.nix index 7774c1a..8b3a2b3 100644 --- a/nixcfgs/users/js0ny/programs/kitty.nix +++ b/nixcfgs/users/js0ny/programs/kitty.nix @@ -44,6 +44,7 @@ in { shell = config.currentUser.defaultShell; allow_remote_control = "socket-only"; listen_on = "unix:/tmp/kitty.sock"; + confirm_os_window_close = 0; }; keybindings = { "cmd+c" = "copy_and_clear_or_interrupt"; diff --git a/nixcfgs/users/js0ny/programs/mime.nix b/nixcfgs/users/js0ny/programs/mime.nix index fab7958..908ba2d 100644 --- a/nixcfgs/users/js0ny/programs/mime.nix +++ b/nixcfgs/users/js0ny/programs/mime.nix @@ -3,6 +3,47 @@ # * when `rga-fzf`: nvim wrapper failed to launch # * nvim wrapper reports error on parsing filename with spaces gvim = "neovide.desktop"; + simpleText = [ + "text/plain" + "text/x-csrc" # .c + "text/x-chdr" # .h + "text/javascript" + "text/x-python" + "application/yaml" # .yaml, .yml + ]; + image = [ + "image/jpeg" + "image/jpg" + "image/png" + "image/gif" + "image/bmp" + "image/avif" + "image/webp" + ]; + audio = [ + "audio/flac" + "audio/vnd.wave" # .wav + ]; + browser = [ + "text/html" + "x-scheme-handler/http" + "x-scheme-handler/https" + ]; + archive = [ + "application/zip" + "application/x-rar" + "application/x-7z-compressed" + "application/x-tar" + "application/x-zstd-compressed-tar" # .tar.zst + ]; + + # Image Viewer: + # gwenview: keyboard driven, high compatibility + # loupe: Performance is incredible + imageViewers = "org.kde.gwenview.desktop;org.gnome.Loupe.desktop"; + audioPlayers = "mpv.desktop;org.kde.elisa"; + browsers = "firefox.desktop;chromium-browser.desktop"; + archiveManager = "org.gnome.FileRoller.desktop;org.kde.ark.desktop;peazip.desktop"; in { xdg.configFile."mimeapps.list".force = true; xdg.mime.enable = true; @@ -25,30 +66,34 @@ in { "text/markdown" = gvim; # File Explorer "inode/directory" = "org.kde.dolphin.desktop"; - # Image Viewer: - # gwenview: keyboard driven, high compatibility - # loupe: Performance is incredible - "image/jpeg" = "org.kde.gwenview.desktop;org.gnome.Loupe.desktop"; - "image/jpg" = "org.kde.gwenview.desktop;org.gnome.Loupe.desktop"; - "image/png" = "org.kde.gwenview.desktop;org.gnome.Loupe.desktop"; - "image/gif" = "org.kde.gwenview.desktop;org.gnome.Loupe.desktop"; - "image/bmp" = "org.kde.gwenview.desktop;org.gnome.Loupe.desktop"; - "image/avif" = "org.kde.gwenview.desktop;org.gnome.Loupe.desktop"; - "image/webp" = "org.kde.gwenview.desktop;org.gnome.Loupe.desktop"; + "image/jpeg" = imageViewers; + "image/jpg" = imageViewers; + "image/png" = imageViewers; + "image/gif" = imageViewers; + "image/bmp" = imageViewers; + "image/avif" = imageViewers; + "image/webp" = imageViewers; # Audio: # music: elisa: fully featured, good cjk support # audio: mpv: simple and fast - "audio/flac" = "mpv.desktop;org.kde.elisa"; - "audio/vnd.wave" = "mpv.desktop;org.kde.elisa"; # .wav + "audio/flac" = audioPlayers; + "audio/vnd.wave" = audioPlayers; # .wav # Browser - "text/html" = "firefox.desktop;chromium-browser.desktop"; - "x-scheme-handler/http" = "firefox.desktop;chromium-browser.desktop"; - "x-scheme-handler/https" = "firefox.desktop;chromium-browser.desktop"; + "text/html" = browsers; + "x-scheme-handler/http" = browsers; + "x-scheme-handler/https" = browsers; # URL Scheme "x-scheme-handler/tg" = "org.telegram.desktop.desktop"; "x-scheme-handler/tonsite" = "org.telegram.desktop.desktop"; + + # Archives + "application/zip" = archiveManager; + "application/x-rar" = archiveManager; + "application/x-7z-compressed" = archiveManager; + "application/x-tar" = archiveManager; + "application/x-zstd-compressed-tar" = archiveManager; # .tar.zst }; }; home.sessionVariables.BROWSER = "firefox"; diff --git a/nixcfgs/users/js0ny/programs/walker.nix b/nixcfgs/users/js0ny/programs/walker.nix index 15518ca..5ef78fd 100644 --- a/nixcfgs/users/js0ny/programs/walker.nix +++ b/nixcfgs/users/js0ny/programs/walker.nix @@ -2,15 +2,28 @@ programs.walker = { enable = true; runAsService = true; - providers.prefixes = [ - { - provider = "websearch"; - prefix = "+"; - } - { - provider = "providerlist"; - prefix = "_"; - } - ]; + config = { + keybinds = { + next = ["Down" "ctrl j"]; + previous = ["Up" "ctrl k"]; + }; + providers = { + default = [ + "websearch" + "desktopapplications" + "calc" + ]; + prefixes = [ + { + provider = "websearch"; + prefix = "+"; + } + { + provider = "providerlist"; + prefix = "_"; + } + ]; + }; + }; }; }