diff --git a/devices/desktop/default.nix b/devices/desktop/default.nix index ac77b11..22b7291 100644 --- a/devices/desktop/default.nix +++ b/devices/desktop/default.nix @@ -1,6 +1,7 @@ -{ config, pkgs }: { +{ config, ... }: { imports = [ ../../modules/system + ../../modules/games ./hardware-config.nix ]; diff --git a/devices/surface/default.nix b/devices/surface/default.nix index 97162f2..29944b5 100644 --- a/devices/surface/default.nix +++ b/devices/surface/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs }: { +{ ... }: { imports = [ ../../modules/system diff --git a/flake.nix b/flake.nix index 5ac2b94..eb0f5a3 100644 --- a/flake.nix +++ b/flake.nix @@ -12,7 +12,7 @@ }; }; - outputs = { nixpkgs, home-manager }: + outputs = { nixpkgs, home-manager, ... }: let x86 = "x86_64-linux"; in { diff --git a/modules/games/default.nix b/modules/games/default.nix new file mode 100644 index 0000000..5278419 --- /dev/null +++ b/modules/games/default.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + steam + prismlauncher-qt5 + lutris + ]; +} diff --git a/modules/home/art/default.nix b/modules/home/art/default.nix new file mode 100644 index 0000000..de80793 --- /dev/null +++ b/modules/home/art/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + calibre + krita + ]; +} diff --git a/modules/home/browser/default.nix b/modules/home/browser/default.nix new file mode 100644 index 0000000..f7aecca --- /dev/null +++ b/modules/home/browser/default.nix @@ -0,0 +1,5 @@ +{ ... }: { + programs.firefox = { + enable = true; + }; +} diff --git a/modules/home/chat/default.nix b/modules/home/chat/default.nix new file mode 100644 index 0000000..986d19a --- /dev/null +++ b/modules/home/chat/default.nix @@ -0,0 +1,5 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + signal-desktop + ]; +} diff --git a/modules/home/default.nix b/modules/home/default.nix index 8c9e300..931220b 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -1,5 +1,25 @@ -{ config, pkgs }: { +{ ... }: { imports = [ - + ./art + ./browser + ./chat + ./discord + ./editor + ./email + ./gdb + ./git + ./gnome + ./media + ./terminal + ./utils ]; + + home = { + username = "twoneis"; + homeDirectory = "/home/twoneis"; + + stateVersion = "22.11"; + }; + + programs.home-manager.enable = true; } diff --git a/modules/home/discord/default.nix b/modules/home/discord/default.nix new file mode 100644 index 0000000..2ca130f --- /dev/null +++ b/modules/home/discord/default.nix @@ -0,0 +1,6 @@ +{ ... }: { + programs.discoss = { + enable = true; + css = import ./rosepine.css; + }; +} diff --git a/modules/home/discord/rosepine.css b/modules/home/discord/rosepine.css new file mode 100644 index 0000000..bb6bab9 --- /dev/null +++ b/modules/home/discord/rosepine.css @@ -0,0 +1,117 @@ +" +/** +* @name Rosé Pine +* @author blueb +* @authorId 403390454273409028 +* @version 3.0.9 +* @description All natural pine, faux fur and a bit of soho vibes for the classy minimalist. +* @source https://github.com/rose-pine/discord +* @updateUrl https://github.com/rose-pine/discord/blob/rose-pine.theme.css +*/ + +@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&display=swap'); + +.theme-dark { + --background-primary: #26233a; + --background-secondary: #1f1d2e; + --background-secondary-alt: #26233a; + --channeltextarea-background: #2c2842; + --background-tertiary: #191724; + --background-accent: #ebbcba; + --text-normal: #dad7fd; + --text-spotify: #9ccfd8; + --text-muted: #4f4c58; + --text-link: #31748f; + --background-floating: #1f1d2e; + --header-primary: #e0def4; + --header-secondary: #9ccfd8; + --header-spotify: #9ccfd8; + --interactive-normal: #e0def4; + --interactive-hover: #c4a7e7; + --interactive-active: #e0def4; + --ping: #eb6f92; + --background-modifier-selected: #26233ab4; + --scrollbar-thin-thumb: #191724; + --scrollbar-thin-track: transparent; + --scrollbar-auto-thumb: #191724; + --scrollbar-auto-track: transparent; +} + +.theme-light { + --background-primary: #faf4ed; + --background-secondary: #fffaf3; + --background-secondary-alt: #f2e9de; + --channeltextarea-background: #f2e9de; + --background-tertiary: #f2e9de; + --background-accent: #d7827e; + --text-normal: #575279; + --text-spotify: #575279; + --text-muted: #6e6a86; + --text-link: #286983; + --background-floating: #f2e9de; + --header-primary: #575279; + --header-secondary: #575279; + --header-spotify: #56949f; + --interactive-normal: #575279; + --interactive-hover: #6e6a86; + --interactive-active: #575279; +} + +body { + --font-display: Fira Code; +} + +.body-2wLx-E, .headerTop-3GPUSF, .bodyInnerWrapper-2bQs1k, .footer-3naVBw { + background-color: var(--background-tertiary); +} + +.title-17SveM, .name-3Uvkvr{ + font-size: 14px; +} + +.panels-3wFtMD { + background-color: var(--background-secondary); +} + +.username-h_Y3Us { + font-family: var(--font-display); + font-size: 14px; +} + +.peopleColumn-1wMU14, .panels-j1Uci_, .peopleColumn-29fq28, .peopleList-2VBrVI, .content-2hZxGK, .header-1zd7se, .root-g14mjS .small-23Atuv .fullscreenOnMobile-ixj0e3{ + background-color: var(--background-secondary); +} + +.textArea-12jD-V, .lookBlank-3eh9lL, .threadSidebar-1o3BTy, .scrollableContainer-2NUZem, .perksModalContentWrapper-3RHugb, .theme-dark .footer-31IekZ, .theme-light .footer-31IekZ{ + background-color: var(--background-tertiary); +} + +.numberBadge-2s8kKX, .base-PmTxvP, .baseShapeRound-1Mm1YW, .bar-30k2ka, .unreadMentionsBar-1Bu1dC, .mention-1f5kbO, .active-1SSsBb, .disableButton-220a9y { + background-color: var(--ping) !important; +} + +.lookOutlined-3sRXeN.colorRed-1TFJan, .lookOutlined-3sRXeN.colorRed-1TFJan { + color: var(--ping) !important; +} + +.header-3OsQeK, .container-ZMc96U { + box-shadow: none!important; + border: none!important; +} + +.content-1gYQeQ, .layout-1qmrhw, .inputDefault-3FGxgL, .input-2g-os5, .input-2z42oC, .role-2TIOKu, .searchBar-jGtisZ { + border-radius: 6px; +} + +.layout-1qmrhw:hover, .content-1gYQeQ:hover { + background-color: var(--background-modifier-selected)!important; +} + +.container-3wLKDe { + background-color: var(--background-secondary) !important; +} + +.title-31SJ6t { + background-color: var(--background-primary) !important; +} +" diff --git a/modules/home/editor/default.nix b/modules/home/editor/default.nix new file mode 100644 index 0000000..898e93f --- /dev/null +++ b/modules/home/editor/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + nil + marksman + ]; + + programs.helix = { + enable = true; + defaultEditor = true; + settings = import ./helix-config.nix; + themes = ./helix-theme.nix; + }; +} diff --git a/modules/home/editor/helix-config.nix b/modules/home/editor/helix-config.nix new file mode 100644 index 0000000..800b65b --- /dev/null +++ b/modules/home/editor/helix-config.nix @@ -0,0 +1,26 @@ +{ + theme = "rosepine"; + + editor = { + line-number = "relative"; + cursorline = true; + auto-format = true; + soft-wrap.enable = true; + + whitespace.render = "all"; + + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + + }; + + keys.normal = { + h = "move_char_left"; + t = "move_line_up"; + n = "move_line_down"; + s = "move_char_right"; + }; +} diff --git a/modules/home/editor/helix-theme.nix b/modules/home/editor/helix-theme.nix new file mode 100644 index 0000000..a217ef4 --- /dev/null +++ b/modules/home/editor/helix-theme.nix @@ -0,0 +1,193 @@ +# Author: Rosé Pine +# Upstream: https://github.com/rose-pine/helix +# Contributing: +# Please submit changes to https://github.com/rose-pine/helix. +# The Rosé Pine team will update Helix, including you as a co-author. +{ + rosepine = let + base = "#191724"; + surface = "#1f1d2e"; + overlay = "#26233a"; + muted = "#6e6a86"; + subtle = "#908caa"; + text = "#e0def4"; + love = "#eb6f92"; + love_10 = "#311f30"; + gold = "#f6c177"; + gold_10 = "#30282c"; + rose = "#ebbcba"; + rose_10 = "#2f2834"; + pine = "#31748f"; + pine_10 = "#1a2030"; + foam = "#9ccfd8"; + foam_10 = "#252937"; + iris = "#c4a7e7"; + iris_10 = "#2b2539"; + highlight_low = "#21202e"; + highlight_med = "#403d52"; + highlight_high = "#524f67"; + in { + + "ui.background" = { bg = base; }; + "ui.background.separator" = { bg = base; }; + + "ui.cursor" = { fg = text; bg = highlight_high; }; + # "ui.cursor.select" = {}; + "ui.cursor.match" = { fg = text; bg = highlight_med; }; + "ui.cursor.primary" = { fg = text; bg = muted; }; + + # "ui.gutter" = {}; + # "ui.gutter.selected" = {}; + + "ui.linenr" = { fg = muted; }; + "ui.linenr.selected" = { fg = text; }; + + "ui.statusline" = { fg = subtle; bg = surface; }; + "ui.statusline.inactive" = { fg = muted; bg = surface; }; + "ui.statusline.normal" = { fg = rose; bg = rose_10; }; + "ui.statusline.insert" = { fg = foam; bg = foam_10; }; + "ui.statusline.select" = { fg = iris; bg = iris_10; }; + # "ui.statusline.separator" = {}; + + "ui.popup" = { bg = surface; }; + "ui.popup.info" = { bg = surface; }; + + "ui.window" = { fg = overlay; bg = base; }; + "ui.help" = { fg = subtle; bg = overlay; }; + + "ui.text" = { fg = text; }; + "ui.text.focus" = { bg = overlay; }; + "ui.text.info" = { fg = subtle; }; + + "ui.virtual.ruler" = { bg = overlay; }; + "ui.virtual.whitespace" = { fg = highlight_high; }; + "ui.virtual.indent-guide" = { fg = muted; }; + "ui.virtual.inlay-hint" = { fg = subtle; }; + + "ui.menu" = { fg = subtle; bg = surface; }; + "ui.menu.selected" = { fg = text; }; + "ui.menu.scroll" = { fg = muted; bg = highlight_med; }; + + "ui.selection" = { bg = overlay; }; + "ui.selection.primary" = { bg = highlight_med; }; + + "ui.cursorline.primary" = { bg = highlight_low; }; + "ui.cursorline.secondary" = { bg = surface; }; + + "warning" = gold; + "error" = love; + "info" = foam; + "hint" = iris; + "debug" = rose; + + "diagnostic" = { underline = { color = subtle; style = "curl"; }; }; + "diagnostic.hint" = { underline = { color = iris; style = "curl"; }; }; + "diagnostic.info" = { underline = { color = foam; style = "curl"; }; }; + "diagnostic.warning" = { underline = { color = gold; style = "curl"; }; }; + "diagnostic.error" = { underline = { color = love; style = "curl"; }; }; + "special" = rose; + + "attribute" = "iris"; + + "type" = foam; + # "type.builtin" = ""; + + "constructor" = foam; + + "constant" = foam; + "constant.builtin" = rose; + # "constant.builtin.boolean" = ""; + "constant.character" = gold; + "constant.character.escape" = pine; + "constant.numeric" = gold; + # "constant.numeric.integer" = ""; + # "constant.numeric.float" = ""; + + "string" = gold; + # "string.regexp" = ""; + # "string.special" = ""; + # "string.special.path" = ""; + # "string.special.url" = ""; + # "string.special.symbol" = ""; + + "comment" = { fg = muted; modifiers = ["italic"];}; + # "comment.line" = ""; + # "comment.block" = ""; + # "comment.block.documenation" = ""; + + "variable" = text; + "variable.builtin" = love; + "variable.parameter" = iris; + # "variable.other" = ""; + # "variable.other.member" = ""; + + "label" = foam; + + "punctuation" = subtle; + # "punctuation.delimiter" = ""; + # "punctuation.bracket" = ""; + # "punctuation.special" = ""; + + "keyword" = pine; + # "keyword.control" = ""; + # "keyword.control.conditional" = ""; + # "keyword.control.repeat" = ""; + # "keyword.control.import" = ""; + # "keyword.control.return" = ""; + # "keyword.control.exception" = ""; + "keyword.operator" = subtle; + # "keyword.directive" = ""; + # "keyword.function" = ""; + # "keyword.storage" = ""; + # "keyword.storage.type" = ""; + # "keyword.storage.modifier" = ""; + + "operator" = subtle; + + "function" = rose; # maybe pine; + "function.builtin" = love; + # "function.method" = ""; + # "function.macro" = ""; + # "function.special" = ""; + + "tag" = foam; + + "namespace" = iris; + + "markup.heading.marker" = muted; + "markup.heading" = { fg = iris; modifiers = ["bold"]; }; + "markup.heading.1" = { fg = "iris"; modifiers = ["bold"]; }; + "markup.heading.2" = { fg = foam; modifiers = ["bold"]; }; + "markup.heading.3" = { fg = rose; modifiers = ["bold"]; }; + "markup.heading.4" = { fg = gold; modifiers = ["bold"]; }; + "markup.heading.5" = { fg = pine; modifiers = ["bold"]; }; + "markup.heading.6" = { fg = foam; modifiers = ["bold"]; }; + # "markup.heading.completion" = ""; + # "markup.heading.hover" = ""; + "markup.list" = muted; + # "markup.list.unnumbered" = ""; + # "markup.list.numbered" = ""; + "markup.bold" = { modifiers = ["bold"]; }; + "markup.italic" = { modifiers = ["italic"]; }; + "markup.link" = iris; + "markup.link.url" = { fg = iris; underline = { color = iris; style = "line"; }; } ; + "markup.link.label" = subtle; + "markup.link.text" = text; + "markup.quote" = subtle; + "markup.raw" = subtle; + # "markup.raw.inline" = {}; + # "markup.raw.inline.completion" = {}; + # "markup.raw.inline.hover" = {}; + # "markup.raw.block" = {}; + # "markup.normal" = ""; + # "markup.normal.completion" = ""; + # "markup.normal.hover" = ""; + + "diff" = overlay; + "diff.plus" = foam; + "diff.minus" = love; + "diff.delta" = highlight_high; + # "diff.delta.moved" = ""; + + }; +} diff --git a/modules/home/email/default.nix b/modules/home/email/default.nix new file mode 100644 index 0000000..be3adab --- /dev/null +++ b/modules/home/email/default.nix @@ -0,0 +1,5 @@ +{ ... }: { + programs.thunderbird = { + enable = true; + }; +} diff --git a/modules/home/gdb/default.nix b/modules/home/gdb/default.nix new file mode 100644 index 0000000..ec9b295 --- /dev/null +++ b/modules/home/gdb/default.nix @@ -0,0 +1,12 @@ +{ ... }: { + home.file = { + ".gef.rc" = { + source = ./gef-for-c; + # source = ./gef-for-asm; + }; + ".gdbinit" = { + source = ./gdb-for-c; + # source = ./gdb-for-asm; + }; + }; +} diff --git a/modules/home/gdb/gdb-for-asm b/modules/home/gdb/gdb-for-asm new file mode 100644 index 0000000..cc8c745 --- /dev/null +++ b/modules/home/gdb/gdb-for-asm @@ -0,0 +1,4 @@ +source /usr/share/gef/gef.py +set debuginfod enabled off +set disassembly-flavor att + diff --git a/modules/home/gdb/gdb-for-c b/modules/home/gdb/gdb-for-c new file mode 100644 index 0000000..0821213 --- /dev/null +++ b/modules/home/gdb/gdb-for-c @@ -0,0 +1,5 @@ +source /usr/share/gef/gef.py +set debuginfod enabled off +set disassembly-flavor intel +set detach-on-fork off +set follow-fork-mode child diff --git a/modules/home/gdb/gef-for-c b/modules/home/gdb/gef-for-c new file mode 100644 index 0000000..3fba1db --- /dev/null +++ b/modules/home/gdb/gef-for-c @@ -0,0 +1,126 @@ +[context] +clear_screen = True +enable = True +grow_stack_down = False +ignore_registers = +layout = source args extra +libc_args = False +libc_args_path = +nb_lines_backtrace = 10 +nb_lines_backtrace_before = 2 +nb_lines_code = 6 +nb_lines_code_prev = 3 +nb_lines_stack = 10 +nb_lines_threads = -1 +peek_calls = True +peek_ret = True +redirect = +show_opcodes_size = 0 +show_registers_raw = False +show_source_code_variable_values = True +show_stack_raw = False + +[dereference] +max_recursion = 7 + +[entry-break] +entrypoint_symbols = main _main __libc_start_main __uClibc_main start _start + +[gef] +autosave_breakpoints_file = +debug = False +disable_color = False +extra_plugins_dir = +follow_child = True +readline_compat = False +show_deprecation_warnings = True +tempdir = /tmp/gef + +[got] +function_not_resolved = yellow +function_resolved = green + +[heap-analysis-helper] +check_double_free = True +check_free_null = False +check_heap_overlap = True +check_uaf = True +check_weird_free = True + +[heap-chunks] +peek_nb_byte = 16 + +[hexdump] +always_show_ascii = False + +[highlight] +regex = False + +[pattern] +length = 1024 + +[pcustom] +max_depth = 4 +struct_path = /tmp/gef/structs +structure_name = bold blue +structure_size = green +structure_type = bold red + +[process-search] +ps_command = /usr/bin/ps auxww + +[syscall-args] +path = /tmp/gef/syscall-tables + +[theme] +address_code = red +address_heap = green +address_stack = pink +context_title_line = gray +context_title_message = cyan +default_title_line = gray +default_title_message = cyan +dereference_base_address = cyan +dereference_code = gray +dereference_register_value = bold blue +dereference_string = yellow +disassemble_current_instruction = green +old_context = gray +registers_register_name = blue +registers_value_changed = bold red +source_current_line = green +table_heading = blue + +[trace-run] +max_tracing_recursion = 1 +tracefile_prefix = ./gef-trace- + +[aliases] +ctx = context +telescope = dereference +flags = edit-flags +start = entry-break +fmtstr-helper = format-string-helper +hl = highlight +highlight set = highlight add +hla = highlight add +hlc = highlight clear +highlight ls = highlight list +hll = highlight list +highlight delete = highlight remove +highlight del = highlight remove +highlight unset = highlight remove +highlight rm = highlight remove +hlr = highlight remove +nb = name-break +pattern offset = pattern search +pf = print-format +ps = process-search +status = process-status +lookup = scan +grep = search-pattern +xref = search-pattern +sc-get = shellcode get +sc-search = shellcode search +screen-setup = tmux-setup + diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix new file mode 100644 index 0000000..2cdd7b4 --- /dev/null +++ b/modules/home/git/default.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: { + home.packages = [ pkgs.gh ]; + + programs.git = { + enable = true; + userName = "twoneis"; + userEmail = "sanjay29@sapura.de"; + }; +} diff --git a/modules/home/gnome/default.nix b/modules/home/gnome/default.nix new file mode 100644 index 0000000..31a60cf --- /dev/null +++ b/modules/home/gnome/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: { + # Enable the GNOME Desktop Environment. + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + # Don't pull unnecessary packages + services.gnome.core-utilities.enable = false; + environment.gnome.excludePackages = [ pkgs.gnome-tour ]; + + home.packages = with pkgs; [ + gnomeExtensions.paperwm + gnome.gnome-characters + ]; +} diff --git a/modules/home/media/default.nix b/modules/home/media/default.nix new file mode 100644 index 0000000..deac40c --- /dev/null +++ b/modules/home/media/default.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + vlc + spotify + image-roll + ]; +} diff --git a/modules/home/terminal/alacritty-config.nix b/modules/home/terminal/alacritty-config.nix new file mode 100644 index 0000000..1292a2d --- /dev/null +++ b/modules/home/terminal/alacritty-config.nix @@ -0,0 +1,56 @@ +{ + colors = { + primary = { + background = "0x191724"; + foreground = "0xe0def4"; + }; + cursor = { + text = "0xe0def4"; + cursor = "0x524f67"; + }; + vi_mode_cursor = { + text = "0xe0def4"; + cursor = "0x524f67"; + }; + line_indicator = { + foreground = "None"; + background = "None"; + }; + selection = { + text = "0xe0def4"; + background = "0x403d52"; + }; + normal = { + black = "0x26233a"; + red = "0xeb6f92"; + green = "0x31748f"; + yellow = "0xf6c177"; + blue = "0x9ccfd8"; + magenta = "0xc4a7e7"; + cyan = "0xebbcba"; + white = "0xe0def4"; + }; + bright = { + black = "0x6e6a86"; + red = "0xeb6f92"; + green = "0x31748f"; + yellow = "0xf6c177"; + blue = "0x9ccfd8"; + magenta = "0xc4a7e7"; + cyan = "0xebbcba"; + white = "0xe0def4"; + }; + hints = { + start = { + foreground = "#908caa"; + background = "#1f1d2e"; + }; + end = { + foreground = "#6e6a86"; + background = "#1f1d2e"; + }; + }; + }; + + window.decorations = "None"; +} diff --git a/modules/home/terminal/default.nix b/modules/home/terminal/default.nix new file mode 100644 index 0000000..ea95587 --- /dev/null +++ b/modules/home/terminal/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + man-pages + man-pages-posix + ]; + + programs.alacritty = { + enable = true; + settings = import ./alacritty-config.nix; + }; +} diff --git a/modules/home/utils/default.nix b/modules/home/utils/default.nix new file mode 100644 index 0000000..514d5b1 --- /dev/null +++ b/modules/home/utils/default.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + man-pages + man-pages-posix + gnome.nautilus + ]; + + programs.bottom = { + enable = true; + }; +} diff --git a/modules/system/default.nix b/modules/system/default.nix index 59b360e..dd078d5 100644 --- a/modules/system/default.nix +++ b/modules/system/default.nix @@ -2,13 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ pkgs }: { - - imports = - [ # Include the results of the hardware scan. - ./packages.nix - ]; - +{ pkgs, ... }: { # Enable nix flakes nix.settings.experimental-features = [ "nix-command" "flakes" ]; @@ -49,13 +43,6 @@ # Remove XTerm services.xserver.excludePackages = [ pkgs.xterm ]; - # Enable the GNOME Desktop Environment. - services.xserver.displayManager.gdm.enable = true; - services.xserver.desktopManager.gnome.enable = true; - # Don't pull unnecessary packages - services.gnome.core-utilities.enable = false; - environment.gnome.excludePackages = [ pkgs.gnome-tour ]; - # Configure keymap in X11 services.xserver = { layout = "us"; diff --git a/modules/system/packages.nix b/modules/system/packages.nix deleted file mode 100644 index f749d13..0000000 --- a/modules/system/packages.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ pkgs }: { - environment.systemPackages = with pkgs; [ - alacritty - git - gh - man-pages - man-pages-posix - bottom - firefox - gnome.nautilus - vlc - image-roll - ]; -}