diff --git a/flake.lock b/flake.lock index f62451c..d6a91aa 100644 --- a/flake.lock +++ b/flake.lock @@ -40,11 +40,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1716972855, - "narHash": "sha256-u09wfqXJGMpmU6WRo0sYa16wfz/GPr5OQvUFS0VgPJo=", + "lastModified": 1719076240, + "narHash": "sha256-yI1e5MZTqWyrbG9JnnOCFiFNJol5ZJ/LjWD7qjrn4Xs=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "30b19743d243f97e0a6d71ff9fe3522e1b7bc581", + "rev": "5e8f95ab8a282758813e3d8922fdaa0783ee5b41", "type": "github" }, "original": { @@ -218,6 +218,22 @@ "type": "github" } }, + "flameshot-git": { + "flake": false, + "locked": { + "lastModified": 1718732606, + "narHash": "sha256-Y9RnVxic5mlRIc48wYVQXrvu/s65smtMMVj8HBskHzE=", + "owner": "flameshot-org", + "repo": "flameshot", + "rev": "c1dac52231024174faa68a29577129ebca125dff", + "type": "github" + }, + "original": { + "owner": "flameshot-org", + "repo": "flameshot", + "type": "github" + } + }, "format-all": { "flake": false, "locked": { @@ -238,11 +254,11 @@ "gruvbox-gtk-theme": { "flake": false, "locked": { - "lastModified": 1685300773, - "narHash": "sha256-Y+6HuWaVkNqlYc+w5wLkS2LpKcDtpeOpdHnqBmShm5Q=", + "lastModified": 1718658865, + "narHash": "sha256-wUBOR9CjjD2MwT3PdLw/mccVLYhwVCaTJ+fe2V2HhnE=", "owner": "Fausto-Korpsvart", "repo": "Gruvbox-GTK-Theme", - "rev": "c0b7fb501938241a3b6b5734f8cb1f0982edc6b4", + "rev": "5e99fc6c2b30b0489065254240f15cd6d401eb0b", "type": "github" }, "original": { @@ -274,11 +290,11 @@ ] }, "locked": { - "lastModified": 1716729592, - "narHash": "sha256-Y3bOjoh2cFBqZN0Jw1zUdyr7tjygyxl2bD/QY73GZP0=", + "lastModified": 1717476296, + "narHash": "sha256-ScHe38Tr+TxGURC17kby4mIIxOG3aJvZWXzPM79UnEk=", "owner": "nix-community", "repo": "home-manager", - "rev": "2c78a57c544dd19b07442350727ced097e1aa6e6", + "rev": "095ef64aa3b2ab4a4f1bf07f29997e21e3a5576a", "type": "github" }, "original": { @@ -348,11 +364,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1716509168, - "narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=", + "lastModified": 1718895438, + "narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bfb7a882678e518398ce9a31a881538679f6f092", + "rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3", "type": "github" }, "original": { @@ -364,11 +380,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1716633019, - "narHash": "sha256-xim1b5/HZYbWaZKyI7cn9TJCM6ewNVZnesRr00mXeS4=", + "lastModified": 1718811006, + "narHash": "sha256-0Y8IrGhRmBmT7HHXlxxepg2t8j1X90++qRN3lukGaIk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9d29cd266cebf80234c98dd0b87256b6be0af44e", + "rev": "03d771e513ce90147b65fe922d87d3a0356fc125", "type": "github" }, "original": { @@ -380,11 +396,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1716769173, - "narHash": "sha256-7EXDb5WBw+d004Agt+JHC/Oyh/KTUglOaQ4MNjBbo5w=", + "lastModified": 1718895438, + "narHash": "sha256-k3JqJrkdoYwE3fHE6xGDY676AYmyh4U2Zw+0Bwe5DLU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9ca3f649614213b2aaf5f1e16ec06952fe4c2632", + "rev": "d603719ec6e294f034936c0d0dc06f689d91b6c3", "type": "github" }, "original": { @@ -411,11 +427,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1716633019, - "narHash": "sha256-xim1b5/HZYbWaZKyI7cn9TJCM6ewNVZnesRr00mXeS4=", + "lastModified": 1718811006, + "narHash": "sha256-0Y8IrGhRmBmT7HHXlxxepg2t8j1X90++qRN3lukGaIk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9d29cd266cebf80234c98dd0b87256b6be0af44e", + "rev": "03d771e513ce90147b65fe922d87d3a0356fc125", "type": "github" }, "original": { @@ -540,6 +556,7 @@ "root": { "inputs": { "emacs-overlay": "emacs-overlay", + "flameshot-git": "flameshot-git", "gruvbox-gtk-theme": "gruvbox-gtk-theme", "gruvbox-kvantum-theme": "gruvbox-kvantum-theme", "home-manager": "home-manager", diff --git a/flake.nix b/flake.nix index 5b734c4..3ecb22e 100644 --- a/flake.nix +++ b/flake.nix @@ -2,6 +2,7 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager = { url = "github:nix-community/home-manager/release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; @@ -16,6 +17,10 @@ url = "github:sachnr/gruvbox-kvantum-themes"; flake = false; }; + flameshot-git = { + url = "github:flameshot-org/flameshot"; + flake = false; + }; }; outputs = inputs@{ self, home-manager, nixpkgs, nixpkgs-unstable, ... }: diff --git a/hosts/froidmpa-laptop/default.nix b/hosts/froidmpa-laptop/default.nix index 0220314..0a18223 100644 --- a/hosts/froidmpa-laptop/default.nix +++ b/hosts/froidmpa-laptop/default.nix @@ -2,17 +2,7 @@ imports = [ ./hardware-configuration.nix ]; modules = { - hardware = { audio.enable = true; }; - desktop = { - xmonad.enable = true; - alacritty.enable = true; - joshuto.enable = true; - zsh.enable = true; - vscode.enable = true; - dunst.enable = true; - htop.enable = true; - flameshot.enable = true; - }; + desktop.hyprland.enable = true; editor = { vim.enable = true; emacs.enable = true; @@ -39,23 +29,6 @@ home-manager.users.${config.user.name} = { pkgs, config, ... }: { services.network-manager-applet.enable = true; services.blueman-applet.enable = true; - services.grobi = { - enable = true; - executeAfter = [ "${pkgs.feh}/bin/feh --bg-fill ~/.wallpaper.jpg" ]; - rules = [ - { - name = "External HDMI"; - outputs_connected = [ "HDMI-1" ]; - configure_single = "HDMI-1"; - primary = true; - atomic = true; - } - { - name = "Primary"; - configure_single = "eDP"; - } - ]; - }; }; system.stateVersion = "21.05"; diff --git a/hosts/nixos-desktop/default.nix b/hosts/nixos-desktop/default.nix index 9a66a79..5937882 100644 --- a/hosts/nixos-desktop/default.nix +++ b/hosts/nixos-desktop/default.nix @@ -2,17 +2,7 @@ imports = [ ./hardware-configuration.nix ]; modules = { - hardware = { audio.enable = true; }; - desktop = { - xmonad.enable = true; - alacritty.enable = true; - joshuto.enable = true; - zsh.enable = true; - vscode.enable = true; - dunst.enable = true; - htop.enable = true; - flameshot.enable = true; - }; + desktop.hyprland.enable = true; editor = { vim.enable = true; emacs.enable = true; diff --git a/hosts/nixos-desktop/hardware-configuration.nix b/hosts/nixos-desktop/hardware-configuration.nix index 2916c26..1b356d7 100644 --- a/hosts/nixos-desktop/hardware-configuration.nix +++ b/hosts/nixos-desktop/hardware-configuration.nix @@ -42,8 +42,6 @@ networking.useNetworkd = true; networking.interfaces.enp31s0.useDHCP = true; - services.xserver.videoDrivers = [ "amdgpu" ]; - hardware.opengl = { enable = true; driSupport = true; diff --git a/modules/apps/rofi/rofi.nix b/modules/apps/rofi/rofi.nix index a8e63d5..e68dc70 100644 --- a/modules/apps/rofi/rofi.nix +++ b/modules/apps/rofi/rofi.nix @@ -11,7 +11,7 @@ in { programs.rofi = { enable = true; - package = pkgs.rofi.override { plugins = [ pkgs.rofi-calc ]; }; + package = pkgs.rofi-wayland.override { plugins = [ pkgs.rofi-calc ]; }; terminal = "alacritty"; extraConfig = { icon-theme = "Paper"; diff --git a/modules/desktop/alacritty.nix b/modules/desktop/alacritty.nix index c4c372c..37358d5 100644 --- a/modules/desktop/alacritty.nix +++ b/modules/desktop/alacritty.nix @@ -4,9 +4,7 @@ with lib; with lib.my; let cfg = config.modules.desktop.alacritty; in { - options.modules.desktop.alacritty = { - enable = mkBoolOpt false; - }; + options.modules.desktop.alacritty = { enable = mkBoolOpt false; }; config = mkIf cfg.enable { home-manager.users.${config.user.name} = { programs.alacritty = { diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index c2527e0..cdb8b16 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -10,14 +10,22 @@ let sha256 = "sha256-obKI4qZvucogqRCl51lwV9X8SRaMqcbBwWMfc9TupIo="; }; in { - config = mkIf config.services.xserver.enable { + + options.modules.desktop = { + wallpaper = mkOption { + type = types.path; + default = wallpaper; + }; + }; + + config = mkIf config.modules.desktop.hyprland.enable { fonts = { packages = with pkgs.unstable; [ corefonts # Microsoft free fonts (nerdfonts.override { fonts = [ "Meslo" "NerdFontsSymbolsOnly" ]; }) ]; - fontconfig.defaultFonts = { monospace = [ "MesloLGS Nerd Font Mono" ]; }; + fontconfig.defaultFonts = { monospace = [ "MesloLGS Nerd Font" ]; }; }; programs.adb.enable = true; @@ -28,15 +36,6 @@ in { home-manager.users.${config.user.name} = { - xsession = { - enable = true; - initExtra = '' - ${pkgs.feh}/bin/feh --bg-fill ${wallpaper} - keepassxc & - ''; - numlock.enable = true; - }; - services = { nextcloud-client.enable = true; udiskie.enable = true; @@ -46,11 +45,6 @@ in { pinentryFlavor = "gtk2"; }; unclutter.enable = true; - screen-locker = { - enable = false; - inactiveInterval = 5; - lockCmd = "${pkgs.i3lock}/bin/i3lock -e -f -c 000000 -i ${wallpaper}"; - }; }; programs = { @@ -95,9 +89,9 @@ in { ocr = { name = "OCR image"; exec = "${pkgs.writeScript "ocr" '' - ${pkgs.xfce.xfce4-screenshooter}/bin/xfce4-screenshooter -r --save /dev/stdout | \ - ${pkgs.tesseract}/bin/tesseract -l eng+fre - - | \ - ${pkgs.xclip}/bin/xclip -sel clip + ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | \ + ${pkgs.tesseract}/bin/tesseract stdin stdout -l eng+fre | \ + ${pkgs.wl-clipboard}/bin/wl-copy ''}"; }; }; @@ -143,27 +137,22 @@ in { options = [ "caps:escape" ]; }; - file = { ".wallpaper.jpg".source = wallpaper; }; - sessionVariables.EDITOR = "vim"; packages = with pkgs.unstable; [ - xorg.xinit - xorg.xwininfo - xorg.xkill - brave ungoogled-chromium mullvad-browser keepassxc krita element-desktop + feh mpv jellyfin-mpv-shim mumble libreoffice-fresh onlyoffice-bin - thunderbird + pkgs.thunderbird portfolio gnucash transmission-remote-gtk @@ -183,32 +172,6 @@ in { ]; }; - systemd.user.services.activitywatch = { - Unit.Description = "Start ActivityWatch"; - Service.Type = "simple"; - Service.ExecStart = "${pkgs.unstable.activitywatch-bin}/bin/aw-server"; - Install.WantedBy = [ "default.target" ]; - Service.Restart = "on-failure"; - Service.RestartSec = 5; - }; - systemd.user.services.activitywatch-afk = { - Unit.Description = "Start ActivityWatch AFK"; - Service.Type = "simple"; - Service.ExecStart = - "${pkgs.unstable.activitywatch-bin}/bin/aw-watcher-afk"; - Install.WantedBy = [ "default.target" ]; - Service.Restart = "on-failure"; - Service.RestartSec = 5; - }; - systemd.user.services.activitywatch-window = { - Unit.Description = "Start ActivityWatch Window"; - Service.Type = "simple"; - Service.ExecStart = - "${pkgs.unstable.activitywatch-bin}/bin/aw-watcher-window"; - Install.WantedBy = [ "default.target" ]; - Service.Restart = "on-failure"; - Service.RestartSec = 5; - }; }; }; } diff --git a/modules/desktop/file-manager.nix b/modules/desktop/file-manager.nix new file mode 100644 index 0000000..db3284b --- /dev/null +++ b/modules/desktop/file-manager.nix @@ -0,0 +1,42 @@ +{ config, lib, pkgs, ... }: + +with lib; +with lib.my; +let cfg = config.modules.desktop.file-manager; +in { + options.modules.desktop.file-manager = { enable = mkBoolOpt false; }; + config = mkIf cfg.enable { + home-manager.users.${config.user.name} = { + + programs.yazi = { + enable = true; + enableZshIntegration = true; + settings = { + manager = { + sort_by = "alphabetical"; + linemode = "mtime"; + }; + }; + }; + + programs.zoxide = { + enable = true; + enableZshIntegration = true; + }; + + home = { + packages = with pkgs.unstable; [ + ffmpegthumbnailer + unar + poppler + fd + ripgrep + ueberzugpp + exiftool + chafa + xdg-utils + ]; + }; + }; + }; +} diff --git a/modules/desktop/files/joshuto_preview_file.sh b/modules/desktop/files/joshuto_preview_file.sh deleted file mode 100755 index ef267bb..0000000 --- a/modules/desktop/files/joshuto_preview_file.sh +++ /dev/null @@ -1,220 +0,0 @@ -## This script is a template script for creating textual file previews in Joshuto. -## -## Copy this script to your Joshuto configuration directory and refer to this -## script in `joshuto.toml` in the `[preview]` section like -## ``` -## preview_script = "~/.config/joshuto/preview_file.sh" -## ``` -## Make sure the file is marked as executable: -## ```sh -## chmod +x ~/.config/joshuto/preview_file.sh -## ``` -## Joshuto will call this script for each file when first hovered by the cursor. -## If this script returns with an exit code 0, the stdout of this script will be -## the file's preview text in Joshuto's right panel. -## The preview text will be cached by Joshuto and only renewed on reload. -## ANSI color codes are supported if Joshuto is build with the `syntax_highlight` -## feature. -## -## This script is considered a configuration file and must be updated manually. -## It will be left untouched if you upgrade Joshuto. -## -## Meanings of exit codes: -## -## code | meaning | action of ranger -## -----+------------+------------------------------------------- -## 0 | success | Display stdout as preview -## 1 | no preview | Display no preview at all -## -## This script is used only as a provider for textual previews. -## Image previews are independent from this script. -## - -IFS=$'\n' - -# Security measures: -# * noclobber prevents you from overwriting a file with `>` -# * noglob prevents expansion of wild cards -# * nounset causes bash to fail if an undeclared variable is used (e.g. typos) -# * pipefail causes a pipeline to fail also if a command other than the last one fails -set -o noclobber -o noglob -o nounset -o pipefail - -# Enable exiftool large file support -shopt -s expand_aliases -alias exiftool='exiftool -api largefilesupport=1' - -FILE_PATH="" -PREVIEW_WIDTH=10 -PREVIEW_HEIGHT=10 - -while [ "$#" -gt 0 ]; do - case "$1" in - "--path") - shift - FILE_PATH="$1" - ;; - "--preview-width") - shift - PREVIEW_WIDTH="$1" - ;; - "--preview-height") - shift - # shellcheck disable=SC2034 - PREVIEW_HEIGHT="$1" - ;; - esac - shift -done - -handle_extension() { - case "${FILE_EXTENSION_LOWER}" in - ## Archive - a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\ - rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip) - atool --list -- "${FILE_PATH}" && exit 0 - tar --list --file "${FILE_PATH}" && exit 0 - exit 1 ;; - rar) - ## Avoid password prompt by providing empty password - unrar lt -p- -- "${FILE_PATH}" && exit 0 - exit 1 ;; - 7z) - ## Avoid password prompt by providing empty password - 7z l -p -- "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## PDF - pdf) - ## Preview as text conversion - pdftotext -l 10 -nopgbrk -q -- "${FILE_PATH}" - | \ - fmt -w "${PREVIEW_WIDTH}" && exit 0 - mutool draw -F txt -i -- "${FILE_PATH}" 1-10 | \ - fmt -w "${PREVIEW_WIDTH}" && exit 0 - exiftool "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## BitTorrent - torrent) - transmission-show -- "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## OpenDocument - odt|sxw) - ## Preview as text conversion - odt2txt "${FILE_PATH}" && exit 0 - ## Preview as markdown conversion - pandoc -s -t markdown -- "${FILE_PATH}" && exit 0 - exit 1 ;; - ods|odp) - ## Preview as text conversion (unsupported by pandoc for markdown) - odt2txt "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## XLSX - xlsx) - ## Preview as csv conversion - ## Uses: https://github.com/dilshod/xlsx2csv - xlsx2csv -- "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## HTML - htm|html|xhtml) - ## Preview as text conversion - w3m -dump "${FILE_PATH}" && exit 0 - lynx -dump -- "${FILE_PATH}" && exit 0 - elinks -dump "${FILE_PATH}" && exit 0 - pandoc -s -t markdown -- "${FILE_PATH}" && exit 0 - ;; - - ## JSON - json|ipynb) - jq --color-output . "${FILE_PATH}" && exit 0 - python -m json.tool -- "${FILE_PATH}" && exit 0 - ;; - - ## Direct Stream Digital/Transfer (DSDIFF) and wavpack aren't detected - ## by file(1). - dff|dsf|wv|wvc) - mediainfo "${FILE_PATH}" && exit 0 - exiftool "${FILE_PATH}" && exit 0 - ;; # Continue with next handler on failure - esac -} - -handle_mime() { - local mimetype="${1}" - - case "${mimetype}" in - ## RTF and DOC - text/rtf|*msword) - ## Preview as text conversion - ## note: catdoc does not always work for .doc files - ## catdoc: http://www.wagner.pp.ru/~vitus/software/catdoc/ - catdoc -- "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## DOCX, ePub, FB2 (using markdown) - ## You might want to remove "|epub" and/or "|fb2" below if you have - ## uncommented other methods to preview those formats - *wordprocessingml.document|*/epub+zip|*/x-fictionbook+xml) - ## Preview as markdown conversion - pandoc -s -t markdown -- "${FILE_PATH}" | bat -l markdown \ - --color=always --paging=never \ - --style=plain \ - --terminal-width="${PREVIEW_WIDTH}" && exit 0 - exit 1 ;; - - ## E-mails - message/rfc822) - ## Parsing performed by mu: https://github.com/djcb/mu - mu view -- "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## XLS - *ms-excel) - ## Preview as csv conversion - ## xls2csv comes with catdoc: - ## http://www.wagner.pp.ru/~vitus/software/catdoc/ - xls2csv -- "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## Text - text/* | */xml) - bat --color=always --paging=never \ - --style=plain \ - --terminal-width="${PREVIEW_WIDTH}" \ - "${FILE_PATH}" && exit 0 - cat "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## DjVu - image/vnd.djvu) - ## Preview as text conversion (requires djvulibre) - djvutxt "${FILE_PATH}" | fmt -w "${PREVIEW_WIDTH}" && exit 0 - exiftool "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## Image - image/png | image/jpeg) - ## Display image - exit 0 ;; - image/*) - ## Preview as text conversion - exiftool "${FILE_PATH}" && exit 0 - exit 1 ;; - - ## Video and audio - video/* | audio/*) - mediainfo "${FILE_PATH}" && exit 0 - exiftool "${FILE_PATH}" && exit 0 - exit 1 ;; - esac -} - -FILE_EXTENSION="${FILE_PATH##*.}" -FILE_EXTENSION_LOWER="$(printf "%s" "${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')" -handle_extension -MIMETYPE="$( file --dereference --brief --mime-type -- "${FILE_PATH}" )" -handle_mime "${MIMETYPE}" - -exit 1 diff --git a/modules/desktop/files/joshuto_wrapper.sh b/modules/desktop/files/joshuto_wrapper.sh deleted file mode 100644 index e907877..0000000 --- a/modules/desktop/files/joshuto_wrapper.sh +++ /dev/null @@ -1,53 +0,0 @@ -export joshuto_wrap_id="$$" -joshuto_wrap_tmp="$(mktemp -d -t joshuto-wrap-$joshuto_wrap_id-XXXXXX)" -export joshuto_wrap_tmp -export joshuto_wrap_preview_meta="$joshuto_wrap_tmp/preview-meta" -export ueberzug_pid_file="$joshuto_wrap_tmp/pid" -export ueberzug_img_identifier="preview" -export ueberzug_socket="" -export ueberzug_pid="" - -# shellcheck disable=SC2317 -function start_ueberzugpp { - ## Adapt Überzug++ options here. For example, remove the '--no-opencv' or set another output method. - ueberzug layer --no-stdin --pid-file "$ueberzug_pid_file" --no-opencv &>/dev/null - ueberzug_pid="$(cat "$ueberzug_pid_file")" - export ueberzug_pid - export ueberzug_socket=/tmp/ueberzugpp-"$ueberzug_pid".socket - mkdir -p "$joshuto_wrap_preview_meta" -} - -# shellcheck disable=SC2317 -function stop_ueberzugpp { - remove_image - ueberzug cmd -s "$ueberzug_socket" -a exit - kill "$ueberzug_pid" - rm -rf "$joshuto_wrap_tmp" -} - -# shellcheck disable=SC2317 -function show_image { - ueberzug cmd -s "$ueberzug_socket" -a add -i "$ueberzug_img_identifier" -x "$2" -y "$3" --max-width "$4" --max-height "$5" -f "$1" &>/dev/null -} - -# shellcheck disable=SC2317 -function remove_image { - ueberzug cmd -s "$ueberzug_socket" -a remove -i "$ueberzug_img_identifier" &>/dev/null -} - -# shellcheck disable=SC2317 -function get_preview_meta_file { - echo "$joshuto_wrap_preview_meta/$(echo "$1" | md5sum | sed 's/ //g')" -} - -export -f get_preview_meta_file -export -f show_image -export -f remove_image - -if [ -n "$DISPLAY" ] && command -v ueberzug > /dev/null; then - trap stop_ueberzugpp EXIT QUIT INT TERM - start_ueberzugpp -fi - -joshuto "$@" -exit $? diff --git a/modules/desktop/flameshot.nix b/modules/desktop/flameshot.nix index 611a602..a8839ee 100644 --- a/modules/desktop/flameshot.nix +++ b/modules/desktop/flameshot.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, inputs, ... }: with lib; with lib.my; @@ -9,18 +9,26 @@ in { home-manager.users.${config.user.name} = { config, ... }: { services.flameshot = { enable = true; + package = pkgs.flameshot.overrideAttrs (old: { + src = inputs.flameshot-git; + cmakeFlags = [ "-DUSE_WAYLAND_GRIM=1" ]; + }); settings = { General = { showStartupLaunchMessage = false; + disabledTrayIcon = true; showHelp = false; showDesktopNotification = false; filenamePattern = "%F_%T"; savePath = "${config.home.homeDirectory}/Pictures/Screenshots"; + savePathFixed = true; saveAfterCopy = true; uiColor = "#83A598"; }; }; }; + home.packages = with pkgs.unstable; [ grim ]; + }; }; } diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix new file mode 100644 index 0000000..5d355ad --- /dev/null +++ b/modules/desktop/hyprland.nix @@ -0,0 +1,381 @@ +{ options, config, lib, pkgs, ... }: + +with lib; +with lib.my; + +let + cfg = config.modules.desktop.hyprland; + term = "${pkgs.alacritty}/bin/alacritty"; +in { + options.modules.desktop.hyprland = { enable = mkBoolOpt false; }; + + config = mkIf cfg.enable { + + modules = { + desktop = { + themes = { + gtk.enable = true; + qt.enable = true; + }; + alacritty.enable = true; + file-manager.enable = true; + zsh.enable = true; + vscode.enable = true; + dunst.enable = true; + htop.enable = true; + flameshot.enable = true; + }; + hardware = { audio.enable = true; }; + apps.rofi.enable = true; + }; + + home-manager.users.${config.user.name} = { + wayland.windowManager.hyprland = { + enable = true; + systemd.enable = true; + xwayland.enable = true; + settings = { + "$mod" = "SUPER"; + + env = [ "XCURSOR_SIZE,24" "WLR_NO_HARDWARE_CURSORS,1" ]; + + xwayland = { force_zero_scaling = true; }; + + general = { + layout = "dwindle"; + gaps_in = 7; + gaps_out = 14; + border_size = 2; + "col.active_border" = "rgb(B28121)"; + "col.inactive_border" = "rgb(504945)"; + no_focus_fallback = false; + resize_on_border = false; + hover_icon_on_border = false; + }; + + dwindle = { preserve_split = true; }; + + input = { + kb_layout = "fr"; + kb_options = "caps:escape"; + numlock_by_default = "true"; + touchpad = { + natural_scroll = true; + disable_while_typing = true; + tap-to-click = false; + middle_button_emulation = false; + }; + }; + + gestures = { + workspace_swipe = true; + workspace_swipe_fingers = 3; + }; + + animations = { + enabled = true; + animation = [ + "windows, 1, 2, default, popin 80%" + "windowsOut, 1, 2, default, popin 85%" + "windowsMove, 1, 2, default" + "workspaces, 1, 2, default" + "specialWorkspace, 1, 2, default" + ]; + }; + + bind = [ + "$mod, Return, exec, ${term}" + "$mod, C, killactive" + "$mod SHIFT, Q, exit" + "$mod SHIFT, A, exec, ${term} -e pulsemixer" + "$mod, W, exec, firefox" + "$mod, R, exec, ${term} -e yazi" + "$mod, E, exec, emacsclient -c" + "$mod, N, exec, emacsclient -c --eval '(elfeed)'" + "$mod, I, exec, ${term} -e htop" + "$mod, M, exec, ${term} -e ncmpcpp" + "$mod, V, exec, ${term} -e ncmpcpp -s visualizer" + "$mod, T, togglefloating" + "$mod, D, exec, rofi -show drun -show-icons" + "$mod SHIFT, P, exec, rofi -show p -modi p:rofi-power-menu" + + # Layout manipulation + "$mod SHIFT, O, layoutmsg, togglesplit" + "$mod, comma, splitratio, -0.1" + "$mod, semicolon, splitratio, +0.1" + + "$mod, F, fullscreen, 0" + "$mod, X, exec, swaylock" + + # Move focus + "$mod, H, movefocus, l" + "$mod, L, movefocus, r" + "$mod, K, movefocus, u" + "$mod, J, movefocus, d" + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + + # Move window + "$mod SHIFT, H, movewindow, l" + "$mod SHIFT, L, movewindow, r" + "$mod SHIFT, K, movewindow, u" + "$mod SHIFT, J, movewindow, d" + "$mod SHIFT, left, movewindow, l" + "$mod SHIFT, right, movewindow, r" + "$mod SHIFT, up, movewindow, u" + "$mod SHIFT, down, movewindow, d" + + # Switch workspaces with mainMod + [0-9] + "$mod, code:10, moveworkspacetomonitor, 1 current" + "$mod, code:10, workspace, 1" + "$mod, code:11, moveworkspacetomonitor, 2 current" + "$mod, code:11, workspace, 2" + "$mod, code:12, moveworkspacetomonitor, 3 current" + "$mod, code:12, workspace, 3" + "$mod, code:13, moveworkspacetomonitor, 4 current" + "$mod, code:13, workspace, 4" + "$mod, code:14, moveworkspacetomonitor, 5 current" + "$mod, code:14, workspace, 5" + "$mod, code:15, moveworkspacetomonitor, 6 current" + "$mod, code:15, workspace, 6" + "$mod, code:16, moveworkspacetomonitor, 7 current" + "$mod, code:16, workspace, 7" + "$mod, code:17, moveworkspacetomonitor, 8 current" + "$mod, code:17, workspace, 8" + "$mod, code:18, moveworkspacetomonitor, 9 current" + "$mod, code:18, workspace, 9" + "$mod, code:19, moveworkspacetomonitor, 10 current" + "$mod, code:19, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "$mod SHIFT, code:10, movetoworkspace, 1" + "$mod SHIFT, code:11, movetoworkspace, 2" + "$mod SHIFT, code:12, movetoworkspace, 3" + "$mod SHIFT, code:13, movetoworkspace, 4" + "$mod SHIFT, code:14, movetoworkspace, 5" + "$mod SHIFT, code:15, movetoworkspace, 6" + "$mod SHIFT, code:16, movetoworkspace, 7" + "$mod SHIFT, code:17, movetoworkspace, 8" + "$mod SHIFT, code:18, movetoworkspace, 9" + "$mod SHIFT, code:19, movetoworkspace, 10" + + # Scroll through existing workspaces with mainMod + scroll + "$mod, mouse_down, workspace, e-1" + "$mod, mouse_up, workspace, e+1" + + # Media controls + ", XF86AudioRaiseVolume, exec, pulsemixer --change-volume +1" + ", XF86AudioLowerVolume, exec, pulsemixer --change-volume -1" + # ", XF86AudioMicMute, exec, pulsemixer --toggle-mute" + ", XF86AudioMute, exec, pulsemixer --toggle-mute" + ", XF86AudioPlay, exec, mpc toggle" + ", XF86AudioPause, exec, mpc toggle" + ", XF86AudioNext, exec, mpc next" + ", XF86AudioPrev, exec, mpc prev" + "$mod, P, exec, mpc toggle" + + ", XF86MonBrightnessDown, exec, light -U 5" + ", XF86MonBrightnessUp, exec, light -A 5" + + ", Print, exec, flameshot full" + "SHIFT , Print, exec, env QT_SCREEN_SCALE_FACTORS=0.66666666 flameshot gui" + ]; + + bindm = [ + # Move/resize windows with mainMod + LMB/RMB and dragging + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + + exec-once = [ + "${pkgs.swaybg}/bin/swaybg --image ${config.modules.desktop.wallpaper} --mode fill" + "keepassxc" + ]; + + misc = { + force_default_wallpaper = 0; + disable_hyprland_logo = true; + disable_splash_rendering = true; + animate_manual_resizes = true; + }; + }; + }; + + programs.waybar = { + enable = true; + systemd.enable = true; + settings = { + mainBar = { + layer = "top"; + position = "bottom"; + height = 25; + spacing = 2; + reload-style-on-change = true; + modules-left = [ "cpu" "memory" "disk" "hyprland/window" ]; + modules-center = [ "hyprland/workspaces" ]; + modules-right = [ "mpd" "battery" "clock" "tray" ]; + + tray = { + icon-size = 14; + spacing = 5; + show-passive-items = true; + }; + + cpu = { + interval = 1; + format = " {usage}%"; + tooltip = false; + }; + + memory = { + interval = 1; + format = " {percentage}%"; + tooltip = false; + }; + + disk = { + interval = 60; + format = " {free}"; + tooltip = false; + }; + + clock = { + format = "󰥔 {:%A, %d %h %H:%M}"; + format-alt = "󰥔 {:%d/%m/%Y %H:%M}"; + tooltip = false; + }; + + }; + }; + style = '' + * { + border: none; + font-family: MesloLGS Nerd Font; + font-size: 12px; + min-height: 0; + } + + tooltip { + background: #282828; + border: 0px solid; + border-radius: 0px; + } + + window#waybar { + background: #282828; + color: #ebdbb2; + } + + #workspaces button { + padding: 0 0.6em; + color: #a89984; + border-radius: 0px; + } + + #workspaces button.active { + color: #ebdbb2; + background: #665c54; + } + + #workspaces button.urgent { + color: #1d2021; + background: #fb4934; + } + + #workspaces button:hover { + background: #665c54; + } + + #network, + #workspaces, + #bluetooth, + #tray { + color: #ebdbb2; + padding: 0 5px; + margin: 0 5px; + } + + #cpu, + #memory, + #disk, + #clock { + padding: 0 5px; + margin: 0 5px; + color: #83a598; + } + ''; + package = pkgs.waybar.override { wireplumberSupport = false; }; + }; + + home = { + packages = with pkgs.unstable; [ wlr-randr wl-clipboard wdisplays ]; + }; + + programs.swaylock = { + enable = true; + + package = pkgs.swaylock-effects; + + settings = { + ignore-empty-password = true; + daemonize = true; + # fade-in = 0.5; + indicator = true; + clock = true; + datestr = "%d/%m/%Y"; + screenshots = true; + hide-keyboard-layout = true; + indicator-caps-lock = true; + bs-hl-color = "7daea3cc"; + caps-lock-bs-hl-color = "7daea3cc"; + caps-lock-key-hl-color = "d3869bcc"; + font = "MesloLGS Nerd Font Propo"; + font-size = "35"; + indicator-idle-visible = true; + indicator-radius = 100; + indicator-thickness = 7; + inside-color = "32302f66"; + inside-clear-color = "89b48266"; + inside-caps-lock-color = "e78a4e66"; + inside-ver-color = "7daea366"; + inside-wrong-color = "ea696266"; + key-hl-color = "a9b665cc"; + layout-bg-color = "32302f00"; + layout-text-color = "d4be98"; + line-color = "00000000"; + ring-color = "e78a4ecc"; + ring-clear-color = "89b482cc"; + ring-caps-lock-color = "e78a4ecc"; + ring-ver-color = "7daea3cc"; + ring-wrong-color = "ea6962cc"; + separator-color = "00000000"; + text-color = "d4be98"; + text-clear-color = "d4be98"; + text-caps-lock-color = "d4be98"; + text-ver-color = "d4be98"; + text-wrong-color = "d4be98"; + effect-blur = "9x9"; + effect-greyscale = true; + # effect-vignette = "0.5:0.5"; + }; + }; + }; + + xdg.portal = { + enable = true; + config.preferred = { + default = "gtk"; + "org.freedesktop.impl.portal.Screencast" = "hyprland"; + }; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + xdg-desktop-portal-hyprland + ]; + }; + + security.pam.services.swaylock = { }; + + }; +} diff --git a/modules/desktop/joshuto.nix b/modules/desktop/joshuto.nix deleted file mode 100644 index 3fa9084..0000000 --- a/modules/desktop/joshuto.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.joshuto; -in { - options.modules.desktop.joshuto = { enable = mkBoolOpt false; }; - config = mkIf cfg.enable { - home-manager.users.${config.user.name} = { - programs.joshuto = { - enable = true; - package = with pkgs; - writeShellApplication { - name = "joshuto"; - runtimeInputs = [ ueberzugpp joshuto trash-cli xclip fzf ]; - text = builtins.readFile ./files/joshuto_wrapper.sh; - }; - settings = { - xdg_open = true; - xdg_open_fork = true; - display = { show_icons = true; }; - preview.max_preview_size = 50 * 1024 * 1024; - preview.preview_script = with pkgs; - "${ - writeShellApplication { - name = "joshuto-preview"; - runtimeInputs = [ - file - catdoc - pandoc - mu - djvulibre - exiftool - mediainfo - atool - gnutar - poppler_utils - libtransmission - w3m - ]; - text = builtins.readFile ./files/joshuto_preview_file.sh; - } - }/bin/joshuto-preview"; - preview.preview_shown_hook_script = with pkgs; - writeScript "on_preview_shown" '' - #!/usr/bin/env bash - test -z "$joshuto_wrap_id" && exit 1; - - path="$1" # Full path of the previewed file - x="$2" # x coordinate of upper left cell of preview area - y="$3" # y coordinate of upper left cell of preview area - width="$4" # Width of the preview pane (number of fitting characters) - height="$5" # Height of the preview pane (number of fitting characters) - - # Find out mimetype and extension - mimetype=$(${file}/bin/file --mime-type -Lb "$path") - extension=$(echo "''${path##*.}" | awk '{print tolower($0)}') - - case "$mimetype" in - image/png | image/jpeg) - show_image "$path" $x $y $width $height - ;; - *) - remove_image - - esac - ''; - preview.preview_removed_hook_script = - pkgs.writeScript "on_preview_removed" '' - #!/usr/bin/env bash - test -z "$joshuto_wrap_id" && exit 1; - remove_image''; - }; - }; - }; - }; -} diff --git a/modules/desktop/picom.nix b/modules/desktop/picom.nix deleted file mode 100644 index c254e7b..0000000 --- a/modules/desktop/picom.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ inputs, config, lib, pkgs, ... }: - -with lib; -with lib.my; -let cfg = config.modules.desktop.picom; -in { - options.modules.desktop.picom = { enable = mkBoolOpt false; }; - - config = mkIf cfg.enable { - home-manager.users.${config.user.name} = { - services.picom = { - enable = true; - backend = "glx"; - vSync = true; - opacityRules = [ - # "100:class_g = 'Firefox'" - # Art/image programs where we need fidelity - "100:class_g = 'Gimp'" - "100:class_g = 'Inkscape'" - "100:class_g = 'aseprite'" - "100:class_g = 'krita'" - "100:class_g = 'feh'" - "100:class_g = 'mpv'" - "100:class_g = 'Rofi'" - "100:class_g = 'Peek'" - "99:_NET_WM_STATE@:32a = '_NET_WM_STATE_FULLSCREEN'" - ]; - shadowExclude = [ - # Put shadows on notifications, the scratch popup and rofi only - "! name~='(rofi|scratch|Dunst)$'" - ]; - - fade = true; - fadeDelta = 1; - fadeSteps = [ 1.0e-2 1.2e-2 ]; - shadow = true; - shadowOffsets = [ (-10) (-10) ]; - shadowOpacity = 0.22; - # activeOpacity = "1.00"; - # inactiveOpacity = "0.92"; - # - settings = { - blur-background-exclude = [ - "window_type = 'dock'" - "window_type = 'desktop'" - "class_g = 'Rofi'" - "_GTK_FRAME_EXTENTS@:c" - ]; - - # Unredirect all windows if a full-screen opaque window is detected, to - # maximize performance for full-screen windows. Known to cause - # flickering when redirecting/unredirecting windows. - unredir-if-possible = true; - - # GLX backend: Avoid using stencil buffer, useful if you don't have a - # stencil buffer. Might cause incorrect opacity when rendering - # transparent content (but never practically happened) and may not work - # with blur-background. My tests show a 15% performance boost. - # Recommended. - glx-no-stencil = true; - - # Use X Sync fence to sync clients' draw calls, to make sure all draw - # calls are finished before picom starts drawing. Needed on - # nvidia-drivers with GLX backend for some users. - xrender-sync-fence = true; - - shadow-radius = 12; - # blur-background = true; - # blur-background-frame = true; - # blur-background-fixed = true; - blur-kern = "7x7box"; - blur-strength = 320; - }; - }; - }; - }; -} diff --git a/modules/desktop/polybar.nix b/modules/desktop/polybar.nix deleted file mode 100644 index f247948..0000000 --- a/modules/desktop/polybar.nix +++ /dev/null @@ -1,279 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; - -let cfg = config.modules.desktop.polybar; -in { - options.modules.desktop.polybar = { enable = mkBoolOpt false; }; - - config = mkIf cfg.enable { - - home-manager.users.${config.user.name} = { - - services.polybar = { - enable = true; - - package = pkgs.polybar.override { - pulseSupport = true; - mpdSupport = true; - }; - - script = '' - export MONITOR=$(polybar -m|tail -1|sed -e 's/:.*$//g') - - polybar main & - ''; - - settings = { - "colors" = { - bg = "#282828"; - bg-alt = "#3c3836"; - bg-darker = "#1d2021"; - fg = "#fbf1c7"; - fg-alt = "#928374"; - - blue = "#83a598"; - cyan = "#8ec07c"; - green = "#b8bb26"; - orange = "#fe8019"; - purple = "#d3869b"; - red = "#fb4934"; - yellow = "#fabd2f"; - - bg-blue = "#458588"; - bg-cyan = "#689d6a"; - bg-green = "#98971a"; - bg-orange = "#d65d0e"; - bg-purple = "#b16268"; - bg-red = "#cc241d"; - bg-yellow = "#d79921"; - - black = "#000"; - white = "#FFF"; - - trans = "#00000000"; - semi-trans = "#ee282828"; - semi-trans-black = "#aa000000"; - accent = "#83a598"; - }; - "global/wm" = { - margin-top = 0; - margin-bottom = 34; - }; - "bar/main" = { - monitor = "\${env:MONITOR}"; - background = "\${colors.bg}"; - foreground = "\${colors.fg}"; - enable-ipc = true; - - width = "100%"; - height = "34"; - bottom = true; - - padding = 2; - - font-0 = "MesloLGS Nerd Font Mono:pixelsize=12;3"; - font-1 = "MesloLGS Nerd Font Mono:pixelsize=20;5"; - - modules-left = "pulseaudio cpu memory fs xwindow"; - modules-center = "ewmh"; - modules-right = "mpd battery date"; - - separator = " "; - - tray-position = "right"; - }; - "module/ewmh" = { - type = "internal/xworkspaces"; - pin-workspaces = false; - enable-click = false; - enable-scroll = false; - - label-active = "%name%"; - label-active-background = "\${colors.bg-alt}"; - label-active-foreground = "\${colors.fg}"; - label-active-padding = 1; - - label-occupied = "%name%"; - label-occupied-foreground = "\${colors.accent}"; - label-occupied-padding = 1; - - label-urgent-foreground = "\${colors.red}"; - label-urgent-padding = 1; - - label-empty = "%name%"; - label-empty-foreground = "\${colors.fg-alt}"; - label-empty-padding = 1; - }; - "module/date" = { - type = "internal/date"; - interval = 5; - - label = "%date% %time%"; - date = "%A, %d %h"; - date-alt = "%d/%m/%Y"; - time = "%H:%M"; - time-alt = "%H:%M"; - format-foreground = "\${colors.accent}"; - format-prefix = "󰥔"; - format-prefix-font = 2; - format-prefix-padding = 1; - format-prefix-foreground = "\${colors.accent}"; - }; - "module/xwindow" = { - type = "internal/xwindow"; - label = "%title:0:80:...%"; - label-padding-left = 2; - - }; - "module/fs" = { - type = "internal/fs"; - mount-0 = "/"; - interval = 30; - format-mounted = ""; - label-mounted = "%used% of %total%"; - format-mounted-prefix = ""; - format-mounted-prefix-padding = 1; - format-mounted-prefix-font = 2; - format-mounted-foreground = "\${colors.accent}"; - - format-unmounted = ""; - label-unmounted = ""; - label-unmounted-foreground = "\${colors.fg-alt}"; - - bar-used-indicator = ""; - bar-used-width = 10; - bar-used-foreground-0 = "\${colors.fg}"; - bar-used-foreground-1 = "\${colors.fg}"; - bar-used-foreground-2 = "\${colors.fg}"; - bar-used-foreground-3 = "\${colors.fg}"; - bar-used-foreground-4 = "\${colors.fg}"; - bar-used-foreground-5 = "\${colors.yellow}"; - bar-used-foreground-6 = "\${colors.yellow}"; - bar-used-foreground-7 = "\${colors.yellow}"; - bar-used-foreground-8 = "\${colors.red}"; - bar-used-fill = "|"; - bar-used-empty = "¦"; - bar-used-empty-foreground = "\${colors.fg-alt}"; - }; - "module/cpu" = { - type = "internal/cpu"; - interval = 2; - format = ""; - format-prefix = ""; - format-prefix-padding = 1; - format-prefix-font = 2; - format-foreground = "\${colors.accent}"; - - bar-load-indicator = ""; - bar-load-width = 10; - bar-load-foreground-0 = "\${colors.fg}"; - bar-load-foreground-1 = "\${colors.fg}"; - bar-load-foreground-2 = "\${colors.fg}"; - bar-load-foreground-3 = "\${colors.fg}"; - bar-load-foreground-4 = "\${colors.fg}"; - bar-load-foreground-5 = "\${colors.yellow}"; - bar-load-foreground-6 = "\${colors.yellow}"; - bar-load-foreground-7 = "\${colors.yellow}"; - bar-load-foreground-8 = "\${colors.red}"; - bar-load-fill = "|"; - bar-load-empty = "¦"; - bar-load-empty-foreground = "\${colors.fg-alt}"; - }; - "module/memory" = { - type = "internal/memory"; - interval = 3; - format = ""; - format-prefix = ""; - format-prefix-padding = 1; - format-prefix-font = 2; - format-prefix-foreground = "\${colors.accent}"; - - bar-used-indicator = ""; - bar-used-width = 10; - bar-used-foreground-0 = "\${colors.fg}"; - bar-used-foreground-1 = "\${colors.fg}"; - bar-used-foreground-2 = "\${colors.fg}"; - bar-used-foreground-3 = "\${colors.fg}"; - bar-used-foreground-4 = "\${colors.fg}"; - bar-used-foreground-5 = "\${colors.yellow}"; - bar-used-foreground-6 = "\${colors.yellow}"; - bar-used-foreground-7 = "\${colors.yellow}"; - bar-used-foreground-8 = "\${colors.red}"; - bar-used-fill = "|"; - bar-used-empty = "¦"; - bar-used-empty-foreground = "\${colors.fg-alt}"; - }; - "module/pulseaudio" = { - type = "internal/pulseaudio"; - - format-volume = " "; - label-volume-foreground = "\${colors.accent}"; - - label-muted = "󰖁"; - label-muted-font = 2; - format-muted-foreground = "\${colors.red}"; - format-muted = ""; - - bar-volume-width = 8; - bar-volume-gradient = false; - bar-volume-indicator = "|"; - bar-volume-indicator-foreground = "#ff"; - bar-volume-fill = "─"; - bar-volume-empty = "─"; - bar-volume-empty-foreground = "\${colors.fg-alt}"; - - ramp-volume-0 = "󰕿"; - ramp-volume-1 = "󰖀"; - ramp-volume-2 = "󰕾"; - ramp-volume-font = 2; - }; - "module/mpd" = (mkIf config.modules.media.mpd.enable { - type = "internal/mpd"; - host = "127.0.0.1"; - port = "6600"; - - label-song = "%artist% - %title%"; - format-playing-prefix = "󰎈"; - format-playing-prefix-padding = 1; - format-playing-prefix-font = 2; - format-playing-foreground = "\${colors.fg}"; - format-paused-prefix = "󰎊"; - format-paused-prefix-padding = 1; - format-paused-prefix-font = 2; - format-paused-foreground = "\${colors.fg-alt}"; - }); - "module/battery" = { - type = "internal/battery"; - battery = "BAT0"; - adapter = "AC"; - - format-charging = " "; - format-discharging = " "; - - ramp-capacity-0 = ""; - ramp-capacity-1 = ""; - ramp-capacity-2 = ""; - ramp-capacity-3 = ""; - ramp-capacity-4 = ""; - - ramp-capacity-font = 2; - - ramp-capacity-0-foreground = "\${colors.red}"; - ramp-capacity-1-foreground = "\${colors.yellow}"; - ramp-capacity-2-foreground = "\${colors.fg-alt}"; - - animation-charging-0 = ""; - animation-charging-1 = ""; - animation-charging-2 = ""; - animation-charging-3 = ""; - animation-charging-4 = ""; - - animation-charging-font = 2; - }; - }; - }; - }; - }; -} diff --git a/modules/desktop/themes/qt.nix b/modules/desktop/themes/qt.nix index 9287862..7d107e6 100644 --- a/modules/desktop/themes/qt.nix +++ b/modules/desktop/themes/qt.nix @@ -2,37 +2,12 @@ with lib; with lib.my; -let - cfg = config.modules.desktop.themes.qt; - - sddmBackground = pkgs.fetchurl { - url = - "https://raw.githubusercontent.com/AngelJumbo/gruvbox-wallpapers/main/wallpapers/irl/mountains2.jpg"; - sha256 = "sha256-hp9cxCpZsDYKxUUSuec2wZyv9/N93Cw6ENTHGxKap9Q="; - }; - - sddmTheme = pkgs.stdenv.mkDerivation { - name = "sddm-theme"; - src = pkgs.fetchFromGitHub { - owner = "MarianArlt"; - repo = "sddm-sugar-dark"; - rev = "ceb2c455663429be03ba62d9f898c571650ef7fe"; - sha256 = "0153z1kylbhc9d12nxy9vpn0spxgrhgy36wy37pk6ysq7akaqlvy"; - }; - installPhase = '' - mkdir -p $out - cp -R ./* $out/ - cd $out/ - rm Background.jpg - cp -r ${sddmBackground} $out/Background.jpg - ''; - }; +let cfg = config.modules.desktop.themes.qt; in { options.modules.desktop.themes.qt = { enable = mkBoolOpt false; }; config = mkIf cfg.enable { - services.xserver.displayManager.sddm.theme = "${sddmTheme}"; environment.systemPackages = with pkgs; [ libsForQt5.qt5.qtquickcontrols2 diff --git a/modules/desktop/wallpaper.png b/modules/desktop/wallpaper.png deleted file mode 100644 index ee7fbe6..0000000 Binary files a/modules/desktop/wallpaper.png and /dev/null differ diff --git a/modules/desktop/xmonad/xmonad.hs b/modules/desktop/xmonad/xmonad.hs deleted file mode 100644 index ac89553..0000000 --- a/modules/desktop/xmonad/xmonad.hs +++ /dev/null @@ -1,131 +0,0 @@ -import System.Exit -import Data.Maybe (Maybe, isNothing, fromJust) -import qualified Data.List as L -import qualified Data.Map as M -import GHC.IO.Handle --- Xmonad Core -import XMonad -import qualified XMonad.StackSet as W -import XMonad.Config.Desktop -import XMonad.Config.Azerty - --- Layouts -import XMonad.Layout.LayoutModifier -import XMonad.Layout.Gaps -import XMonad.Layout.Spacing -import XMonad.Layout.MultiToggle -import XMonad.Layout.NoBorders -import XMonad.Layout.MultiToggle.Instances -import XMonad.Layout.ResizableTile -import XMonad.Layout.BinarySpacePartition -import XMonad.Layout.SimpleFloat -import XMonad.Layout.PerWorkspace (onWorkspace) -import XMonad.Layout.Minimize -import XMonad.Layout.Fullscreen - --- Actions -import XMonad.Actions.Navigation2D -import XMonad.Actions.GridSelect -import XMonad.Actions.UpdatePointer -import XMonad.Actions.SpawnOn -import XMonad.Actions.CycleWS - --- Hooks -import XMonad.Hooks.DynamicLog -import XMonad.Hooks.ManageHelpers -import XMonad.Hooks.SetWMName -import XMonad.Hooks.EwmhDesktops -import XMonad.Hooks.ManageDocks - --- Utils -import XMonad.Util.NamedScratchpad -import XMonad.Util.WorkspaceCompare -import XMonad.Util.Run -import XMonad.Util.EZConfig - -myTerminal = "alacritty" -mySelectScreenshot = "scrot -s" -myScreenshot = "scrot" - -myWorkspaces = ["1","2","3","4","5","6"] ++ map show [7..9] -myModMask = mod4Mask - -myFocusFollowsMouse :: Bool -myFocusFollowsMouse = True - -main = do - xmonad $ ewmh . docks $ myConfig - -myConfig = azertyConfig { - terminal = myTerminal, - focusFollowsMouse = True, - borderWidth = 1, - modMask = mod4Mask, - workspaces = myWorkspaces, - normalBorderColor = "#474646", - focusedBorderColor = "#83a598", - layoutHook = myLayout, - manageHook = manageDocks <+> (isFullscreen --> doFullFloat) <+> manageHook def, - --handleEventHook = myEventHook <+> handleEventHook def, - logHook = logHook def, - --keys = \c -> mkKeymap c myAdditionalKeys, - startupHook = myStartupHook -} `removeKeysP` myRemoveKeys `additionalKeysP` myAdditionalKeys - -myRemoveKeys = [ - ] - -myAdditionalKeys = [ - ("M-q", kill), - ("M-x", spawn "i3lock -e -f -c 000000 -i ~/.wallpaper.jpg"), - ("M-S-h", sendMessage (IncMasterN 1)), - ("M-S-l", sendMessage (IncMasterN (-1))), - ("M-S-", windows W.swapMaster), - ("M-d", spawn "rofi -show drun -show-icons"), - ("M-s", spawn "rofi -show ssh"), - ("M-w", spawn "firefox"), - ("M-i", spawn $ myTerminal ++ " -e htop"), - ("M-e", spawn "emacsclient -c"), - ("M-r", spawn $ myTerminal ++ " -e joshuto"), - ("M-y", spawn $ myTerminal ++ " -e calcurse"), - ("M-v", spawn $ myTerminal ++ " -e ncmpcpp -s visualizer"), - ("M-m", spawn $ myTerminal ++ " -e ncmpcpp"), - ("M-n", spawn "emacsclient -c --eval '(elfeed)'"), - ("M-c", spawn "rofi -show calc -modi calc -no-show-match -no-sort"), - ("", spawn "scrot -e 'mv $f ~/Pictures/Screenshots'"), - ("S-", spawn "flameshot gui"), - ("M-S-a", spawn $ myTerminal ++ " -e pulsemixer"), - ("M-S-p", spawn "rofi -show p -modi p:rofi-power-menu"), - ("M-", spawn myTerminal), - ("M-f", sendMessage $ Toggle FULL), - -- Switch workspaces and screens - --("M-", moveTo Next (WSIs hiddenNotNSP)), - --("M-", moveTo Prev (WSIs hiddenNotNSP)), - --("M-S-", shiftTo Next (WSIs hiddenNotNSP)), - --("M-S-", shiftTo Prev (WSIs hiddenNotNSP)), - ("M-", nextScreen), - ("M-", prevScreen), - ("M-S-", shiftNextScreen), - ("M-S-", shiftPrevScreen), - ("M-S-r", spawn "xmonad --recompile; xmonad --restart"), - ("" ,spawn "pulsemixer --change-volume -1"), - ("" ,spawn "pulsemixer --change-volume +1"), - ("" ,spawn "pulsemixer --toggle-mute"), - ("" ,spawn "light -U 5"), - ("" ,spawn "light -A 5"), - ("" ,spawn "mpc toggle"), - ("M-p" ,spawn "mpc toggle"), - ("" ,spawn "mpc prev"), - ("" ,spawn "mpc next"), - ("" ,spawn "systemctl suspend") - ] - -myLayout = smartSpacing 5 - $ smartBorders - $ mkToggle (NOBORDERS ?? FULL ?? EOT) - $ avoidStruts - $ layoutHook def - -myStartupHook = do - setWMName "LG3D" - return () >> checkKeymap myConfig myAdditionalKeys diff --git a/modules/desktop/xmonad/xmonad.nix b/modules/desktop/xmonad/xmonad.nix deleted file mode 100644 index d59b1b0..0000000 --- a/modules/desktop/xmonad/xmonad.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ options, config, lib, pkgs, ... }: - -with lib; -with lib.my; - -let cfg = config.modules.desktop.xmonad; -in { - options.modules.desktop.xmonad = { enable = mkBoolOpt false; }; - - config = mkIf cfg.enable { - - modules = { - desktop = { - polybar.enable = true; - picom.enable = true; - themes = { - gtk.enable = true; - qt.enable = true; - }; - }; - apps.rofi.enable = true; - }; - - services.xserver = { - enable = true; - layout = "fr"; - autoRepeatDelay = 400; - autoRepeatInterval = 25; - desktopManager.xterm.enable = false; - windowManager.xmonad.enable = true; - displayManager.sddm.enable = true; - - }; - - home-manager.users.${config.user.name} = { - xsession = { - windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - config = ./xmonad.hs; - }; - }; - - home = { - packages = with pkgs.unstable; [ - i3lock - - feh - scrot - ]; - }; - }; - - }; -} diff --git a/modules/editor/emacs/emacs.nix b/modules/editor/emacs/emacs.nix index 3357765..f718ef2 100644 --- a/modules/editor/emacs/emacs.nix +++ b/modules/editor/emacs/emacs.nix @@ -62,7 +62,7 @@ in { imagemagick ffmpegthumbnailer mediainfo - poppler_utils + poppler gnutar unzip ]; diff --git a/modules/hardware/audio.nix b/modules/hardware/audio.nix index 02e7d12..03bcb4d 100644 --- a/modules/hardware/audio.nix +++ b/modules/hardware/audio.nix @@ -8,8 +8,13 @@ in { config = mkIf cfg.enable { sound.enable = true; - hardware.pulseaudio.enable = true; - hardware.pulseaudio.support32Bit = true; + + security.rtkit.enable = true; + + services.pipewire = { + enable = true; + pulse.enable = true; + }; home-manager.users.${config.user.name} = { home.packages = with pkgs.unstable; [ pulsemixer ];