aboutsummaryrefslogtreecommitdiff
path: root/modules/home/apps
diff options
context:
space:
mode:
authorCaroline Larimore <caroline@larimo.re>2025-04-14 19:01:38 -0700
committerCaroline Larimore <caroline@larimo.re>2025-04-14 19:01:38 -0700
commite8077fde966e051fc449fffcfa061c7f7edc47b0 (patch)
treea0b1ce60f2718f90c64e924ed8df8d5d4f0d2289 /modules/home/apps
parente486d896215e7ef04438809952bc7317512d5765 (diff)
migration: finalize
Diffstat (limited to 'modules/home/apps')
-rw-r--r--modules/home/apps/cmus/default.nix77
-rw-r--r--modules/home/apps/default.nix46
-rw-r--r--modules/home/apps/discord/default.nix57
-rw-r--r--modules/home/apps/fastfetch/assets/mem.pngbin0 -> 185313 bytes
-rw-r--r--modules/home/apps/fastfetch/assets/nonon.pngbin0 -> 108707 bytes
-rw-r--r--modules/home/apps/fastfetch/assets/ryo.pngbin0 -> 128547 bytes
-rw-r--r--modules/home/apps/fastfetch/default.nix81
-rw-r--r--modules/home/apps/feh/default.nix15
-rw-r--r--modules/home/apps/firefox/default.nix23
-rw-r--r--modules/home/apps/flameshot/default.nix38
-rw-r--r--modules/home/apps/kitty/default.nix84
-rw-r--r--modules/home/apps/mpv/default.nix20
-rw-r--r--modules/home/apps/obsidian/default.nix24
-rw-r--r--modules/home/apps/prismlauncher/default.nix35
-rw-r--r--modules/home/apps/steam/default.nix30
-rw-r--r--modules/home/apps/vscode/default.nix75
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
new file mode 100644
index 0000000..999c4dd
--- /dev/null
+++ b/modules/home/apps/fastfetch/assets/mem.png
Binary files differ
diff --git a/modules/home/apps/fastfetch/assets/nonon.png b/modules/home/apps/fastfetch/assets/nonon.png
new file mode 100644
index 0000000..57056ce
--- /dev/null
+++ b/modules/home/apps/fastfetch/assets/nonon.png
Binary files differ
diff --git a/modules/home/apps/fastfetch/assets/ryo.png b/modules/home/apps/fastfetch/assets/ryo.png
new file mode 100644
index 0000000..852df37
--- /dev/null
+++ b/modules/home/apps/fastfetch/assets/ryo.png
Binary files differ
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 .";
+ };
+ };
+}