aboutsummaryrefslogtreecommitdiff
path: root/modules/home
diff options
context:
space:
mode:
authorschererleander <leander@schererleander.de>2026-02-05 12:03:07 +0100
committerschererleander <leander@schererleander.de>2026-02-05 15:19:41 +0100
commit3b13d9a2a367db84d48940460532c17a374bb488 (patch)
tree599110a39c4baecf3991fe9a58d0103a43c38896 /modules/home
parent46aa4842b98d9215baca00060c233f386a0c2188 (diff)
feat(modules): use dendritic pattern
Diffstat (limited to 'modules/home')
-rw-r--r--modules/home/browsers/firefox/default.nix273
-rw-r--r--modules/home/cli/opencode/default.nix26
-rw-r--r--modules/home/cli/tmux/default.nix50
-rw-r--r--modules/home/editors/neovim/default.nix65
-rw-r--r--modules/home/editors/neovim/init.lua239
-rw-r--r--modules/home/editors/vscode/default.nix139
-rw-r--r--modules/home/editors/zed/default.nix52
-rw-r--r--modules/home/git/default.nix82
-rw-r--r--modules/home/gpg/default.nix62
-rw-r--r--modules/home/media/jellyfin-mpv-shim/default.nix38
-rw-r--r--modules/home/media/mpv/default.nix67
-rw-r--r--modules/home/media/nixcord/default.nix31
-rw-r--r--modules/home/media/spicetify/default.nix39
-rw-r--r--modules/home/productivity/anki/default.nix24
-rw-r--r--modules/home/productivity/latex/default.nix43
-rw-r--r--modules/home/shells/bash/default.nix40
-rw-r--r--modules/home/shells/zsh/default.nix72
-rw-r--r--modules/home/terminal/kitty.nix33
-rw-r--r--modules/home/zathura/default.nix37
19 files changed, 0 insertions, 1412 deletions
diff --git a/modules/home/browsers/firefox/default.nix b/modules/home/browsers/firefox/default.nix
deleted file mode 100644
index 2cb0656..0000000
--- a/modules/home/browsers/firefox/default.nix
+++ /dev/null
@@ -1,273 +0,0 @@
-{
- pkgs,
- inputs,
- config,
- lib,
- ...
-}:
-let
-
- cfg = config.nx.browsers.firefox;
- inherit (lib)
- mkEnableOption
- mkOption
- types
- mkIf
- optionalString
- optionalAttrs
- ;
-in
-{
-
- options.nx.browsers.firefox = {
- enable = mkEnableOption "mozilla firefox";
- blockGoogle = mkOption {
- description = "blocks google banner and other";
- type = types.bool;
- default = true;
- };
- transparent = mkOption {
- description = "make firefox transparent";
- type = types.bool;
- default = false;
- };
- cleanHome = mkOption {
- description = "clean up firefox home";
- type = types.bool;
- default = true;
- };
- hideRecommendations = mkOption {
- description = "hide firefox recommendations";
- type = types.bool;
- default = true;
- };
- disablePasswordManager = mkOption {
- description = "disable built-in browser password manager";
- type = types.bool;
- default = true;
- };
- };
-
- config = mkIf cfg.enable {
- programs.firefox = {
- enable = true;
- profiles.default = {
- extensions = {
- packages = with inputs.firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; [
- ublock-origin
- istilldontcareaboutcookies
- sponsorblock
- decentraleyes
- vimium-c
- ];
-
- force = true;
-
- settings."uBlock0@raymondhill.net".settings = {
- UserMessaging = {
- uiTheme = "dark";
- uiAccentCustom = true;
- uiAccentCustom0 = "#2C2C2C";
- cloudStorageEnabled = false;
- contextMenuEnabled = false;
- };
- # Block annoying login with google banner
- userFilters = optionalString cfg.blockGoogle ''
- ||accounts.google.com/gsi/*
- '';
- };
- };
-
- search = {
- default = "DuckDuckGo";
- engines = {
- nix-packages = {
- name = "Nix Packages";
- urls = [
- {
- template = "https://search.nixos.org/packages";
- params = [
- {
- name = "type";
- value = "packages";
- }
- {
- name = "query";
- value = "{searchTerms}";
- }
- ];
- }
- ];
-
- icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
- definedAliases = [ "@np" ];
- };
-
- nixos-wiki = {
- name = "NixOS Wiki";
- urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ];
- iconMapObj."16" = "https://wiki.nixos.org/favicon.ico";
- definedAliases = [ "@nw" ];
- };
-
- bing.metaData.hidden = true;
- google.metaData.alias = "@g";
- };
- force = true;
- };
-
- userChrome = optionalString cfg.transparent ''
- /* Hide Back, Forward, Reload, Stop, All Tabs, Firefox View buttons */
- #back-button,
- #forward-button,
- #reload-button,
- #stop-button,
- #alltabs-button,
- #firefox-view-button {
- display: none !important;
- }
-
- .titlebar-buttonbox-container {
- display: none;
- }
-
- #tabbrowser-tabs {
- border-inline: none !important;
- }
-
- /* Transparent background tabs (above url bar) */
- #navigator-toolbox {
- -moz-appearance: -moz-vibrant-titlebar !important;
- background: rgba(0, 0, 0, 0.8) !important;
- }
-
- /* Transparent background (behind url bar) */
- #nav-bar {
- background: none !important;
- box-shadow: none !important;
- border-top: 0px !important;
- }
-
- .tab-background[selected="true"] {
- background-color: #393e43 !important;
- background-image: none !important;
- }
-
- .tab-background {
- background-color: var(--background) !important;
- color: var(--foreground) !important;
- box-shadow: none !important;;
- }
-
- .tab-background[selected] {
- background-color: rgba(0, 0, 0, 0.30) !important;
- color: var(--foreground) !important;
- box-shadow: none !important;
- }
-
- /* Needed for transparency in general */
- :root {
- --tabpanel-background-color: transparent !important;
- --chrome-content-separator-color: transparent !important;
- --toolbar-bgcolor: rgba(0, 0, 0, 0.9) !important;
- --newtab-background-color: rgba(0, 0, 0, 0.9) !important;
- --newtab-background-color-secondary: transparent !important;
- --toolbar-field-background-color: rgba(120, 120, 120, 0.10) !important;
- }
- '';
- userContent = optionalString cfg.transparent ''
- @-moz-document url-prefix("about:"), url("about:home") {
- /* Transparent about:settings about:config about:policies */
- :root {
- background: rgba(0, 0, 0, 0.0) !important;
- }
- }
-
- /* Transparent about:home */
- * {
- --newtab-background-color: transparent !important;
- --newtab-background-color-secondary: transparent !important;
- }
-
- /* Transparent elements in about:* */
- * {
- --in-content-page-background: transparent !important;
- --background-color-box: rgba(0, 0, 0, 0.5) !important;
- }
- '';
- };
-
- policies = {
- DisableTelemetry = true;
- DisableFirefoxStudies = true;
- PasswordManagerEnabled = !cfg.disablePasswordManager;
- OfferToSaveLogins = !cfg.disablePasswordManager;
- DisplayBookmarksToolbar = "never";
- NoDefaultBookmarks = true;
-
- Homepage = optionalAttrs cfg.cleanHome {
- URL = "about:blank";
- Locked = true;
- StartPage = "homepage";
- };
-
- NewTabPage = !cfg.cleanHome;
-
- PictureInPicture = {
- Enabled = false;
- };
-
- EnableTrackingProtection = {
- Value = true;
- Locked = true;
- Cryptomining = true;
- Fingerprinting = true;
- };
-
- EncryptedMediaExtensions = {
- Enabled = true;
- Locked = true;
- };
-
- FirefoxHome = {
- Search = true;
- TopSites = true;
- SponsoredTopSites = !cfg.cleanHome;
- Highlights = true;
- Pocket = !cfg.cleanHome;
- SponsoredPocket = !cfg.cleanHome;
- Locked = true;
- };
-
- UserMessaging = {
- ExtensionRecommendations = !cfg.hideRecommendations;
- FeatureRecommendations = !cfg.hideRecommendations;
- Locked = true;
- MoreFromMozilla = !cfg.hideRecommendations;
- SkipOnboarding = true;
- UrlbarInterventions = !cfg.hideRecommendations;
- };
-
- Preferences = {
- # Disable fullscreen notification
- "full-screen-api.warning.timeout" = "0";
-
- # Disable annoying translation popup
- "browser.translations.automaticallyPopup" = false;
-
- # Enable all extensions automatically
- "extensions.autoDisableScopes" = 0;
-
- # Hide ctr-tab tab preview menu
- "browser.ctrlTab.sortByRecentlyUsed" = false;
- }
- // optionalAttrs cfg.transparent {
- # transparency
- "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
- "browser.tabs.allow_transparent_browser" = true;
- "gfx.webrender.all" = true;
- };
- };
- };
- };
-}
diff --git a/modules/home/cli/opencode/default.nix b/modules/home/cli/opencode/default.nix
deleted file mode 100644
index 48be861..0000000
--- a/modules/home/cli/opencode/default.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-let
- cfg = config.nx.cli.opencode;
- inherit (lib) mkEnableOption mkIf;
-in
-{
-
- options.nx.cli.opencode = {
- enable = mkEnableOption "opencode open source ai coding agent";
- };
-
- config = mkIf cfg.enable {
- programs.opencode = {
- enable = true;
- settings = {
- theme = "system";
- share = "disabled";
- autoupdate = false;
- };
- };
- };
-}
diff --git a/modules/home/cli/tmux/default.nix b/modules/home/cli/tmux/default.nix
deleted file mode 100644
index 989851c..0000000
--- a/modules/home/cli/tmux/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.nx.cli.tmux;
-
-in
-{
- options.nx.cli.tmux = {
- enable = mkEnableOption "tmux";
- };
- config = mkIf cfg.enable {
- programs.tmux = {
- enable = true;
- keyMode = "vi";
- secureSocket = true;
- terminal = "xterm-256color";
- extraConfig = ''
- unbind C-b
- set-option -g prefix C-a
- bind-key C-a send-prefix
- bind -n M-Left select-pane -L
- bind -n M-Right select-pane -R
- bind -n M-Up select-pane -U
- bind -n M-Down select-pane -D
-
- # style
- set -g status-position top
- set -g status-justify absolute-centre
- set -g status-style 'fg=color7 bg=default'
- set -g status-right ""
- # set -g status-right ' #(cd #{pane_current_path}; git rev-parse --abbrev-ref HEAD)'
- # set -g status-right ""
- set -g status-left '#S'
- set -g status-left-style 'fg=color8'
- set -g status-right-length 0
- set -g status-left-length 100
- setw -g window-status-current-style 'fg=colour6 bg=default bold'
- setw -g window-status-current-format '#I:#W '
- setw -g window-status-style 'fg=color8'
-
- set -g mouse on
- '';
- };
- };
-}
diff --git a/modules/home/editors/neovim/default.nix b/modules/home/editors/neovim/default.nix
deleted file mode 100644
index ef97f89..0000000
--- a/modules/home/editors/neovim/default.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- inherit (lib) mkEnableOption mkIf optionals;
- cfg = config.nx.editors.neovim;
-in
-{
- options.nx.editors.neovim = {
- enable = mkEnableOption "Neovim editor";
- };
-
- config = mkIf cfg.enable {
- programs.neovim = {
- defaultEditor = true;
- enable = true;
- package = pkgs.neovim-unwrapped;
- extraPackages =
- with pkgs;
- [
- tree-sitter
- git
- ripgrep
- fd
- gcc
- ]
- ++ (optionals true [ pkgs.gopls ])
- ++ (optionals true [
- pkgs.nil
- pkgs.nixfmt
- ])
- ++ (optionals true [ pkgs.lua-language-server ])
- ++ (optionals true [ pkgs.texlab ])
- ++ (optionals true [ pkgs.tinymist ]);
-
- plugins = with pkgs.vimPlugins; [
- gruvbox-nvim
- mini-starter
- gitsigns-nvim
- nvim-autopairs
- telescope-nvim
- fidget-nvim
- plenary-nvim
- nvim-treesitter.withAllGrammars
- nvim-lspconfig
- nvim-cmp
- cmp-nvim-lsp
- cmp-buffer
- cmp-path
- cmp-cmdline
- luasnip
- cmp_luasnip
- lspkind-nvim
- ];
-
- extraConfig = ''
- luafile ${./init.lua}
- '';
- };
- };
-}
diff --git a/modules/home/editors/neovim/init.lua b/modules/home/editors/neovim/init.lua
deleted file mode 100644
index 141eb3c..0000000
--- a/modules/home/editors/neovim/init.lua
+++ /dev/null
@@ -1,239 +0,0 @@
--- General settings
-vim.g.mapleader = " "
-vim.o.number = true
-vim.o.relativenumber = true
-vim.o.signcolumn = "yes"
-vim.o.termguicolors = true
-vim.o.wrap = false
-vim.o.tabstop = 2
-vim.o.shiftwidth = 2
-vim.o.updatetime = 250
-vim.o.timeoutlen = 300
-vim.o.swapfile = false
-vim.o.ignorecase = true
-vim.o.smartcase = true
-vim.o.winborder = "rounded"
-vim.o.clipboard = "unnamedplus"
-
-local map = vim.keymap.set
-map('n', '<leader>o', '<CMD>update<BAR>source %<CR>', { desc = 'Save & reload init.lua' })
-map('n', '<leader>w', '<CMD>write<CR>')
-map('n', '<leader>q', '<CMD>quit<CR>')
-
-
-require("mini.starter").setup({
- header = table.concat({
- " /l、 ",
- "(゚、 。 7 ",
- " l ~ ヽ ",
- " じしf_,)ノ ",
- }, "\n"),
- footer = "",
- content_hooks = {
- require("mini.starter").gen_hook.adding_bullet("» "),
- require("mini.starter").gen_hook.aligning("center", "center"),
- },
-})
-
-require("gitsigns").setup()
-require("nvim-autopairs").setup()
-require("fidget").setup()
-
-vim.cmd("colorscheme gruvbox")
-
-local hl = vim.api.nvim_set_hl
-hl(0, 'Normal', { bg = 'none' })
-hl(0, 'NormalFloat', { bg = 'none' })
-hl(0, 'NormalNC', { bg = 'none' })
-hl(0, 'StatusLine', { bg = 'none' })
-hl(0, 'SignColumn', { bg = 'none' })
-hl(0, "DiagnosticError", { bg = "none" })
-hl(0, "DiagnosticSignError", { bg = "none" })
-hl(0, "DiagnosticSignHint", { bg = "none" })
-hl(0, "DiagnosticSignInfo", { bg = "none" })
-hl(0, "DiagnosticSignWarn", { bg = "none" })
-
-hl(0, "Pmenu", { bg = "none" })
-hl(0, "PmenuSel", { bg = "none" })
-hl(0, "FloatBorder", { bg = "none" })
-
-local status_ok, configs = pcall(require, "nvim-treesitter.configs")
-if status_ok then
- configs.setup({
- highlight = { enable = true },
- indent = { enable = true },
- })
-end
-
-local builtin = require('telescope.builtin')
-local map = vim.keymap.set
-map('n', '<leader>ff', builtin.find_files, { desc = 'Telescope find files' })
-map('n', '<leader>fg', builtin.live_grep, { desc = 'Telescope live grep' })
-map('n', '<leader>fb', builtin.buffers, { desc = 'Telescope buffers' })
-map('n', '<leader>fh', builtin.help_tags, { desc = 'Telescope help tags' })
-
-
-local cmp = require("cmp")
-cmp.setup({
- snippet = {
- expand = function(args)
- require('luasnip').lsp_expand(args.body)
- end,
- },
- mapping = cmp.mapping.preset.insert({
- ['<C-b>'] = cmp.mapping.scroll_docs(-4),
- ['<C-f>'] = cmp.mapping.scroll_docs(4),
- ['<C-Space>'] = cmp.mapping.complete(),
- ['<C-e>'] = cmp.mapping.abort(),
- ['<CR>'] = cmp.mapping.confirm({ select = true }),
- ['<Tab>'] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_next_item()
- else
- fallback()
- end
- end, { 'i', 's' }),
- ['<S-Tab>'] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_prev_item()
- else
- fallback()
- end
- end, { 'i', 's' }),
- }),
- sources = cmp.config.sources({
- { name = 'nvim_lsp' },
- { name = 'luasnip' },
- }, {
- { name = 'buffer' },
- })
-})
-
--- Add parentheses after selecting function or method
-local cmp_autopairs = require('nvim-autopairs.completion.cmp')
-cmp.event:on(
- 'confirm_done',
- cmp_autopairs.on_confirm_done()
-)
-
-local capabilities = require('cmp_nvim_lsp').default_capabilities()
-
-vim.api.nvim_create_autocmd('LspAttach', {
- group = vim.api.nvim_create_augroup('UserLspConfig', {}),
- callback = function(ev)
- local opts = { buffer = ev.buf, noremap = true, silent = true }
- vim.keymap.set('n', '<leader>lf', function() vim.lsp.buf.format { async = true } end, opts)
- end,
-})
-
--- Format on save for all languages with LSP support
-vim.api.nvim_create_autocmd('BufWritePre', {
- group = vim.api.nvim_create_augroup('FormatOnSave', {}),
- callback = function()
- local clients = vim.lsp.get_clients({ bufnr = 0 })
- for _, client in ipairs(clients) do
- if client.supports_method('textDocument/formatting') then
- vim.lsp.buf.format({ async = false })
- return
- end
- end
- end,
-})
-
--- Native LSP setup (Neovim v0.11+)
-vim.lsp.config('nixd', {
- cmd = { 'nixd' },
- capabilities = capabilities,
- settings = {
- nixd = {
- formatting = {
- command = { "nixfmt" },
- },
- },
- },
-})
-
-vim.lsp.config('nil_ls', {
- cmd = { 'nil' },
- capabilities = capabilities,
- settings = {
- ['nil'] = {
- nix = {
- flake = {
- autoArchive = true,
- },
- },
- },
- },
-})
-
-vim.lsp.config('lua_ls', {
- cmd = { 'lua-language-server' },
- capabilities = capabilities,
- settings = {
- Lua = {
- runtime = {
- version = 'LuaJIT',
- },
- diagnostics = {
- globals = { 'vim', 'require' },
- },
- workspace = {
- library = vim.api.nvim_get_runtime_file("", true),
- },
- telemetry = {
- enable = false,
- },
- },
- },
-})
-
-vim.lsp.config('pyright', {
- cmd = { 'pyright-langserver', '--stdio' },
- capabilities = capabilities,
-})
-
-vim.lsp.config('tailwindcss', {
- cmd = { 'tailwindcss-language-server', '--stdio' },
- capabilities = capabilities,
-})
-
-vim.lsp.config('gopls', {
- cmd = { 'gopls' },
- capabilities = capabilities,
- settings = {
- gopls = {
- analyses = {
- unusedparams = true,
- unusedwrite = true,
- },
- staticcheck = true,
- },
- },
-})
-
-vim.lsp.config('rust_analyzer', {
- cmd = { 'rust-analyzer' },
- capabilities = capabilities,
-})
-
-vim.lsp.config('ts_ls', {
- cmd = { 'typescript-language-server', '--stdio' },
- capabilities = capabilities,
-})
-
--- Enable all configured servers
-vim.lsp.enable('nixd')
-vim.lsp.enable('nil_ls')
-vim.lsp.enable('lua_ls')
-vim.lsp.enable('pyright')
-vim.lsp.enable('tailwindcss')
-vim.lsp.enable('gopls')
-vim.lsp.enable('rust_analyzer')
-vim.lsp.enable('ts_ls')
-
-vim.diagnostic.config({
- virtual_text = { source = "if_many" },
- underline = true,
- severity_sort = true,
-})
diff --git a/modules/home/editors/vscode/default.nix b/modules/home/editors/vscode/default.nix
deleted file mode 100644
index 9762d92..0000000
--- a/modules/home/editors/vscode/default.nix
+++ /dev/null
@@ -1,139 +0,0 @@
-{
- config,
- lib,
- pkgs,
- ...
-}:
-
-let
- inherit (lib)
- mkEnableOption
- mkOption
- types
- mkIf
- optionals
- ;
- cfg = config.nx.editors.vscode;
-in
-{
- options.nx.editors.vscode = {
- enable = mkEnableOption "vscode editor";
-
- useVSCodium = mkOption {
- description = "Use vscodium instead of vscode";
- type = types.bool;
- default = false;
- };
-
- theme = mkOption {
- description = "Theme to use for vscode";
- type = types.enum [
- "minimal"
- "dark"
- "light"
- ];
- default = "minimal";
- };
-
- langs = {
- cmake = mkOption {
- description = "enable cmake integration";
- type = types.bool;
- default = false;
- };
- docker = mkOption {
- description = "enable docker integration";
- type = types.bool;
- default = false;
- };
- python = mkOption {
- description = "enable python integration";
- type = types.bool;
- default = false;
- };
- go = mkOption {
- description = "enable go integration";
- type = types.bool;
- default = false;
- };
- rust = mkOption {
- description = "enable rust integration";
- type = types.bool;
- default = false;
- };
- java = mkOption {
- description = "enable java integration";
- type = types.bool;
- default = false;
- };
- lua = mkOption {
- description = "enable lua integration";
- type = types.bool;
- default = false;
- };
- tailwindcss = mkOption {
- description = "enable tailwindcss integration";
- type = types.bool;
- default = false;
- };
- };
- };
-
- config = mkIf cfg.enable {
- programs.vscode = {
- enable = true;
- package = if cfg.useVSCodium then pkgs.vscodium else pkgs.vscode;
- mutableExtensionsDir = false;
- profiles.default = {
- enableUpdateCheck = true;
- enableExtensionUpdateCheck = true;
-
- userSettings = {
- "update.mode" = "none";
- "workbench.colorTheme" =
- if cfg.theme == "minimal" then
- "Minimal"
- else if cfg.theme == "dark" then
- "Default Dark Modern"
- else
- "Default Light Modern";
- "editor.fontFamily" = "monospace";
- "editor.tabSize" = 2;
- "editor.minimap.enabled" = false;
- "terminal.integrated.cursorStyle" = "underline";
- "terminal.integrated.cursorStyleInactive" = "underline";
- "terminal.integrated.fontFamily" = "monospace";
- "terminal.integrated.fontSize" = 13;
- "git.autofetch" = true;
- "window.controlsStyle" = "custom";
- };
-
- extensions =
- with pkgs.vscode-extensions;
- [
- github.copilot
- adpyke.codesnap
- esbenp.prettier-vscode
- ]
- ++ (optionals cfg.langs.cmake [ ms-vscode.cmake-tools ])
- ++ (optionals cfg.langs.docker [ ms-azuretools.vscode-docker ])
- ++ (optionals cfg.langs.python [ ms-python.python ])
- ++ (optionals cfg.langs.go [ golang.go ])
- ++ (optionals cfg.langs.rust [ rust-lang.rust-analyzer ])
- ++ (optionals cfg.langs.java [ vscjava.vscode-maven ])
- ++ (optionals cfg.langs.lua [ sumneko.lua ])
- ++ (optionals cfg.langs.tailwindcss [ bradlc.vscode-tailwindcss ])
- ++ (optionals (cfg.theme == "minimal") (
- pkgs.vscode-utils.extensionsFromVscodeMarketplace [
- {
- name = "minimalist-dark";
- publisher = "nichabosh";
- version = "1.0.0";
- sha256 = "sha256-lw+Scfada6DycLdRT2Cz+Fd12JucglIrw3uRd2ZhabQ=";
- }
- ]
- ));
- };
- };
- };
-}
diff --git a/modules/home/editors/zed/default.nix b/modules/home/editors/zed/default.nix
deleted file mode 100644
index 95c3be0..0000000
--- a/modules/home/editors/zed/default.nix
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.nx.editors.zed-editor;
-in
-{
- options.nx.editors.zed-editor = {
- enable = mkEnableOption "zed editor";
- };
-
- config = mkIf cfg.enable {
- programs.zed-editor = {
- enable = true;
- extensions = [ "nix" ];
- userSettings = {
- telemetry = {
- metrics = false;
- };
- title_bar = {
- show_onboarding_banner = false;
- show_project_items = false;
- show_branch_name = false;
- show_user_menu = false;
- };
- tab_bar.show = false;
- toolbar.quick_actions = false;
- status_bar."experimental.show" = false;
- project_panel = {
- dock = "right";
- default_width = 400;
- hide_root = true;
- auto_fold_dirs = false;
- starts_open = false;
- git_status = false;
- sticky_scroll = false;
- scrollbar.show = "never";
- indent_guides.show = "never";
- };
- outline_panel = {
- default_width = 300;
- indent_guides.show = "never";
- };
- file_finder.modal_max_width = "large";
- };
- };
- };
-}
diff --git a/modules/home/git/default.nix b/modules/home/git/default.nix
deleted file mode 100644
index 2d0855e..0000000
--- a/modules/home/git/default.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-let
- cfg = config.nx.programs.git;
- inherit (lib)
- mkEnableOption
- mkOption
- mkIf
- types
- ;
-in
-{
- options.nx.programs.git = {
- enable = mkEnableOption "git";
-
- userName = mkOption {
- description = "Git username";
- type = types.str;
- default = "Leander Scherer";
- };
-
- userEmail = mkOption {
- description = "Git email";
- type = types.str;
- default = "leander@schererleander.de";
- };
-
- signKey = mkOption {
- description = "Sign key";
- type = types.nullOr types.str;
- default = "A3502B180BC1D41A";
- };
-
- signFlavor = mkOption {
- description = "Sign key flavor";
- type = types.enum [
- "ssh"
- "openpgp"
- ];
- default = "openpgp";
- };
- };
-
- config = mkIf cfg.enable {
- programs.git = {
- enable = true;
-
- signing = mkIf (cfg.signKey != null) {
- key = cfg.signKey;
- signByDefault = true;
- };
-
- ignores = [
- "*~"
- ".DS_Store"
- ".direnv"
- ".envrc"
- ];
-
- settings = {
- user.name = cfg.userName;
- user.email = cfg.userEmail;
- help.autocorrect = 20;
- alias = {
- st = "status";
- co = "checkout";
- br = "branch";
- };
- pull.rebase = true;
- gpg.format = cfg.signFlavor;
- url."git@github.com:".insteadOf = "https://github.com";
- };
- };
- programs.diff-highlight = {
- enable = true;
- enableGitIntegration = true;
- };
- };
-}
diff --git a/modules/home/gpg/default.nix b/modules/home/gpg/default.nix
deleted file mode 100644
index af08ae3..0000000
--- a/modules/home/gpg/default.nix
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-
-let
- inherit (lib)
- mkOption
- types
- mkIf
- ;
- cfg = config.nx.programs.gpg;
-in
-{
-
- options.nx.programs.gpg = {
- enable = mkOption {
- description = "GNU Privacy Guard";
- type = types.bool;
- default = config.nx.programs.git.enable;
- };
-
- gpgKey = mkOption {
- description = "default gpg key";
- type = types.nullOr types.str;
- default = "";
- };
-
- pinentry = mkOption {
- description = "pinentry flavor";
- type = types.enum [
- "curses"
- "gnome3"
- "qt"
- "mac"
- ];
- default = if pkgs.stdenv.isDarwin then "mac" else "curses";
- };
- };
-
- config = lib.mkIf cfg.enable {
- programs.gpg = {
- enable = true;
- #settings.default-key = mkIf (cfg.gpgKey != null) cfg.gpgKey;
- };
-
- services.gpg-agent = {
- enable = true;
- pinentry.package =
- if cfg.pinentry == "gnome3" then
- pkgs.pinentry-gnome3
- else if cfg.pinentry == "qt" then
- pkgs.pinentry-qt
- else if cfg.pinentry == "mac" then
- pkgs.pinentry_mac
- else
- pkgs.pinentry-curses;
- };
- };
-}
diff --git a/modules/home/media/jellyfin-mpv-shim/default.nix b/modules/home/media/jellyfin-mpv-shim/default.nix
deleted file mode 100644
index 6594a70..0000000
--- a/modules/home/media/jellyfin-mpv-shim/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ config, lib, ... }:
-let
- cfg = config.nx.media.jellyfin-mpv-shim;
- inherit (lib) mkEnableOption mkIf optionalAttrs;
-in
-{
- options.nx.media.jellyfin-mpv-shim = {
- enable = mkEnableOption "Jellyfin MPV Shim";
- };
-
- config = mkIf cfg.enable {
- systemd.user.services.jellyfin-mpv-shim.Service.Environment = [
- "ENABLE_HDR_WSI=1"
- ];
-
- services.jellyfin-mpv-shim = {
- enable = true;
- settings = {
- player_name = "mpv-shim";
- allow_transcode_to_h256 = true;
- };
- mpvConfig = {
- vo = "gpu-next";
- gpu-api = "vulkan";
- target-colorspace-hint = "yes";
- target-peak = 500;
- }
- // (optionalAttrs false {
- target-trc = "pq";
- target-prim = "bt.2020";
- #target-peak = 406;
- #tone-mapping = "spline";
- #tone-mapping-mode = "rgb";
- inverse-tone-mapping = "yes";
- });
- };
- };
-}
diff --git a/modules/home/media/mpv/default.nix b/modules/home/media/mpv/default.nix
deleted file mode 100644
index f6ac360..0000000
--- a/modules/home/media/mpv/default.nix
+++ /dev/null
@@ -1,67 +0,0 @@
-{ config, lib, ... }:
-let
- cfg = config.nx.media.mpv;
- inherit (lib)
- mkEnableOption
- types
- optional
- mkIf
- mkOption
- ;
-in
-{
- options.nx.media.mpv = {
- enable = mkEnableOption "a free, open source, and cross-platform media player";
- hdrExpansion = mkEnableOption "SDR to HDR inverse tone mapping";
- targetPeak = mkOption {
- description = "Peak brightness of the display";
- type = types.int;
- default = 500; # For MO27Q28G
- };
- };
- config = mkIf cfg.enable {
- programs.mpv = {
- enable = true;
- config = {
- vo = "gpu-next";
- gpu-api = "vulkan";
- target-peak = cfg.targetPeak;
- target-colorspace-hint = "yes";
- };
- profiles = {
- # Dolby Vision profile
- "DOVI" = {
- profile-restore = "copy";
- profile-cond = "p[\"video-dec-params/gamma\"] == \"auto\"";
- target-trc = "pq";
- target-prim = "bt.2020";
- target-peak = cfg.targetPeak;
- tone-mapping-mode = "auto";
- };
-
- # SDR look while in HDR
- "SDR" = {
- profile-restore = "copy";
- target-trc = "pq";
- target-prim = "bt.2020";
- target-peak = 207;
- tone-mapping = "bt.2390";
- tone-mapping-mode = "rgb";
- inverse-tone-mapping = "yes";
- };
-
- # SDR to HDR inverse tone mapping
- "SDR_HDR_EFFECT" = {
- profile-restore = "copy";
- target-trc = "pq";
- target-prim = "bt.2020";
- target-peak = 406;
- tone-mapping = "spline";
- tone-mapping-mode = "rgb";
- inverse-tone-mapping = "yes";
- };
- };
- defaultProfiles = optional cfg.hdrExpansion "HDR_MODE:SDR_HDR_EFFECT";
- };
- };
-}
diff --git a/modules/home/media/nixcord/default.nix b/modules/home/media/nixcord/default.nix
deleted file mode 100644
index e2390a3..0000000
--- a/modules/home/media/nixcord/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-let
- cfg = config.nx.media.nixcord;
- inherit (lib) mkEnableOption mkIf;
-in
-{
- options.nx.media.nixcord = {
- enable = mkEnableOption "nixcord and setup";
- };
- config = mkIf cfg.enable {
- programs.nixcord = {
- enable = true;
- config = {
- themeLinks = [
- "https://refact0r.github.io/system24/theme/system24.theme.css"
- ];
- frameless = true;
- plugins = {
- alwaysAnimate.enable = false;
- imageLink.enable = true;
- imageZoom.enable = true;
- translate.enable = true;
- };
- };
- };
- };
-}
diff --git a/modules/home/media/spicetify/default.nix b/modules/home/media/spicetify/default.nix
deleted file mode 100644
index e72f7f3..0000000
--- a/modules/home/media/spicetify/default.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- config,
- lib,
- pkgs,
- inputs,
- ...
-}:
-
-let
- spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system};
- cfg = config.nx.media.spicetify;
- inherit (lib) mkEnableOption mkIf;
-in
-{
- options.nx.media.spicetify = {
- enable = mkEnableOption "Command-line tool to customize the official Spotify client";
- };
-
- config = mkIf cfg.enable {
- nixpkgs.config.allowUnfree = true;
- programs.spicetify = {
- enable = true;
- enabledSnippets = with spicePkgs.snippets; [
- pointer
- sonicDancing
- modernScrollbar
- nyanCatProgressBar
- declutterNowPlayingBar
- ];
-
- enabledExtensions = with spicePkgs.extensions; [
- keyboardShortcut
- ];
-
- theme = spicePkgs.themes.sleek;
- colorScheme = "Coral";
- };
- };
-}
diff --git a/modules/home/productivity/anki/default.nix b/modules/home/productivity/anki/default.nix
deleted file mode 100644
index 6a95f83..0000000
--- a/modules/home/productivity/anki/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-let
- cfg = config.nx.productivity.anki;
- inherit (lib) mkEnableOption mkIf;
-in
-{
- options.nx.productivity.anki = {
- enable = mkEnableOption "Anki free and open-source flashcard program";
- };
- config = mkIf cfg.enable {
- programs.anki = {
- enable = true;
- #style = "native";
- #addons = with pkgs.ankiAddons; [
- # anki-connect
- # review-heatmap
- #];
- };
- };
-}
diff --git a/modules/home/productivity/latex/default.nix b/modules/home/productivity/latex/default.nix
deleted file mode 100644
index 6f37138..0000000
--- a/modules/home/productivity/latex/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- config,
- options,
- pkgs,
- lib,
- ...
-}:
-let
- cfg = config.nx.productivity.latex;
- inherit (lib) mkEnableOption mkIf;
-in
-{
- options.nx.productivity.latex = {
- enable = mkEnableOption "LaTeX typesetting system";
- };
-
- config = mkIf cfg.enable {
- programs.texlive = {
- enable = true;
- # See https://mynixos.com/search?q=texlivepackages.collection for more collections
- # and https://mynixos.com/search?q=texlivepackages for more individual packages.
- extraPackages = tpkgs: {
- inherit (tpkgs)
- collection-basic
- collection-latex
- collection-latexrecommended
- biblatex
- ;
- };
- };
-
- home.packages = with pkgs; [
- biber
- ];
-
- programs.pandoc = {
- enable = true;
- defaults = {
- pdf-engine = "pdfetex";
- };
- };
- };
-}
diff --git a/modules/home/shells/bash/default.nix b/modules/home/shells/bash/default.nix
deleted file mode 100644
index d224442..0000000
--- a/modules/home/shells/bash/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.nx.shells.bash;
-in
-{
- options.nx.shells.bash = {
- enable = mkEnableOption "bash shell";
- };
-
- config = mkIf cfg.enable {
- home.packages = with pkgs; [
- zoxide
- ];
-
- programs.bash = {
- enable = true;
- enableCompletion = true;
- initExtra = ''
- # view man pages with nvim
- export MANPAGER="nvim +Man!"
-
- # vim keybindings
- set -o vi
-
- # zoxide smarter cd command
- eval "$(zoxide init bash)"
- '';
- shellAliases = {
- ls = "ls --color=auto";
- };
- };
- };
-}
diff --git a/modules/home/shells/zsh/default.nix b/modules/home/shells/zsh/default.nix
deleted file mode 100644
index 5da67c9..0000000
--- a/modules/home/shells/zsh/default.nix
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- config,
- pkgs,
- lib,
- ...
-}:
-
-let
- inherit (lib) mkEnableOption mkIf;
- cfg = config.nx.shells.zsh;
-in
-{
- options.nx.shells.zsh = {
- enable = mkEnableOption "zsh shell";
- };
-
- config = mkIf cfg.enable {
- home.packages = with pkgs; [
- zoxide
- ];
-
- programs.zsh = {
- enable = true;
- enableCompletion = true;
- autosuggestion.enable = true;
- syntaxHighlighting.enable = true;
- initContent = ''
- # view man pages with nvim
- export MANPAGER="nvim +Man!"
-
- # Directory completion with trailing slash
- zstyle ':completion:*' list-dirs-first true
- zstyle ':completion:*' special-dirs true
- zstyle ':completion:*' squeeze-slashes true
- zstyle ':completion:*' add-space false
-
- # Case-insensitive completion
- zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
- # vim keybindings
- bindkey -v
-
- # Auto cd - type directory name to cd into it
- setopt AUTO_CD
-
- # Complete .. to ../ for directory navigation
- setopt AUTO_PARAM_SLASH
-
- # zoxide smarter cmd command
- eval "$(zoxide init zsh)"
- '';
- shellAliases = {
- ls = "ls --color=auto";
- };
-
- zplug = {
- enable = true;
- plugins = [
- { name = "mafredri/zsh-async"; }
- {
- name = "sindresorhus/pure";
- tags = [
- "as:theme"
- "use:pure.zsh"
- ];
- }
- { name = "zdharma-continuum/fast-syntax-highlighting"; }
- { name = "zsh-users/zsh-autosuggestions"; }
- ];
- };
- };
- };
-}
diff --git a/modules/home/terminal/kitty.nix b/modules/home/terminal/kitty.nix
deleted file mode 100644
index 35d5648..0000000
--- a/modules/home/terminal/kitty.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-
-{
- options.nx.terminal.kitty.enable = lib.mkEnableOption "Enable kitty";
- config = lib.mkIf config.nx.terminal.kitty.enable {
- programs.kitty = {
- enable = true;
- shellIntegration.enableFishIntegration = true;
- font = {
- name = "monospace";
- size = 11;
- };
- settings = {
- cursor_shape = "underline";
- cursor_blink_interval = "-1";
- cursor_stop_blinking_after = "15.0";
-
- background_opacity = "0.3";
-
- enable_audio_bell = false;
- bell_on_tab = false;
-
- window_border_width = "0";
- window_margin_width = "4";
- window_padding_width = "5";
- };
- };
- };
-}
diff --git a/modules/home/zathura/default.nix b/modules/home/zathura/default.nix
deleted file mode 100644
index 2334fc7..0000000
--- a/modules/home/zathura/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-let
- cfg = config.nx.programs.zathura;
- inherit (lib) mkEnableOption mkIf;
-in
-{
- options.nx.programs.zathura = {
- enable = mkEnableOption "zathura document viewer";
- };
-
- config = mkIf cfg.enable {
- programs.zathura = {
- enable = true;
- options = {
- recolor-lightcolor = "rgba(0, 0, 0, 0)";
- recolor-darkcolor = "rgba(255, 255, 255, 1)";
- recolor = true;
- adjust-open = "width";
- guioptions = "none";
- zoom-center = true;
- page-padding = 0;
- pages-per-row = 1;
- scroll-page-aware = true;
- };
-
- mappings = {
- i = "recolor";
- j = "navigate previous";
- k = "navigate next";
- };
- };
- };
-}