diff --git a/home/christoph/default.nix b/home/christoph/default.nix index 79a0c6a4..0f292f02 100644 --- a/home/christoph/default.nix +++ b/home/christoph/default.nix @@ -28,7 +28,7 @@ rec { ../modules # inputs.nixvim.homeManagerModules.nixvim - # inputs.hyprland.homeManagerModules.default # NOTE: Use System module, this one doesn't (can't) add the SDDM entry + # inputs.hyprland.homeManagerModules.default ]; modules = { @@ -264,7 +264,6 @@ rec { # exa # ls in cool (enabled as program) # delta # diffier diff differ (enabled as program) # fzf # fuzzy find (enabled as program in fish module) - procs # Better ps tokei # Text file statistics in a project rsync # cp on steroids rclone # Rsync for cloud @@ -291,7 +290,6 @@ rec { lazygit # can always use another git client geteltorito # extreact boot image from iso gitbatch # overview over multiple repos - mprocs # run multiple processes in single terminal window, screen alternative # TODO: Maybe general document/typesetting module? graphviz # generate graphs from code xdot # .dot file viewer @@ -307,14 +305,13 @@ rec { # TODO: Programming languages module alejandra # nix code formatter nil # nix language server - parted # partition manager libnotify - procps # pgrep, pkill inotifyTools # inotifywait etc. atool # Archive preview ffmpegthumbnailer # Video thumbnails mediainfo tree # Folder preview + # gnome.zenity # Popups from terminal # Xooooorg/Desktop environment stuff # xclip diff --git a/home/modules/hyprland.nix b/home/modules/hyprland.nix index 46e4ca18..c5e65776 100644 --- a/home/modules/hyprland.nix +++ b/home/modules/hyprland.nix @@ -74,7 +74,7 @@ in { }; # Polkit - home.file.".config/hypr/polkit.conf".text = ''exec-once = ${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-agent-1 &''; + home.file.".config/hypr/polkit.conf".text = ''exec-once = ${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1''; home.file.".config/hypr/waybar-reload.conf".text = let waybar-reload = pkgs.writeScript "waybar-reload" '' @@ -122,9 +122,10 @@ in { clipman # Clipboard manager (wl-paste) imv # Image viewer + moc # Audio player + ncpamixer # ncurses pavucontrol slurp # Region selector for screensharing grim # Grab images from compositor - ncpamixer # ncurses pavucontrol xfce.thunar xfce.tumbler # Thunar thumbnails @@ -145,9 +146,10 @@ in { plugins = [ pkgs.keepmenu # TODO: Rofi KeepassXC frontend ]; - terminal = "${pkgs.kitty}/bin/kitty"; - - font = "JetBrains Mono 14"; + + # NOTE: Don't use this, use the configfile for hot-reload + # terminal = "${pkgs.kitty}/bin/kitty"; + # font = "JetBrains Mono 14"; # theme = # extraConfig = ''''; }; diff --git a/system/default.nix b/system/default.nix index e30300e7..ae4e9b64 100644 --- a/system/default.nix +++ b/system/default.nix @@ -243,6 +243,7 @@ trustedInterfaces = [ "podman0" + "docker0" ]; allowedTCPPorts = [ @@ -297,20 +298,93 @@ }; # XDG - # NOTE: I think only the fitting portal is required xdg.portal = { enable = true; extraPortals = with pkgs; [ # xdg-desktop-portal-wlr # For wlroots based desktops # xdg-desktop-portal-hyprland # Already enabled by hyprland system module # xdg-desktop-portal-kde - # xdg-desktop-portal-gtk # TODO: Keep for GTK apps? E.g. for font antialiasing? + xdg-desktop-portal-gtk # TODO: Keep for GTK apps? E.g. for font antialiasing? Might be required for flatpak GTK apps? # xdg-desktop-portal-gnome # Gnome - xdg-desktop-portal-termfilechooser # Filepicker using nnn + # xdg-desktop-portal-termfilechooser # Filepicker using nnn ]; # gtkUsePortal = true; # Deprecated, don't use (gdm takes ages to load and other fishy stuff) }; + # See https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types + xdg.mime = { + enable = true; + + # TODO: This stuff depends on the used desktop...should I use a complementary system module for each DE? + addedAssociations = { + "application/pdf" = "zathura.desktop"; + "application/x-sh" = "helix.desktop"; + "application/xhtml+xml" = "helix.desktop"; + "application/xml" = "helix.desktop"; + + "image/bmp" = "imv.desktop"; + "image/jpeg" = "imv.desktop"; + "image/png" = "imv.desktop"; + "image/svg+xml" = "imv.desktop"; + "image/tiff" = "imv.desktop"; + "image/webp" = "imv.desktop"; + + "video/mp2t" = "mpv.desktop"; + "video/mp4" = "mpv.desktop"; + "video/mpeg" = "mpv.desktop"; + "video/ogg" = "mpv.desktop"; + "video/webm" = "mpv.desktop"; + "video/x-msvideo" = "mpv.desktop"; + + "text/css" = "helix.desktop"; + "text/csv" = "helix.desktop"; + "text/javascript" = "helix.desktop"; + "text/json" = "helix.desktop"; + "text/plain" = "helix.desktop"; + "text/xml" = "helix.desktop"; + + "audio/mpeg" = "moc.desktop"; + "audio/ogg" = "moc.desktop"; + "audio/opus" = "moc.desktop"; + "audio/wav" = "moc.desktop"; + "audio/webm" = "moc.desktop"; + }; + + defaultApplications = { + "application/pdf" = "zathura.desktop"; + "application/x-sh" = "helix.desktop"; + "application/xhtml+xml" = "helix.desktop"; + "application/xml" = "helix.desktop"; + + "image/bmp" = "imv.desktop"; + "image/jpeg" = "imv.desktop"; + "image/png" = "imv.desktop"; + "image/svg+xml" = "imv.desktop"; + "image/tiff" = "imv.desktop"; + "image/webp" = "imv.desktop"; + + "video/mp2t" = "mpv.desktop"; + "video/mp4" = "mpv.desktop"; + "video/mpeg" = "mpv.desktop"; + "video/ogg" = "mpv.desktop"; + "video/webm" = "mpv.desktop"; + "video/x-msvideo" = "mpv.desktop"; + + "text/css" = "helix.desktop"; + "text/csv" = "helix.desktop"; + "text/javascript" = "helix.desktop"; + "text/json" = "helix.desktop"; + "text/plain" = "helix.desktop"; + "text/xml" = "helix.desktop"; + + "audio/mpeg" = "moc.desktop"; + "audio/ogg" = "moc.desktop"; + "audio/opus" = "moc.desktop"; + "audio/wav" = "moc.desktop"; + "audio/webm" = "moc.desktop"; + }; + }; + # Enable sound with pipewire. sound.enable = false; # Alsa, seems to conflict with PipeWire hardware.pulseaudio.enable = false; # Get off my lawn @@ -397,7 +471,7 @@ ]; shell = pkgs.fish; # TODO: Is this needed if programs.fish.enable = true? # We do this with HomeManager - packages = with pkgs; []; + # packages = with pkgs; []; }; # Generate a list of installed system packages in /etc/current-system-packages @@ -411,9 +485,13 @@ # We want these packages to be available even when no user profile is active # Empty since we basically only need git + editor which is enabled below environment.systemPackages = with pkgs; [ - killall - wireguard-tools iw + mprocs # run multiple processes in single terminal window, screen alternative + parted # partition manager + procs # Better ps + procps # pgrep, pkill + slirp4netns # user network namespaces + wireguard-tools ]; # NOTE: Gnome @@ -500,19 +578,25 @@ docker = { enable = false; autoPrune.enable = true; + + rootless = { + enable = true; + setSocketVariable = true; + }; }; podman = { enable = true; autoPrune.enable = true; dockerCompat = true; + dockerSocket.enable = true; defaultNetwork.settings.dns_enabled = true; - extraPackages = with pkgs; []; + # extraPackages = with pkgs; []; }; # TODO: This (or even single containers) should have their own system modules - oci-containers.backend = "podman"; + oci-containers.backend = "podman"; # "docker" or "podman" oci-containers.containers = { jellyfin = { image = "linuxserver/jellyfin";