From 03f03eee9f8417b540f0d1b0d1e8a4626d455ac3 Mon Sep 17 00:00:00 2001 From: schererleander Date: Mon, 3 Nov 2025 00:19:09 +0100 Subject: chore: reorganize modules into subcategories --- modules/default.nix | 10 ++ modules/desktop/default.nix | 9 ++ modules/desktop/dunst.nix | 43 ++++++ modules/desktop/hyprland/hyprlock.nix | 113 +++++++++++++++ modules/desktop/sway/default.nix | 117 +++++++++++++++ modules/desktop/sway/swayidle.nix | 45 ++++++ modules/desktop/sway/swaylock.nix | 26 ++++ modules/desktop/waybar.nix | 130 +++++++++++++++++ modules/home-manager/anki.nix | 20 --- modules/home-manager/default.nix | 29 ---- modules/home-manager/dev.nix | 45 ------ modules/home-manager/dunst.nix | 41 ------ modules/home-manager/firefox.nix | 245 ------------------------------- modules/home-manager/foot.nix | 57 -------- modules/home-manager/gh.nix | 10 -- modules/home-manager/git.nix | 34 ----- modules/home-manager/gnome-dconf.nix | 25 ---- modules/home-manager/gpg.nix | 22 --- modules/home-manager/hyprlock.nix | 113 --------------- modules/home-manager/latex.nix | 29 ---- modules/home-manager/neovim/default.nix | 39 ----- modules/home-manager/neovim/init.lua | 217 ---------------------------- modules/home-manager/nixcord.nix | 26 ---- modules/home-manager/opencode.nix | 19 --- modules/home-manager/spicetify.nix | 33 ----- modules/home-manager/sway.nix | 107 -------------- modules/home-manager/swayidle.nix | 29 ---- modules/home-manager/tmux.nix | 42 ------ modules/home-manager/typst.nix | 16 --- modules/home-manager/vscode.nix | 60 -------- modules/home-manager/waybar.nix | 147 ------------------- modules/home-manager/zathura.nix | 31 ---- modules/home-manager/zsh.nix | 67 --------- modules/nixos/default.nix | 5 - modules/nixos/gnome.nix | 29 ---- modules/programs/anki.nix | 21 +++ modules/programs/default.nix | 20 +++ modules/programs/firefox.nix | 248 ++++++++++++++++++++++++++++++++ modules/programs/foot.nix | 60 ++++++++ modules/programs/gh.nix | 17 +++ modules/programs/git.nix | 39 +++++ modules/programs/gpg.nix | 25 ++++ modules/programs/latex.nix | 32 +++++ modules/programs/neovim/default.nix | 42 ++++++ modules/programs/neovim/init.lua | 217 ++++++++++++++++++++++++++++ modules/programs/nixcord.nix | 32 +++++ modules/programs/opencode.nix | 22 +++ modules/programs/spicetify.nix | 38 +++++ modules/programs/tmux.nix | 45 ++++++ modules/programs/typst.nix | 19 +++ modules/programs/vscode.nix | 63 ++++++++ modules/programs/zathura.nix | 34 +++++ modules/programs/zsh.nix | 74 ++++++++++ modules/services/default.nix | 15 ++ modules/services/mullvad.nix | 16 +++ modules/services/pipewire.nix | 19 +++ modules/services/polkit.nix | 25 ++++ modules/services/printer.nix | 21 +++ modules/system/default.nix | 10 ++ modules/system/localisation.nix | 23 +++ modules/system/network.nix | 14 ++ modules/system/nix-options.nix | 18 +++ modules/system/users.nix | 22 +++ 63 files changed, 1724 insertions(+), 1537 deletions(-) create mode 100644 modules/default.nix create mode 100644 modules/desktop/default.nix create mode 100644 modules/desktop/dunst.nix create mode 100644 modules/desktop/hyprland/hyprlock.nix create mode 100644 modules/desktop/sway/default.nix create mode 100644 modules/desktop/sway/swayidle.nix create mode 100644 modules/desktop/sway/swaylock.nix create mode 100644 modules/desktop/waybar.nix delete mode 100644 modules/home-manager/anki.nix delete mode 100644 modules/home-manager/default.nix delete mode 100644 modules/home-manager/dev.nix delete mode 100644 modules/home-manager/dunst.nix delete mode 100644 modules/home-manager/firefox.nix delete mode 100644 modules/home-manager/foot.nix delete mode 100644 modules/home-manager/gh.nix delete mode 100644 modules/home-manager/git.nix delete mode 100644 modules/home-manager/gnome-dconf.nix delete mode 100644 modules/home-manager/gpg.nix delete mode 100644 modules/home-manager/hyprlock.nix delete mode 100644 modules/home-manager/latex.nix delete mode 100644 modules/home-manager/neovim/default.nix delete mode 100644 modules/home-manager/neovim/init.lua delete mode 100644 modules/home-manager/nixcord.nix delete mode 100644 modules/home-manager/opencode.nix delete mode 100644 modules/home-manager/spicetify.nix delete mode 100644 modules/home-manager/sway.nix delete mode 100644 modules/home-manager/swayidle.nix delete mode 100644 modules/home-manager/tmux.nix delete mode 100644 modules/home-manager/typst.nix delete mode 100644 modules/home-manager/vscode.nix delete mode 100644 modules/home-manager/waybar.nix delete mode 100644 modules/home-manager/zathura.nix delete mode 100644 modules/home-manager/zsh.nix delete mode 100644 modules/nixos/default.nix delete mode 100644 modules/nixos/gnome.nix create mode 100644 modules/programs/anki.nix create mode 100644 modules/programs/default.nix create mode 100644 modules/programs/firefox.nix create mode 100644 modules/programs/foot.nix create mode 100644 modules/programs/gh.nix create mode 100644 modules/programs/git.nix create mode 100644 modules/programs/gpg.nix create mode 100644 modules/programs/latex.nix create mode 100644 modules/programs/neovim/default.nix create mode 100644 modules/programs/neovim/init.lua create mode 100644 modules/programs/nixcord.nix create mode 100644 modules/programs/opencode.nix create mode 100644 modules/programs/spicetify.nix create mode 100644 modules/programs/tmux.nix create mode 100644 modules/programs/typst.nix create mode 100644 modules/programs/vscode.nix create mode 100644 modules/programs/zathura.nix create mode 100644 modules/programs/zsh.nix create mode 100644 modules/services/default.nix create mode 100644 modules/services/mullvad.nix create mode 100644 modules/services/pipewire.nix create mode 100644 modules/services/polkit.nix create mode 100644 modules/services/printer.nix create mode 100644 modules/system/default.nix create mode 100644 modules/system/localisation.nix create mode 100644 modules/system/network.nix create mode 100644 modules/system/nix-options.nix create mode 100644 modules/system/users.nix (limited to 'modules') diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..97c1bb5 --- /dev/null +++ b/modules/default.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + imports = [ + ./desktop + ./programs + ./services + #./system + ]; +} diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix new file mode 100644 index 0000000..636e917 --- /dev/null +++ b/modules/desktop/default.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + imports = [ + ./sway + ./dunst.nix + ./waybar.nix + ]; +} diff --git a/modules/desktop/dunst.nix b/modules/desktop/dunst.nix new file mode 100644 index 0000000..46e6445 --- /dev/null +++ b/modules/desktop/dunst.nix @@ -0,0 +1,43 @@ +{ + config, + lib, + pkgs, + username, + ... +}: + +{ + options.nx.desktop.dunst.enable = lib.mkEnableOption "Enable dunst notification"; + config = lib.mkIf config.nx.desktop.dunst.enable { + home-manager.users.${username} = { + home.packages = with pkgs; [ + libnotify + ]; + + services.dunst = { + enable = true; + settings = { + global = { + font = "monospace 10"; + offset = "(15, 15)"; + frame_width = 0; + }; + urgency_low = { + foreground = "#FFFFFF"; + background = "#000000E6"; + }; + + urgency_normal = { + foreground = "#FFFFFF"; + background = "#000000E6"; + }; + + urgency_critical = { + foreground = "#FFFFFF"; + background = "#000000E6"; + }; + }; + }; + }; + }; +} diff --git a/modules/desktop/hyprland/hyprlock.nix b/modules/desktop/hyprland/hyprlock.nix new file mode 100644 index 0000000..425f83c --- /dev/null +++ b/modules/desktop/hyprland/hyprlock.nix @@ -0,0 +1,113 @@ +{ + config, + lib, + username, + ... +}: + +{ + options.nx.desktop.hyprlock.enable = lib.mkEnableOption "Hyprlock is a screen locker for Hyprland."; + config = lib.mkIf config.nx.desktop.hyprlock.enable { + programs.hyprlock = { + enable = true; + settings = { + general = { + immediate_render = true; + }; + + background = [ + { + monitor = ""; + path = "/etc/nixos/images/pond.jpg"; + } + ]; + + input-field = [ + { + monitor = ""; + size = "300, 30"; + outline_thickness = 0; + dots_size = 0.25; + dots_spacing = 0.55; + dots_center = true; + dots_rounding = -1; + outer_color = "rgba(242, 243, 244, 0)"; + inner_color = "rgba(242, 243, 244, 0)"; + font_color = "rgba(242, 243, 244, 0.75)"; + fade_on_empty = false; + placeholder_text = ""; + hide_input = false; + check_color = "rgba(204, 136, 34, 0)"; + fail_color = "rgba(204, 34, 34, 0)"; + fail_text = "$FAIL ($ATTEMPTS)"; + fail_transition = 300; + capslock_color = -1; + numlock_color = -1; + bothlock_color = -1; + invert_numlock = false; + swap_font_color = false; + position = "0, -468"; + halign = "center"; + valign = "center"; + } + ]; + + label = [ + { + monitor = ""; + text = ''cmd[update:1000] echo "$(date +"%A, %B %d")"''; + color = "rgba(242, 243, 244, 0.75)"; + font_size = 20; + position = "0, 405"; + halign = "center"; + valign = "center"; + } + { + monitor = ""; + text = ''cmd[update:1000] echo "$(date +"%k:%M")"''; + color = "rgba(242, 243, 244, 0.75)"; + font_size = 93; + position = "0, 310"; + halign = "center"; + valign = "center"; + } + { + monitor = ""; + text = "${username}"; + color = "rgba(242, 243, 244, 0.75)"; + font_size = 12; + position = "0, -407"; + halign = "center"; + valign = "center"; + } + { + monitor = ""; + text = "Enter Password"; + color = "rgba(242, 243, 244, 0.75)"; + font_size = 10; + position = "0, -438"; + halign = "center"; + valign = "center"; + } + ]; + + image = [ + { + monitor = ""; + path = "/etc/nixos/images/pf.jpg"; + border_color = "0xffdddddd"; + border_size = 0; + size = 73; + rounding = -1; + rotate = 0; + reload_time = -1; + reload_cmd = ""; + position = "0, -353"; + halign = "center"; + valign = "center"; + } + ]; + }; + }; + }; +} diff --git a/modules/desktop/sway/default.nix b/modules/desktop/sway/default.nix new file mode 100644 index 0000000..7de94a6 --- /dev/null +++ b/modules/desktop/sway/default.nix @@ -0,0 +1,117 @@ +{ + config, + username, + lib, + pkgs, + ... +}: + +let + mod = config.home-manager.users.${username}.wayland.windowManager.sway.config.modifier; +in +{ + imports = [ + ./swayidle.nix + ./swaylock.nix + ]; + + options.nx.desktop.sway.enable = lib.mkEnableOption "Enable sway and setup"; + config = lib.mkIf config.nx.desktop.sway.enable { + home-manager.users.${username} = { + home.packages = with pkgs; [ + wmenu + swaybg + sway-contrib.grimshot + wl-clipboard + xdg-utils + ]; + + wayland.windowManager.sway = { + enable = true; + systemd = { + enable = true; + xdgAutostart = true; + }; + config = { + input = { + "*" = { + xkb_layout = "de"; + }; + }; + + output = { + DP-1 = { + resolution = "1920x1080@240Hz"; + bg = "/etc/nixos/images/pond.jpg fill"; + }; + }; + + gaps = { + inner = 15; + }; + + window = { + titlebar = false; + border = 0; + }; + + modifier = "Mod4"; + + keybindings = lib.mkOptionDefault { + "${mod}+q" = "kill"; + "${mod}+Shift+s" = "exec grimshot savecopy area"; + "XF86AudioPlay" = "exec playerctl play-pause"; + "XF86AudioPrev" = "exec playerctl previous"; + "XF86AudioNext" = "exec playerctl next"; + "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ +5%"; + "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ -5%"; + "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_DEVICE@ toggle"; + }; + + menu = "${pkgs.wmenu}/bin/wmenu-run -b -N 000000E6"; + terminal = "${pkgs.foot}/bin/foot"; + defaultWorkspace = "workspace number 1"; + + bars = [ + { + "command" = "${pkgs.waybar}/bin/waybar"; + } + ]; + }; + checkConfig = false; + wrapperFeatures.base = true; + wrapperFeatures.gtk = true; + }; + + home.sessionVariables = { + XDG_CURRENT_DESKTOP = "sway"; + XDG_SCREENSHOTS_DIR = "~/Pictures/Screenshots/"; + }; + + gtk = { + enable = true; + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; + gtk3.extraConfig = { + Settings = '' + gtk-application-prefer-dark-theme=1 + ''; + }; + gtk4.extraConfig = { + Settings = '' + gtk-application-prefer-dark-theme=1 + ''; + }; + }; + + home.pointerCursor = { + gtk.enable = true; + name = "Adwaita"; + package = pkgs.adwaita-icon-theme; + size = 24; + }; + }; + }; +} diff --git a/modules/desktop/sway/swayidle.nix b/modules/desktop/sway/swayidle.nix new file mode 100644 index 0000000..0708abc --- /dev/null +++ b/modules/desktop/sway/swayidle.nix @@ -0,0 +1,45 @@ +{ + config, + lib, + pkgs, + username, + ... +}: + +{ + options.nx.desktop.swayidle.enable = lib.mkEnableOption "Enable swayidle configuration" // { + default = config.nx.desktop.sway.enable; + }; + config = lib.mkIf config.nx.desktop.swayidle.enable { + home-manager.users."${username}" = { + services.swayidle = { + enable = true; + timeouts = [ + { + timeout = 300; + command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; + } + { + timeout = 600; + command = "${pkgs.sway}/bin/swaymsg 'output * dpms off"; + resumeCommand = "${pkgs.sway}/bin/swaymsg output * dpms on"; + } + { + timeout = 900; + command = "${pkgs.systemd}/bin/systemctl suspend"; + } + ]; + events = [ + { + event = "after-resume"; + command = "${pkgs.sway}/bin/swaymsg output * dpms on"; + } + { + event = "before-sleep"; + command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; + } + ]; + }; + }; + }; +} diff --git a/modules/desktop/sway/swaylock.nix b/modules/desktop/sway/swaylock.nix new file mode 100644 index 0000000..66e418b --- /dev/null +++ b/modules/desktop/sway/swaylock.nix @@ -0,0 +1,26 @@ +{ + config, + username, + lib, + ... +}: + +{ + options.nx.desktop.swaylock.enable = lib.mkEnableOption "Enable and setup swaylock" // { + default = config.nx.desktop.sway.enable; + }; + config = lib.mkIf config.nx.desktop.swaylock.enable { + home-manager.users."${username}" = { + programs.swaylock = { + enable = true; + settings = { + font = "monospace 12"; + color = "00000000"; + ring-color = "ffffffff"; + key-hl-color = "ff0000ff"; + bs-hl-color = "ff0000ff"; + }; + }; + }; + }; +} diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix new file mode 100644 index 0000000..874b50f --- /dev/null +++ b/modules/desktop/waybar.nix @@ -0,0 +1,130 @@ +{ + config, + lib, + username, + ... +}: + +{ + options.nx.desktop.waybar.enable = lib.mkEnableOption "Enable and configure Waybar"; + config = lib.mkIf config.nx.desktop.waybar.enable { + home-manager.users."${username}" = { + programs.waybar = { + enable = true; + settings = { + mainBar = { + height = 32; + layer = "top"; + position = "bottom"; + modules-center = [ "mpris" ]; + modules-left = [ "sway/workspaces" ]; + modules-right = [ + "privacy" + "tray" + "battery" + "pulseaudio" + "network" + "bluetooth" + "clock" + ]; + + mpris = { + format = "{title}"; + tooltip-format = "{artist} - {album}"; + }; + + tray = { + spacing = 10; + }; + + privacy = { + icon-size = 16; + }; + + cpu = { + format = "󰻠"; + tooltip = true; + }; + + memory = { + format = ""; + }; + + temperature = { + critical-threshold = 80; + format = ""; + }; + + network = { + format-disconnect = "󰌙"; + format-ethernet = "󰌘"; + format-wifi = "{icon}"; + format-icons = [ + "󰤟" + "󰤢" + "󰤥" + "󰤨" + ]; + + tooltip-format-wifi = "{essid} | {signalStrength}%"; + tooltip-format-ethernet = "{ifname}"; + }; + + bluetooth = { + format = " {status}"; + format-disabled = ""; + format-no-controller = ""; + format-connected = " {device_alias}"; + tooltip = false; + }; + + clock = { + format-alt = "{:%Y-%m-%d}"; + tooltip-format = "{:%Y-%m-%d | %H:%M}"; + }; + + pulseaudio = { + format = "{icon}"; + format-icons = { + default = [ + "" + "" + "" + ]; + }; + tooltip-format = "{desc} | {volume}%"; + }; + }; + }; + + style = '' + * { + border: none; + border-radius: 0; + font-family: monospace; + font-size: 12px; + background: none; + } + + window#waybar { + background: rgba(0, 0, 0, 0.9); + } + + #workspaces button { + padding-left: 5px; + padding-right: 5px; + } + + #workspaces button.focused { + font-weight: bold; + } + + #clock, #pulseaudio, #tray, #network, #battery, #bluetooth, #cpu, #memory, #temperature, #custom-expand, #group-expand { + padding-left: 10px; + padding-right: 10px; + } + ''; + }; + }; + }; +} diff --git a/modules/home-manager/anki.nix b/modules/home-manager/anki.nix deleted file mode 100644 index c3b77ea..0000000 --- a/modules/home-manager/anki.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - options.anki.enable = lib.mkEnableOption "Enable anki"; - config = lib.mkIf config.anki.enable { - #Wait for stable release - #programs.anki = { - #enable = true; - #style = "native"; - #addons = with pkgs.ankiAddons; [ - # anki-connect - # review-heatmap - #]; - #}; - }; -} diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix deleted file mode 100644 index fc88217..0000000 --- a/modules/home-manager/default.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ ... }: - -{ - imports = [ - ./git.nix - ./gh.nix - ./zsh.nix - ./tmux.nix - ./neovim/default.nix - ./zathura.nix - ./vscode.nix - ./gpg.nix - ./nixcord.nix - ./foot.nix - ./dev.nix - ./sway.nix - ./waybar.nix - ./firefox.nix - ./spicetify.nix - ./anki.nix - ./dunst.nix - ./hyprlock.nix - ./swayidle.nix - #./opencode.nix - ./latex.nix - ./typst.nix - ./gnome-dconf.nix - ]; -} diff --git a/modules/home-manager/dev.nix b/modules/home-manager/dev.nix deleted file mode 100644 index 4a9ef23..0000000 --- a/modules/home-manager/dev.nix +++ /dev/null @@ -1,45 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - - options.dev.enable = lib.mkEnableOption "Development tools"; - config = lib.mkIf config.dev.enable { - zsh.enable = true; - git.enable = true; - gh.enable = true; - #opencode.enable = true; - vscode.enable = true; - neovim.enable = true; - tmux.enable = true; - gpg.enable = true; - - home.packages = with pkgs; [ - zoxide - - fzf - ffmpeg - imagemagick - gh - ripgrep - - gcc - maven - cmake - jdk - go - lua - nodejs - tailwindcss - - nerd-fonts.symbols-only - - jetbrains.idea-community - opencode - ]; - }; -} diff --git a/modules/home-manager/dunst.nix b/modules/home-manager/dunst.nix deleted file mode 100644 index da6b539..0000000 --- a/modules/home-manager/dunst.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - options.dunst.enable = lib.mkEnableOption "Enable dunst notification"; - config = lib.mkIf config.dunst.enable { - home.packages = with pkgs; [ - libnotify - ]; - - services.dunst = { - enable = true; - settings = { - global = { - font = "monospace 10"; - offset = "(15, 15)"; - frame_width = 0; - }; - urgency_low = { - foreground = "#FFFFFF"; - background = "#000000E6"; - }; - - urgency_normal = { - foreground = "#FFFFFF"; - background = "#000000E6"; - }; - - urgency_critical = { - foreground = "#FFFFFF"; - background = "#000000E6"; - }; - }; - - }; - }; -} diff --git a/modules/home-manager/firefox.nix b/modules/home-manager/firefox.nix deleted file mode 100644 index 861394d..0000000 --- a/modules/home-manager/firefox.nix +++ /dev/null @@ -1,245 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: - -{ - options.firefox.enable = lib.mkEnableOption "Setup firefox"; - config = lib.mkIf config.firefox.enable { - programs.firefox = { - enable = true; - profiles.default = { - extensions = { - packages = with inputs.firefox-addons.packages.${pkgs.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 = '' - ||accounts.google.com/gsi/* - ''; - }; - }; - - search.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" ]; - }; - - startpage = { - name = "Startpage"; - urls = [ - { - template = "https://www.startpage.com/sp/search?query={searchTerms}"; - } - ]; - icon = "https://www.startpage.com/favicon.ico"; - definedAliases = [ "@s" ]; - }; - - bing.metaData.hidden = true; - google.metaData.alias = "@g"; - }; - - search.default = "startpage"; - - settings = { - }; - - userChrome = '' - /* 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 = '' - @-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 = false; - OfferToSaveLogins = false; - DisablePocket = true; - DisplayBookmarksToolbar = "never"; - NoDefaultBookmarks = true; - - EnableTrackingProtection = { - Value = true; - Locked = true; - Cryptomining = true; - Fingerprinting = true; - }; - - EncryptedMediaExtensions = { - Enabled = true; - Locked = true; - }; - - FirefoxHome = { - Search = true; - TopSites = true; - SponsoredTopSites = false; - Highlights = true; - Pocket = false; - SponsoredPocket = false; - Snippets = false; - Locked = true; - }; - - UserMessaging = { - ExtensionRecommendations = false; - FeatureRecommendations = false; - Locked = true; - MoreFromMozilla = false; - SkipOnboarding = true; - UrlbarInterventions = false; - WhatsNew = false; - }; - - Preferences = { - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - "browser.toolbars.bookmarks.visibility" = "never"; - - # 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; - - # Hide pip controls - "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; - - # Set homepage - "browser.startup.homepage" = "about:blank"; - "browser.newtab.url" = "about:blank"; - "browser.newtabpage.enabled" = false; - - # transparency - "browser.tabs.allow_transparent_browser" = true; - "gfx.webrender.all" = true; - }; - }; - }; - }; -} diff --git a/modules/home-manager/foot.nix b/modules/home-manager/foot.nix deleted file mode 100644 index 573af7f..0000000 --- a/modules/home-manager/foot.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - options.foot.enable = lib.mkEnableOption "Enable foot terminal"; - config = lib.mkIf config.foot.enable { - home.packages = with pkgs; [ - nerd-fonts.space-mono - ]; - - programs.foot = { - enable = true; - settings = { - main = { - pad = "10x10"; - font = "SpaceMono Nerd Font Mono:size=10"; - line-height = 12; - }; - - cursor = { - style = "underline"; - unfocused-style = "unchanged"; - blink = true; - }; - - colors = { - alpha = 0.9; - # Gruvbox Theme - background = "000000"; - foreground = "ebdbb2"; - - regular0 = "282828"; - regular1 = "cc241d"; - regular2 = "98971a"; - regular3 = "d79921"; - regular4 = "458588"; - regular5 = "b16286"; - regular6 = "689d6a"; - regular7 = "a89984"; - - bright0 = "928374"; - bright1 = "fb4934"; - bright2 = "b8bb26"; - bright3 = "fabd2f"; - bright4 = "83a598"; - bright5 = "d3869b"; - bright6 = "8ec07c"; - bright7 = "ebdbb2"; - }; - }; - }; - }; -} diff --git a/modules/home-manager/gh.nix b/modules/home-manager/gh.nix deleted file mode 100644 index 0b0ad6b..0000000 --- a/modules/home-manager/gh.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ config, lib, ... }: - -{ - options.gh.enable = lib.mkEnableOption "Setup gh"; - config = lib.mkIf config.gh.enable { - programs.gh = { - enable = true; - }; - }; -} diff --git a/modules/home-manager/git.nix b/modules/home-manager/git.nix deleted file mode 100644 index 825ef7d..0000000 --- a/modules/home-manager/git.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - options.git.enable = lib.mkEnableOption "Enable git"; - config = lib.mkIf config.git.enable { - programs.git = { - enable = true; - userName = "schererleander"; - userEmail = "leander@schererleander.de"; - aliases = { - st = "status"; - co = "checkout"; - br = "branch"; - }; - signing = { - key = "506793F115464BB4"; - signByDefault = true; - }; - ignores = [ - "*~" - ".DS_Store" - ]; - diff-highlight.enable = true; - extraConfig = { - pull.rebase = true; - url."git@github.com:".insteadOf = "https://github.com"; - }; - }; - }; -} diff --git a/modules/home-manager/gnome-dconf.nix b/modules/home-manager/gnome-dconf.nix deleted file mode 100644 index be2d0bd..0000000 --- a/modules/home-manager/gnome-dconf.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -{ - options.gnome-dconf.enable = lib.mkEnableOption "Enable gnome dconf settings"; - config = lib.mkIf config.gnome-dconf.enable { - home.packages = with pkgs; [ - ]; - dconf = { - settings = { - "org/gnome/shell" = { - enabled-extensions = [ - ]; - }; - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - }; - }; - }; - }; -} diff --git a/modules/home-manager/gpg.nix b/modules/home-manager/gpg.nix deleted file mode 100644 index 4c54efb..0000000 --- a/modules/home-manager/gpg.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -let - pinentryPackage = if pkgs.stdenv.isDarwin then pkgs.pinentry_mac else pkgs.pinentry-curses; - pinentryProgram = if pkgs.stdenv.isDarwin then "pinentry-mac" else "pinentry-curses"; -in -{ - options.gpg.enable = lib.mkEnableOption "Setup gpg and agent"; - config = lib.mkIf config.gpg.enable { - programs.gpg.enable = true; - services.gpg-agent = { - enable = true; - pinentry.package = pinentryPackage; - pinentry.program = pinentryProgram; - }; - }; -} diff --git a/modules/home-manager/hyprlock.nix b/modules/home-manager/hyprlock.nix deleted file mode 100644 index 99810d2..0000000 --- a/modules/home-manager/hyprlock.nix +++ /dev/null @@ -1,113 +0,0 @@ -{ - config, - lib, - username, - ... -}: - -{ - options.hyprlock.enable = lib.mkEnableOption "Hyprlock is a screen locker for Hyprland."; - config = lib.mkIf config.hyprlock.enable { - programs.hyprlock = { - enable = true; - settings = { - general = { - immediate_render = true; - }; - - background = [ - { - monitor = ""; - path = "/etc/nixos/images/pond.jpg"; - } - ]; - - input-field = [ - { - monitor = ""; - size = "300, 30"; - outline_thickness = 0; - dots_size = 0.25; - dots_spacing = 0.55; - dots_center = true; - dots_rounding = -1; - outer_color = "rgba(242, 243, 244, 0)"; - inner_color = "rgba(242, 243, 244, 0)"; - font_color = "rgba(242, 243, 244, 0.75)"; - fade_on_empty = false; - placeholder_text = ""; - hide_input = false; - check_color = "rgba(204, 136, 34, 0)"; - fail_color = "rgba(204, 34, 34, 0)"; - fail_text = "$FAIL ($ATTEMPTS)"; - fail_transition = 300; - capslock_color = -1; - numlock_color = -1; - bothlock_color = -1; - invert_numlock = false; - swap_font_color = false; - position = "0, -468"; - halign = "center"; - valign = "center"; - } - ]; - - label = [ - { - monitor = ""; - text = ''cmd[update:1000] echo "$(date +"%A, %B %d")"''; - color = "rgba(242, 243, 244, 0.75)"; - font_size = 20; - position = "0, 405"; - halign = "center"; - valign = "center"; - } - { - monitor = ""; - text = ''cmd[update:1000] echo "$(date +"%k:%M")"''; - color = "rgba(242, 243, 244, 0.75)"; - font_size = 93; - position = "0, 310"; - halign = "center"; - valign = "center"; - } - { - monitor = ""; - text = "${username}"; - color = "rgba(242, 243, 244, 0.75)"; - font_size = 12; - position = "0, -407"; - halign = "center"; - valign = "center"; - } - { - monitor = ""; - text = "Enter Password"; - color = "rgba(242, 243, 244, 0.75)"; - font_size = 10; - position = "0, -438"; - halign = "center"; - valign = "center"; - } - ]; - - image = [ - { - monitor = ""; - path = "/etc/nixos/images/pf.jpg"; - border_color = "0xffdddddd"; - border_size = 0; - size = 73; - rounding = -1; - rotate = 0; - reload_time = -1; - reload_cmd = ""; - position = "0, -353"; - halign = "center"; - valign = "center"; - } - ]; - }; - }; - }; -} diff --git a/modules/home-manager/latex.nix b/modules/home-manager/latex.nix deleted file mode 100644 index e479d78..0000000 --- a/modules/home-manager/latex.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -{ - options.latex.enable = lib.mkEnableOption "Setup latex"; - config = lib.mkIf config.latex.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-manager/neovim/default.nix b/modules/home-manager/neovim/default.nix deleted file mode 100644 index 230d27e..0000000 --- a/modules/home-manager/neovim/default.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - options.neovim.enable = lib.mkEnableOption "Setup neovim"; - config = lib.mkIf config.neovim.enable { - programs.neovim = { - enable = true; - package = pkgs.neovim; - extraConfig = '' - luafile ${./init.lua} - ''; - }; - home.packages = with pkgs; [ - ripgrep - - # github pilot - nodejs - - # language servers - lua-language-server - nixd - pyright - gopls - java-language-server - typescript-language-server - rust-analyzer - tailwindcss-language-server - - # formatter - nixfmt-rfc-style - luaformatter - ]; - }; -} diff --git a/modules/home-manager/neovim/init.lua b/modules/home-manager/neovim/init.lua deleted file mode 100644 index 7d0d918..0000000 --- a/modules/home-manager/neovim/init.lua +++ /dev/null @@ -1,217 +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', 'o', 'updatesource %', { desc = 'Save & reload init.lua' }) -map('n', 'w', 'write') -map('n', 'q', 'quit') -map('n', 'lf', vim.lsp.buf.format) - -vim.pack.add({ - { src = "https://github.com/ellisonleao/gruvbox.nvim" }, - { src = "https://github.com/echasnovski/mini.starter" }, - { src = "https://github.com/lewis6991/gitsigns.nvim" }, - { src = "https://github.com/windwp/nvim-autopairs" }, - { src = "https://github.com/zbirenbaum/copilot.lua" }, - { src = "https://github.com/zbirenbaum/copilot-cmp" }, - { src = "https://github.com/nvim-telescope/telescope.nvim" }, - { src = "https://github.com/j-hui/fidget.nvim" }, - { src = "https://github.com/nvim-lua/plenary.nvim" }, - { src = "https://github.com/nvim-treesitter/nvim-treesitter" }, - { src = "https://github.com/neovim/nvim-lspconfig" }, - { src = "https://github.com/hrsh7th/nvim-cmp" }, - { src = "https://github.com/hrsh7th/cmp-nvim-lsp" }, - { src = "https://github.com/hrsh7th/cmp-buffer" }, - { src = "https://github.com/hrsh7th/cmp-path" }, - { src = "https://github.com/hrsh7th/cmp-cmdline" }, - { src = "https://github.com/L3MON4D3/LuaSnip" }, - { src = "https://github.com/saadparwaiz1/cmp_luasnip" }, - { src = "https://github.com/onsails/lspkind-nvim" } -}) - -require("nvim-treesitter.configs").setup({ - ensure_installed = { "lua", "nix" }, - highlight = { enable = true }, -}) - -local builtin = require('telescope.builtin') -map('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) -map('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) -map('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) -map('n', '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({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), - [''] = cmp.mapping(function(fallback) - local copilot = require('copilot.suggestion') - if copilot.is_visible() then - copilot.accept() - elseif cmp.visible() then - cmp.select_next_item() - else - fallback() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - else - fallback() - end - end, { 'i', 's' }), - }), - sources = cmp.config.sources({ - { name = 'copilot' }, - { 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() - -require("lspconfig").nixd.setup({ - capabilities = capabilities, - settings = { - nixd = { - formatting = { - command = { "nixfmt" }, - }, - }, - }, -}) - -require("lspconfig").lua_ls.setup({ - capabilities = capabilities, - settings = { - lua_ls = { - formatting = { - command = { "luaformatter" }, - }, - }, - Lua = { - runtime = { - version = 'LuaJIT', - }, - diagnostics = { - globals = { - 'vim', 'require' - }, - }, - workspace = { - library = vim.api.nvim_get_runtime_file("", true), - }, - telemetry = { - enable = false, - }, - }, - }, -}) - -require("lspconfig").pyright.setup({ - capabilities = capabilities, -}) - -require("lspconfig").ts_ls.setup({ - capabilities = capabilities, -}) - -require("lspconfig").tailwindcss.setup({ - capabilities = capabilities, -}) - -require("lspconfig").gopls.setup({ - capabilities = capabilities, - settings = { - gopls = { - analyses = { - unusedparams = true, - unusedwrite = true, - }, - staticcheck = true, - }, - }, -}) - -require("lspconfig").rust_analyzer.setup({ - capabilities = capabilities, -}) - -vim.diagnostic.config({ - virtual_text = { source = "if_many" }, - underline = true, - severity_sort = true, -}) - - -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() -require("copilot").setup({ - suggestion = { enabled = false }, - panel = { enabled = false }, -}) -require("copilot_cmp").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" }) diff --git a/modules/home-manager/nixcord.nix b/modules/home-manager/nixcord.nix deleted file mode 100644 index 3655d17..0000000 --- a/modules/home-manager/nixcord.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - options.nixcord.enable = lib.mkEnableOption "Enable nixcord and setup"; - config = lib.mkIf config.nixcord.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-manager/opencode.nix b/modules/home-manager/opencode.nix deleted file mode 100644 index 961d9a7..0000000 --- a/modules/home-manager/opencode.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - options.opencode.enable = lib.mkEnableOption "Setup opencode"; - config = lib.mkIf config.opencode.enable { - programs.opencode = { - enable = true; - settings = { - theme = "system"; - share = "disabled"; - autoUpdate = true; - }; - }; - }; -} diff --git a/modules/home-manager/spicetify.nix b/modules/home-manager/spicetify.nix deleted file mode 100644 index 41ccb1e..0000000 --- a/modules/home-manager/spicetify.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - config, - lib, - pkgs, - inputs, - ... -}: - -let - spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system}; -in -{ - options.spicetify.enable = lib.mkEnableOption "Enable Spicetify integration"; - config = lib.mkIf config.spicetify.enable { - 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-manager/sway.nix b/modules/home-manager/sway.nix deleted file mode 100644 index a86ad67..0000000 --- a/modules/home-manager/sway.nix +++ /dev/null @@ -1,107 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -let - mod = config.wayland.windowManager.sway.config.modifier; -in -{ - options.sway.enable = lib.mkEnableOption "Enable sway and setup"; - config = lib.mkIf config.sway.enable { - home.packages = with pkgs; [ - wmenu - swaybg - sway-contrib.grimshot - wl-clipboard - xdg-utils - playerctl - ]; - - wayland.windowManager.sway = { - enable = true; - systemd.enable = true; - config = { - input = { - "*" = { - xkb_layout = "de"; - }; - }; - - output = { - DP-1 = { - resolution = "1920x1080@240Hz"; - bg = "/etc/nixos/images/pond.jpg fill"; - }; - }; - - gaps = { - inner = 15; - }; - - window = { - titlebar = false; - border = 0; - }; - - modifier = "Mod4"; - - keybindings = lib.mkOptionDefault { - "${mod}+q" = "kill"; - "${mod}+Shift+s" = "exec grimshot savecopy area"; - "XF86AudioPlay" = "exec playerctl play-pause"; - "XF86AudioPrev" = "exec playerctl previous"; - "XF86AudioNext" = "exec playerctl next"; - "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ +5%"; - "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_DEVICE@ -5%"; - "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_DEVICE@ toggle"; - }; - - menu = "${pkgs.wmenu}/bin/wmenu-run -b -N 000000E6"; - terminal = "${pkgs.foot}/bin/foot"; - defaultWorkspace = "workspace number 1"; - - bars = [ - { - "command" = "${pkgs.waybar}/bin/waybar"; - } - ]; - }; - checkConfig = false; - wrapperFeatures.base = true; - wrapperFeatures.gtk = true; - }; - - home.sessionVariables = { - XDG_CURRENT_DESKTOP = "sway"; - XDG_SCREENSHOTS_DIR = "~/Pictures/Screenshots/"; - }; - - gtk = { - enable = true; - theme = { - name = "Adwaita-dark"; - package = pkgs.gnome-themes-extra; - }; - gtk3.extraConfig = { - Settings = '' - gtk-application-prefer-dark-theme=1 - ''; - }; - gtk4.extraConfig = { - Settings = '' - gtk-application-prefer-dark-theme=1 - ''; - }; - }; - - home.pointerCursor = { - gtk.enable = true; - name = "Adwaita"; - package = pkgs.adwaita-icon-theme; - size = 24; - }; - }; -} diff --git a/modules/home-manager/swayidle.nix b/modules/home-manager/swayidle.nix deleted file mode 100644 index 33cd495..0000000 --- a/modules/home-manager/swayidle.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - options.swayidle.enable = lib.mkEnableOption "Enable swayidle configuration"; - config = lib.mkIf config.swayidle.enable { - services.swayidle = { - enable = true; - timeouts = [ - { - timout = "600"; - command = "${pkgs.sway}/bin/swaymsg output * dpms off"; - } - { - timout = "900"; - command = "${pkgs.systemd}/bin/systemctl suspend"; - } - ]; - events = [ - { event = "resume"; command = "${pkgs.sway}/bin/swaymsg output * dpms on"; } - { event = "before-sleep"; command = "${pkgs.hyprlock}/bin/hyprlock"; } - ]; - }; - }; -} diff --git a/modules/home-manager/tmux.nix b/modules/home-manager/tmux.nix deleted file mode 100644 index 7b3a23d..0000000 --- a/modules/home-manager/tmux.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - options.tmux.enable = lib.mkEnableOption "Enable and configure Tmux"; - config = lib.mkIf config.tmux.enable { - programs.tmux = { - enable = true; - extraConfig = '' - set -g default-terminal "xterm-256color" - - 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-manager/typst.nix b/modules/home-manager/typst.nix deleted file mode 100644 index c06211b..0000000 --- a/modules/home-manager/typst.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -{ - options.typst.enable = lib.mkEnableOption "Setup typst"; - config = lib.mkIf config.typst.enable { - home.packages = with pkgs; [ - typst - typst-fmt - ]; - }; -} diff --git a/modules/home-manager/vscode.nix b/modules/home-manager/vscode.nix deleted file mode 100644 index b9b0beb..0000000 --- a/modules/home-manager/vscode.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -{ - options.vscode.enable = lib.mkEnableOption "Enable vscode and setup"; - config = lib.mkIf config.vscode.enable { - programs.vscode = { - enable = true; - mutableExtensionsDir = false; - profiles.default = { - enableUpdateCheck = true; - enableExtensionUpdateCheck = true; - - userSettings = { - "update.mode" = "none"; - "workbench.colorTheme" = "Minimal"; - "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; - [ - ms-vscode.cmake-tools - ms-azuretools.vscode-docker - github.copilot - ms-python.python - golang.go - rust-lang.rust-analyzer - vscjava.vscode-maven - sumneko.lua - #fwcd.kotlin - bradlc.vscode-tailwindcss - adpyke.codesnap - esbenp.prettier-vscode - ] - ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - { - name = "minimalist-dark"; - publisher = "nichabosh"; - version = "1.0.0"; - sha256 = "sha256-lw+Scfada6DycLdRT2Cz+Fd12JucglIrw3uRd2ZhabQ="; - } - ] - ); - }; - }; - }; -} diff --git a/modules/home-manager/waybar.nix b/modules/home-manager/waybar.nix deleted file mode 100644 index c001874..0000000 --- a/modules/home-manager/waybar.nix +++ /dev/null @@ -1,147 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - options.waybar.enable = lib.mkEnableOption "Enable and configure Waybar"; - config = lib.mkIf config.waybar.enable { - programs.waybar = { - enable = true; - settings = { - mainBar = { - height = 32; - layer = "top"; - position = "bottom"; - modules-center = [ "mpris" ]; - modules-left = [ "sway/workspaces" ]; - modules-right = [ - "group/expand" - "battery" - "pulseaudio" - "network" - "bluetooth" - "clock" - ]; - - "group/expand" = { - orientation = "horizontal"; - drawer = { - transition-duration = 600; - transition-to-left = true; - click-to-reveal = true; - }; - modules = [ - "custom/expand" - "tray" - "privacy" - "cpu" - "memory" - "temperature" - ]; - }; - - "custom/expand" = { - format = ""; - tooltip = false; - }; - - mpris = { - format = "{title}"; - tooltip-format = "{artist} - {album}"; - }; - - tray = { - spacing = 10; - }; - - privacy = { - icon-size = 16; - }; - - cpu = { - format = "󰻠"; - tooltip = true; - }; - - memory = { - format = ""; - }; - - temperature = { - critical-threshold = 80; - format = ""; - }; - - network = { - format-disconnect = "󰌙"; - format-ethernet = "󰌘"; - format-wifi = "{icon}"; - format-icons = [ - "󰤟" - "󰤢" - "󰤥" - "󰤨" - ]; - - tooltip-format-wifi = "{essid} | {signalStrength}%"; - tooltip-format-ethernet = "{ifname}"; - }; - - bluetooth = { - format = " {status}"; - format-disabled = ""; - format-no-controller = ""; - format-connected = " {device_alias}"; - tooltip = false; - }; - - clock = { - format-alt = "{:%Y-%m-%d}"; - tooltip-format = "{:%Y-%m-%d | %H:%M}"; - }; - - pulseaudio = { - format = "{icon}"; - format-icons = { - default = [ - "" - "" - "" - ]; - }; - tooltip-format = "{desc} | {volume}%"; - }; - }; - }; - - style = '' - * { - border: none; - border-radius: 0; - font-family: monospace; - font-size: 12px; - } - - window#waybar { - background: rgba(0, 0, 0, 0.9); - } - - #workspaces button { - padding-left: 5px; - padding-right: 5px; - } - - #workspaces button.focused { - font-weight: bold; - } - - #clock, #pulseaudio, #tray, #network, #battery, #bluetooth, #cpu, #memory, #temperature, #custom-expand, #group-expand { - padding-left: 10px; - padding-right: 10px; - } - ''; - }; - }; -} diff --git a/modules/home-manager/zathura.nix b/modules/home-manager/zathura.nix deleted file mode 100644 index c8605d0..0000000 --- a/modules/home-manager/zathura.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - config, - lib, - ... -}: - -{ - options.zathura.enable = lib.mkEnableOption "Enable zathura and setup"; - config = lib.mkIf config.zathura.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"; - }; - }; - }; -} diff --git a/modules/home-manager/zsh.nix b/modules/home-manager/zsh.nix deleted file mode 100644 index 2e27a9e..0000000 --- a/modules/home-manager/zsh.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ config, lib, ... }: - -{ - options.zsh.enable = lib.mkEnableOption "Configure zsh"; - config = lib.mkIf config.zsh.enable { - 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 - - # imagemagick wrapper function to remove background - remove_bg() { - if [[ $# -lt 2 ]]; then - echo 'Usage: remove_bg [transparent_color] [output_file]' - return 1 - fi - - local input_file=$1 - local fuzz=$2 - local transparent_color=$3 - local output_file=$4 - - magick "$input_file" \ - -fuzz $fuzz -transparent "$transparent_color" \ - -alpha on -channel A -blur 0x2 -level 5%,100% +channel \ - "$output_file" - - echo "Saved transparent image to: $output_file" - } - - eval "$(zoxide init zsh)" - ''; - - shellAliases = { - ls = "ls --color=auto"; - nixceck = "nix flake check --all-systems"; - }; - - 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/nixos/default.nix b/modules/nixos/default.nix deleted file mode 100644 index 5524e7f..0000000 --- a/modules/nixos/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ ... }: - -{ - imports = [ ./gnome.nix ]; -} diff --git a/modules/nixos/gnome.nix b/modules/nixos/gnome.nix deleted file mode 100644 index c0a6fd1..0000000 --- a/modules/nixos/gnome.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -{ - options.gnome.enable = lib.mkEnableOption "Setup gnome desktop enviroment"; - config = lib.mkIf config.gnome.enable { - services.xserver = { - enable = true; - xkb.layout = "de"; - xkb.variant = ""; - desktopManager.gnome.enable = true; - displayManager.gdm.enable = true; - }; - - services.gnome.core-developer-tools.enable = false; - services.gnome.games.enable = false; - - programs.dconf.enable = true; - - environment.defaultPackages = with pkgs; [ - wl-clipboard - ]; - - }; -} diff --git a/modules/programs/anki.nix b/modules/programs/anki.nix new file mode 100644 index 0000000..4697273 --- /dev/null +++ b/modules/programs/anki.nix @@ -0,0 +1,21 @@ +{ + config, + username, + lib, + ... +}: + +{ + options.nx.programs.anki.enable = lib.mkEnableOption "Enable anki"; + config = lib.mkIf config.anki.enable { + #Wait for stable release + #home-manager.users.${username}.programs.anki = { + #enable = true; + #style = "native"; + #addons = with pkgs.ankiAddons; [ + # anki-connect + # review-heatmap + #]; + #}; + }; +} diff --git a/modules/programs/default.nix b/modules/programs/default.nix new file mode 100644 index 0000000..6df5649 --- /dev/null +++ b/modules/programs/default.nix @@ -0,0 +1,20 @@ +{ ... }: +{ + imports = [ + ./anki.nix + ./foot.nix + ./git.nix + ./latex.nix + ./nixcord.nix + ./spicetify.nix + ./typst.nix + ./zathura.nix + ./firefox.nix + ./gh.nix + ./gpg.nix + ./neovim + ./tmux.nix + ./vscode.nix + ./zsh.nix + ]; +} diff --git a/modules/programs/firefox.nix b/modules/programs/firefox.nix new file mode 100644 index 0000000..28bdfea --- /dev/null +++ b/modules/programs/firefox.nix @@ -0,0 +1,248 @@ +{ + config, + username, + lib, + pkgs, + inputs, + ... +}: + +{ + options.nx.programs.firefox.enable = lib.mkEnableOption "Setup firefox"; + config = lib.mkIf config.nx.programs.firefox.enable { + home-manager.users.${username} = { + programs.firefox = { + enable = true; + profiles.default = { + extensions = { + packages = with inputs.firefox-addons.packages.${pkgs.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 = '' + ||accounts.google.com/gsi/* + ''; + }; + }; + + search.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" ]; + }; + + startpage = { + name = "Startpage"; + urls = [ + { + template = "https://www.startpage.com/sp/search?query={searchTerms}"; + } + ]; + icon = "https://www.startpage.com/favicon.ico"; + definedAliases = [ "@s" ]; + }; + + bing.metaData.hidden = true; + google.metaData.alias = "@g"; + }; + + search.default = "startpage"; + + settings = { + }; + + userChrome = '' + /* 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 = '' + @-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 = false; + OfferToSaveLogins = false; + DisablePocket = true; + DisplayBookmarksToolbar = "never"; + NoDefaultBookmarks = true; + + EnableTrackingProtection = { + Value = true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + + EncryptedMediaExtensions = { + Enabled = true; + Locked = true; + }; + + FirefoxHome = { + Search = true; + TopSites = true; + SponsoredTopSites = false; + Highlights = true; + Pocket = false; + SponsoredPocket = false; + Snippets = false; + Locked = true; + }; + + UserMessaging = { + ExtensionRecommendations = false; + FeatureRecommendations = false; + Locked = true; + MoreFromMozilla = false; + SkipOnboarding = true; + UrlbarInterventions = false; + WhatsNew = false; + }; + + Preferences = { + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "browser.toolbars.bookmarks.visibility" = "never"; + + # 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; + + # Hide pip controls + "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; + + # Set homepage + "browser.startup.homepage" = "about:blank"; + "browser.newtab.url" = "about:blank"; + "browser.newtabpage.enabled" = false; + + # transparency + "browser.tabs.allow_transparent_browser" = true; + "gfx.webrender.all" = true; + }; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/foot.nix b/modules/programs/foot.nix new file mode 100644 index 0000000..866757b --- /dev/null +++ b/modules/programs/foot.nix @@ -0,0 +1,60 @@ +{ + config, + username, + lib, + pkgs, + ... +}: + +{ + options.nx.programs.foot.enable = lib.mkEnableOption "Enable foot terminal"; + config = lib.mkIf config.nx.programs.foot.enable { + home-manager.users.${username} = { + home.packages = with pkgs; [ + nerd-fonts.space-mono + ]; + + programs.foot = { + enable = true; + settings = { + main = { + pad = "10x10"; + font = "SpaceMono Nerd Font Mono:size=10"; + line-height = 12; + }; + + cursor = { + style = "underline"; + unfocused-style = "unchanged"; + blink = true; + }; + + colors = { + alpha = 0.9; + # Gruvbox Theme + background = "000000"; + foreground = "ebdbb2"; + + regular0 = "282828"; + regular1 = "cc241d"; + regular2 = "98971a"; + regular3 = "d79921"; + regular4 = "458588"; + regular5 = "b16286"; + regular6 = "689d6a"; + regular7 = "a89984"; + + bright0 = "928374"; + bright1 = "fb4934"; + bright2 = "b8bb26"; + bright3 = "fabd2f"; + bright4 = "83a598"; + bright5 = "d3869b"; + bright6 = "8ec07c"; + bright7 = "ebdbb2"; + }; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/gh.nix b/modules/programs/gh.nix new file mode 100644 index 0000000..52a34e3 --- /dev/null +++ b/modules/programs/gh.nix @@ -0,0 +1,17 @@ +{ + config, + username, + lib, + ... +}: + +{ + options.nx.programs.gh.enable = lib.mkEnableOption "Setup gh"; + config = lib.mkIf config.nx.programs.gh.enable { + home-manager.users.${username} = { + programs.gh = { + enable = true; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/git.nix b/modules/programs/git.nix new file mode 100644 index 0000000..0b0d2eb --- /dev/null +++ b/modules/programs/git.nix @@ -0,0 +1,39 @@ +{ + config, + username, + lib, + ... +}: + +{ + options.nx.programs.git.enable = lib.mkEnableOption "Enable git" // { + default = true; + }; + config = lib.mkIf config.nx.programs.git.enable { + home-manager.users.${username} = { + programs.git = { + enable = true; + userName = "schererleander"; + userEmail = "leander@schererleander.de"; + aliases = { + st = "status"; + co = "checkout"; + br = "branch"; + }; + signing = { + key = "506793F115464BB4"; + signByDefault = true; + }; + ignores = [ + "*~" + ".DS_Store" + ]; + diff-highlight.enable = true; + extraConfig = { + pull.rebase = true; + url."git@github.com:".insteadOf = "https://github.com"; + }; + }; + }; + }; +} diff --git a/modules/programs/gpg.nix b/modules/programs/gpg.nix new file mode 100644 index 0000000..cc3f45b --- /dev/null +++ b/modules/programs/gpg.nix @@ -0,0 +1,25 @@ +{ + config, + username, + pkgs, + lib, + ... +}: + +let + pinentryPackage = if pkgs.stdenv.isDarwin then pkgs.pinentry_mac else pkgs.pinentry-curses; + pinentryProgram = if pkgs.stdenv.isDarwin then "pinentry-mac" else "pinentry-curses"; +in +{ + options.nx.programs.gpg.enable = lib.mkEnableOption "Setup gpg and agent"; + config = lib.mkIf config.nx.programs.gpg.enable { + home-manager.users.${username} = { + programs.gpg.enable = true; + services.gpg-agent = { + enable = true; + pinentry.package = pinentryPackage; + pinentry.program = pinentryProgram; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/latex.nix b/modules/programs/latex.nix new file mode 100644 index 0000000..5a9f8b4 --- /dev/null +++ b/modules/programs/latex.nix @@ -0,0 +1,32 @@ +{ + config, + username, + pkgs, + lib, + ... +}: + +{ + options.nx.programs.latex.enable = lib.mkEnableOption "Setup latex"; + config = lib.mkIf config.nx.programs.latex.enable { + home-manager.users.${username} = { + 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"; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/neovim/default.nix b/modules/programs/neovim/default.nix new file mode 100644 index 0000000..9f6b963 --- /dev/null +++ b/modules/programs/neovim/default.nix @@ -0,0 +1,42 @@ +{ + config, + username, + lib, + pkgs, + ... +}: + +{ + options.nx.programs.neovim.enable = lib.mkEnableOption "Setup neovim"; + config = lib.mkIf config.nx.programs.neovim.enable { + home-manager.users.${username} = { + programs.neovim = { + enable = true; + package = pkgs.neovim; + extraConfig = '' + luafile ${./init.lua} + ''; + }; + home.packages = with pkgs; [ + ripgrep + + # github pilot + nodejs + + # language servers + lua-language-server + nixd + pyright + gopls + java-language-server + typescript-language-server + rust-analyzer + tailwindcss-language-server + + # formatter + nixfmt-rfc-style + luaformatter + ]; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/neovim/init.lua b/modules/programs/neovim/init.lua new file mode 100644 index 0000000..7d0d918 --- /dev/null +++ b/modules/programs/neovim/init.lua @@ -0,0 +1,217 @@ +-- 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', 'o', 'updatesource %', { desc = 'Save & reload init.lua' }) +map('n', 'w', 'write') +map('n', 'q', 'quit') +map('n', 'lf', vim.lsp.buf.format) + +vim.pack.add({ + { src = "https://github.com/ellisonleao/gruvbox.nvim" }, + { src = "https://github.com/echasnovski/mini.starter" }, + { src = "https://github.com/lewis6991/gitsigns.nvim" }, + { src = "https://github.com/windwp/nvim-autopairs" }, + { src = "https://github.com/zbirenbaum/copilot.lua" }, + { src = "https://github.com/zbirenbaum/copilot-cmp" }, + { src = "https://github.com/nvim-telescope/telescope.nvim" }, + { src = "https://github.com/j-hui/fidget.nvim" }, + { src = "https://github.com/nvim-lua/plenary.nvim" }, + { src = "https://github.com/nvim-treesitter/nvim-treesitter" }, + { src = "https://github.com/neovim/nvim-lspconfig" }, + { src = "https://github.com/hrsh7th/nvim-cmp" }, + { src = "https://github.com/hrsh7th/cmp-nvim-lsp" }, + { src = "https://github.com/hrsh7th/cmp-buffer" }, + { src = "https://github.com/hrsh7th/cmp-path" }, + { src = "https://github.com/hrsh7th/cmp-cmdline" }, + { src = "https://github.com/L3MON4D3/LuaSnip" }, + { src = "https://github.com/saadparwaiz1/cmp_luasnip" }, + { src = "https://github.com/onsails/lspkind-nvim" } +}) + +require("nvim-treesitter.configs").setup({ + ensure_installed = { "lua", "nix" }, + highlight = { enable = true }, +}) + +local builtin = require('telescope.builtin') +map('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) +map('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) +map('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) +map('n', '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({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping(function(fallback) + local copilot = require('copilot.suggestion') + if copilot.is_visible() then + copilot.accept() + elseif cmp.visible() then + cmp.select_next_item() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + else + fallback() + end + end, { 'i', 's' }), + }), + sources = cmp.config.sources({ + { name = 'copilot' }, + { 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() + +require("lspconfig").nixd.setup({ + capabilities = capabilities, + settings = { + nixd = { + formatting = { + command = { "nixfmt" }, + }, + }, + }, +}) + +require("lspconfig").lua_ls.setup({ + capabilities = capabilities, + settings = { + lua_ls = { + formatting = { + command = { "luaformatter" }, + }, + }, + Lua = { + runtime = { + version = 'LuaJIT', + }, + diagnostics = { + globals = { + 'vim', 'require' + }, + }, + workspace = { + library = vim.api.nvim_get_runtime_file("", true), + }, + telemetry = { + enable = false, + }, + }, + }, +}) + +require("lspconfig").pyright.setup({ + capabilities = capabilities, +}) + +require("lspconfig").ts_ls.setup({ + capabilities = capabilities, +}) + +require("lspconfig").tailwindcss.setup({ + capabilities = capabilities, +}) + +require("lspconfig").gopls.setup({ + capabilities = capabilities, + settings = { + gopls = { + analyses = { + unusedparams = true, + unusedwrite = true, + }, + staticcheck = true, + }, + }, +}) + +require("lspconfig").rust_analyzer.setup({ + capabilities = capabilities, +}) + +vim.diagnostic.config({ + virtual_text = { source = "if_many" }, + underline = true, + severity_sort = true, +}) + + +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() +require("copilot").setup({ + suggestion = { enabled = false }, + panel = { enabled = false }, +}) +require("copilot_cmp").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" }) diff --git a/modules/programs/nixcord.nix b/modules/programs/nixcord.nix new file mode 100644 index 0000000..191dcfb --- /dev/null +++ b/modules/programs/nixcord.nix @@ -0,0 +1,32 @@ +{ + config, + lib, + inputs, + username, + ... +}: + +{ + options.nx.programs.nixcord.enable = lib.mkEnableOption "Enable nixcord and setup"; + config = lib.mkIf config.nx.programs.nixcord.enable { + home-manager.users.${username} = { ... }: { + imports = [ inputs.nixcord.homeModules.nixcord ]; + + 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/programs/opencode.nix b/modules/programs/opencode.nix new file mode 100644 index 0000000..b4680f3 --- /dev/null +++ b/modules/programs/opencode.nix @@ -0,0 +1,22 @@ +{ + config, + username, + lib, + ... +}: + +{ + options.nx.programs.opencode.enable = lib.mkEnableOption "Setup opencode"; + config = lib.mkIf config.nx.programs.opencode.enable { + home-manager.users.${username} = { + programs.opencode = { + enable = true; + settings = { + theme = "system"; + share = "disabled"; + autoUpdate = true; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/spicetify.nix b/modules/programs/spicetify.nix new file mode 100644 index 0000000..0582f72 --- /dev/null +++ b/modules/programs/spicetify.nix @@ -0,0 +1,38 @@ +{ + config, + lib, + pkgs, + inputs, + username, + ... +}: + +let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system}; +in +{ + options.nx.programs.spicetify.enable = lib.mkEnableOption "Enable Spicetify integration"; + config = lib.mkIf config.nx.programs.spicetify.enable { + home-manager.users.${username} = { ... }: { + imports = [ inputs.spicetify-nix.homeManagerModules.spicetify ]; + 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/programs/tmux.nix b/modules/programs/tmux.nix new file mode 100644 index 0000000..41d6e22 --- /dev/null +++ b/modules/programs/tmux.nix @@ -0,0 +1,45 @@ +{ + config, + username, + lib, + ... +}: + +{ + options.nx.programs.tmux.enable = lib.mkEnableOption "Enable and configure Tmux"; + config = lib.mkIf config.nx.programs.tmux.enable { + home-manager.users.${username} = { + programs.tmux = { + enable = true; + extraConfig = '' + set -g default-terminal "xterm-256color" + + 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 + ''; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/typst.nix b/modules/programs/typst.nix new file mode 100644 index 0000000..8af406b --- /dev/null +++ b/modules/programs/typst.nix @@ -0,0 +1,19 @@ +{ + config, + username, + pkgs, + lib, + ... +}: + +{ + options.nx.programs.typst.enable = lib.mkEnableOption "Setup typst"; + config = lib.mkIf config.nx.programs.typst.enable { + home-manager.users.${username} = { + home.packages = with pkgs; [ + typst + typst-fmt + ]; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/vscode.nix b/modules/programs/vscode.nix new file mode 100644 index 0000000..beb347c --- /dev/null +++ b/modules/programs/vscode.nix @@ -0,0 +1,63 @@ +{ + config, + username, + lib, + pkgs, + ... +}: + +{ + options.nx.programs.vscode.enable = lib.mkEnableOption "Enable vscode and setup"; + config = lib.mkIf config.nx.programs.vscode.enable { + home-manager.users.${username} = { + programs.vscode = { + enable = true; + mutableExtensionsDir = false; + profiles.default = { + enableUpdateCheck = true; + enableExtensionUpdateCheck = true; + + userSettings = { + "update.mode" = "none"; + "workbench.colorTheme" = "Minimal"; + "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; + [ + ms-vscode.cmake-tools + ms-azuretools.vscode-docker + github.copilot + ms-python.python + golang.go + rust-lang.rust-analyzer + vscjava.vscode-maven + sumneko.lua + #fwcd.kotlin + bradlc.vscode-tailwindcss + adpyke.codesnap + esbenp.prettier-vscode + ] + ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + { + name = "minimalist-dark"; + publisher = "nichabosh"; + version = "1.0.0"; + sha256 = "sha256-lw+Scfada6DycLdRT2Cz+Fd12JucglIrw3uRd2ZhabQ="; + } + ] + ); + }; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/zathura.nix b/modules/programs/zathura.nix new file mode 100644 index 0000000..35304a4 --- /dev/null +++ b/modules/programs/zathura.nix @@ -0,0 +1,34 @@ +{ + config, + username, + lib, + ... +}: + +{ + options.nx.programs.zathura.enable = lib.mkEnableOption "Enable zathura and setup"; + config = lib.mkIf config.nx.programs.zathura.enable { + home-manager.users.${username} = { + 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"; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/programs/zsh.nix b/modules/programs/zsh.nix new file mode 100644 index 0000000..6edb1c0 --- /dev/null +++ b/modules/programs/zsh.nix @@ -0,0 +1,74 @@ +{ + config, + username, + lib, + ... +}: +{ + options.nx.programs.zsh.enable = lib.mkEnableOption "Configure zsh"; + config = lib.mkIf config.nx.programs.zsh.enable { + home-manager.users.${username} = { + 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 + + # imagemagick wrapper function to remove background + remove_bg() { + if [[ $# -lt 2 ]]; then + echo 'Usage: remove_bg [transparent_color] [output_file]' + return 1 + fi + local input_file=$1 + local fuzz=$2 + local transparent_color=$3 + local output_file=$4 + + magick "$input_file" \ + -fuzz $fuzz -transparent "$transparent_color" \ + -alpha on -channel A -blur 0x2 -level 5%,100% +channel \ + "$output_file" + + echo "Saved transparent image to: $output_file" + } + + eval "$(zoxide init zsh)" + ''; + shellAliases = { + ls = "ls --color=auto"; + nixceck = "nix flake check --all-systems"; + }; + 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/services/default.nix b/modules/services/default.nix new file mode 100644 index 0000000..2011a73 --- /dev/null +++ b/modules/services/default.nix @@ -0,0 +1,15 @@ +{ ... }: + +{ + imports = [ + ./printer.nix + ./polkit.nix + ./pipewire.nix + ./mullvad.nix + ]; + + config = { + # Default services confguration, things that dont need their own module. + services.openssh.enable = true; + }; +} diff --git a/modules/services/mullvad.nix b/modules/services/mullvad.nix new file mode 100644 index 0000000..0d486be --- /dev/null +++ b/modules/services/mullvad.nix @@ -0,0 +1,16 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + options.nx.services.mullvad.enable = lib.mkEnableOption "Enable and setup mullvad"; + config = lib.mkIf config.nx.services.mullvad.enable { + services.mullvad-vpn = { + enable = true; + package = pkgs.mullvad-vpn; + }; + }; +} diff --git a/modules/services/pipewire.nix b/modules/services/pipewire.nix new file mode 100644 index 0000000..929159e --- /dev/null +++ b/modules/services/pipewire.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: + +{ + options.nx.services.pipewire.enable = lib.mkEnableOption "Enable pipewire for audio"; + config = lib.mkIf config.nx.services.pipewire.enable { + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + }; + }; +} diff --git a/modules/services/polkit.nix b/modules/services/polkit.nix new file mode 100644 index 0000000..4cc5fce --- /dev/null +++ b/modules/services/polkit.nix @@ -0,0 +1,25 @@ +{ + config, + pkgs, + lib, + ... +}: +{ + options.nx.services.polkit.enable = lib.mkEnableOption "Enable and setup polkit service"; + config = lib.mkIf config.nx.services.polkit.enable { + security.polkit.enable = true; + systemd.services.polkit-gnome-authenticator-agent-1 = { + description = "polkit-gnome-authentication-agent-1"; + wantedBy = [ "graphical-session.target" ]; + wants = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/bin/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 1; + TimeoutStopSec = 10; + }; + }; + }; +} diff --git a/modules/services/printer.nix b/modules/services/printer.nix new file mode 100644 index 0000000..0f6d82b --- /dev/null +++ b/modules/services/printer.nix @@ -0,0 +1,21 @@ +{ + config, + pkgs, + lib, + ... +}: +{ + options.nx.services.printer.enable = lib.mkEnableOption "Enable printer service"; + config = lib.mkIf config.nx.services.printer.enable { + services.printing = { + enable = true; + drivers = [ pkgs.brlaser ]; + }; + # printer autodiscovery + services.avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + }; +} diff --git a/modules/system/default.nix b/modules/system/default.nix new file mode 100644 index 0000000..a3e0fcd --- /dev/null +++ b/modules/system/default.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + imports = [ + ./localisation.nix + ./network.nix + ./nix-options.nix + ./users.nix + ]; +} diff --git a/modules/system/localisation.nix b/modules/system/localisation.nix new file mode 100644 index 0000000..ab8dfbf --- /dev/null +++ b/modules/system/localisation.nix @@ -0,0 +1,23 @@ +{ ... }: + +let + locale = "en_US.UTF-8"; +in +{ + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # Select internationalisation properties. + i18n.defaultLocale = locale; + i18n.extraLocaleSettings = { + LC_ADDRESS = locale; + LC_IDENTIFICATION = locale; + LC_MEASUREMENT = locale; + LC_MONETARY = locale; + LC_NAME = locale; + LC_NUMERIC = locale; + LC_PAPER = locale; + LC_TELEPHONE = locale; + LC_TIME = locale; + }; +} diff --git a/modules/system/network.nix b/modules/system/network.nix new file mode 100644 index 0000000..383480b --- /dev/null +++ b/modules/system/network.nix @@ -0,0 +1,14 @@ +{ + host, + ... +}: + +{ + networking = { + hostName = host; + networkmanager.enable = true; + }; + + # Improve startup time + systemd.services.NetworkManager-wait-online.enable = false; +} diff --git a/modules/system/nix-options.nix b/modules/system/nix-options.nix new file mode 100644 index 0000000..e1d5e71 --- /dev/null +++ b/modules/system/nix-options.nix @@ -0,0 +1,18 @@ +{ ... }: + +{ + nix = { + settings = { + experimentalFeatures = [ + "nix-command" + "flakes" + ]; + auto-optimise-store = true; + }; + gc = { + automatic = true; + dates = "daily"; + options = "--delete-older-than 15d"; + }; + }; +} diff --git a/modules/system/users.nix b/modules/system/users.nix new file mode 100644 index 0000000..d42dac3 --- /dev/null +++ b/modules/system/users.nix @@ -0,0 +1,22 @@ +{ + config, + username, + pkgs, + lib, + ... +}: + +{ + users.users."${username}" = { + isNormalUser = true; + extraGroups = [ + "wheel" + "video" + "input" + (lib.mkIf config.networking.networkmanager.enable "networkmanager") + ]; + shell = pkgs.zsh; + ignoreShellProgramCheck = true; + }; + security.sudo.wheelNeedsPassword = false; +} -- cgit v1.3.1