diff options
Diffstat (limited to 'modules/home/apps')
| -rw-r--r-- | modules/home/apps/cmus/default.nix | 77 | ||||
| -rw-r--r-- | modules/home/apps/default.nix | 46 | ||||
| -rw-r--r-- | modules/home/apps/discord/default.nix | 57 | ||||
| -rw-r--r-- | modules/home/apps/fastfetch/assets/mem.png | bin | 0 -> 185313 bytes | |||
| -rw-r--r-- | modules/home/apps/fastfetch/assets/nonon.png | bin | 0 -> 108707 bytes | |||
| -rw-r--r-- | modules/home/apps/fastfetch/assets/ryo.png | bin | 0 -> 128547 bytes | |||
| -rw-r--r-- | modules/home/apps/fastfetch/default.nix | 81 | ||||
| -rw-r--r-- | modules/home/apps/feh/default.nix | 15 | ||||
| -rw-r--r-- | modules/home/apps/firefox/default.nix | 23 | ||||
| -rw-r--r-- | modules/home/apps/flameshot/default.nix | 38 | ||||
| -rw-r--r-- | modules/home/apps/kitty/default.nix | 84 | ||||
| -rw-r--r-- | modules/home/apps/mpv/default.nix | 20 | ||||
| -rw-r--r-- | modules/home/apps/obsidian/default.nix | 24 | ||||
| -rw-r--r-- | modules/home/apps/prismlauncher/default.nix | 35 | ||||
| -rw-r--r-- | modules/home/apps/steam/default.nix | 30 | ||||
| -rw-r--r-- | modules/home/apps/vscode/default.nix | 75 |
16 files changed, 605 insertions, 0 deletions
diff --git a/modules/home/apps/cmus/default.nix b/modules/home/apps/cmus/default.nix new file mode 100644 index 0000000..3124d07 --- /dev/null +++ b/modules/home/apps/cmus/default.nix @@ -0,0 +1,77 @@ +{ options, config, lib, pkgs, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.cmus; + impermanence = config.${namespace}.impermanence; +in { + options.${namespace}.apps.cmus = with types; { + enable = mkEnableOption "cmus"; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + cmus + ]; + + home.persistence.${impermanence.location} = { + directories = [ + ".config/cmus" + ]; + }; + + xdg.desktopEntries.cmus = { + name = "cmus"; + genericName = "Music Player"; + exec = "${pkgs.kitty}/bin/kitty ${pkgs.cmus}/bin/cmus"; + categories = [ "Music" "Player" "Audio" "ConsoleOnly" ]; + }; + + xdg.configFile."cmus/rc".text = '' + set auto_expand_albums_follow=false + set pause_on_output_change=true + set repeat=true + set shuffle=tracks + + fset unheard=play_count=0 + factivate + + set color_cmdline_attr=default + set color_cmdline_bg=default + set color_cmdline_fg=default + set color_cur_sel_attr=default + set color_error=231 + set color_info=lightyellow + set color_separator=black + set color_statusline_attr=default + set color_statusline_bg=237 + set color_statusline_fg=248 + set color_titleline_attr=bold + set color_titleline_bg=239 + set color_titleline_fg=default + set color_trackwin_album_attr=bold + set color_trackwin_album_bg=black + set color_trackwin_album_fg=default + set color_win_attr=default + set color_win_bg=default + set color_win_cur=231 + set color_win_cur_attr=default + set color_win_cur_sel_attr=bold + set color_win_cur_sel_bg=231 + set color_win_cur_sel_fg=black + set color_win_dir=lightblue + set color_win_fg=default + set color_win_inactive_cur_sel_attr=bold + set color_win_inactive_cur_sel_bg=237 + set color_win_inactive_cur_sel_fg=231 + set color_win_inactive_sel_attr=bold + set color_win_inactive_sel_bg=237 + set color_win_inactive_sel_fg=default + set color_win_sel_attr=bold + set color_win_sel_bg=250 + set color_win_sel_fg=black + set color_win_title_attr=bold + set color_win_title_bg=250 + set color_win_title_fg=black + ''; + }; +} diff --git a/modules/home/apps/default.nix b/modules/home/apps/default.nix new file mode 100644 index 0000000..2c26354 --- /dev/null +++ b/modules/home/apps/default.nix @@ -0,0 +1,46 @@ +{ lib, pkgs, namespace, ... }: + +with lib; with lib.${namespace}; { + imports = with pkgs; [ + (mkSimpleApp "gimp" {}) + (mkSimpleApp "jellyfin" { packages = [ jellyfin-media-player ]; }) + (mkSimpleApp "lutris" { persist = [ ".local/share/lutris" ]; }) + (mkSimpleApp "irssi" { persist = [ ".irssi" ]; }) + + (mkSimpleApp "intellij" { + packages = [ jetbrains.idea-community ]; + persist = [ + ".config/JetBrains" + ".local/share/JetBrains" + ".cache/JetBrains" + ]; + }) + + (mkSimpleApp "anki" { + packages = [ anki-bin ]; + persist = [ ".local/share/Anki2" ]; + }) + + (mkSimpleApp "qbittorrent" { + persist = [ + ".config/qBittorrent" + ".local/share/qBittorrent" + ".cache/qBittorrent" + ]; + }) + (mkSimpleApp "nicotine" { + packages = [ nicotine-plus ]; + persist = [ + ".config/nicotine" + ".local/share/nicotine" + ]; + }) + + (mkSimpleApp "pfetch" {}) + (mkSimpleApp "cmatrix" {}) + (mkSimpleApp "asciiquarium" {}) + (mkSimpleApp "pipes" {}) + (mkSimpleApp "cowsay" {}) + (mkSimpleApp "figlet" {}) + ]; +} diff --git a/modules/home/apps/discord/default.nix b/modules/home/apps/discord/default.nix new file mode 100644 index 0000000..7766cd8 --- /dev/null +++ b/modules/home/apps/discord/default.nix @@ -0,0 +1,57 @@ +{ options, config, lib, pkgs, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.discord; + impermanence = config.${namespace}.impermanence; + desktop = config.${namespace}.desktop; +in { + options.${namespace}.apps.discord = with types; { + enable = mkEnableOption "discord"; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + (discord.override { + withVencord = false; + withOpenASAR = false; + }) + vesktop + ]; + + home.persistence.${impermanence.location} = { + directories = [ + ".config/discord" + ".config/Vencord" + ".config/vesktop" + ]; + }; + + xdg.configFile."Vencord/themes/nix.theme.css".text = let c = desktop.theme.colors; in '' + @import url(https://mwittrien.github.io/BetterDiscordAddons/Themes/BasicBackground/BasicBackground.css); + + :root { + --transparencycolor: 0, 0, 0; + --transparencyalpha: 0.0; + --messagetransparency: 0.0; + --guildchanneltransparency: 0.15; + --chatinputtransparency: 0.0; + --memberlisttransparency: 0.15; + --settingsicons: 0; + /* A discord update messed up transparancy, and for now eyeballing it works fine */ + /* --background: rgba(0, 0, 0, 0.8); */ + --background: rgba(0, 0, 0, 0.55); + --backdrop: rgba(0, 0, 0, 0); + --version1_0_5: none; + + --accentcolor: ${hexToRGBString ", " c.accent}; + + --textbrightest: ${hexToRGBString ", " c.fg0}; + --textbrighter: ${hexToRGBString ", " c.fg1}; + --textbright: ${hexToRGBString ", " c.fg2}; + --textdark: ${hexToRGBString ", " c.fg3}; + --textdarker: ${hexToRGBString ", " c.fg4}; + --textdarkest: ${hexToRGBString ", " c.brightBlack}; + } + ''; + }; +} diff --git a/modules/home/apps/fastfetch/assets/mem.png b/modules/home/apps/fastfetch/assets/mem.png Binary files differnew file mode 100644 index 0000000..999c4dd --- /dev/null +++ b/modules/home/apps/fastfetch/assets/mem.png diff --git a/modules/home/apps/fastfetch/assets/nonon.png b/modules/home/apps/fastfetch/assets/nonon.png Binary files differnew file mode 100644 index 0000000..57056ce --- /dev/null +++ b/modules/home/apps/fastfetch/assets/nonon.png diff --git a/modules/home/apps/fastfetch/assets/ryo.png b/modules/home/apps/fastfetch/assets/ryo.png Binary files differnew file mode 100644 index 0000000..852df37 --- /dev/null +++ b/modules/home/apps/fastfetch/assets/ryo.png diff --git a/modules/home/apps/fastfetch/default.nix b/modules/home/apps/fastfetch/default.nix new file mode 100644 index 0000000..aa901e6 --- /dev/null +++ b/modules/home/apps/fastfetch/default.nix @@ -0,0 +1,81 @@ +{ options, config, lib, pkgs, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.fastfetch; +in { + options.${namespace}.apps.fastfetch = with types; { + enable = mkEnableOption "fastfetch"; + }; + + config = mkIf cfg.enable { + programs.fastfetch = { + enable = true; + package = (pkgs.fastfetch.overrideAttrs (finalAttrs: previousAttrs: { + cmakeFlags = [(cmakeBool "ENABLE_IMAGEMAGICK6" true)]; + })); + + settings = { + logo = { + type = "kitty-direct"; + source = "$(ls ${./assets}/*.png | shuf -n 1)"; + + width = 36; + height = 32; + + padding = { + left = 4; + right = 4; + }; + }; + + display = { + separator = ""; + }; + + modules = [ + { type = "custom"; format = " ハードウェア "; } + { type = "custom"; format = "┌──────────────────────────────────────────────────┐"; } + + { type = "cpu"; key = " CPU "; } + { type = "gpu"; key = " GPU "; format = "{2} [{6}]"; } + { type = "memory"; key = " MEM "; } + "break" + { + type = "disk"; + folders = "/nix:/persist"; + key = " "; + } + + { type = "custom"; format = "└──────────────────────────────────────────────────┘"; } + "break" + + { type = "custom"; format = " ソフトウェア "; } + { type = "custom"; format = "┌──────────────────────────────────────────────────┐"; } + + { type = "title"; key = " "; format = "{1}@{2}"; } + "break" + { type = "os"; key = " "; } + { type = "kernel"; key = " "; format = "{1} {2}"; } + { type = "packages"; key = " "; } + "break" + { type = "terminal"; key = " "; } + { type = "shell"; key = " "; } + # { type = "font"; key = " "; } + { type = "font"; key = " "; format = "Caskaydia Mono (8pt)"; } + "break" + { type = "wm"; key = " "; } + # { type = "theme"; key = " "; } + { type = "theme"; key = " "; format = "gruvbox"; } + "break" + { type = "media"; key = " "; } + { type = "datetime"; key = " "; } + + { type = "custom"; format = "└──────────────────────────────────────────────────┘"; } + "break" + + "colors" + ]; + }; + }; + }; +} diff --git a/modules/home/apps/feh/default.nix b/modules/home/apps/feh/default.nix new file mode 100644 index 0000000..af14289 --- /dev/null +++ b/modules/home/apps/feh/default.nix @@ -0,0 +1,15 @@ +{ options, config, lib, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.feh; +in { + options.${namespace}.apps.feh = with types; { + enable = mkEnableOption "feh"; + }; + + config = mkIf cfg.enable { + programs.feh = { + enable = true; + }; + }; +} diff --git a/modules/home/apps/firefox/default.nix b/modules/home/apps/firefox/default.nix new file mode 100644 index 0000000..981fb9a --- /dev/null +++ b/modules/home/apps/firefox/default.nix @@ -0,0 +1,23 @@ +{ options, config, lib, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.firefox; + impermanence = config.${namespace}.impermanence; +in { + options.${namespace}.apps.firefox = with types; { + enable = mkEnableOption "firefox"; + }; + + config = mkIf cfg.enable { + #TODO: migrate to declarative config + home.persistence.${impermanence.location} = { + directories = [ + ".mozilla" + ]; + }; + + programs.firefox = { + enable = true; + }; + }; +} diff --git a/modules/home/apps/flameshot/default.nix b/modules/home/apps/flameshot/default.nix new file mode 100644 index 0000000..9a91604 --- /dev/null +++ b/modules/home/apps/flameshot/default.nix @@ -0,0 +1,38 @@ +{ options, config, lib, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.flameshot; + desktop = config.${namespace}.desktop; +in { + options.${namespace}.apps.flameshot = with types; { + enable = mkEnableOption "flameshot"; + }; + + config = mkIf cfg.enable { + services.flameshot = { + enable = true; + + settings = let c = desktop.theme.colors; in { + General = { + savePath = "Pictures/Screenshots"; + filenamePattern = "%F_%T"; + + saveAfterCopy = true; + + uiColor = "#${c.bg}"; + contrastUiColor = "#${c.accent}"; + + startupLaunch = false; + }; + }; + }; + + #TODO: relocate. target.tray required for flameshot + systemd.user.targets.tray = { + Unit = { + Description = "Home Manager System Tray"; + Requires = [ "graphical-session-pre.target" ]; + }; + }; + }; +} diff --git a/modules/home/apps/kitty/default.nix b/modules/home/apps/kitty/default.nix new file mode 100644 index 0000000..dd64af6 --- /dev/null +++ b/modules/home/apps/kitty/default.nix @@ -0,0 +1,84 @@ +{ options, config, lib, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.kitty; + desktop = config.${namespace}.desktop; +in { + options.${namespace}.apps.kitty = with types; { + enable = mkEnableOption "kitty"; + }; + + config = mkIf cfg.enable { + programs.kitty = { + enable = true; + + font = { name = "monospace"; size = 8.0; }; + + settings = let c = desktop.theme.colors; in { + foreground = "#${c.fg}"; + background = "#000000"; + + color0 = "#${c.black}"; + color1 = "#${c.red}"; + color2 = "#${c.green}"; + color3 = "#${c.yellow}"; + color4 = "#${c.blue}"; + color5 = "#${c.magenta}"; + color6 = "#${c.cyan}"; + color7 = "#${c.white}"; + + color8 = "#${c.brightBlack}"; + color9 = "#${c.brightRed}"; + color10 = "#${c.brightGreen}"; + color11 = "#${c.brightYellow}"; + color12 = "#${c.brightBlue}"; + color13 = "#${c.brightMagenta}"; + color14 = "#${c.brightCyan}"; + color15 = "#${c.brightWhite}"; + + + color124 = "#${c.brightRed}"; + color106 = "#${c.brightGreen}"; + color172 = "#${c.brightYellow}"; + color66 = "#${c.brightBlue}"; + color132 = "#${c.brightMagenta}"; + color72 = "#${c.brightCyan}"; + + color167 = "#${c.red}"; + color142 = "#${c.green}"; + color214 = "#${c.yellow}"; + color109 = "#${c.blue}"; + color175 = "#${c.magenta}"; + color108 = "#${c.cyan}"; + + color234 = "#${c.bg0}"; + color237 = "#${c.bg1}"; + color239 = "#${c.bg2}"; + color241 = "#${c.bg3}"; + color243 = "#${c.bg4}"; + color245 = "#${c.white}"; + + color246 = "#${c.fg4}"; + color248 = "#${c.fg3}"; + color250 = "#${c.fg2}"; + color223 = "#${c.fg1}"; + color229 = "#${c.fg0}"; + + color166 = "#${c.orange}"; + color208 = "#${c.brightOrange}"; + + color231 = "#${c.accent}"; + }; + + shellIntegration = { + mode = "no-cursor"; + enableBashIntegration = true; + }; + + extraConfig = '' + background_opacity 0.8 + confirm_os_window_close 0 + ''; + }; + }; +} diff --git a/modules/home/apps/mpv/default.nix b/modules/home/apps/mpv/default.nix new file mode 100644 index 0000000..e7a62db --- /dev/null +++ b/modules/home/apps/mpv/default.nix @@ -0,0 +1,20 @@ +{ options, config, lib, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.mpv; +in { + options.${namespace}.apps.mpv = with types; { + enable = mkEnableOption "mpv"; + }; + + config = mkIf cfg.enable { + programs.mpv = { + enable = true; + + config = { + screenshot-format = "png"; + screenshot-template = "~/Pictures/Screenshots/mpv/%F/%P"; + }; + }; + }; +} diff --git a/modules/home/apps/obsidian/default.nix b/modules/home/apps/obsidian/default.nix new file mode 100644 index 0000000..0815ab6 --- /dev/null +++ b/modules/home/apps/obsidian/default.nix @@ -0,0 +1,24 @@ +{ options, config, lib, pkgs, namespace, ... }: + +#NOTE: mkSimpleApp doesnt work for obsidian +# Best guess is that the unfree predicate doesnt apply to /lib +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.obsidian; + impermanence = config.${namespace}.impermanence; +in { + options.${namespace}.apps.obsidian = with types; { + enable = mkEnableOption "obsidian"; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + obsidian + ]; + + home.persistence.${impermanence.location} = { + directories = [ + ".config/Obsidian" + ]; + }; + }; +} diff --git a/modules/home/apps/prismlauncher/default.nix b/modules/home/apps/prismlauncher/default.nix new file mode 100644 index 0000000..c6830ba --- /dev/null +++ b/modules/home/apps/prismlauncher/default.nix @@ -0,0 +1,35 @@ +{ options, config, lib, pkgs, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.prismlauncher; + impermanence = config.${namespace}.impermanence; +in { + options.${namespace}.apps.prismlauncher = with types; { + enable = mkEnableOption "prismlauncher"; + + extra = { + rusherhack.enable = mkEnableOption "rusherhack"; + }; + }; + + config = mkIf cfg.enable { + home.packages = with pkgs; [ + prismlauncher + ]; + + home.persistence.${impermanence.location} = { + directories = [ + ".local/share/PrismLauncher" + ] ++ optionals cfg.extra.rusherhack.enable [ + #TODO: migrate to proper a secrets management setup, eg agenix/sops-nix + ".rusherhack" + ]; + }; + + home.file = { + "Links/PrismLauncher Instances".source = config.lib.file.mkOutOfStoreSymlink ( + "${config.home.homeDirectory}/.local/share/PrismLauncher/instances" + ); + }; + }; +} diff --git a/modules/home/apps/steam/default.nix b/modules/home/apps/steam/default.nix new file mode 100644 index 0000000..9148b9d --- /dev/null +++ b/modules/home/apps/steam/default.nix @@ -0,0 +1,30 @@ +{ options, config, osConfig, lib, pkgs, namespace, ... }: + +#NOTE: steam must be installed system-wide. +# This module does nothing unless steam is enabled at the +# system level as well. This is only a separate toggle so +# that not every user gets steam files in their home. +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.steam; + oscfg = osConfig.${namespace}.apps.steam; + impermanence = config.${namespace}.impermanence; +in { + options.${namespace}.apps.steam = with types; { + enable = mkEnableOption "steam"; + }; + + config = mkIf (cfg.enable && oscfg.enable) { + home.persistence.${impermanence.location} = { + directories = [{ + directory = ".local/share/Steam"; + method = "symlink"; + }]; + }; + + home.file = { + "Links/Steam Games".source = config.lib.file.mkOutOfStoreSymlink ( + "${config.home.homeDirectory}/.local/share/Steam/steamapps/common" + ); + }; + }; +} diff --git a/modules/home/apps/vscode/default.nix b/modules/home/apps/vscode/default.nix new file mode 100644 index 0000000..bf4b5da --- /dev/null +++ b/modules/home/apps/vscode/default.nix @@ -0,0 +1,75 @@ +{ options, config, lib, pkgs, namespace, ... }: + +with lib; with lib.${namespace}; let + cfg = config.${namespace}.apps.vscode; +in { + options.${namespace}.apps.vscode = with types; { + enable = mkEnableOption "vscode"; + }; + + config = mkIf cfg.enable { + programs.vscode = { + enable = true; + package = pkgs.vscodium; + + extensions = with pkgs.vscode-extensions; [ + jdinhlife.gruvbox + vscode-icons-team.vscode-icons + + jnoortheen.nix-ide + golang.go + ziglang.vscode-zig + ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + { + name = "shader"; + publisher = "slevesque"; + version = "1.1.5"; + sha256 = "sha256-Pf37FeQMNlv74f7LMz9+CKscF6UjTZ7ZpcaZFKtX2ZM="; + } + { + name = "yuck"; + publisher = "eww-yuck"; + version = "0.0.3"; + sha256 = "sha256-DITgLedaO0Ifrttu+ZXkiaVA7Ua5RXc4jXQHPYLqrcM="; + } + ]; + + userSettings = { + "workbench.colorTheme" = "Gruvbox Dark Medium"; + "workbench.iconTheme" = "vscode-icons"; + "window.titleBarStyle" = "custom"; + "editor.fontFamily" = "monospace"; + + "git.confirmSync" = false; + + "vsicons.dontShowNewVersionMessage" = true; + + "files.associations" = { + "*.vsh" = "glsl"; + "*.fsh" = "glsl"; + "*.gsh" = "glsl"; + }; + + # Zig + "zig.initialSetupDone" = true; + "zig.path" = ""; + "zig.formattingProvider" = "off"; + + "zig.zls.path" = ""; + "zig.zls.enableAutofix" = false; + "zig.zls.enableInlayHints" = false; + }; + }; + + xdg.desktopEntries.nixeditor = { + name = "NixOS Config"; + genericName = "Edit in VSCode"; + icon = "nix-snowflake"; + exec = "${pkgs.vscodium}/bin/codium /etc/nixos"; + }; + + home.shellAliases = { + "c" = "codium ."; + }; + }; +} |