diff --git a/home/default.nix b/home/default.nix index f4f2dad..a39d4cb 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,10 +1,4 @@ -{ - config, - lib, - pkgs, - catppuccinVariant ? "Mocha", - ... -}: { +{config, ...}: { imports = [ # Programs ../programs/desktop/default.nix @@ -22,99 +16,8 @@ ]; programs.home-manager.enable = true; nixpkgs.config.allowUnfree = true; - services = { - gpg-agent.pinentryPackage = pkgs.pinentry-gtk2; - avizo.enable = true; - syncthing.enable = true; - udiskie = { - enable = true; - notify = true; - automount = true; - tray = "never"; - }; - }; - gtk = with lib.strings; let - accent = "Lavender"; - variant = catppuccinVariant; - type = - if variant == "Latte" - then "Light" - else "Dark"; - inverseType = - if type == "Light" - then "Dark" - else "Light"; - in { - enable = true; - iconTheme = { - package = pkgs.catppuccin-papirus-folders.override { - accent = toLower accent; - flavor = toLower variant; - }; - name = "Papirus-Dark"; - }; - cursorTheme = { - package = pkgs.catppuccin-cursors."${toLower variant}${inverseType}"; - name = "Catppuccin-${variant}-${inverseType}-Cursors"; - size = 32; - }; - theme = let - size = "Standard"; - in { - package = pkgs.catppuccin-gtk.override { - accents = [(toLower accent)]; - size = toLower size; - variant = toLower variant; - }; - name = "Catppuccin-${variant}-${size}-${accent}-${type}"; - }; - }; - xdg = { - userDirs = { - enable = true; - createDirectories = true; - extraConfig = { - XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects"; - }; - }; - }; - xresources.properties = with config.scheme.withHashtag; { - "*background" = base00; - "*foreground" = base05; - "*color0" = base00; - "*color1" = red; - "*color2" = green; - "*color3" = yellow; - "*color4" = blue; - "*color5" = magenta; - "*color6" = cyan; - "*color7" = base04; - "*color8" = base01; - "*color9" = red; - "*color10" = green; - "*color11" = yellow; - "*color12" = blue; - "*color13" = magenta; - "*color14" = cyan; - "*color15" = base05; - }; home = { homeDirectory = "/home/${config.home.username}"; - packages = with pkgs; [ - rclone - git-sync - pinentry - fd - ripgrep - ffmpeg - mpv - evince - libreoffice-fresh - inkscape - remmina - webcord - signal-desktop - ]; stateVersion = "23.05"; }; } diff --git a/home/work.nix b/home/work.nix index 26e6708..7214e72 100644 --- a/home/work.nix +++ b/home/work.nix @@ -17,13 +17,4 @@ proton.primary = lib.mkForce false; outlook.primary = lib.mkForce true; }; - xdg.configFile."teams-for-linux/config.json".text = builtins.toJSON { - awayOnSystemIdle = true; - closeAppOnCross = true; - electronCLIFlags = lib.mkIf config.wayland.windowManager.sway.enable [["ozone-platform" "wayland"]]; - followSystemTheme = false; - notificationMethod = "electron"; - optInTeamsV2 = true; - spellCheckerLanguages = ["en_GB"]; - }; } diff --git a/programs/desktop/default.nix b/programs/desktop/default.nix index 81e5849..ae71688 100644 --- a/programs/desktop/default.nix +++ b/programs/desktop/default.nix @@ -1,4 +1,10 @@ -{pkgs, ...}: { +{ + config, + lib, + pkgs, + catppuccinVariant ? "Mocha", + ... +}: { imports = [ ./sway/default.nix ./niri/default.nix @@ -13,6 +19,14 @@ ./wlogout/default.nix ]; home.packages = with pkgs; [ + pinentry + ffmpeg + evince + libreoffice-fresh + inkscape + webcord + signal-desktop + swayimg swaybg (writeShellScriptBin "set-background" '' ${swaybg}/bin/swaybg -m fill -i ${./wallpapers/landscapes/tropic_island_day.jpg} @@ -29,4 +43,96 @@ systemctl --user restart davmail '') ]; + services = { + avizo.enable = true; + gpg-agent.pinentryPackage = pkgs.pinentry-gtk2; + remmina.enable = true; + syncthing.enable = true; + udiskie = { + enable = true; + notify = true; + automount = true; + tray = "never"; + }; + }; + programs.mpv.enable = true; + gtk = with lib.strings; let + accent = "Lavender"; + variant = catppuccinVariant; + type = + if variant == "Latte" + then "Light" + else "Dark"; + inverseType = + if type == "Light" + then "Dark" + else "Light"; + in { + enable = true; + iconTheme = { + package = pkgs.catppuccin-papirus-folders.override { + accent = toLower accent; + flavor = toLower variant; + }; + name = "Papirus-Dark"; + }; + cursorTheme = { + package = pkgs.catppuccin-cursors."${toLower variant}${inverseType}"; + name = "Catppuccin-${variant}-${inverseType}-Cursors"; + size = 32; + }; + theme = let + size = "Standard"; + in { + package = pkgs.catppuccin-gtk.override { + accents = [(toLower accent)]; + size = toLower size; + variant = toLower variant; + }; + name = "Catppuccin-${variant}-${size}-${accent}-${type}"; + }; + }; + xdg = { + mime.enable = true; + mimeApps = let + defaultApplications = import ./mimeapps.nix; + in { + enable = true; + inherit defaultApplications; + associations = { + added = defaultApplications; + removed = { + "x-scheme-handler/zoomus" = config.xdg.mimeApps.defaultApplications."x-scheme-handler/http"; + "x-scheme-handler/msteams" = ["teams-for-linux.desktop"]; + }; + }; + }; + userDirs = { + enable = true; + createDirectories = true; + extraConfig = { + XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects"; + }; + }; + }; + xresources.properties = with config.scheme.withHashtag; { + "*background" = base00; + "*foreground" = base05; + "*color0" = base00; + "*color1" = red; + "*color2" = green; + "*color3" = yellow; + "*color4" = blue; + "*color5" = magenta; + "*color6" = cyan; + "*color7" = base04; + "*color8" = base01; + "*color9" = red; + "*color10" = green; + "*color11" = yellow; + "*color12" = blue; + "*color13" = magenta; + "*color14" = cyan; + "*color15" = base05; + }; } diff --git a/programs/desktop/mimeapps.nix b/programs/desktop/mimeapps.nix new file mode 100644 index 0000000..318c570 --- /dev/null +++ b/programs/desktop/mimeapps.nix @@ -0,0 +1,68 @@ +let + emacs = ["emacsclient.desktop" "emacs.desktop"]; + browser = ["firefox.desktop" "nyxt.desktop"]; +in { + "inode/directory" = ["thunar.desktop"]; + "inode/symlink" = ["thunar.desktop"]; + + "image/jpeg" = ["swayimg.desktop"]; + "image/png" = ["swayimg.desktop"]; + "video/mp4" = ["mpv.desktop"]; + + "text/plain" = emacs; + "text/richtext" = emacs; + "text/org" = emacs; + "text/markdown" = emacs; + "text/rust" = emacs; + "text/csv" = emacs; + "text/html" = emacs; + "text/css" = emacs; + "text/tab-separated-values" = emacs; + + "text/x-emacs-lisp" = emacs; + "text/x-fortran" = emacs; + "text/x-idl" = emacs; + "text/x-log" = emacs; + "text/x-lua" = emacs; + "text/x-makefile" = emacs; + "text/x-python" = emacs; + "text/x-python3" = emacs; + "text/x-readme" = emacs; + "text/x-scheme" = emacs; + "text/x-tex" = emacs; + "text/x-texinfo" = emacs; + + "application/json" = emacs; + "application/toml" = emacs; + "application/yaml" = emacs; + "application/xml" = emacs; + "application/rss+xml" = emacs; + "application/xhtml+xml" = emacs; + "application/oxps" = emacs; + "application/x-shellscript" = emacs; + + "application/pdf" = ["evince.desktop"]; + "application/epub+zip" = ["evince.desktop"]; + "application/msword" = ["writer.desktop"]; + "application/zip" = ["xarchiver.desktop"]; + + "application/x-extension-htm" = browser; + "application/x-extension-html" = browser; + "application/x-extension-shtml" = browser; + "application/x-extension-xhtml" = browser; + "application/x-extension-xht" = browser; + "application/x-mozilla-bookmarks" = browser; + + "x-scheme-handler/http" = browser; + "x-scheme-handler/https" = browser; + "x-scheme-handler/about" = browser; + "x-scheme-handler/chrome" = browser; + "x-scheme-handler/webcal" = browser; + "x-scheme-handler/unknown" = emacs; + + "x-scheme-handler/prusaslicer" = ["PrusaSlicerURLProtocol.desktop"]; + + "x-scheme-handler/ms-word" = ["writer.desktop"]; + "x-scheme-handler/ms-powerpoint" = ["impress.desktop"]; + "x-scheme-handler/ms-excel" = ["calc.desktop"]; +} diff --git a/programs/emacs/default.nix b/programs/emacs/default.nix index ec45e93..3d6a564 100644 --- a/programs/emacs/default.nix +++ b/programs/emacs/default.nix @@ -5,6 +5,7 @@ ... }: { imports = [ + ../shell/default.nix ./python/default.nix ./lua/default.nix ]; @@ -139,8 +140,6 @@ imagemagick languagetool wordnet - fd - ripgrep graphviz # For org-roam graph mp3info # For EMMS diff --git a/programs/shell/bottom.nix b/programs/shell/bottom.nix index 09c35c4..c5fb2c1 100644 --- a/programs/shell/bottom.nix +++ b/programs/shell/bottom.nix @@ -5,31 +5,40 @@ }: { programs.bottom = { enable = true; - settings.colors = with config.scheme.withHashtag; let - rainbow = [red yellow green cyan blue magenta]; - in { - table_header_color = base05; - all_cpu_color = base05; - avg_cpu_color = base05; - cpu_core_colors = rainbow; - ram_color = red; - cache_color = green; - swap_color = blue; - rx_color = green; - tx_color = blue; - widget_title_color = config.scheme.withHashtag.${accentColour}; - border_color = base02; - highlighted_border_color = config.scheme.withHashtag.${accentColour}; - text_color = base05; - graph_color = base04; - cursor_color = base02; - selected_text_color = base05; - selected_bg_color = base01; - high_battery_color = green; - medium_battery_color = yellow; - low_battery_color = red; - gpu_core_colors = rainbow; - arc_color = cyan; + settings = { + flags = { + group_processes = true; + temperature_type = "celsius"; + battery = true; + enable_gpu = true; + enable_cache_memory = true; + }; + colors = with config.scheme.withHashtag; let + rainbow = [red yellow green cyan blue magenta]; + in { + table_header_color = base05; + all_cpu_color = base05; + avg_cpu_color = base05; + cpu_core_colors = rainbow; + ram_color = red; + cache_color = green; + swap_color = blue; + rx_color = green; + tx_color = blue; + widget_title_color = config.scheme.withHashtag.${accentColour}; + border_color = base02; + highlighted_border_color = config.scheme.withHashtag.${accentColour}; + text_color = base05; + graph_color = base04; + cursor_color = base02; + selected_text_color = base05; + selected_bg_color = base01; + high_battery_color = green; + medium_battery_color = yellow; + low_battery_color = red; + gpu_core_colors = rainbow; + arc_color = cyan; + }; }; }; } diff --git a/programs/shell/default.nix b/programs/shell/default.nix index 9492eee..87b84fc 100644 --- a/programs/shell/default.nix +++ b/programs/shell/default.nix @@ -5,23 +5,18 @@ ... }: { imports = [ + ./bottom.nix + ./fastfetch.nix ./git.nix ./ssh.nix ./starship.nix - ./bottom.nix - ./zellij.nix + ./zsh.nix + ]; + home.packages = with pkgs; [ + rclone + git-sync + du-dust ]; - xdg.configFile = let - variants = ["Latte" "Frappe" "Macchiato" "Mocha"]; - mkVariant = variant: let - fname = "catppuccin${variant}.tmTheme"; - in { - name = "bat/themes/${fname}"; - value = {source = ./. + "/${fname}";}; - }; - in - builtins.listToAttrs - (lib.lists.forEach variants mkVariant); programs = { bash.enable = true; bat = { @@ -41,39 +36,25 @@ enable = true; nix-direnv.enable = true; }; + fd.enable = true; fzf = { enable = true; defaultCommand = "${pkgs.fd}/bin/fd --type f"; changeDirWidgetCommand = "${pkgs.fd}/bin/fd --type d"; fileWidgetCommand = "${pkgs.fd}/bin/fd --type f"; }; - zsh = { - enable = true; - enableCompletion = true; - autocd = true; - autosuggestion.enable = true; - defaultKeymap = "emacs"; - syntaxHighlighting = { - enable = true; - highlighters = ["brackets" "cursor"]; - }; - historySubstringSearch.enable = true; - history = { - extended = true; - share = true; - ignoreDups = true; - ignoreAllDups = true; - ignoreSpace = true; - expireDuplicatesFirst = true; - }; - initExtra = '' - ## completion config and styling - zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' - zstyle ':completion:*' menu 'select=long-list' - - ## transient prompt - source ${./transient.zsh} - ''; - }; + jq.enable = true; + ripgrep.enable = true; }; + xdg.configFile = let + variants = ["Latte" "Frappe" "Macchiato" "Mocha"]; + mkVariant = variant: let + fname = "catppuccin${variant}.tmTheme"; + in { + name = "bat/themes/${fname}"; + value = {source = ./. + "/${fname}";}; + }; + in + builtins.listToAttrs + (lib.lists.forEach variants mkVariant); } diff --git a/programs/shell/fastfetch.nix b/programs/shell/fastfetch.nix new file mode 100644 index 0000000..f704a0d --- /dev/null +++ b/programs/shell/fastfetch.nix @@ -0,0 +1,6 @@ +{...}: { + programs.fastfetch = { + enable = true; + settings = {}; + }; +} diff --git a/programs/shell/zsh.nix b/programs/shell/zsh.nix new file mode 100644 index 0000000..3f9a83c --- /dev/null +++ b/programs/shell/zsh.nix @@ -0,0 +1,30 @@ +{...}: { + programs.zsh = { + enable = true; + enableCompletion = true; + autocd = true; + autosuggestion.enable = true; + defaultKeymap = "emacs"; + syntaxHighlighting = { + enable = true; + highlighters = ["brackets" "cursor"]; + }; + historySubstringSearch.enable = true; + history = { + extended = true; + share = true; + ignoreDups = true; + ignoreAllDups = true; + ignoreSpace = true; + expireDuplicatesFirst = true; + }; + initExtra = '' + ## completion config and styling + zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' + zstyle ':completion:*' menu 'select=long-list' + + ## transient prompt + source ${./transient.zsh} + ''; + }; +}