diff --git a/flake.lock b/flake.lock index 7af56ed..968701a 100644 --- a/flake.lock +++ b/flake.lock @@ -67,6 +67,38 @@ "type": "github" } }, + "flake-compat_2": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz?rev=ff81ac966bb2cae68946d5ed5fc4994f96d0ffec&revCount=69" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1754091436, + "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -399,6 +431,26 @@ "type": "github" } }, + "nixcord": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1755307498, + "narHash": "sha256-6AXJWZnW/Y9qxlblabRx3NeMtfeMGicndefYEolzgtg=", + "owner": "kaylorben", + "repo": "nixcord", + "rev": "a171d05a26467a74c66138ac83f1dd1fb07e4a3e", + "type": "github" + }, + "original": { + "owner": "kaylorben", + "repo": "nixcord", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1743583204, @@ -415,6 +467,21 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1753579242, + "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1742669843, @@ -432,6 +499,22 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1754028485, + "narHash": "sha256-IiiXB3BDTi6UqzAZcf2S797hWEPCRZOwyNThJIYhUfk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "59e69648d345d6e8fef86158c555730fa12af9de", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1743576891, "narHash": "sha256-vXiKURtntURybE6FMNFAVpRPr8+e8KoLPrYs9TGuAKc=", @@ -447,7 +530,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1751984180, "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", @@ -492,13 +575,14 @@ "home-manager": "home-manager", "hyprland": "hyprland", "hyprland-plugins": "hyprland-plugins", - "nixpkgs": "nixpkgs_3", + "nixcord": "nixcord", + "nixpkgs": "nixpkgs_4", "spicetify-nix": "spicetify-nix" } }, "spicetify-nix": { "inputs": { - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "systems": "systems_2" }, "locked": { diff --git a/flake.nix b/flake.nix index 96129f2..4128493 100644 --- a/flake.nix +++ b/flake.nix @@ -1,17 +1,8 @@ { description = "NixOS configuration of DerGrumpf"; - ################################################################################################################## - # - # Want to know Nix in details? Looking for a beginner-friendly tutorial? - # Check out https://github.com/ryan4yin/nixos-and-flakes-book ! - # - ################################################################################################################## - # the nixConfig here only affects the flake itself, not the system configuration! nixConfig = { - # substituers will be appended to the default substituters when fetching packages - # nix com extra-substituters = [munity's cache server extra-substituters = [ "https://nix-community.cachix.org" ]; @@ -24,11 +15,14 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; hyprland.url = "github:hyprwm/Hyprland"; spicetify-nix.url = "github:Gerg-L/spicetify-nix"; - - /*nixvim = { - url = "github:nix-community/nixvim/nixos-24.11"; - inputs.nixpkgs.follows = "nixpkgs"; - };*/ + nixcord.url = "github:kaylorben/nixcord"; + + /* + nixvim = { + url = "github:nix-community/nixvim/nixos-24.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + */ catppuccin.url = "github:catppuccin/nix"; @@ -36,104 +30,126 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland-plugins = { - url = "github:hyprwm/hyprland-plugins"; - inputs.hyprland.follows = "hyprland"; + url = "github:hyprwm/hyprland-plugins"; + inputs.hyprland.follows = "hyprland"; }; }; - outputs = inputs @ { - self, - nixpkgs, - home-manager, - catppuccin, - ... - }: { - packages.x86_64-linux.default = self.nixosConfigurations.iso.config.system.build.isoImage; - nixosConfigurations = { - iso = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - ({ pkgs, modulesPath, ... }: { + outputs = + inputs@{ + self, + nixpkgs, + home-manager, + catppuccin, + ... + }: + { + packages.x86_64-linux.default = self.nixosConfigurations.iso.config.system.build.isoImage; + nixosConfigurations = { + iso = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ( + { pkgs, modulesPath, ... }: + { imports = [ (modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix") ]; environment.systemPackages = with pkgs; [ - neovim - git - wget - curl + neovim + git + wget + curl ]; - nix.settings.experimental-features = ["nix-command" "flakes"]; - }) - ]; - }; - - m920q = let - username = "phil"; - specialArgs = {inherit username;}; - in - nixpkgs.lib.nixosSystem { - inherit specialArgs; - system = "x86_64-linux"; - - modules = [ - ./hosts/m920q - ./users/${username}/nixos.nix - - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - - home-manager.extraSpecialArgs = inputs // specialArgs; - home-manager.users.${username} = import ./users/${username}/home.nix; - } + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + } + ) ]; }; - qemu = let - username = "phil"; - specialArgs = {inherit username;}; - in - nixpkgs.lib.nixosSystem { - inherit specialArgs; - system = "x86_64-linux"; + m920q = + let + username = "phil"; + specialArgs = { + inherit inputs username; + }; + in + nixpkgs.lib.nixosSystem { + inherit specialArgs; + system = "x86_64-linux"; - modules = [ - ./hosts/qemu - ./users/${username}/nixos.nix + modules = [ + ./hosts/m920q + ./users/${username}/nixos.nix - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = inputs // specialArgs; - home-manager.users.${username} = import ./users/${username}/home.nix; - } - ]; - }; + home-manager.backupFileExtension = "backup"; + home-manager.extraSpecialArgs = inputs // specialArgs; + home-manager.users.${username} = import ./users/${username}/home.nix; + home-manager.sharedModules = [ + inputs.nixcord.homeModules.nixcord + ]; - hp15-n028sg = let - username = "phil"; - specialArgs = {inherit username;}; - in - nixpkgs.lib.nixosSystem { - inherit specialArgs; - system = "x86_64-linux"; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + } + ]; + }; - modules = [ - ./hosts/hp15-n028sg - ./users/${username}/nixos.nix + qemu = + let + username = "phil"; + specialArgs = { inherit username; }; + in + nixpkgs.lib.nixosSystem { + inherit specialArgs; + system = "x86_64-linux"; - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; + modules = [ + ./hosts/qemu + ./users/${username}/nixos.nix - home-manager.extraSpecialArgs = inputs // specialArgs; - home-manager.users.${username} = import ./users/${username}/home.nix; - } - ]; - }; + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.extraSpecialArgs = inputs // specialArgs; + home-manager.users.${username} = import ./users/${username}/home.nix; + } + ]; + }; + + hp15-n028sg = + let + username = "phil"; + specialArgs = { inherit username; }; + in + nixpkgs.lib.nixosSystem { + inherit specialArgs; + system = "x86_64-linux"; + + modules = [ + ./hosts/hp15-n028sg + ./users/${username}/nixos.nix + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.extraSpecialArgs = inputs // specialArgs; + home-manager.users.${username} = import ./users/${username}/home.nix; + } + ]; + }; + }; }; - }; } diff --git a/home/core.nix b/home/core.nix index 54b2c79..f8b4b0f 100644 --- a/home/core.nix +++ b/home/core.nix @@ -1,4 +1,5 @@ -{username, ...}: { +{ username, ... }: +{ # Home Manager needs a bit of information about you and the # paths it should manage. home = { diff --git a/home/file_manager/dolphin.nix b/home/file_manager/dolphin.nix index 95b0ede..7bcf4b5 100644 --- a/home/file_manager/dolphin.nix +++ b/home/file_manager/dolphin.nix @@ -1,8 +1,8 @@ { pkgs, ... }: { - home.packages = with pkgs; [ - kdePackages.dolphin - libsForQt5.kio-extras - kio-fuse - ]; + home.packages = with pkgs; [ + kdePackages.dolphin + libsForQt5.kio-extras + kio-fuse + ]; } diff --git a/home/file_manager/krusader.nix b/home/file_manager/krusader.nix index 32b1821..b9845f3 100644 --- a/home/file_manager/krusader.nix +++ b/home/file_manager/krusader.nix @@ -1,11 +1,11 @@ { pkgs, ... }: { - home.packages = with pkgs; [ - krusader - krename - kdiff3 -# kdePackages.kompare - xxdiff - ]; + home.packages = with pkgs; [ + krusader + krename + kdiff3 + # kdePackages.kompare + xxdiff + ]; } diff --git a/home/file_manager/spacefm.nix b/home/file_manager/spacefm.nix index 5a30a51..b98c91c 100644 --- a/home/file_manager/spacefm.nix +++ b/home/file_manager/spacefm.nix @@ -1,4 +1,4 @@ { pkgs, ... }: { - progams.spacefm.enable = true; + progams.spacefm.enable = true; } diff --git a/home/file_manager/thunar.nix b/home/file_manager/thunar.nix index 84382d4..c62047c 100644 --- a/home/file_manager/thunar.nix +++ b/home/file_manager/thunar.nix @@ -1,5 +1,4 @@ { pkgs, ... }: { - } diff --git a/home/hyprland/alacritty.nix b/home/hyprland/alacritty.nix index 767dc4b..a8eba47 100644 --- a/home/hyprland/alacritty.nix +++ b/home/hyprland/alacritty.nix @@ -1,8 +1,48 @@ { pkgs, ... }: { - programs.alacritty = { - enable = true; + programs.alacritty = { + enable = true; + settings = { + # Font + font = { + normal = { + family = "FiraCode Nerd Font Mono"; # Change to your preferred Nerd Font + style = "Regular"; + }; + bold = { + family = "FiraCode Nerd Font Mono"; + style = "Bold"; + }; + italic = { + family = "FiraCode Nerd Font Mono"; + style = "Italic"; + }; + size = 11; + }; + window = { + opacity = 0.6; # Adjust between 0.0 (fully transparent) and 1.0 (opaque) + padding = { + x = 10; + y = 10; + }; + decorations = "full"; # none, transparent, full, buttonless + title = "Alacritty"; + dynamic_title = true; + }; - }; + }; + }; + fonts = { + fontconfig = { + enable = true; + defaultFonts = { + monospace = [ "FiraCode Nerd Font Mono" ]; + }; + }; + }; + + home.packages = with pkgs; [ + fira-code-nerdfont + ]; } diff --git a/home/hyprland/default.nix b/home/hyprland/default.nix index 2e63e1f..5de8bf9 100644 --- a/home/hyprland/default.nix +++ b/home/hyprland/default.nix @@ -1,13 +1,14 @@ -{ pkgs, ...}: { - imports = [ - ./kitty.nix # Terminal - ./alacritty.nix - ./hyprland.nix - ./hypridle.nix - ./hyprlock.nix - ./hyprpaper.nix - ./rofi # App Launcher - ./mako.nix # Notifyer - ]; - +{ pkgs, ... }: +{ + imports = [ + ./kitty.nix # Terminal + ./alacritty.nix + ./hyprland.nix + ./hypridle.nix + ./hyprlock.nix + ./hyprpaper.nix + ./rofi # App Launcher + ./mako.nix # Notifyer + ]; + } diff --git a/home/hyprland/hypridle.nix b/home/hyprland/hypridle.nix index 462b2ed..7452fd3 100644 --- a/home/hyprland/hypridle.nix +++ b/home/hyprland/hypridle.nix @@ -1,34 +1,35 @@ { pkgs, ... }: { - # Hyprland and related packages - home.packages = with pkgs; [ - hypridle - ]; + # Hyprland and related packages + home.packages = with pkgs; [ + hypridle + ]; - # Hypridle configuration - services.hypridle = { - enable = true; - settings = { - general = { - after_sleep_cmd = "hyprctl dispatch dpms on"; - ignore_dbus_inhibit = false; - lock_cmd = "hyprlock"; - before_sleep_cmd = ''notify-send -u critical "Hey master, I’m getting sleepy… I’ll see you in my code dreams 💖" --icon -="$HOME/.config/hypr/avatar.png" --app-name="Hyprlock"''; - }; + # Hypridle configuration + services.hypridle = { + enable = true; + settings = { + general = { + after_sleep_cmd = "hyprctl dispatch dpms on"; + ignore_dbus_inhibit = false; + lock_cmd = "hyprlock"; + before_sleep_cmd = '' + notify-send -u critical "Hey master, I’m getting sleepy… I’ll see you in my code dreams 💖" --icon + ="$HOME/.config/hypr/avatar.png" --app-name="Hyprlock"''; + }; - listener = [ - { - timeout = 300; - on-timeout = "hyprlock"; - } - { - timeout = 600; - on-timeout = "hyprctl dispatch dpms off"; - on-resume = "hyprctl dispatch dpms on"; - } - ]; - }; + listener = [ + { + timeout = 300; + on-timeout = "hyprlock"; + } + { + timeout = 600; + on-timeout = "hyprctl dispatch dpms off"; + on-resume = "hyprctl dispatch dpms on"; + } + ]; }; + }; } diff --git a/home/hyprland/hyprland.nix b/home/hyprland/hyprland.nix index f9f27cf..75b7399 100644 --- a/home/hyprland/hyprland.nix +++ b/home/hyprland/hyprland.nix @@ -1,281 +1,280 @@ -{ inputs, pkgs, ...}: -let - package = pkgs.hyprland; - super = "SUPER"; - terminal = "kitty"; - fileManager = "spacefm"; - theme = "-theme $HOME/.config/rofi/catppuccin-default.rasi"; - menu = "rofi -show drun ${theme}"; - filebrowser = "rofi -show filebrowser ${theme}"; - power = "rofi -show p -modi p:rofi-power-menu"; -in +{ pkgs, ... }: +let + package = pkgs.hyprland; + super = "SUPER"; + terminal = "kitty"; + fileManager = "yazi"; + theme = "-theme $HOME/.config/rofi/custom.rasi"; + menu = "rofi -show drun ${theme}"; + filebrowser = "rofi -show filebrowser ${theme}"; + power = "rofi -show p -modi p:rofi-power-menu"; +in { - home.packages = with pkgs; [ - grim - slurp - wl-clipboard + home.packages = with pkgs; [ + grim + slurp + wl-clipboard + ]; + + home.file.".config/hypr" = { + source = ./configs; + # copy the scripts directory recursively + recursive = true; + }; + + home.pointerCursor = { + gtk.enable = true; + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Classic"; + size = 16; + }; + + systemd.user.targets.hyprland-sessionn.Unit.Wants = [ + "xdg-desktop-autostart.target" + ]; + + wayland.windowManager.hyprland = { + inherit package; + enable = true; + + xwayland.enable = true; + + systemd = { + enable = true; + variables = [ "--all" ]; + enableXdgAutostart = true; + }; + + plugins = [ + #inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars + ]; + }; + + wayland.windowManager.hyprland.settings = { + source = [ + "~/.config/hypr/mocha.conf" ]; - home.file.".config/hypr" = { - source = ./configs; - # copy the scripts directory recursively - recursive = true; - }; - - home.pointerCursor = { - gtk.enable = true; - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Classic"; - size = 16; - }; - - systemd.user.targets.hyprland-sessionn.Unit.Wants = [ - "xdg-desktop-autostart.target" + env = [ + "NIXOS_OZONE_WL,1" + "MOZ_ENABLE_WAYLAND,1" + "MOZ_WEBRENDER,1" + "_JAVA_AWT_WM_NONREPARENTING,1" + "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" + "QT_QPA_PLATFORM,wayland" + "SDL_VIDEODRIVER,wayland" + "GDK_BACKEND,wayland,x11" + "XCURSOR_SIZE,24" + "EDITOR,nvim" ]; - wayland.windowManager.hyprland = { - inherit package; - enable = true; + monitor = [ + "DP-1, 1920x1080@60, 1920x0, 1" + "HDMI-A-2, 1920x1080@60, 0x0, 1" + ]; - xwayland.enable = true; + input = { + kb_layout = "de"; + repeat_rate = 50; + repeat_delay = 300; - systemd = { - enable = true; - variables = [ "--all" ]; - enableXdgAutostart = true; - }; + accel_profile = "flat"; + follow_mouse = 1; + mouse_refocus = false; + sensitivity = 0; # -1.0 to 1.0, 0 means no modification. + + numlock_by_default = 1; + touchpad = { + natural_scroll = true; + }; - plugins = [ - #inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars - ]; }; - wayland.windowManager.hyprland.settings = { - source = [ - "~/.config/hypr/mocha.conf" - ]; + general = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + gaps_in = 8; + gaps_out = 16; + border_size = 4; - env = [ - "NIXOS_OZONE_WL,1" - "MOZ_ENABLE_WAYLAND,1" - "MOZ_WEBRENDER,1" - "_JAVA_AWT_WM_NONREPARENTING,1" - "QT_WAYLAND_DISABLE_WINDOWDECORATION,1" - "QT_QPA_PLATFORM,wayland" - "SDL_VIDEODRIVER,wayland" - "GDK_BACKEND,wayland,x11" - "XCURSOR_SIZE,24" - "EDITOR,nvim" - ]; - - monitor = [ - "DP-1, 1920x1080@60, 1920x0, 1" - "HDMI-A-2, 1920x1080@60, 0x0, 1" - ]; + "col.active_border" = "$green"; + "col.inactive_border" = "$red"; - input = { - kb_layout = "de"; - repeat_rate = 50; - repeat_delay = 300; - - accel_profile = "flat"; - follow_mouse = 1; - mouse_refocus = false; - sensitivity = 0; # -1.0 to 1.0, 0 means no modification. - - numlock_by_default = 1; - touchpad = { - natural_scroll = true; - }; + layout = "dwindle"; - }; - - general = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - gaps_in = 8; - gaps_out = 16; - border_size = 4; - - "col.active_border" = "$green"; - "col.inactive_border" = "$red"; - - layout = "dwindle"; - - # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on - allow_tearing = false; - }; - - decoration = { - rounding = 12; - - shadow = { - enabled = true; - range = 16; - render_power = 4; - ignore_window = true; - color = "$green"; - color_inactive = "$red"; - }; - - blur = { - enabled = true; - size = 1; - passes = 3; - new_optimizations = 1; - noise = 0.04; - }; - }; - - animations = { - enabled = "yes"; - bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; - animation = [ - "windows, 1, 7, myBezier" - "windowsOut, 1, 7, default, popin 80%" - "border, 1, 10, default" - "borderangle, 1, 8, default" - "fade, 1, 7, default" - "workspaces, 1, 6, default" - ]; - }; - - layerrule = [ - "blur,gtk-layer-shell" - "ignorezero,gtk-layer-shell" - "blur,notifications" - "ignorezero,notifications" - "blur,rofi" - "ignorezero,rofi" - ]; - - - dwindle = { - # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = "yes"; # you probably want this - }; - - gestures = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = "off"; - }; - - misc = { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - force_default_wallpaper = 0; # Set to 0 or 1 to disable the anime mascot wallpapers - }; - - # Example per-device config - # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more - device = { - name = "epic-mouse-v1"; - sensitivity = -0.5; - }; - - windowrulev2 = "suppressevent maximize, class:.*"; - - windowrule = [ - "opacity 0.0 override, class:^(xwaylandvideobridge)$" - "noanim, class:^(xwaylandvideobridge)$" - "noinitialfocus, class:^(xwaylandvideobridge)$" - "maxsize 1 1, class:^(xwaylandvideobridge)$" - "noblur, class:^(xwaylandvideobridge)$" - "nofocus, class:^(xwaylandvideobridge)$" - ]; - - exec-once = [ - "waybar &" - "hyprpaper &" - ]; - - # Keybindings - bind = [ - - "${super}, Q, exec, ${terminal}" - "${super}, C, killactive, " - "${super}, M, exit, " - "${super}, E, exec, ${fileManager}" - "${super}, V, togglefloating, " - "${super}, R, exec, ${menu}" - "${super}, S, exec, ${power}" - "${super}, F, exec, ${filebrowser}" - "${super}, P, pseudo, " # dwindle - "${super}, J, togglesplit, "# dwindle - "${super}, O, exec, obsidian" - "${super}, I, exec, firefox" - "${super}, G, exec, thunderbird" - - # Move focus with mainMod + arrow keys - "${super}, left, movefocus, l" - "${super}, right, movefocus, r" - "${super}, up, movefocus, u" - "${super}, down, movefocus, d" - - # Switch workspaces with mainMod + [0-9] - "${super}, 1, workspace, 1" - "${super}, 2, workspace, 2" - "${super}, 3, workspace, 3" - "${super}, 4, workspace, 4" - "${super}, 5, workspace, 5" - "${super}, 6, workspace, 6" - "${super}, 7, workspace, 7" - "${super}, 8, workspace, 8" - "${super}, 9, workspace, 9" - "${super}, 0, workspace, 10" - - # Move active window to a workspace with mainMod + SHIFT + [0-9] - "${super} SHIFT, 1, movetoworkspace, 1" - "${super} SHIFT, 2, movetoworkspace, 2" - "${super} SHIFT, 3, movetoworkspace, 3" - "${super} SHIFT, 4, movetoworkspace, 4" - "${super} SHIFT, 5, movetoworkspace, 5" - "${super} SHIFT, 6, movetoworkspace, 6" - "${super} SHIFT, 7, movetoworkspace, 7" - "${super} SHIFT, 8, movetoworkspace, 8" - "${super} SHIFT, 9, movetoworkspace, 9" - "${super} SHIFT, 0, movetoworkspace, 10" - - # Example special workspace (scratchpad) - #"${super}, S, togglespecialworkspace, magic" - "${super} SHIFT, S, movetoworkspace, special:magic" - - # Scroll through existing workspaces with mainMod + scroll - "${super}, mouse_down, workspace, e+1" - "${super}, mouse_up, workspace, e-1" - - # Screenshot - ''${super}, Z, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')'' - ''${super}, U, exec, grim $HOME/Pictures/Screenshots/$(date +'%s_grim.png')'' - ]; - - bindl = [ - #", XF86AudioMute, exec, amixer set Master toggle - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - ", XF86AudioPlay, exec, playerctl play-pause" # the stupid key is called play , but it toggles - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPrev, exec, playerctl previous" - ]; - - bindle = [ - # Multi Media Control - ", XF86AudioRaiseVolume, exec, vol --up" - ", XF86AudioLowerVolume, exec, vol --down" - ", XF86MonBrightnessUp, exec, bri --up" - ", XF86MonBrightnessDown, exec, bri --down" - ", XF86Search, exec, ${menu}" - - ]; - - bindm = [ - "${super}, mouse:272, movewindow" - "${super}, mouse:273, resizewindow" - ]; + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = false; }; - - # NOTE: this executable is used by greetd to start a wayland session when system boot up - # with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config in NixOS module - home.file.".wayland-session" = { - source = "${package}/bin/Hyprland"; - executable = true; + + decoration = { + rounding = 12; + + shadow = { + enabled = true; + range = 16; + render_power = 4; + ignore_window = true; + color = "$green"; + color_inactive = "$red"; + }; + + blur = { + enabled = true; + size = 1; + passes = 3; + new_optimizations = 1; + noise = 0.04; + }; }; + + animations = { + enabled = "yes"; + bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; + animation = [ + "windows, 1, 7, myBezier" + "windowsOut, 1, 7, default, popin 80%" + "border, 1, 10, default" + "borderangle, 1, 8, default" + "fade, 1, 7, default" + "workspaces, 1, 6, default" + ]; + }; + + layerrule = [ + "blur,gtk-layer-shell" + "ignorezero,gtk-layer-shell" + "blur,notifications" + "ignorezero,notifications" + "blur,rofi" + "ignorezero,rofi" + ]; + + dwindle = { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = "yes"; # you probably want this + }; + + gestures = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = "off"; + }; + + misc = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + force_default_wallpaper = 0; # Set to 0 or 1 to disable the anime mascot wallpapers + }; + + # Example per-device config + # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more + device = { + name = "epic-mouse-v1"; + sensitivity = -0.5; + }; + + windowrulev2 = "suppressevent maximize, class:.*"; + + windowrule = [ + "opacity 0.0 override, class:^(xwaylandvideobridge)$" + "noanim, class:^(xwaylandvideobridge)$" + "noinitialfocus, class:^(xwaylandvideobridge)$" + "maxsize 1 1, class:^(xwaylandvideobridge)$" + "noblur, class:^(xwaylandvideobridge)$" + "nofocus, class:^(xwaylandvideobridge)$" + ]; + + exec-once = [ + "waybar &" + "hyprpaper &" + ]; + + # Keybindings + bind = [ + + "${super}, Q, exec, ${terminal}" + "${super}, C, killactive, " + "${super}, M, exit, " + "${super}, E, exec, ${fileManager}" + "${super}, V, togglefloating, " + "${super}, R, exec, ${menu}" + "${super}, S, exec, ${power}" + "${super}, F, exec, ${filebrowser}" + "${super}, P, pseudo, " # dwindle + "${super}, J, togglesplit, " # dwindle + "${super}, O, exec, obsidian" + "${super}, I, exec, firefox" + "${super}, G, exec, thunderbird" + + # Move focus with mainMod + arrow keys + "${super}, left, movefocus, l" + "${super}, right, movefocus, r" + "${super}, up, movefocus, u" + "${super}, down, movefocus, d" + + # Switch workspaces with mainMod + [0-9] + "${super}, 1, workspace, 1" + "${super}, 2, workspace, 2" + "${super}, 3, workspace, 3" + "${super}, 4, workspace, 4" + "${super}, 5, workspace, 5" + "${super}, 6, workspace, 6" + "${super}, 7, workspace, 7" + "${super}, 8, workspace, 8" + "${super}, 9, workspace, 9" + "${super}, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "${super} SHIFT, 1, movetoworkspace, 1" + "${super} SHIFT, 2, movetoworkspace, 2" + "${super} SHIFT, 3, movetoworkspace, 3" + "${super} SHIFT, 4, movetoworkspace, 4" + "${super} SHIFT, 5, movetoworkspace, 5" + "${super} SHIFT, 6, movetoworkspace, 6" + "${super} SHIFT, 7, movetoworkspace, 7" + "${super} SHIFT, 8, movetoworkspace, 8" + "${super} SHIFT, 9, movetoworkspace, 9" + "${super} SHIFT, 0, movetoworkspace, 10" + + # Example special workspace (scratchpad) + #"${super}, S, togglespecialworkspace, magic" + "${super} SHIFT, S, movetoworkspace, special:magic" + + # Scroll through existing workspaces with mainMod + scroll + "${super}, mouse_down, workspace, e+1" + "${super}, mouse_up, workspace, e-1" + + # Screenshot + ''${super}, Z, exec, grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%s_grim.png')'' + ''${super}, U, exec, grim $HOME/Pictures/Screenshots/$(date +'%s_grim.png')'' + ]; + + bindl = [ + #", XF86AudioMute, exec, amixer set Master toggle + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioPlay, exec, playerctl play-pause" # the stupid key is called play , but it toggles + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPrev, exec, playerctl previous" + ]; + + bindle = [ + # Multi Media Control + ", XF86AudioRaiseVolume, exec, vol --up" + ", XF86AudioLowerVolume, exec, vol --down" + ", XF86MonBrightnessUp, exec, bri --up" + ", XF86MonBrightnessDown, exec, bri --down" + ", XF86Search, exec, ${menu}" + + ]; + + bindm = [ + "${super}, mouse:272, movewindow" + "${super}, mouse:273, resizewindow" + ]; + }; + + # NOTE: this executable is used by greetd to start a wayland session when system boot up + # with such a vendor-no-locking script, we can switch to another wayland compositor without modifying greetd's config in NixOS module + home.file.".wayland-session" = { + source = "${package}/bin/Hyprland"; + executable = true; + }; } diff --git a/home/hyprland/hyprlock.nix b/home/hyprland/hyprlock.nix index a2cab71..d8bc005 100644 --- a/home/hyprland/hyprlock.nix +++ b/home/hyprland/hyprlock.nix @@ -1,96 +1,96 @@ { pkgs, catppuccin, ... }: { - # Hyprland and related packages - home.packages = with pkgs; [ - hyprlock - ]; + # Hyprland and related packages + home.packages = with pkgs; [ + hyprlock + ]; - catppuccin.hyprlock.enable = false; + catppuccin.hyprlock.enable = false; - # Hyprlock configuration - programs.hyprlock = { - enable = true; - settings = { - - source = "$HOME/.config/hypr/mocha.conf"; + # Hyprlock configuration + programs.hyprlock = { + enable = true; + settings = { - "$accent" = "$mauve"; - "$accentAlpha" = "$mauveAlpha"; - "$font" = "JetBrainsMono Nerd Font"; + source = "$HOME/.config/hypr/mocha.conf"; - general = { - disable_loading_bar = true; - hide_cursor = true; - }; + "$accent" = "$mauve"; + "$accentAlpha" = "$mauveAlpha"; + "$font" = "JetBrainsMono Nerd Font"; - background = [ - { - path="~/Pictures/Wallpapers/lucy_with_cat.png"; - blur_passes = 0; - blur_size = 0; - } - ]; + general = { + disable_loading_bar = true; + hide_cursor = true; + }; - label = [ - # TIME - { - monitor = ""; - text = "$TIME"; - color = "$text"; - font_size = 90; - font_family = "$font"; - position = "-30, 0"; - halign = "right"; - valign = "top"; - } + background = [ + { + path = "~/Pictures/Wallpapers/lucy_with_cat.png"; + blur_passes = 0; + blur_size = 0; + } + ]; - # DATE - { - monitor = ""; - text = ''cmd[update:43200000] date +"%A, %d %B %Y"''; - color = "$text"; - font_size = 25; - font_family = "$font"; - position = "-30, -150"; - halign = "right"; - valign = "top"; - } - ]; + label = [ + # TIME + { + monitor = ""; + text = "$TIME"; + color = "$text"; + font_size = 90; + font_family = "$font"; + position = "-30, 0"; + halign = "right"; + valign = "top"; + } - # INPUT FIELD - input-field = { - monitor = ""; - size = "300, 60"; - outline_thickness = 4; - dots_size = 0.2; - dots_spacing = 0.2; - dots_center = "true"; - outer_color = "$red"; - inner_color = "$surface0"; - font_color = "$text"; - fade_on_empty = false; - placeholder_text = ''󰌾 Logged in as $USER''; - hide_input = false; - check_color = "$accent"; - fail_color = "$red"; - fail_text = "$FAIL ($ATTEMPTS)"; - capslock_color = "$yellow"; - position = "0, -150"; - halign = "center"; - valign = "center"; - }; + # DATE + { + monitor = ""; + text = ''cmd[update:43200000] date +"%A, %d %B %Y"''; + color = "$text"; + font_size = 25; + font_family = "$font"; + position = "-30, -150"; + halign = "right"; + valign = "top"; + } + ]; - image = { - monitor = ""; - path = "~/.config/hypr/avatar.png"; - size = 300; - border_color = "$teal"; - position = "0, 75"; - halign = "center"; - valign = "center"; - }; - }; + # INPUT FIELD + input-field = { + monitor = ""; + size = "300, 60"; + outline_thickness = 4; + dots_size = 0.2; + dots_spacing = 0.2; + dots_center = "true"; + outer_color = "$red"; + inner_color = "$surface0"; + font_color = "$text"; + fade_on_empty = false; + placeholder_text = ''󰌾 Logged in as $USER''; + hide_input = false; + check_color = "$accent"; + fail_color = "$red"; + fail_text = "$FAIL ($ATTEMPTS)"; + capslock_color = "$yellow"; + position = "0, -150"; + halign = "center"; + valign = "center"; + }; + + image = { + monitor = ""; + path = "~/.config/hypr/avatar.png"; + size = 300; + border_color = "$teal"; + position = "0, 75"; + halign = "center"; + valign = "center"; + }; }; + }; } diff --git a/home/hyprland/hyprpaper.nix b/home/hyprland/hyprpaper.nix index 8ab0654..273069c 100644 --- a/home/hyprland/hyprpaper.nix +++ b/home/hyprland/hyprpaper.nix @@ -1,24 +1,22 @@ { pkgs, ... }: { - home.packages = with pkgs; [ - hyprpaper - ]; + home.packages = with pkgs; [ + hyprpaper + ]; - home.file = { - "Pictures/Wallpapers" = { - source = ../../wallpapers; - recursive = true; - }; + home.file = { + "Pictures/Wallpapers" = { + source = ../../wallpapers; + recursive = true; }; + }; + + # Hyprpaper configuration + services.hyprpaper.enable = true; + services.hyprpaper.settings = { + preload = "Pictures/Wallpapers/tokio.png"; + wallpaper = ", Pictures/Wallpapers/tokio.png"; + }; - # Hyprpaper configuration - services.hyprpaper.enable = true; - services.hyprpaper.settings = { - preload = "Pictures/Wallpapers/tokio.png"; - wallpaper = ", Pictures/Wallpapers/tokio.png"; - }; - } - - diff --git a/home/hyprland/kitty.nix b/home/hyprland/kitty.nix index 3fe0e12..43db8c6 100644 --- a/home/hyprland/kitty.nix +++ b/home/hyprland/kitty.nix @@ -1,22 +1,23 @@ -{ pkgs, lib, ... }: +{ lib, ... }: { - programs.kitty = lib.mkForce { - enable = true; - settings = { - themeFile = "Catppuccin-Mocha"; - confirm_os_window_close = 0; - dynamic_background_opacity = true; - enable_audio_bell = false; - mouse_hide_wait = "-1.0"; - window_padding_width = 10; - background_opacity = "0.5"; - background_blur = 5; - tab_bar_min_tabs = 1; - tab_bar_edge = "bottom"; - tab_bar_style = "powerline"; - tab_powerline_style = "slanted"; - tab_title_template = "{title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}"; - symbol_map = let + programs.kitty = lib.mkForce { + enable = true; + settings = { + themeFile = "Catppuccin-Mocha"; + confirm_os_window_close = 0; + dynamic_background_opacity = true; + enable_audio_bell = false; + mouse_hide_wait = "-1.0"; + window_padding_width = 10; + background_opacity = "0.8"; + background_blur = 5; + tab_bar_min_tabs = 1; + tab_bar_edge = "bottom"; + tab_bar_style = "powerline"; + tab_powerline_style = "slanted"; + tab_title_template = "{title}{' :{}:'.format(num_windows) if num_windows > 1 else ''}"; + symbol_map = + let mappings = [ "U+23FB-U+23FE" "U+2B58" @@ -38,7 +39,7 @@ "U+E5FA-U+E62B" ]; in - (builtins.concatStringsSep "," mappings) + " Symbols Nerd Font"; - }; + (builtins.concatStringsSep "," mappings) + " Symbols Nerd Font"; }; + }; } diff --git a/home/hyprland/mako.nix b/home/hyprland/mako.nix index 9393e7d..1883468 100644 --- a/home/hyprland/mako.nix +++ b/home/hyprland/mako.nix @@ -1,17 +1,16 @@ { pkgs, ... }: { - services.mako = { - enable = true; - font = "FiraCodeNerdFontPropo 12"; - borderSize = 4; - borderRadius = 8; - defaultTimeout = 5000; + services.mako = { + enable = true; + font = "FiraCodeNerdFontPropo 12"; + borderSize = 4; + borderRadius = 8; + defaultTimeout = 5000; - extraConfig = '' -[app-name=Spotify] -border-color=#a6e3a1 - ''; + extraConfig = '' + [app-name=Spotify] + border-color=#a6e3a1 + ''; - - }; + }; } diff --git a/home/hyprland/rofi/configs/background.png b/home/hyprland/rofi/configs/background.png new file mode 100644 index 0000000..fcf0626 Binary files /dev/null and b/home/hyprland/rofi/configs/background.png differ diff --git a/home/hyprland/rofi/configs/custom.rasi b/home/hyprland/rofi/configs/custom.rasi new file mode 100644 index 0000000..d8c7b09 --- /dev/null +++ b/home/hyprland/rofi/configs/custom.rasi @@ -0,0 +1,222 @@ +* { + rosewater: #f5e0dc; + flamingo: #f2cdcd; + pink: #f5c2e7; + mauve: #cba6f7; + red: #f38ba8; + maroon: #eba0ac; + peach: #fab387; + yellow: #f9e2af; + green: #a6e3a1; + teal: #94e2d5; + sky: #89dceb; + sapphire: #74c7ec; + blue: #89b4fa; + lavender: #b4befe; + text: #cdd6f4; + subtext1: #bac2de; + subtext0: #a6adc8; + overlay2: #9399b2; + overlay1: #7f849c; + overlay0: #6c7086; + surface2: #585b70; + surface1: #45475a; + surface0: #313244; + base: #1e1e2e; + mantle: #181825; + crust: #11111b; +} + +configuration { + show-icons: true; + modi: "window,drun,filebrowser"; + display-drun: "Apps"; + display-filebrowser: "Files"; + display-run: "RUN"; + display-window: "Active"; + drun-display-format: "{name}"; + window-format: "{w} · {c} · {t}"; +} + +/* Main Window */ +window { + /* properties for window widget */ + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 50%; + height: 90%; + x-offset: 0px; + y-offset: 0px; + + /* properties for all widgets */ + enabled: true; + border-radius: 12px; + cursor: "default"; + background-color: @base; +} + +/* Main Box */ + +mainbox { + enabled: true; + spacing: 0px; + background-color: transparent; + orientation: horizontal; + children: [ "imagebox", "listbox" ]; +} + +imagebox { + padding: 20px; + background-color: transparent; + background-image: url("~/.config/rofi/background.png", height); + orientation: vertical; + children: [ "inputbar", "dummy", "mode-switcher" ]; +} + +listbox { + spacing: 20px; + padding: 20px; + background-color: transparent; + orientation: vertical; + children: [ "message", "listview" ]; +} + +dummy { + background-color: transparent; +} + +/* Input */ +inputbar { + enabled: true; + spacing: 10px; + padding: 15px; + border-radius: 10px; + background-color: @crust; + text-color: @text; + children: [ "textbox-prompt-colon", "entry" ]; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: inherit; + text-color: inherit; +} +entry { + enabled: true; + background-color: inherit; + text-color: inherit; + cursor: text; + placeholder: "Search"; + placeholder-color: inherit; +} + +/* Mode Switcher */ +mode-switcher{ + enabled: true; + spacing: 20px; + background-color: transparent; + text-color: @text; +} +button { + padding: 15px; + border-radius: 10px; + background-color: @base; + text-color: inherit; + cursor: pointer; +} +button selected { + background-color: @base; + text-color: @pink; +} + +/* Listview */ +listview { + enabled: true; + columns: 1; + lines: 8; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 10px; + background-color: transparent; + text-color: @text; + cursor: "default"; +} + +/* Elements */ +element { + enabled: true; + spacing: 15px; + padding: 8px; + border-radius: 10px; + background-color: transparent; + text-color: @mauve; + cursor: pointer; +} + +element normal.normal { + background-color: inherit; + text-color: inherit; +} +element normal.urgent { + background-color: inherit; + text-color: @red; +} +element normal.active { + background-color: inherit; + text-color: @blue; +} + +element selected.normal { + background-color: @crust; + text-color: @pink; +} +element selected.urgent { + background-color: @crust; + text-color: @maroon; +} +element selected.active { + background-color: @crust; + text-color: @sky; +} +element-icon { + background-color: transparent; + text-color: inherit; + size: 32px; + cursor: inherit; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +/* Message */ +message { + background-color: transparent; +} +textbox { + padding: 15px; + border-radius: 10px; + background-color: @overlay0; + text-color: @peach; + vertical-align: 0.5; + horizontal-align: 0.0; +} + +error-message { + padding: 15px; + border-radius: 20px; + background-color: @surface0; + text-color: @red; +} diff --git a/home/hyprland/rofi/default.nix b/home/hyprland/rofi/default.nix index 874f590..0c80584 100644 --- a/home/hyprland/rofi/default.nix +++ b/home/hyprland/rofi/default.nix @@ -1,21 +1,28 @@ { pkgs, - config, ... -}: { - home.packages = with pkgs; [ - rofi-power-menu - ]; +}: +{ - programs.rofi = { - enable = true; - cycle = false; - package = pkgs.rofi-wayland; - }; + home.packages = with pkgs; [ + rofi-power-menu + rofi-calc + ]; - home.file.".config/rofi" = { - source = ./configs; - # copy the scripts directory recursively - recursive = true; - }; + programs.rofi = { + enable = true; + cycle = false; + package = pkgs.rofi-wayland; + font = "FiraCode Nerd Font Mono 12"; + + location = "center"; + terminal = "${pkgs.kitty}/bin/kitty"; + + }; + + home.file.".config/rofi" = { + source = ./configs; + # copy the scripts directory recursively + recursive = true; + }; } diff --git a/home/hyprland/waybar/default.nix b/home/hyprland/waybar/default.nix index 9c1ccb5..4e14d6e 100644 --- a/home/hyprland/waybar/default.nix +++ b/home/hyprland/waybar/default.nix @@ -2,45 +2,48 @@ pkgs, config, ... -}: { - programs.waybar = { - enable = true; - package = pkgs.waybar; - /*settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 30; - output = [ - "eDP-1" - "DP-1" - "HDMI-A-1" - "Virtual-1" - ]; +}: +{ + programs.waybar = { + enable = true; + package = pkgs.waybar; + /* + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ + "eDP-1" + "DP-1" + "HDMI-A-1" + "Virtual-1" + ]; - modules-left = [ "sway/workspaces" "sway/mode" "wlr/taskbar" ]; - modules-center = [ "sway/window" "custom/hello-from-waybar" ]; - modules-right = [ "mpd" "custom/mymodule#with-css-id" "temperature" ]; + modules-left = [ "sway/workspaces" "sway/mode" "wlr/taskbar" ]; + modules-center = [ "sway/window" "custom/hello-from-waybar" ]; + modules-right = [ "mpd" "custom/mymodule#with-css-id" "temperature" ]; - "sway/workspaces" = { - disable-scroll = true; - all-outputs = true; - }; - "custom/hello-from-waybar" = { - format = "hello {}"; - max-length = 40; - interval = "once"; - exec = pkgs.writeShellScript "hello-from-waybar" '' - echo "from within waybar $USER" - ''; - }; - }; - };*/ - }; + "sway/workspaces" = { + disable-scroll = true; + all-outputs = true; + }; + "custom/hello-from-waybar" = { + format = "hello {}"; + max-length = 40; + interval = "once"; + exec = pkgs.writeShellScript "hello-from-waybar" '' + echo "from within waybar $USER" + ''; + }; + }; + }; + */ + }; - home.file.".config/waybar" = { - source = ./configs; - # copy the scripts directory recursively - recursive = true; - }; + home.file.".config/waybar" = { + source = ./configs; + # copy the scripts directory recursively + recursive = true; + }; } diff --git a/home/hyprland/waybar/double-monitor.nix b/home/hyprland/waybar/double-monitor.nix index 23ac537..fd9e6f0 100644 --- a/home/hyprland/waybar/double-monitor.nix +++ b/home/hyprland/waybar/double-monitor.nix @@ -2,171 +2,200 @@ pkgs, config, ... -} : { - programs.waybar = { - enable = true; - package = pkgs.waybar; - settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 30; - output = [ "DP-1" ]; +}: +{ + programs.waybar = { + enable = true; + package = pkgs.waybar; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ "DP-1" ]; - modules-left = [ - "hyprland/workspaces" - "mpris" - ]; + modules-left = [ + "hyprland/workspaces" + "mpris" + ]; - modules-center = []; - - modules-right = [ - "network" - "memory" - "cpu" - "clock" - ]; + modules-center = [ ]; - # Widgets - "sway/workspaces" = { - disable-scroll = true; - all-outputs = true; - }; - - mpris = { - format = "{player_icon} {dynamic}"; - format-paused = "{status_icon} {dynamic}"; - max-length = 100; - - player-icons = { - default = "⏸"; - mpv = "🎵"; - }; + modules-right = [ + "network" + "memory" + "cpu" + "clock" + ]; - status-icons = { - paused = "▶"; - }; - }; - - "hyprland/workspaces" = { - format = "{icon}"; - format-icons = { - default = ""; - active = ""; - }; - }; - - network = { - tooltip = true; - format-wifi = "{icon} "; - format-icons = ["󰤟" "󰤢" "󰤥"]; - rotate = 0; - format-ethernet = "󰈀 "; - tooltip-format = "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}"; - format-linked = "󰈀 {ifname} (No IP)"; - format-disconnected = " "; - tooltip-format-disconnected = "Disconnected"; - on-click = "/usr/local/bin/ags -t ControlPanel"; - interval = 2; - }; - - memory = { - interval = 1; - rotate = 270; - format = "{icon}"; - format-icons = ["󰝦" "󰪞" "󰪟" "󰪠" "󰪡" "󰪢" "󰪣" "󰪤" "󰪥"]; - max-length = 10; - }; - - cpu = { - interval = 1; - format = "{icon}"; - rotate = 270; - format-icons = ["󰝦" "󰪞" "󰪟" "󰪠" "󰪡" "󰪢" "󰪣" "󰪤" "󰪥"]; - }; - - clock = { - format = "{:%I:%M %p}"; - rotate = 0; - on-click = "/usr/local/bin/ags -t ActivityCenter"; - tooltip-format = "{calendar}"; - - calendar = { - mode = "month"; - mode-mon-col = 3; - on-scroll = 1; - on-click-right = "mode"; - format = { - months = "{}"; - weekdays = "{}"; - today = "{}"; - }; - }; - - actions = { - on-click-right = "mode"; - on-click-forward = "tz_up"; - on-click-backward = "tz_down"; - on-scroll-up = "shift_up"; - on-scroll-down = "shift_down"; - }; - }; - - }; - - secondBar = { - layer = "top"; - position = "top"; - height = 30; - output = [ - "HDMI-A-2" - ]; - - modules-left = [ - "hyprland/workspaces" - ]; - - modules-center = [ - ]; - - modules-right = [ - "network" - ]; - - "hyprland/workspaces" = { - format = "{icon}"; - format-icons = { - default = ""; - active = ""; - }; - }; - - "custom/weather" = { - exec = "~/.config/waybar/weather.py waybar"; - restart-interval = 900; - return-type = "json"; - }; - - network = { - tooltip = true; - format-wifi = "{icon} "; - format-icons = ["󰤟" "󰤢" "󰤥"]; - rotate = 0; - format-ethernet = "{bandwidthTotalBits} 󰈀 {bandwidthUpBits} 󰶣 {bandwidthDownBits} 󰶡 "; - tooltip-format = "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}"; - format-linked = "󰈀 {ifname} (No IP)"; - format-disconnected = " "; - tooltip-format-disconnected = "Disconnected"; - on-click = "/usr/local/bin/ags -t ControlPanel"; - interval = 2; - }; - }; + # Widgets + "sway/workspaces" = { + disable-scroll = true; + all-outputs = true; }; - }; - home.file.".config/waybar" = { - source = ./configs; - # copy the scripts directory recursively - recursive = true; + mpris = { + format = "{player_icon} {dynamic}"; + format-paused = "{status_icon} {dynamic}"; + max-length = 100; + + player-icons = { + default = "⏸"; + mpv = "🎵"; + }; + + status-icons = { + paused = "▶"; + }; + }; + + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + default = ""; + active = ""; + }; + }; + + network = { + tooltip = true; + format-wifi = "{icon} "; + format-icons = [ + "󰤟" + "󰤢" + "󰤥" + ]; + rotate = 0; + format-ethernet = "󰈀 "; + tooltip-format = "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}"; + format-linked = "󰈀 {ifname} (No IP)"; + format-disconnected = " "; + tooltip-format-disconnected = "Disconnected"; + on-click = "/usr/local/bin/ags -t ControlPanel"; + interval = 2; + }; + + memory = { + interval = 1; + rotate = 270; + format = "{icon}"; + format-icons = [ + "󰝦" + "󰪞" + "󰪟" + "󰪠" + "󰪡" + "󰪢" + "󰪣" + "󰪤" + "󰪥" + ]; + max-length = 10; + }; + + cpu = { + interval = 1; + format = "{icon}"; + rotate = 270; + format-icons = [ + "󰝦" + "󰪞" + "󰪟" + "󰪠" + "󰪡" + "󰪢" + "󰪣" + "󰪤" + "󰪥" + ]; + }; + + clock = { + format = "{:%I:%M %p}"; + rotate = 0; + on-click = "/usr/local/bin/ags -t ActivityCenter"; + tooltip-format = "{calendar}"; + + calendar = { + mode = "month"; + mode-mon-col = 3; + on-scroll = 1; + on-click-right = "mode"; + format = { + months = "{}"; + weekdays = "{}"; + today = "{}"; + }; + }; + + actions = { + on-click-right = "mode"; + on-click-forward = "tz_up"; + on-click-backward = "tz_down"; + on-scroll-up = "shift_up"; + on-scroll-down = "shift_down"; + }; + }; + + }; + + secondBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ + "HDMI-A-2" + ]; + + modules-left = [ + "hyprland/workspaces" + ]; + + modules-center = [ + ]; + + modules-right = [ + "network" + ]; + + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + default = ""; + active = ""; + }; + }; + + "custom/weather" = { + exec = "~/.config/waybar/weather.py waybar"; + restart-interval = 900; + return-type = "json"; + }; + + network = { + tooltip = true; + format-wifi = "{icon} "; + format-icons = [ + "󰤟" + "󰤢" + "󰤥" + ]; + rotate = 0; + format-ethernet = "{bandwidthTotalBits} 󰈀 {bandwidthUpBits} 󰶣 {bandwidthDownBits} 󰶡 "; + tooltip-format = "Network: {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}"; + format-linked = "󰈀 {ifname} (No IP)"; + format-disconnected = " "; + tooltip-format-disconnected = "Disconnected"; + on-click = "/usr/local/bin/ags -t ControlPanel"; + interval = 2; + }; + }; }; + }; + + home.file.".config/waybar" = { + source = ./configs; + # copy the scripts directory recursively + recursive = true; + }; } diff --git a/home/hyprland/waybar/single-monitor.nix b/home/hyprland/waybar/single-monitor.nix index aeee9fb..8babc4d 100644 --- a/home/hyprland/waybar/single-monitor.nix +++ b/home/hyprland/waybar/single-monitor.nix @@ -2,137 +2,162 @@ pkgs, config, ... -} : { - programs.waybar = { - enable = true; - package = pkgs.waybar; - settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 30; - output = [ - "eDP-1" - "DP-1" - "HDMI-A-1" - "Virtual-1" - ]; +}: +{ + programs.waybar = { + enable = true; + package = pkgs.waybar; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ + "eDP-1" + "DP-1" + "HDMI-A-1" + "Virtual-1" + ]; - modules-left = [ - "hyprland/workspaces" - "mpris" - ]; + modules-left = [ + "hyprland/workspaces" + "mpris" + ]; - modules-center = [ - "custom/weather" - ]; - - modules-right = [ - "network" - "memory" - "cpu" - "clock" - ]; + modules-center = [ + "custom/weather" + ]; - # Widgets - "sway/workspaces" = { - disable-scroll = true; - all-outputs = true; - }; - - mpris = { - format = "{player_icon} {dynamic}"; - format-paused = "{status_icon} {dynamic}"; - max-length = 100; - - player-icons = { - default = "⏸"; - mpv = "🎵"; - }; + modules-right = [ + "network" + "memory" + "cpu" + "clock" + ]; - status-icons = { - paused = "▶"; - }; - }; - - "hyprland/workspaces" = { - format = "{icon}"; - format-icons = { - default = ""; - active = ""; - }; - }; - - network = { - tooltip = true; - format-wifi = "{icon} "; - format-icons = ["󰤟" "󰤢" "󰤥"]; - rotate = 0; - format-ethernet = "󰈀 "; - tooltip-format = "Network = {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}"; - format-linked = "󰈀 {ifname} (No IP)"; - format-disconnected = " "; - tooltip-format-disconnected = "Disconnected"; - on-click = "/usr/local/bin/ags -t ControlPanel"; - interval = 2; - }; - - memory = { - interval = 1; - rotate = 270; - format = "{icon}"; - format-icons = ["󰝦" "󰪞" "󰪟" "󰪠" "󰪡" "󰪢" "󰪣" "󰪤" "󰪥"]; - max-length = 10; - }; - - cpu = { - interval = 1; - format = "{icon}"; - rotate = 270; - format-icons = ["󰝦" "󰪞" "󰪟" "󰪠" "󰪡" "󰪢" "󰪣" "󰪤" "󰪥"]; - }; - - clock = { - format = "{:%I:%M %p}"; - rotate = 0; - on-click = "/usr/local/bin/ags -t ActivityCenter"; - tooltip-format = "{calendar}"; - - calendar = { - mode = "month"; - mode-mon-col = 3; - on-scroll = 1; - on-click-right = "mode"; - format = { - months = "{}"; - weekdays = "{}"; - today = "{}"; - }; - }; - - actions = { - on-click-right = "mode"; - on-click-forward = "tz_up"; - on-click-backward = "tz_down"; - on-scroll-up = "shift_up"; - on-scroll-down = "shift_down"; - }; - }; - - # Custom Widgets - "custom/weather" = { - exec = "python3 ~/.config/waybar/weather.py waybar"; - restart-interval = 900; - return-type = "json"; - }; - - }; + # Widgets + "sway/workspaces" = { + disable-scroll = true; + all-outputs = true; }; - }; - home.file.".config/waybar" = { - source = ./configs; - # copy the scripts directory recursively - recursive = true; + mpris = { + format = "{player_icon} {dynamic}"; + format-paused = "{status_icon} {dynamic}"; + max-length = 100; + + player-icons = { + default = "⏸"; + mpv = "🎵"; + }; + + status-icons = { + paused = "▶"; + }; + }; + + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + default = ""; + active = ""; + }; + }; + + network = { + tooltip = true; + format-wifi = "{icon} "; + format-icons = [ + "󰤟" + "󰤢" + "󰤥" + ]; + rotate = 0; + format-ethernet = "󰈀 "; + tooltip-format = "Network = {essid}\nSignal strength: {signaldBm}dBm ({signalStrength}%)\nFrequency: {frequency}MHz\nInterface: {ifname}\nIP: {ipaddr}/{cidr}\nGateway: {gwaddr}\nNetmask: {netmask}"; + format-linked = "󰈀 {ifname} (No IP)"; + format-disconnected = " "; + tooltip-format-disconnected = "Disconnected"; + on-click = "/usr/local/bin/ags -t ControlPanel"; + interval = 2; + }; + + memory = { + interval = 1; + rotate = 270; + format = "{icon}"; + format-icons = [ + "󰝦" + "󰪞" + "󰪟" + "󰪠" + "󰪡" + "󰪢" + "󰪣" + "󰪤" + "󰪥" + ]; + max-length = 10; + }; + + cpu = { + interval = 1; + format = "{icon}"; + rotate = 270; + format-icons = [ + "󰝦" + "󰪞" + "󰪟" + "󰪠" + "󰪡" + "󰪢" + "󰪣" + "󰪤" + "󰪥" + ]; + }; + + clock = { + format = "{:%I:%M %p}"; + rotate = 0; + on-click = "/usr/local/bin/ags -t ActivityCenter"; + tooltip-format = "{calendar}"; + + calendar = { + mode = "month"; + mode-mon-col = 3; + on-scroll = 1; + on-click-right = "mode"; + format = { + months = "{}"; + weekdays = "{}"; + today = "{}"; + }; + }; + + actions = { + on-click-right = "mode"; + on-click-forward = "tz_up"; + on-click-backward = "tz_down"; + on-scroll-up = "shift_up"; + on-scroll-down = "shift_down"; + }; + }; + + # Custom Widgets + "custom/weather" = { + exec = "python3 ~/.config/waybar/weather.py waybar"; + restart-interval = 900; + return-type = "json"; + }; + + }; }; + }; + + home.file.".config/waybar" = { + source = ./configs; + # copy the scripts directory recursively + recursive = true; + }; } diff --git a/home/niri/default.nix b/home/niri/default.nix index 25f8aa3..0650dc4 100644 --- a/home/niri/default.nix +++ b/home/niri/default.nix @@ -1,5 +1,5 @@ { pkgs, ... }: { - programs.niri.enable = true; + programs.niri.enable = true; } diff --git a/home/programs/common.nix b/home/programs/common.nix index 8888273..4c105c0 100644 --- a/home/programs/common.nix +++ b/home/programs/common.nix @@ -3,7 +3,8 @@ pkgs, catppuccin-bat, ... -}: { +}: +{ home.packages = with pkgs; [ ]; diff --git a/home/programs/dev/compilers.nix b/home/programs/dev/compilers.nix index d740e57..cc9ed50 100644 --- a/home/programs/dev/compilers.nix +++ b/home/programs/dev/compilers.nix @@ -1,24 +1,24 @@ { pkgs, ... }: { - home.packages = with pkgs; [ - # C / C++ - clang - #gcc - lua - - # Rust - cargo - rustc + home.packages = with pkgs; [ + # C / C++ + clang + #gcc + lua - # Zig - zig - - #python - python314 - ]; + # Rust + cargo + rustc - programs.go = { - enable = true; - packages = {}; - }; + # Zig + zig + + #python + python314 + ]; + + programs.go = { + enable = true; + packages = { }; + }; } diff --git a/home/programs/dev/default.nix b/home/programs/dev/default.nix index 9f5d9b4..09f1695 100644 --- a/home/programs/dev/default.nix +++ b/home/programs/dev/default.nix @@ -1,11 +1,11 @@ { - imports = [ - ./git.nix - ./neovim - ./fstl.nix - ./openscad.nix - ./sqllite_browser.nix - ./compilers.nix - ./beekeeper-studio.nix - ]; + imports = [ + ./git.nix + ./neovim + ./fstl.nix + ./openscad.nix + ./sqllite_browser.nix + ./compilers.nix + ./beekeeper-studio.nix + ]; } diff --git a/home/programs/dev/git.nix b/home/programs/dev/git.nix index efa546b..b92e1aa 100644 --- a/home/programs/dev/git.nix +++ b/home/programs/dev/git.nix @@ -1,8 +1,9 @@ { pkgs, ... -}: { - home.packages = [pkgs.gh]; +}: +{ + home.packages = [ pkgs.gh ]; programs.git = { enable = true; diff --git a/home/programs/dev/neovim/config.lua b/home/programs/dev/neovim/config.lua new file mode 100644 index 0000000..d01d1d2 --- /dev/null +++ b/home/programs/dev/neovim/config.lua @@ -0,0 +1,268 @@ +-- Basics +vim.g.mapleader = " " + +-- Yank to system clipboard +vim.keymap.set("n", "y", '"+y', { desc = "Yank to clipboard" }) +vim.keymap.set("v", "y", '"+y', { desc = "Yank to clipboard" }) +vim.keymap.set("n", "Y", '"+Y', { desc = "Yank line to clipboard" }) + +-- Also make delete operations use system clipboard +vim.keymap.set("n", "d", '"+d', { desc = "Delete to clipboard" }) +vim.keymap.set("v", "d", '"+d', { desc = "Delete to clipboard" }) +vim.keymap.set("n", "D", '"+D', { desc = "Delete line to clipboard" }) + +-- Paste from system clipboard +vim.keymap.set("n", "p", '"+p', { desc = "Paste from clipboard" }) +vim.keymap.set("v", "p", '"+p', { desc = "Paste from clipboard" }) + +-- Treesitter +require("nvim-treesitter.configs").setup({ + ensure_installed = { "lua", "nix", "python", "javascript", "rust", "rasi" }, + sync_install = false, + auto_install = true, + highlight = { + enable = true, + additional_vim_regex_highlighting = false, + }, + + parser_install_dir = vim.fn.stdpath("data") .. "/treesitter", +}) +vim.opt.runtimepath:append(vim.fn.stdpath("data") .. "/treesitter") + +-- Linting +require("lint").linters_by_ft = {} +vim.api.nvim_create_autocmd({ "BufWritePost" }, { + callback = function() + require("lint").try_lint() + end, +}) + +-- Mason Setup +require("mason").setup({ + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗", + }, + }, +}) + +require("mason-lspconfig").setup({ + ensure_installed = { + "lua_ls", + "nil_ls", + "rust_analyzer", + "pylsp", + "stylelint-lsp", + }, + automatic_installation = true, +}) + +-- LSP Config +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 }), + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + }, { + { name = "buffer" }, + { name = "path" }, + }), +}) + +local lspconfig = require("lspconfig") +local capabilities = require("cmp_nvim_lsp").default_capabilities() +vim.keymap.set("n", "gd", vim.lsp.buf.definition, {}) +vim.keymap.set("n", "K", vim.lsp.buf.hover, {}) +vim.keymap.set("n", "rn", vim.lsp.buf.rename, {}) +vim.keymap.set("n", "ca", vim.lsp.buf.code_action, {}) + +-- Setup language servers +lspconfig.lua_ls.setup({ + capabilities = capabilities, + settings = { + Lua = { + runtime = { version = "LuaJIT" }, + diagnostics = { globals = { "vim" } }, + workspace = { library = vim.api.nvim_get_runtime_file("", true) }, + telemetry = { enable = false }, + }, + }, +}) + +lspconfig.nil_ls.setup({ capabilities = capabilities }) +lspconfig.rust_analyzer.setup({ capabilities = capabilities }) +lspconfig.pylsp.setup({ capabilities = capabilities }) +lspconfig.stylelint_lsp.setup({ + cmd = { "stylelint-lsp", "--stdio" }, + filetypes = { "css", "scss", "rasi" }, + capabilities = vim.lsp.protocol.make_client_capabilities(), +}) + +-- Conform +require("conform").setup({ + formatters_by_ft = { + lua = { "stylua" }, + nix = { "nixfmt" }, + python = { "black" }, + rust = { "rustfmt" }, + rasi = { "prettierd" }, + }, + format_on_save = { + timeout_ms = 500, + lsp_fallback = true, + }, +}) + +-- Yazi +require("yazi").setup({ + open_for_directories = true, +}) + +vim.keymap.set("n", "fy", function() + require("yazi").yazi(nil, vim.loop.cwd()) +end, { desc = "Open Yazi file manager" }) + +vim.keymap.set("n", "fd", function() + require("yazi").yazi(nil, vim.fn.expand("%:p:h")) +end, { desc = "Open Yazi in current file directory" }) + +-- Telescope +require("telescope").setup() + +local telescope = require("telescope.builtin") +vim.keymap.set("n", "ff", telescope.find_files, { desc = "Telescope find files" }) +vim.keymap.set("n", "fg", telescope.live_grep, { desc = "Telescope live grep" }) +vim.keymap.set("n", "fb", telescope.buffers, { desc = "Telescope buffers" }) +vim.keymap.set("n", "fh", telescope.help_tags, { desc = "Telescope help tags" }) + +-- Styling +require("catppuccin").setup({ + flavour = "mocha", + transparent_background = true, + term_colors = true, + integration = { + treesitter = true, + mason = true, + lsp_trouble = true, + which_key = true, + cmp = true, + gitsigns = true, + telescope = true, + nvimtree = true, + dashboard = true, + notify = true, + indent_blankline = true, + toggleterm = true, -- Important for transparent terminals + }, +}) + +vim.cmd.colorscheme("catppuccin") +vim.opt.number = true +vim.opt.cursorline = true +vim.opt.showmode = false +vim.opt.syntax = "enable" +vim.opt.hlsearch = true +vim.opt.incsearch = true +vim.opt.tabstop = 4 +vim.opt.termguicolors = true + +local colors = require("catppuccin.palettes").get_palette("mocha") +vim.api.nvim_set_hl(0, "LineNr", { fg = colors.text, bg = "NONE" }) +vim.api.nvim_set_hl(0, "CursorLineNr", { fg = colors.pink, bg = "NONE", bold = true }) + +-- ToggleTerm setup +require("toggleterm").setup({ + size = 20, + open_mapping = [[]], + direction = "float", + float_opts = { + border = "single", + width = 200, + height = 40, + }, +}) + +vim.keymap.set("n", "h", function() + require("toggleterm").toggle(1, 10, vim.loop.cwd(), "horizontal") +end, { desc = "Toggle terminal (horizontal)" }) + +vim.keymap.set("n", "v", function() + require("toggleterm").toggle(2, 60, vim.loop.cwd(), "vertical") +end, { desc = "Toggle terminal (vertical)" }) + +vim.keymap.set("n", "ft", function() + require("toggleterm").toggle(3, 20, vim.loop.cwd(), "float") +end, { desc = "Toggle terminal (float)" }) + +vim.keymap.set("t", "", "ToggleTerm", { desc = "Toggle terminal" }) +vim.keymap.set("t", "", "v", { desc = "Exit terminal and enter visual mode" }) + +-- Statusline +require("lualine").setup({ + options = { + theme = "catppuccin", + component_separators = { left = "|", right = "|" }, + section_separators = { left = "", right = "" }, + }, +}) + +-- Dashboard +local alpha = require("alpha") +local dashboard = require("alpha.themes.dashboard") + +dashboard.section.header.val = { + "⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⣯⣿⠿⣟⣷⣯⣛⢿⣿⣿⣾⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿", + "⣿⣿⣿⣿⣿⣿⣿⡿⣵⣿⡿⣴⣽⡟⣳⢿⢽⣽⣕⣽⢿⡿⣿⣟⣿⣿⣿⣿⣿⣿⣿", + "⣿⣿⣿⣷⣿⣿⢟⣫⣿⢟⢟⣾⣾⣿⣿⣞⢳⣻⢞⣎⠿⢞⣊⣿⣞⣿⣿⣿⣿⣿⢽", + "⣿⣿⣿⣿⣿⣏⢯⣿⣏⣏⠔⢇⣿⢢⢆⢀⢆⣧⣼⢻⢰⡧⢻⣝⣏⡸⣧⣾⣿⣿⣿", + "⣿⣿⣿⣿⡟⣻⣿⣿⡾⡿⡼⢸⡝⣝⡳⢢⣧⢳⣳⢷⡇⣗⢺⡺⣿⡧⣿⣿⣿⢿⢿", + "⣿⡿⣿⣼⡼⣿⣿⡗⡧⣧⠁⡝⣧⣳⠅⡾⠈⣎⢮⣧⣿⣿⣗⣷⣻⢷⣏⣼⢏⣺⣿", + "⣿⣿⣿⣻⣿⣿⣿⢧⣿⢹⠉⢷⢿⣧⣲⡏⡀⡈⢆⠳⣿⡿⢿⣿⣱⢿⢫⣷⣝⣿⣿", + "⣿⣿⣿⡯⡟⣿⣿⢽⣡⠟⢿⣮⠁⠙⠛⠈⡴⢿⣿⡷⣬⣽⢽⠧⣷⡏⣿⡇⣧⣽⣿", + "⣿⠟⢻⡧⡇⣿⡇⣇⣆⢄⡜⢃⡀⡀⡀⡀⡀⢎⣁⠁⣸⣗⣸⣿⣧⣼⡿⢹⢿⢾⣿", + "⣿⣷⣾⣿⢻⣿⢧⢻⣽⡀⡀⡀⡀⢄⡀⡀⡀⡀⡀⢀⣷⡸⡟⣿⣶⣻⣧⡛⡱⢝⣿", + "⣿⣿⣿⣿⢸⡿⢚⡜⣿⣇⡀⡀⡀⡀⡀⡀⡀⡀⠚⢁⢣⣜⡿⣿⡇⢼⣿⠨⣸⣿⣿", + "⣿⣄⣿⣗⢾⢻⣧⢿⣾⣿⣦⡀⡀⠑⠚⠉⡀⡀⣤⣿⢨⣿⠗⣻⢣⣿⢹⢈⣽⣿⣿", + "⣿⣿⣿⣿⢎⡄⢿⣞⡇⣿⠹⣿⣶⣀⡀⣀⡴⡩⢸⢏⣿⣿⣶⢻⣾⢏⡞⠡⢽⣇⣾", + "⣿⣿⣿⣮⣼⢬⣦⢿⣳⣌⠧⡉⠈⣇⣛⣁⣈⣼⣿⡸⠫⠛⠐⠛⠕⣙⣻⣬⣼⣿⣿", + "⢟⢿⣿⣿⣿⡢⣃⣪⣭⣡⣤⣶⠟⡿⠿⠿⠿⠛⢁⣿⣿⢩⠉⡀⠈⠓⡝⣿⣿⣿⣿", + "⣾⣿⣿⣿⣿⠞⢔⡣⡴⣾⣿⠓⣤⢧⡼⣉⠠⢤⣿⣿⠇⠃⡀⡀⡀⡀⡸⢿⣾⣿⣿", + "⣿⣿⣿⡿⣺⡸⢗⢠⣇⣿⣿⠊⠃⡀⠉⡀⢠⣿⣿⠟⡸⡀⡀⡀⡀⡀⣃⣬⠽⠿⣿", + "⣿⣿⣿⣿⡇⡏⢸⣿⠟⣽⡇⡀⡀⡀⡀⣴⣟⢭⣾⣿⡇⠎⣠⠒⠉⠈⢀⡀⢨⡋⣿", + "⠛⠛⠛⠋⠃⠓⠚⠛⠘⠛⠃⡀⠊⡀⠛⠛⠛⠂⠛⠛⠓⠁⠚⡀⠂⠒⠒⠐⠒⠋⠛", +} + +dashboard.section.buttons.val = { + dashboard.button("e", "[+] New file", ":ene startinsert "), + dashboard.button("f", "[?] Find file", ":Telescope find_files "), + dashboard.button("r", "[~] Recent files", ":Telescope oldfiles "), + dashboard.button("y", "[Y] Yazi", ":Yazi"), + dashboard.button("m", "[M] Mason", ":Mason"), + dashboard.button("q", "[X] Quit", ":qa"), +} + +dashboard.section.footer.val = "Circuits hum in anticipation of your will." + +vim.api.nvim_create_autocmd("VimEnter", { + callback = function() + if vim.fn.argc() == 0 then + require("alpha").start() + end + end, +}) + +alpha.setup(dashboard.config) diff --git a/home/programs/dev/neovim/configs/init.lua b/home/programs/dev/neovim/configs/init.lua deleted file mode 100644 index 0fda20c..0000000 --- a/home/programs/dev/neovim/configs/init.lua +++ /dev/null @@ -1,37 +0,0 @@ -vim.g.base46_cache = vim.fn.stdpath "data" .. "/base46/" -vim.g.mapleader = " " - --- bootstrap lazy and all plugins -local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim" - -if not vim.uv.fs_stat(lazypath) then - local repo = "https://github.com/folke/lazy.nvim.git" - vim.fn.system { "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath } -end - -vim.opt.rtp:prepend(lazypath) - -local lazy_config = require "configs.lazy" - --- load plugins -require("lazy").setup({ - { - "NvChad/NvChad", - lazy = false, - branch = "v2.5", - import = "nvchad.plugins", - }, - - { import = "plugins" }, -}, lazy_config) - --- load theme -dofile(vim.g.base46_cache .. "defaults") -dofile(vim.g.base46_cache .. "statusline") - -require "options" -require "nvchad.autocmds" - -vim.schedule(function() - require "mappings" -end) diff --git a/home/programs/dev/neovim/configs/lazy-lock.json b/home/programs/dev/neovim/configs/lazy-lock.json deleted file mode 100644 index 6a483ed..0000000 --- a/home/programs/dev/neovim/configs/lazy-lock.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, - "NvChad": { "branch": "v2.5", "commit": "6f25b2739684389ca69ea8229386c098c566c408" }, - "base46": { "branch": "v3.0", "commit": "59566882e09a8a77dbdb33b678a93680c36ae089" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, - "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "conform.nvim": { "branch": "master", "commit": "db8a4a9edb217067b1d7a2e0362c74bfe9cc944d" }, - "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, - "fzf.vim": { "branch": "master", "commit": "245eaf8e50fe440729056ce8d4e7e2bb5b1ff9c9" }, - "gitsigns.nvim": { "branch": "main", "commit": "4c40357994f386e72be92a46f41fc1664c84c87d" }, - "indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "mason-conform.nvim": { "branch": "main", "commit": "1983f353b29d8716751665c18d57e1ac0473a59a" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, - "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, - "menu": { "branch": "main", "commit": "7769b17c2a131108c02b10e9f844e504aa605cc2" }, - "minty": { "branch": "main", "commit": "aafc9e8e0afe6bf57580858a2849578d8d8db9e0" }, - "nvim-autopairs": { "branch": "master", "commit": "68f0e5c3dab23261a945272032ee6700af86227a" }, - "nvim-cmp": { "branch": "main", "commit": "c27370703e798666486e3064b64d59eaf4bdc6d5" }, - "nvim-lint": { "branch": "master", "commit": "6e9dd545a1af204c4022a8fcd99727ea41ffdcc8" }, - "nvim-lspconfig": { "branch": "master", "commit": "8a1529e46eef5efc86c34c8d9bdd313abc2ecba0" }, - "nvim-tree.lua": { "branch": "master", "commit": "c09ff35de503a41fa62465c6b4ae72d96e7a7ce4" }, - "nvim-treesitter": { "branch": "master", "commit": "1a314a58d6d7695d226b56f6b61b1596993d5ac7" }, - "nvim-web-devicons": { "branch": "master", "commit": "ab4cfee554e501f497bce0856788d43cf2eb93d7" }, - "openscad.nvim": { "branch": "main", "commit": "58baf76fd2f9e2fe2ca83ea120d56084edb8871e" }, - "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "telescope.nvim": { "branch": "master", "commit": "814f102cd1da3dc78c7d2f20f2ef3ed3cdf0e6e4" }, - "ui": { "branch": "v3.0", "commit": "57d403c219353b1f8e4cd635d058fbfcd9d647ea" }, - "volt": { "branch": "main", "commit": "21a2351697abfed26d4469b88d3ab124d55a1b3f" }, - "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" } -} diff --git a/home/programs/dev/neovim/configs/lua/chadrc.lua b/home/programs/dev/neovim/configs/lua/chadrc.lua deleted file mode 100644 index a7aa89e..0000000 --- a/home/programs/dev/neovim/configs/lua/chadrc.lua +++ /dev/null @@ -1,24 +0,0 @@ --- This file needs to have same structure as nvconfig.lua --- https://github.com/NvChad/ui/blob/v3.0/lua/nvconfig.lua --- Please read that file to know all available options :( - ----@type ChadrcConfig -local M = {} - -M.base46 = { - theme = "radium", - - -- hl_override = { - -- Comment = { italic = true }, - -- ["@comment"] = { italic = true }, - -- }, -} - --- M.nvdash = { load_on_startup = true } --- M.ui = { --- tabufline = { --- lazyload = false --- } ---} - -return M diff --git a/home/programs/dev/neovim/configs/lua/configs/conform.lua b/home/programs/dev/neovim/configs/lua/configs/conform.lua deleted file mode 100644 index 5b50b37..0000000 --- a/home/programs/dev/neovim/configs/lua/configs/conform.lua +++ /dev/null @@ -1,15 +0,0 @@ -local options = { - formatters_by_ft = { - lua = { "stylua" }, - -- css = { "prettier" }, - -- html = { "prettier" }, - }, - - format_on_save = { - -- These options will be passed to conform.format() - timeout_ms = 500, - lsp_fallback = true, - }, -} - -return options diff --git a/home/programs/dev/neovim/configs/lua/configs/lazy.lua b/home/programs/dev/neovim/configs/lua/configs/lazy.lua deleted file mode 100644 index cd170bd..0000000 --- a/home/programs/dev/neovim/configs/lua/configs/lazy.lua +++ /dev/null @@ -1,47 +0,0 @@ -return { - defaults = { lazy = true }, - install = { colorscheme = { "nvchad" } }, - - ui = { - icons = { - ft = "", - lazy = "󰂠 ", - loaded = "", - not_loaded = "", - }, - }, - - performance = { - rtp = { - disabled_plugins = { - "2html_plugin", - "tohtml", - "getscript", - "getscriptPlugin", - "gzip", - "logipat", - "netrw", - "netrwPlugin", - "netrwSettings", - "netrwFileHandlers", - "matchit", - "tar", - "tarPlugin", - "rrhelper", - "spellfile_plugin", - "vimball", - "vimballPlugin", - "zip", - "zipPlugin", - "tutor", - "rplugin", - "syntax", - "synmenu", - "optwin", - "compiler", - "bugreport", - "ftplugin", - }, - }, - }, -} diff --git a/home/programs/dev/neovim/configs/lua/configs/lint.lua b/home/programs/dev/neovim/configs/lua/configs/lint.lua deleted file mode 100644 index 51f32aa..0000000 --- a/home/programs/dev/neovim/configs/lua/configs/lint.lua +++ /dev/null @@ -1,21 +0,0 @@ -local lint = require("lint") - -lint.linters_by_ft = { - lua = { "luacheck" }, -} - -lint.linters.luacheck.args = { - "--globals", - "vim", - "--formatter", - "plain", - "--codes", - "--ranges", - "-", -} - -vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave" }, { - callback = function() - lint.try_lint() - end, -}) diff --git a/home/programs/dev/neovim/configs/lua/configs/lspconfig.lua b/home/programs/dev/neovim/configs/lua/configs/lspconfig.lua deleted file mode 100644 index 8f814e5..0000000 --- a/home/programs/dev/neovim/configs/lua/configs/lspconfig.lua +++ /dev/null @@ -1,57 +0,0 @@ --- load defaults i.e lua_lsp -local on_attach = require("nvchad.configs.lspconfig").on_attach -local on_init = require("nvchad.configs.lspconfig").on_init -local capabilities = require("nvchad.configs.lspconfig").capabilities - -local lspconfig = require("lspconfig") - --- List of all servers configured -lspconfig.servers = { - "lua_ls", - "templ", - "jedi_language_server", - -- "gopls", -} - --- List of servers configured with default config -local default_servers = { - "templ", - -- "gopls", - "jedi_language_server", -} - --- lsps with default config -for _, lsp in ipairs(default_servers) do - lspconfig[lsp].setup({ - on_attach = on_attach, - on_init = on_init, - capabilities = capabilities, - }) -end - --- Lua LSP -lspconfig.lua_ls.setup({ - on_attach = on_attach, - on_init = on_init, - capabilities = capabilities, - - settings = { - Lua = { - diagnostics = { - enable = false, -- Disable all diagnostics from lua_ls - -- globals = { "vim" } - }, - workspace = { - library = { - vim.fn.expand("$VIMRUNTIME/lua"), - vim.fn.expand("$VIMRUNTIME/lua/vim/lsp"), - vim.fn.stdpath("data") .. "/lazy/ui/nvchad_types", - vim.fn.stdpath("data") .. "/lazy/lazy.nvim/lua/lazy", - --"${3rd}/love2d/library", - }, - maxPreload = 100000, - preloadFileSize = 10000, - }, - }, - }, -}) diff --git a/home/programs/dev/neovim/configs/lua/configs/mason-conform.lua b/home/programs/dev/neovim/configs/lua/configs/mason-conform.lua deleted file mode 100644 index 4fa05a7..0000000 --- a/home/programs/dev/neovim/configs/lua/configs/mason-conform.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("mason-conform").setup({ - -- List of formatters to ignore during install - ignore_install = {}, -}) diff --git a/home/programs/dev/neovim/configs/lua/configs/mason-lint.lua b/home/programs/dev/neovim/configs/lua/configs/mason-lint.lua deleted file mode 100644 index 2f5a603..0000000 --- a/home/programs/dev/neovim/configs/lua/configs/mason-lint.lua +++ /dev/null @@ -1,26 +0,0 @@ -local lint = package.loaded["lint"] - -local ignore_install = {} - -local function table_contains(table, value) - for _, v in ipairs(table) do - if v == value then - return true - end - end - return false -end - -local all_linters = {} -for _, v in pairs(lint.linters_by_ft) do - for _, linter in ipairs(v) do - if not table_contains(ignore_install, linter) then - table.insert(all_linters, linter) - end - end -end - -require("mason-nvim-lint").setup({ - ensure_installed = all_linters, - automatic_installation = false, -}) diff --git a/home/programs/dev/neovim/configs/lua/configs/mason-lspconfig.lua b/home/programs/dev/neovim/configs/lua/configs/mason-lspconfig.lua deleted file mode 100644 index cce6dd7..0000000 --- a/home/programs/dev/neovim/configs/lua/configs/mason-lspconfig.lua +++ /dev/null @@ -1,24 +0,0 @@ -local lspconfig = package.loaded["lspconfig"] - -local ignore_install = {} - -local function table_contains(table, value) - for _, v in ipairs(table) do - if v == value then - return true - end - end - return false -end - -local all_servers = {} -for _, s in ipairs(lspconfig.servers) do - if not table_contains(ignore_install, s) then - table.insert(all_servers, s) - end -end - -require("mason-lspconfig").setup({ - ensure_installed = all_servers, - automatic_installation = false, -}) diff --git a/home/programs/dev/neovim/configs/lua/configs/treesitter.lua b/home/programs/dev/neovim/configs/lua/configs/treesitter.lua deleted file mode 100644 index d2a09cb..0000000 --- a/home/programs/dev/neovim/configs/lua/configs/treesitter.lua +++ /dev/null @@ -1,26 +0,0 @@ -local options = { - ensure_installed = { - "bash", - "fish", - "lua", - "luadoc", - "markdown", - "printf", - "toml", - "vim", - "vimdoc", - "yaml", - -- Languages - "python", - "templ", - }, - - highlight = { - enable = true, - use_languagetree = true, - }, - - indent = { enable = true }, -} - -require("nvim-treesitter.configs").setup(options) diff --git a/home/programs/dev/neovim/configs/lua/mappings.lua b/home/programs/dev/neovim/configs/lua/mappings.lua deleted file mode 100644 index 783b78f..0000000 --- a/home/programs/dev/neovim/configs/lua/mappings.lua +++ /dev/null @@ -1,10 +0,0 @@ -require "nvchad.mappings" - --- add yours here - -local map = vim.keymap.set - -map("n", ";", ":", { desc = "CMD enter command mode" }) -map("i", "jk", "") - --- map({ "n", "i", "v" }, "", " w ") diff --git a/home/programs/dev/neovim/configs/lua/options.lua b/home/programs/dev/neovim/configs/lua/options.lua deleted file mode 100644 index 95205d5..0000000 --- a/home/programs/dev/neovim/configs/lua/options.lua +++ /dev/null @@ -1,7 +0,0 @@ -require("nvchad.options") - --- add yours here! -local o = vim.o -o.shiftwidth = 4 -o.tabstop = 4 -o.softtabstop = 4 diff --git a/home/programs/dev/neovim/configs/lua/plugins/init.lua b/home/programs/dev/neovim/configs/lua/plugins/init.lua deleted file mode 100644 index a5430cb..0000000 --- a/home/programs/dev/neovim/configs/lua/plugins/init.lua +++ /dev/null @@ -1,70 +0,0 @@ -return { - - { - "nvim-treesitter/nvim-treesitter", - event = { "BufReadPre", "BufNewFile" }, - config = function() - require("configs.treesitter") - end, - }, - - { - "mfussenegger/nvim-lint", - event = { "BufReadPre", "BufNewFile" }, - config = function() - require("configs.lint") - end, - }, - - -- { - -- "rshkarin/mason-nvim-lint", - -- event = "VeryLazy", - -- config = function() - -- require("config.mason-lint") - -- end, - -- }, - - { - "stevearc/conform.nvim", - event = "BufWritePre", -- uncomment for format on save - opts = require("configs.conform"), - }, - - { - "zapling/mason-conform.nvim", - event = "VeryLazy", - dependencies = { "conform.nvim" }, - config = function() - require("configs.mason-conform") - end, - }, - - { - "neovim/nvim-lspconfig", - event = { "BufReadPre", "BufNewFile" }, - config = function() - require("nvchad.configs.lspconfig").defaults() - require("configs.lspconfig") - end, - }, - - { - "williamboman/mason-lspconfig.nvim", - event = "VeryLazy", - dependencies = { "nvim-lspconfig" }, - config = function() - require("configs.mason-lspconfig") - end, - }, - - { - "salkin-mada/openscad.nvim", - config = function() - vim.g.openscad_load_snippets = true - vim.g.openscad_default_mappings = true - vim.g.openscad_auto_open = true - require("openscad") - end, - dependencies = { "L3MON4D3/LuaSnip", "junegunn/fzf.vim" }, - }, -} diff --git a/home/programs/dev/neovim/default.nix b/home/programs/dev/neovim/default.nix index ca16b17..b8f9442 100644 --- a/home/programs/dev/neovim/default.nix +++ b/home/programs/dev/neovim/default.nix @@ -1,17 +1,72 @@ -{ pkgs, ... }: { - programs.neovim = { - enable = true; - viAlias = true; - vimAlias = true; - defaultEditor = true; - /*plugins = with pkgs.vimPlugins; [ - nvim-tree-lua - nvim-treesitter.withAllGrammars - ];*/ - }; +{ pkgs, ... }: +{ + programs.neovim = { + enable = true; + viAlias = true; + vimAlias = true; + defaultEditor = true; + #extraPackages = with pkgs; [ ]; - home.file.".config/nvim" = { - source = ./configs; - recursive = true; - }; + plugins = with pkgs.vimPlugins; [ + nvim-treesitter + nvim-lint + catppuccin-nvim + mason-nvim + mason-lspconfig-nvim + nvim-lspconfig + nvim-cmp + cmp-nvim-lsp + cmp-buffer + cmp-path + cmp-cmdline + luasnip + lualine-nvim + yazi-nvim + alpha-nvim + cheatsheet-nvim + toggleterm-nvim + avante-nvim # AI Stuff + + # Add conform.nvim as a custom plugin + (pkgs.vimUtils.buildVimPlugin { + name = "conform-nvim"; + src = pkgs.fetchFromGitHub { + owner = "stevearc"; + repo = "conform.nvim"; + rev = "stable"; + sha256 = "sha256-pUF9F5QoDzCZuVRcJEF91M8Qjkh/xosMkf9tRavkmJs="; + }; + }) + + # Add telescope.vim as a custom plugin + (pkgs.vimUtils.buildVimPlugin { + name = "telescope-nvim"; + src = pkgs.fetchFromGitHub { + owner = "nvim-telescope"; + repo = "telescope.nvim"; + rev = "0.1.8"; + sha256 = "sha256-e1ulhc4IIvUgpjKQrSqPY4WpXuez6wlxL6Min9U0o5Q="; + }; + }) + + ]; + + extraLuaConfig = builtins.readFile (./. + "/config.lua"); + }; + + home.packages = with pkgs; [ + nixfmt-rfc-style + stylua + black + nodePackages.prettier + rustfmt + nodejs + prettierd + stylelint-lsp + # Mason Binarys + lua-language-server + nil + rust-analyzer + python3Packages.python-lsp-server + ]; } diff --git a/home/programs/games/airshipper.nix b/home/programs/games/airshipper.nix index c898fea..fc304af 100644 --- a/home/programs/games/airshipper.nix +++ b/home/programs/games/airshipper.nix @@ -1,6 +1,6 @@ { pkgs, ... }: { - home.packages = with pkgs; [ - airshipper - ]; + home.packages = with pkgs; [ + airshipper + ]; } diff --git a/home/programs/games/itch.nix b/home/programs/games/itch.nix index 0c84cf5..cd06d8d 100644 --- a/home/programs/games/itch.nix +++ b/home/programs/games/itch.nix @@ -2,8 +2,9 @@ pkgs, config, ... -}: { - home.packages = with pkgs; [ - itch - ]; +}: +{ + home.packages = with pkgs; [ + itch + ]; } diff --git a/home/programs/games/lutris.nix b/home/programs/games/lutris.nix index fa6f52d..c6588c5 100644 --- a/home/programs/games/lutris.nix +++ b/home/programs/games/lutris.nix @@ -2,8 +2,9 @@ pkgs, config, ... -}: { - home.packages = with pkgs; [ - lutris - ]; +}: +{ + home.packages = with pkgs; [ + lutris + ]; } diff --git a/home/programs/games/opensource.nix b/home/programs/games/opensource.nix index ae55354..485a154 100644 --- a/home/programs/games/opensource.nix +++ b/home/programs/games/opensource.nix @@ -2,12 +2,13 @@ pkgs, config, ... -}: { - home.packages = with pkgs; [ - xonotic -# armagetron -# freeciv -# mindustry -# openra - ]; +}: +{ + home.packages = with pkgs; [ + xonotic + # armagetron + # freeciv + # mindustry + # openra + ]; } diff --git a/home/programs/games/steam.nix b/home/programs/games/steam.nix index 0ee14a9..ed35e3d 100644 --- a/home/programs/games/steam.nix +++ b/home/programs/games/steam.nix @@ -2,14 +2,17 @@ pkgs, config, ... -}: { - /*home.packages = with pkgs; [ +}: +{ + /* + home.packages = with pkgs; [ steam - ];*/ - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - localNetworkGameTransfers.openFirewall = true; - }; + ]; + */ + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + }; } diff --git a/home/programs/media/audacity.nix b/home/programs/media/audacity.nix index b38175d..4bb7244 100644 --- a/home/programs/media/audacity.nix +++ b/home/programs/media/audacity.nix @@ -1,7 +1,7 @@ { pkgs, ... }: { - home.packages = with pkgs; [ - audacity - yt-dlp - ]; + home.packages = with pkgs; [ + audacity + yt-dlp + ]; } diff --git a/home/programs/media/audio.nix b/home/programs/media/audio.nix index 92bb457..9799c6a 100644 --- a/home/programs/media/audio.nix +++ b/home/programs/media/audio.nix @@ -4,14 +4,14 @@ ... }: { - home.packages = with pkgs; [ - # audio control - pavucontrol - playerctl - pulsemixer - ]; + home.packages = with pkgs; [ + # audio control + pavucontrol + playerctl + pulsemixer + ]; - services = { - playerctld.enable = true; - }; + services = { + playerctld.enable = true; + }; } diff --git a/home/programs/media/image.nix b/home/programs/media/image.nix index 2408639..aae75e8 100644 --- a/home/programs/media/image.nix +++ b/home/programs/media/image.nix @@ -4,9 +4,9 @@ ... }: { - home.packages = with pkgs; [ - # images - imv - ]; + home.packages = with pkgs; [ + # images + imv + ]; } diff --git a/home/programs/media/media.nix b/home/programs/media/media.nix index cddae40..9ceb7c1 100644 --- a/home/programs/media/media.nix +++ b/home/programs/media/media.nix @@ -5,10 +5,10 @@ }: # media - control and enjoy audio/video { - imports = [ - ./audio.nix - ./image.nix - ./webcam.nix - ]; + imports = [ + ./audio.nix + ./image.nix + ./webcam.nix + ]; } diff --git a/home/programs/media/obs.nix b/home/programs/media/obs.nix index e4bc22b..63c991f 100644 --- a/home/programs/media/obs.nix +++ b/home/programs/media/obs.nix @@ -1,14 +1,14 @@ { pkgs, ... }: { - programs.obs-studio = { - enable = true; - #enableVirtualCamera = true; - plugins = with pkgs.obs-studio-plugins; [ - wlrobs - obs-vkcapture - obs-backgroundremoval - obs-pipewire-audio-capture - ]; - }; + programs.obs-studio = { + enable = true; + #enableVirtualCamera = true; + plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-vkcapture + obs-backgroundremoval + obs-pipewire-audio-capture + ]; + }; } diff --git a/home/programs/media/spicetify.nix b/home/programs/media/spicetify.nix index 26a77c1..6c6db79 100644 --- a/home/programs/media/spicetify.nix +++ b/home/programs/media/spicetify.nix @@ -1,15 +1,39 @@ -{ pkgs, inputs } : +{ pkgs, inputs, ... }: { - imports = [ - inputs.spicetify-nix.homeManagerModules.default - ]; + imports = [ + inputs.spicetify-nix.homeManagerModules.default + ]; - programs.spicetify = - let - spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; - in + programs.spicetify = + let + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; + in { - enable = true; - theme = spicePkgs.themes.catppuccin; - } + enable = true; + spotifyPackage = pkgs.spotify; + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + + enabledExtensions = with spicePkgs.extensions; [ + bookmark + fullAppDisplay + keyboardShortcut + popupLyrics + shuffle + autoVolume + betterGenres + adblock + wikify + songStats + ]; + + enabledCustomApps = with spicePkgs.apps; [ + lyricsPlus + newReleases + marketplace + ]; + + #enabledSnippets = with spicePkgs.snippets; [ ]; + + }; } diff --git a/home/programs/media/webcam.nix b/home/programs/media/webcam.nix index c6a5730..6aaf617 100644 --- a/home/programs/media/webcam.nix +++ b/home/programs/media/webcam.nix @@ -1,14 +1,14 @@ { pkgs, ... }: { - home.packages = with pkgs; [ - ffmpeg_6-full - gphoto2 - v4l-utils - ]; + home.packages = with pkgs; [ + ffmpeg_6-full + gphoto2 + v4l-utils + ]; - programs.mpv = { - enable = true; - defaultProfiles = ["gpu-hq"]; - scripts = [pkgs.mpvScripts.mpris]; - }; + programs.mpv = { + enable = true; + defaultProfiles = [ "gpu-hq" ]; + scripts = [ pkgs.mpvScripts.mpris ]; + }; } diff --git a/home/programs/productivity/geary.nix b/home/programs/productivity/geary.nix index 53e9af5..b7602e0 100644 --- a/home/programs/productivity/geary.nix +++ b/home/programs/productivity/geary.nix @@ -1,4 +1,4 @@ { pkgs, ... }: { - home.programs.geary.enable = true; + home.programs.geary.enable = true; } diff --git a/home/programs/productivity/logseq.nix b/home/programs/productivity/logseq.nix index e3de9b6..907e87a 100644 --- a/home/programs/productivity/logseq.nix +++ b/home/programs/productivity/logseq.nix @@ -1,13 +1,13 @@ { pkgs, ... }: -let - logseq-patch = pkgs.logseq.override { - electron_27 = pkgs.electron_34; - }; +let + logseq-patch = pkgs.logseq.override { + electron_27 = pkgs.electron_34; + }; in { - home.packages = with pkgs; [ - logseq-patch - logseq - ]; + home.packages = with pkgs; [ + logseq-patch + logseq + ]; } diff --git a/home/programs/productivity/notesnook.nix b/home/programs/productivity/notesnook.nix index d9d9714..34b2aca 100644 --- a/home/programs/productivity/notesnook.nix +++ b/home/programs/productivity/notesnook.nix @@ -1,4 +1,4 @@ { pkgs, ... }: { - home.packages = with pkgs; [ notesnook ]; + home.packages = with pkgs; [ notesnook ]; } diff --git a/home/programs/productivity/okular.nix b/home/programs/productivity/okular.nix index 828ed46..8945e82 100644 --- a/home/programs/productivity/okular.nix +++ b/home/programs/productivity/okular.nix @@ -1,4 +1,4 @@ { pkgs, ... }: { - home.packages = [ pkgs.libsForQt5.okular ]; + home.packages = [ pkgs.libsForQt5.okular ]; } diff --git a/home/programs/productivity/onlyoffice.nix b/home/programs/productivity/onlyoffice.nix index ad1f783..05ae3c0 100644 --- a/home/programs/productivity/onlyoffice.nix +++ b/home/programs/productivity/onlyoffice.nix @@ -1,8 +1,8 @@ { pkgs, ... }: { - # Install OnlyOffice Desktop Editors - home.packages = with pkgs; [ - onlyoffice-desktopeditors - ]; + # Install OnlyOffice Desktop Editors + home.packages = with pkgs; [ + onlyoffice-desktopeditors + ]; } diff --git a/home/programs/productivity/trilium.nix b/home/programs/productivity/trilium.nix index 2e22eb5..3af8504 100644 --- a/home/programs/productivity/trilium.nix +++ b/home/programs/productivity/trilium.nix @@ -1,4 +1,4 @@ { pkgs, ... }: { - home.packages = [ pkgs.trilium-desktop ]; + home.packages = [ pkgs.trilium-desktop ]; } diff --git a/home/programs/social/nixcord.nix b/home/programs/social/nixcord.nix new file mode 100644 index 0000000..678d32e --- /dev/null +++ b/home/programs/social/nixcord.nix @@ -0,0 +1,50 @@ +{ pkgs, ... }: + +# home.nix +{ + # ... + programs.nixcord = { + enable = true; # Enable Nixcord (It also installs Discord) + vesktop.enable = true; # Vesktop + dorion.enable = true; # Dorion + quickCss = "some CSS"; # quickCSS file + config = { + useQuickCss = true; # use out quickCSS + themeLinks = [ + # or use an online theme + "https://raw.githubusercontent.com/link/to/some/theme.css" + ]; + frameless = true; # Set some Vencord options + plugins = { + hideAttachments.enable = true; # Enable a Vencord plugin + ignoreActivities = { + # Enable a plugin and set some options + enable = true; + ignorePlaying = true; + ignoreWatching = true; + ignoredActivities = [ "someActivity" ]; + }; + }; + }; + dorion = { + theme = "dark"; + zoom = "1.1"; + blur = "acrylic"; # "none", "blur", or "acrylic" + sysTray = true; + openOnStartup = true; + autoClearCache = true; + disableHardwareAccel = false; + rpcServer = true; + rpcProcessScanner = true; + pushToTalk = true; + pushToTalkKeys = [ "RControl" ]; + desktopNotifications = true; + unreadBadge = true; + }; + extraConfig = { + # Some extra JSON config here + # ... + }; + }; + # ... +} diff --git a/home/programs/social/teamspeak.nix b/home/programs/social/teamspeak.nix index c6ce517..5b04f8c 100644 --- a/home/programs/social/teamspeak.nix +++ b/home/programs/social/teamspeak.nix @@ -1,8 +1,9 @@ { pkgs, ... }: { - # Install Element Desktop + # Install Teamspeak Desktop home.packages = with pkgs; [ teamspeak3 + # teamspeak6-client ]; } diff --git a/home/programs/social/zapzap.nix b/home/programs/social/zapzap.nix index 4450917..e537b56 100644 --- a/home/programs/social/zapzap.nix +++ b/home/programs/social/zapzap.nix @@ -3,6 +3,6 @@ { # Install Element Desktop home.packages = with pkgs; [ - zapzap + zapzap ]; } diff --git a/home/programs/web/chromium.nix b/home/programs/web/chromium.nix index 923c64d..7164b26 100644 --- a/home/programs/web/chromium.nix +++ b/home/programs/web/chromium.nix @@ -2,12 +2,13 @@ pkgs, config, ... -}: { - programs.chromium = { - enable = true; - commandLineArgs = ["--enable-features=TouchpadOverscrollHistoryNavigation"]; - extensions = [ - # {id = "";} // extension id, query from chrome web store - ]; - }; +}: +{ + programs.chromium = { + enable = true; + commandLineArgs = [ "--enable-features=TouchpadOverscrollHistoryNavigation" ]; + extensions = [ + # {id = "";} // extension id, query from chrome web store + ]; + }; } diff --git a/home/programs/web/firefox.nix b/home/programs/web/firefox.nix index 3c9fb62..4441d37 100644 --- a/home/programs/web/firefox.nix +++ b/home/programs/web/firefox.nix @@ -3,9 +3,10 @@ config, username, ... -}: { - programs.firefox = { - enable = true; - profiles.${username} = {}; - }; +}: +{ + programs.firefox = { + enable = false; + profiles.${username} = { }; + }; } diff --git a/home/programs/web/floorp.nix b/home/programs/web/floorp.nix index b1367a7..f7999e7 100644 --- a/home/programs/web/floorp.nix +++ b/home/programs/web/floorp.nix @@ -3,9 +3,11 @@ config, username, ... -}: { - programs.floorp = { - enable = true; - profiles.${username} = {}; - }; +}: +{ + programs.floorp = { + enable = true; + profiles.${username} = { }; + }; + } diff --git a/home/themes/dark/default.nix b/home/themes/dark/default.nix index 5445b97..12ca330 100644 --- a/home/themes/dark/default.nix +++ b/home/themes/dark/default.nix @@ -1,9 +1,9 @@ { pkgs, ... }: { - imports = [ - ./qt.nix -# ./gtk.nix - ]; + imports = [ + ./qt.nix + # ./gtk.nix + ]; } diff --git a/home/themes/dark/gtk.nix b/home/themes/dark/gtk.nix index bd99042..a0127f1 100644 --- a/home/themes/dark/gtk.nix +++ b/home/themes/dark/gtk.nix @@ -1,22 +1,22 @@ { pkgs, ... }: { - gtk = { - enable = true; + gtk = { + enable = true; - theme = { - package = pkgs.flat-remix-gtk; - name = "Flat-Remix-GTK-Grey-Darkest"; - }; - - iconTheme = { - package = pkgs.adwaita-icon-theme; - name = "Adwaita"; - }; - - font = { - name = "Sans"; - size = 12; - }; + theme = { + package = pkgs.flat-remix-gtk; + name = "Flat-Remix-GTK-Grey-Darkest"; }; + + iconTheme = { + package = pkgs.adwaita-icon-theme; + name = "Adwaita"; + }; + + font = { + name = "Sans"; + size = 12; + }; + }; } diff --git a/home/themes/dark/qt.nix b/home/themes/dark/qt.nix index 5c0a582..27a7112 100644 --- a/home/themes/dark/qt.nix +++ b/home/themes/dark/qt.nix @@ -1,19 +1,19 @@ { pkgs, ... }: { - - home.packages = with pkgs.libsForQt5; [ - qt5ct - qtstyleplugin-kvantum - ]; - qt = { - enable = true; - platformTheme.name = "qtct"; - style.name = "kvantum"; - }; + home.packages = with pkgs.libsForQt5; [ + qt5ct + qtstyleplugin-kvantum + ]; - xdg.configFile = { - "Kvantum/ArcDark".source = "${pkgs.arc-kde-theme}/share/Kvantum/ArcDark"; - "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=ArcDark"; - }; + qt = { + enable = true; + platformTheme.name = "qtct"; + style.name = "kvantum"; + }; + + xdg.configFile = { + "Kvantum/ArcDark".source = "${pkgs.arc-kde-theme}/share/Kvantum/ArcDark"; + "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=ArcDark"; + }; } diff --git a/home/xdg.nix b/home/xdg.nix index 8c6a082..dab8b1e 100644 --- a/home/xdg.nix +++ b/home/xdg.nix @@ -1,5 +1,6 @@ -{pkgs, config, ...}: let - browser = ["firefox.desktop"]; +{ pkgs, config, ... }: +let + browser = [ "floorp.desktop" ]; # XDG MIME types associations = { @@ -11,22 +12,23 @@ "application/xhtml+xml" = browser; "text/html" = browser; "x-scheme-handler/about" = browser; - "x-scheme-handler/chrome" = ["chromium-browser.desktop"]; + "x-scheme-handler/chrome" = [ "chromium-browser.desktop" ]; "x-scheme-handler/ftp" = browser; "x-scheme-handler/http" = browser; "x-scheme-handler/https" = browser; "x-scheme-handler/unknown" = browser; - "audio/*" = ["mpv.desktop"]; - "video/*" = ["mpv.dekstop"]; - "image/*" = ["imv.desktop"]; + "audio/*" = [ "mpv.desktop" ]; + "video/*" = [ "mpv.dekstop" ]; + "image/*" = [ "kitty-icat.desktop" ]; "application/json" = browser; - "application/pdf" = ["org.pwmt.zathura.desktop.desktop"]; - "x-scheme-handler/discord" = ["discordcanary.desktop"]; - "x-scheme-handler/spotify" = ["spotify.desktop"]; - "x-scheme-handler/tg" = ["telegramdesktop.desktop"]; + "application/pdf" = [ "okular.desktop" ]; + "x-scheme-handler/discord" = [ "discordcanary.desktop" ]; + "x-scheme-handler/spotify" = [ "spotify.desktop" ]; + "x-scheme-handler/tg" = [ "telegramdesktop.desktop" ]; }; -in { +in +{ xdg = { enable = true; cacheHome = config.home.homeDirectory + "/.local/cache"; @@ -36,6 +38,20 @@ in { defaultApplications = associations; }; + desktopEntries = { + kitty-icat = { + name = "Kitty Icat"; + exec = "kitty +kitten icat %F"; + terminal = true; + type = "Application"; + mimeType = [ "image/*" ]; + categories = [ + "Viewer" + "Graphics" + ]; + }; + }; + userDirs = { enable = true; createDirectories = true; @@ -45,16 +61,20 @@ in { }; portal = { - enable = true; - xdgOpenUsePortal = true; - config = { - common.default = [ "gtk" ]; - hyprland.default = [ "gtk" "hyprland" ]; - }; - extraPortals = [ - pkgs.xdg-desktop-portal-gtk - pkgs.xdg-desktop-portal-hyprland - ]; + enable = true; + xdgOpenUsePortal = true; + config = { + common.default = [ "gtk" ]; + hyprland.default = [ + "gtk" + "hyprland" + ]; + }; + + extraPortals = [ + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-hyprland + ]; }; }; } diff --git a/hosts/hp15-n028sg/default.nix b/hosts/hp15-n028sg/default.nix index a3eb877..cfab2c5 100644 --- a/hosts/hp15-n028sg/default.nix +++ b/hosts/hp15-n028sg/default.nix @@ -5,74 +5,72 @@ { config, pkgs, ... }: { - imports = [ - ../../modules/system.nix - ../../modules/nix-settings.nix - ../../modules/vpn.nix - ../../modules/fonts.nix - ../../modules/firewall.nix - ../../modules/localisation.nix - ../../modules/openssh.nix - ../../modules/pipewire.nix - ../../modules/podman.nix - ../../modules/services.nix - ../../modules/regreet/regreet.nix - ../../modules/plymouth.nix - ../../modules/file_managers/spacefm.nix - ../../modules/python.nix -# Include the results of the hardware scan. - ./hardware-configuration.nix + imports = [ + ../../modules/system.nix + ../../modules/nix-settings.nix + ../../modules/vpn.nix + ../../modules/fonts.nix + ../../modules/firewall.nix + ../../modules/localisation.nix + ../../modules/openssh.nix + ../../modules/pipewire.nix + ../../modules/podman.nix + ../../modules/services.nix + ../../modules/regreet/regreet.nix + ../../modules/plymouth.nix + ../../modules/file_managers/spacefm.nix + ../../modules/python.nix + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + programs.geary.enable = true; + + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + + networking = { + hostName = "nix-hp"; + #networkmanager.enable = true; + + wireless = { + enable = true; + networks = { + LANFRED.pskRaw = "36e2b41b51328800a9582be1a05f13f796f943569610ccdb61304803b86ce3da"; + #free.wifi = {}; + }; + }; + + nameservers = [ + "1.1.1.1" + "1.0.0.1" + "8.8.8.8" + "8.8.4.4" ]; + }; - programs.geary.enable = true; - - boot.loader = { - systemd-boot.enable = true; - efi.canTouchEfiVariables = true; + nixpkgs.config.nvidia.acceptLicense = true; + hardware.graphics.enable = true; + services.xserver.videoDrivers = [ "nvidia" ]; + hardware.nvidia = { + package = config.boot.kernelPackages.nvidiaPackages.legacy_470; + modesetting.enable = true; + open = false; + powerManagement = { + enable = false; + finegrained = false; }; + nvidiaSettings = true; - networking = { - hostName = "nix-hp"; - #networkmanager.enable = true; - - wireless = { - enable = true; - networks = { - LANFRED.pskRaw = "36e2b41b51328800a9582be1a05f13f796f943569610ccdb61304803b86ce3da"; - #free.wifi = {}; - }; - }; - - nameservers = [ - "1.1.1.1" - "1.0.0.1" - "8.8.8.8" - "8.8.4.4" - ]; + prime = { + intelBusId = "PCI:0:2:0"; + nvidiaBusId = "PCI:10:0:0"; + sync.enable = true; }; - - nixpkgs.config.nvidia.acceptLicense = true; - hardware.graphics.enable = true; - services.xserver.videoDrivers = [ "nvidia" ]; - hardware.nvidia = { - package = config.boot.kernelPackages.nvidiaPackages.legacy_470; - modesetting.enable = true; - open = false; - powerManagement = { - enable = false; - finegrained = false; - }; - nvidiaSettings = true; + }; - prime = { - intelBusId = "PCI:0:2:0"; - nvidiaBusId = "PCI:10:0:0"; - sync.enable = true; - }; - }; - - system.stateVersion = "25.11"; # Did you read the comment? + system.stateVersion = "25.11"; # Did you read the comment? } - - diff --git a/hosts/hp15-n028sg/hardware-configuration.nix b/hosts/hp15-n028sg/hardware-configuration.nix index e6e219b..e8d5fa6 100644 --- a/hosts/hp15-n028sg/hardware-configuration.nix +++ b/hosts/hp15-n028sg/hardware-configuration.nix @@ -1,28 +1,44 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "sr_mod" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ehci_pci" + "ahci" + "usb_storage" + "sd_mod" + "sr_mod" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-label/NIXROOT"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-label/NIXROOT"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-label/NIXBOOT"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-label/NIXBOOT"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; swapDevices = [ ]; diff --git a/hosts/m920q/configuration.nix b/hosts/m920q/configuration.nix index 7583a3d..32d2798 100644 --- a/hosts/m920q/configuration.nix +++ b/hosts/m920q/configuration.nix @@ -2,13 +2,18 @@ # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: { - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; # Use the systemd-boot EFI boot loader. boot.loader.systemd-boot.enable = true; @@ -17,7 +22,7 @@ # networking.hostName = "nixos"; # Define your hostname. # Pick only one of the below networking options. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. # Set your time zone. time.timeZone = "Europe/Berlin"; @@ -37,9 +42,6 @@ # Enable the X11 windowing system. # services.xserver.enable = true; - - - # Configure keymap in X11 services.xserver.xkb.layout = "de"; # services.xserver.xkb.options = "eurosign:e,caps:escape"; @@ -60,17 +62,17 @@ # Define a user account. Don't forget to set a password with ‘passwd’. users.users.phil = { - initialPassword = "!P2h3i4lon"; - isNormalUser = true; - extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. - packages = with pkgs; [ - tree - neovim - git - wget - curl - ]; - }; + initialPassword = "!P2h3i4lon"; + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + packages = with pkgs; [ + tree + neovim + git + wget + curl + ]; + }; # programs.firefox.enable = true; @@ -125,4 +127,3 @@ system.stateVersion = "24.11"; # Did you read the comment? } - diff --git a/hosts/m920q/default.nix b/hosts/m920q/default.nix index b275a13..edb0857 100644 --- a/hosts/m920q/default.nix +++ b/hosts/m920q/default.nix @@ -2,31 +2,36 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: { - imports = [ - ../../modules/system.nix - ../../modules/nix-settings.nix - ../../modules/vpn.nix - ../../modules/fonts.nix - ../../modules/firewall.nix - ../../modules/localisation.nix - ../../modules/openssh.nix - ../../modules/pipewire.nix - #../../modules/podman.nix - ../../modules/docker.nix - ../../modules/services.nix - ../../modules/regreet/regreet.nix - ../../modules/plymouth.nix - ../../modules/file_managers/spacefm.nix - ../../modules/appimage.nix - ../../modules/qemu.nix - ../../modules/thunderbird.nix - ../../modules/canon_eos_550d.nix -# Include the results of the hardware scan. - ./hardware-configuration.nix - ]; + imports = [ + ../../modules/system.nix + ../../modules/nix-settings.nix + ../../modules/vpn.nix + ../../modules/fonts.nix + ../../modules/firewall.nix + ../../modules/localisation.nix + ../../modules/openssh.nix + ../../modules/pipewire.nix + #../../modules/podman.nix + ../../modules/docker.nix + ../../modules/services.nix + ../../modules/regreet/regreet.nix + ../../modules/plymouth.nix + ../../modules/file_managers/spacefm.nix + ../../modules/appimage.nix + ../../modules/qemu.nix + ../../modules/thunderbird.nix + ../../modules/canon_eos_550d.nix + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; # Bootloader. boot.loader = { @@ -35,27 +40,29 @@ }; networking = { - hostName = "nix-desktop"; - networkmanager.enable = true; - #useDHCP = lib.mkForce true; - #dhcpcd.enable = true; - interfaces = { - eno1.ipv4.addresses = [{ - address = "192.168.2.40"; - prefixLength = 24; - }]; - }; + hostName = "nix-desktop"; + networkmanager.enable = true; + #useDHCP = lib.mkForce true; + #dhcpcd.enable = true; + interfaces = { + eno1.ipv4.addresses = [ + { + address = "192.168.2.40"; + prefixLength = 24; + } + ]; + }; - defaultGateway = { - address = "192.168.2.1"; - interface = "eno1"; - }; + defaultGateway = { + address = "192.168.2.1"; + interface = "eno1"; + }; - nameservers = [ - "192.168.2.2" - "1.1.1.1" - "8.8.8.8" - ]; + nameservers = [ + "192.168.2.2" + "1.1.1.1" + "8.8.8.8" + ]; }; hardware.graphics.enable = true; @@ -65,5 +72,3 @@ environment.systemPackages = [ pkgs.onlyoffice-bin ]; } - - diff --git a/hosts/m920q/hardware-configuration.nix b/hosts/m920q/hardware-configuration.nix index 406608c..0908a59 100644 --- a/hosts/m920q/hardware-configuration.nix +++ b/hosts/m920q/hardware-configuration.nix @@ -1,36 +1,55 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + ]; boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" "v4l2loopback"]; + boot.kernelModules = [ + "kvm-intel" + "v4l2loopback" + ]; boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback.out ]; boot.extraModprobeConfig = '' options v4l2loopback exclusive_caps=1 card_label="Virtual Camera" ''; - fileSystems."/" = - { device = "/dev/disk/by-label/NIXROOT"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-label/NIXROOT"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-label/NIXBOOT"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-label/NIXBOOT"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; - fileSystems."/storage" = - { device = "/dev/disk/by-label/STORAGE"; - fsType = "ext4"; - }; + fileSystems."/storage" = { + device = "/dev/disk/by-label/STORAGE"; + fsType = "ext4"; + }; swapDevices = [ ]; diff --git a/hosts/qemu/default.nix b/hosts/qemu/default.nix index 66e4257..2b0821f 100644 --- a/hosts/qemu/default.nix +++ b/hosts/qemu/default.nix @@ -5,40 +5,38 @@ { config, pkgs, ... }: { - imports = [ - ../../modules/system.nix - ../../modules/nix-settings.nix - ../../modules/vpn.nix - ../../modules/fonts.nix - ../../modules/firewall.nix - ../../modules/localisation.nix - ../../modules/openssh.nix - ../../modules/pipewire.nix - ../../modules/podman.nix - ../../modules/services.nix - ../../modules/regreet/regreet.nix - ../../modules/plymouth.nix - ../../modules/file_managers/spacefm.nix + imports = [ + ../../modules/system.nix + ../../modules/nix-settings.nix + ../../modules/vpn.nix + ../../modules/fonts.nix + ../../modules/firewall.nix + ../../modules/localisation.nix + ../../modules/openssh.nix + ../../modules/pipewire.nix + ../../modules/podman.nix + ../../modules/services.nix + ../../modules/regreet/regreet.nix + ../../modules/plymouth.nix + ../../modules/file_managers/spacefm.nix -# Include the results of the hardware scan. - ./hardware-configuration.nix - ]; + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; - programs.geary.enable = true; + programs.geary.enable = true; - boot.loader = { - grub = { - enable = true; - device = "/dev/sda"; - }; + boot.loader = { + grub = { + enable = true; + device = "/dev/sda"; }; + }; - networking.hostName = "nix-qemu"; # Define your hostname. + networking.hostName = "nix-qemu"; # Define your hostname. - hardware.graphics.enable = true; + hardware.graphics.enable = true; - system.stateVersion = "25.11"; # Did you read the comment? + system.stateVersion = "25.11"; # Did you read the comment? } - - diff --git a/hosts/qemu/hardware-configuration.nix b/hosts/qemu/hardware-configuration.nix index 2222882..9c4507f 100644 --- a/hosts/qemu/hardware-configuration.nix +++ b/hosts/qemu/hardware-configuration.nix @@ -1,28 +1,42 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/profiles/qemu-guest.nix") - ]; + imports = [ + (modulesPath + "/profiles/qemu-guest.nix") + ]; - boot.initrd.availableKernelModules = [ "ata_piix" "floppy" "sd_mod" "sr_mod" ]; + boot.initrd.availableKernelModules = [ + "ata_piix" + "floppy" + "sd_mod" + "sr_mod" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-label/NIXROOT"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-label/NIXROOT"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-label/NIXBOOT"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-label/NIXBOOT"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; swapDevices = [ ]; diff --git a/modules/appimage.nix b/modules/appimage.nix index 2771a45..3741d36 100644 --- a/modules/appimage.nix +++ b/modules/appimage.nix @@ -1,7 +1,7 @@ { pkgs, ... }: { - programs.appimage = { - enable = true; - binfmt = true; - }; + programs.appimage = { + enable = true; + binfmt = true; + }; } diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix index 465cba6..622ef63 100644 --- a/modules/bluetooth.nix +++ b/modules/bluetooth.nix @@ -1,21 +1,21 @@ { pkgs, ... }: { - hardware.bluetooth = { - enable = true; - powerOnBoot = true; - settings = { - General = { - Enable = "Source,Sink,Media,Socket"; - Experimental = true; - } - }; - } + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + settings = { + General = { + Enable = "Source,Sink,Media,Socket"; + Experimental = true; + }; + }; + }; - services.blueman.enable = true; # Graphical Manager + services.blueman.enable = true; # Graphical Manager - hardware.pulseaudio = { - enable = true; - package = pkgs.pulseaudioFull; - extraModules = [ pkgs.pulseaudio-modules-bt ]; - } + hardware.pulseaudio = { + enable = true; + package = pkgs.pulseaudioFull; + extraModules = [ pkgs.pulseaudio-modules-bt ]; + }; } diff --git a/modules/canon_eos_550d.nix b/modules/canon_eos_550d.nix index a304c73..4ecb5f4 100644 --- a/modules/canon_eos_550d.nix +++ b/modules/canon_eos_550d.nix @@ -1,25 +1,25 @@ { pkgs, ... }: { - services.udev.extraRules = '' - ACTION=="add", \ - SUBSYSTEM=="usb", \ - ATTR{idVendor}=="04a9", \ - ATTR{idProduct}=="31ea", \ - ''; -# RUN+="systemctl restart webcam" + services.udev.extraRules = '' + ACTION=="add", \ + SUBSYSTEM=="usb", \ + ATTR{idVendor}=="04a9", \ + ATTR{idProduct}=="31ea", \ + ''; + # RUN+="systemctl restart webcam" - systemd.services.webcam = { - enable = true; - script = '' - ${pkgs.gphoto2}/bin/gphoto2 --stdout --capture-movie | - ${pkgs.ffmpeg}/bin/ffmpeg \ - -i - \ - -vcodec rawvideo \ - -pix_fmt yuv420p \ - -f v4l2 \ - /dev/video0 - ''; - #wantedBy = [ "multi-user.target" ]; - }; + systemd.services.webcam = { + enable = true; + script = '' + ${pkgs.gphoto2}/bin/gphoto2 --stdout --capture-movie | + ${pkgs.ffmpeg}/bin/ffmpeg \ + -i - \ + -vcodec rawvideo \ + -pix_fmt yuv420p \ + -f v4l2 \ + /dev/video0 + ''; + #wantedBy = [ "multi-user.target" ]; + }; } diff --git a/modules/docker.nix b/modules/docker.nix index ae142b7..20d7645 100644 --- a/modules/docker.nix +++ b/modules/docker.nix @@ -1,34 +1,36 @@ -{ pkgs, ...}: +{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - # Virtualisation - docker-compose # docker-compose alternative - dive # docker layer viewer - tailscale # Vpn - ]; + environment.systemPackages = with pkgs; [ # Virtualisation - virtualisation = { - containers.enable = true; + docker-compose # docker-compose alternative + dive # docker layer viewer + tailscale # Vpn + ]; + # Virtualisation + virtualisation = { + containers.enable = true; - docker = { - enable = true; - rootless = { - enable = true; - setSocketVariable = true; - }; - }; - - oci-containers = { - backend = "docker"; - containers = { - /*container-name = { - image = "image"; - autoStart = true; - ports = [ "127.0.0.1:1234:1234" ]; - };*/ - }; - }; + docker = { + enable = true; + rootless = { + enable = true; + setSocketVariable = true; + }; }; + oci-containers = { + backend = "docker"; + containers = { + /* + container-name = { + image = "image"; + autoStart = true; + ports = [ "127.0.0.1:1234:1234" ]; + }; + */ + }; + }; + }; + } diff --git a/modules/file_managers/spacefm.nix b/modules/file_managers/spacefm.nix index 6647c8f..a9430fd 100644 --- a/modules/file_managers/spacefm.nix +++ b/modules/file_managers/spacefm.nix @@ -1,4 +1,4 @@ { pkgs, ... }: { - programs.spacefm.enable = true; + programs.spacefm.enable = true; } diff --git a/modules/file_managers/thunar.nix b/modules/file_managers/thunar.nix index 6b16924..d8d3455 100644 --- a/modules/file_managers/thunar.nix +++ b/modules/file_managers/thunar.nix @@ -1,13 +1,13 @@ { pkgs, ... }: { - programs.xfconf.enable = true; - services.gvfs.enable = true; - services.tumbler.enable = true; - programs.thunar = { - enable = true; - plugins = with pkgs.xfce; [ - thunar-archive-plugin - thunar-volman - ]; - }; + programs.xfconf.enable = true; + services.gvfs.enable = true; + services.tumbler.enable = true; + programs.thunar = { + enable = true; + plugins = with pkgs.xfce; [ + thunar-archive-plugin + thunar-volman + ]; + }; } diff --git a/modules/firewall.nix b/modules/firewall.nix index 38e1943..2f7efbb 100644 --- a/modules/firewall.nix +++ b/modules/firewall.nix @@ -1,7 +1,7 @@ { pkgs, ... }: { - networking.firewall.allowedTCPPorts = [ 57621 ]; - networking.firewall.allowedUDPPorts = [ 5353 ]; - # Or disable the firewall altogether. - networking.firewall.enable = false; + networking.firewall.allowedTCPPorts = [ 57621 ]; + networking.firewall.allowedUDPPorts = [ 5353 ]; + # Or disable the firewall altogether. + networking.firewall.enable = false; } diff --git a/modules/fonts.nix b/modules/fonts.nix index d05ec64..b97f63e 100644 --- a/modules/fonts.nix +++ b/modules/fonts.nix @@ -1,30 +1,39 @@ { pkgs, ... }: { - fonts = { - packages = with pkgs; [ - # icon fonts - material-icons - material-black-colors - material-design-icons + fonts = { + packages = with pkgs; [ + # icon fonts + material-icons + material-black-colors + material-design-icons - # normal fonts - noto-fonts - noto-fonts-emoji + # normal fonts + noto-fonts + noto-fonts-emoji - nerdfonts - ]; + nerdfonts + ]; - # use fonts specified by user rather than default ones - enableDefaultPackages = false; + # use fonts specified by user rather than default ones + enableDefaultPackages = false; - # user defined fonts - # the reason there's Noto Color Emoji everywhere is to override DejaVu's - # B&W emojis that would sometimes show instead of some Color emojis - fontconfig.defaultFonts = { - serif = ["Noto Serif" "Noto Color Emoji"]; - sansSerif = ["Noto Sans" "Noto Color Emoji"]; - monospace = ["JetBrainsMono Nerd Font" "Noto Color Emoji"]; - emoji = ["Noto Color Emoji"]; - }; + # user defined fonts + # the reason there's Noto Color Emoji everywhere is to override DejaVu's + # B&W emojis that would sometimes show instead of some Color emojis + fontconfig.defaultFonts = { + serif = [ + "Noto Serif" + "Noto Color Emoji" + ]; + sansSerif = [ + "Noto Sans" + "Noto Color Emoji" + ]; + monospace = [ + "JetBrainsMono Nerd Font" + "Noto Color Emoji" + ]; + emoji = [ "Noto Color Emoji" ]; }; + }; } diff --git a/modules/localisation.nix b/modules/localisation.nix index 9c2a792..cfeab77 100644 --- a/modules/localisation.nix +++ b/modules/localisation.nix @@ -1,20 +1,20 @@ -{ pkgs, ... }: +{ pkgs, ... }: { - # Set your time zone. - time.timeZone = "Europe/Berlin"; + # Set your time zone. + time.timeZone = "Europe/Berlin"; - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "de_DE.UTF-8"; - LC_IDENTIFICATION = "de_DE.UTF-8"; - LC_MEASUREMENT = "de_DE.UTF-8"; - LC_MONETARY = "de_DE.UTF-8"; - LC_NAME = "de_DE.UTF-8"; - LC_NUMERIC = "de_DE.UTF-8"; - LC_PAPER = "de_DE.UTF-8"; - LC_TELEPHONE = "de_DE.UTF-8"; - LC_TIME = "de_DE.UTF-8"; - }; + i18n.extraLocaleSettings = { + LC_ADDRESS = "de_DE.UTF-8"; + LC_IDENTIFICATION = "de_DE.UTF-8"; + LC_MEASUREMENT = "de_DE.UTF-8"; + LC_MONETARY = "de_DE.UTF-8"; + LC_NAME = "de_DE.UTF-8"; + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; } diff --git a/modules/nix-settings.nix b/modules/nix-settings.nix index e121f5e..9b977a8 100644 --- a/modules/nix-settings.nix +++ b/modules/nix-settings.nix @@ -1,42 +1,50 @@ -{ pkgs, username, lib, ... }: { - # given the users in this list the right to specify additional substituters via: - # 1. `nixConfig.substituers` in `flake.nix` - # 2. command line args `--options substituers http://xxx` - nix.settings.trusted-users = [username]; + pkgs, + username, + lib, + ... +}: +{ + # given the users in this list the right to specify additional substituters via: + # 1. `nixConfig.substituers` in `flake.nix` + # 2. command line args `--options substituers http://xxx` + nix.settings.trusted-users = [ username ]; - # customise /etc/nix/nix.conf declaratively via `nix.settings` - nix.settings = { - # enable flakes globally - experimental-features = ["nix-command" "flakes"]; - auto-optimise-store = true; - substituters = [ - "https://cache.nixos.org" - "https://hyprland.cachix.org" - ]; - - trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - ]; - builders-use-substitutes = true; - download-buffer-size = 524288000; - }; - - # do garbage collection weekly to keep disk usage low - nix.gc = { - automatic = lib.mkDefault true; - dates = lib.mkDefault "1 h"; - options = lib.mkDefault "--delete-older-than +3"; - }; - - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - nixpkgs.config.allowBroken = true; - - nixpkgs.config.permittedInsecurePackages = [ - "dotnet-sdk-6.0.428" - "dotnet-runtime-6.0.36" + # customise /etc/nix/nix.conf declaratively via `nix.settings` + nix.settings = { + # enable flakes globally + experimental-features = [ + "nix-command" + "flakes" + ]; + auto-optimise-store = true; + substituters = [ + "https://cache.nixos.org" + "https://hyprland.cachix.org" ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + ]; + builders-use-substitutes = true; + download-buffer-size = 524288000; + }; + + # do garbage collection weekly to keep disk usage low + nix.gc = { + automatic = lib.mkDefault true; + dates = lib.mkDefault "1 h"; + options = lib.mkDefault "--delete-older-than +3"; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + nixpkgs.config.allowBroken = true; + + nixpkgs.config.permittedInsecurePackages = [ + "dotnet-sdk-6.0.428" + "dotnet-runtime-6.0.36" + ]; + } diff --git a/modules/openssh.nix b/modules/openssh.nix index cf99d46..1db4b18 100644 --- a/modules/openssh.nix +++ b/modules/openssh.nix @@ -1,13 +1,13 @@ { pkgs, ... }: { - # Enable the OpenSSH daemon. - services.openssh = { - enable = true; - settings = { - X11Forwarding = true; - PermitRootLogin = "no"; # disable root login - PasswordAuthentication = false; # disable password login - }; - openFirewall = true; + # Enable the OpenSSH daemon. + services.openssh = { + enable = true; + settings = { + X11Forwarding = true; + PermitRootLogin = "no"; # disable root login + PasswordAuthentication = false; # disable password login }; + openFirewall = true; + }; } diff --git a/modules/pipewire.nix b/modules/pipewire.nix index 1a99d91..d8ad844 100644 --- a/modules/pipewire.nix +++ b/modules/pipewire.nix @@ -1,20 +1,20 @@ { pkgs, ... }: { - # Enable sound with pipewire. - #sound.enable = true; - hardware.pulseaudio.enable = false; - environment.systemPackages = with pkgs; [ pamixer ]; - services.pipewire = { - enable = true; - #alsa.enable = true; - #alsa.support32Bit = true; - #pulse.enable = true; - # If you want to use JACK applications, uncomment this - #jack.enable = true; + # Enable sound with pipewire. + #sound.enable = true; + hardware.pulseaudio.enable = false; + environment.systemPackages = with pkgs; [ pamixer ]; + services.pipewire = { + enable = true; + #alsa.enable = true; + #alsa.support32Bit = true; + #pulse.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; - # use the example session manager (no others are packaged yet so this is enabled by default, - # no need to redefine it in your config for now) - #media-session.enable = true; - }; + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #media-session.enable = true; + }; } diff --git a/modules/plymouth.nix b/modules/plymouth.nix index 82e5d4b..2807662 100644 --- a/modules/plymouth.nix +++ b/modules/plymouth.nix @@ -1,4 +1,5 @@ -{ pkgs, ... }: { +{ pkgs, ... }: +{ boot = { plymouth = { diff --git a/modules/podman.nix b/modules/podman.nix index b419298..9f08658 100644 --- a/modules/podman.nix +++ b/modules/podman.nix @@ -1,34 +1,36 @@ -{ pkgs, ...}: +{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - # Virtualisation - podman-compose # docker-compose alternative - dive # docker layer viewer - podman-tui # status of containers in terminal - podman-desktop # Desktop client - tailscale # Vpn - ]; + environment.systemPackages = with pkgs; [ # Virtualisation - virtualisation = { - containers.enable = true; + podman-compose # docker-compose alternative + dive # docker layer viewer + podman-tui # status of containers in terminal + podman-desktop # Desktop client + tailscale # Vpn + ]; + # Virtualisation + virtualisation = { + containers.enable = true; - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - - oci-containers = { - backend = "podman"; - containers = { - /*container-name = { - image = "image"; - autoStart = true; - ports = [ "127.0.0.1:1234:1234" ]; - };*/ - }; - }; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; }; + oci-containers = { + backend = "podman"; + containers = { + /* + container-name = { + image = "image"; + autoStart = true; + ports = [ "127.0.0.1:1234:1234" ]; + }; + */ + }; + }; + }; + } diff --git a/modules/qemu.nix b/modules/qemu.nix index 7044260..3231ebe 100644 --- a/modules/qemu.nix +++ b/modules/qemu.nix @@ -1,12 +1,12 @@ { pkgs, ... }: { - environment.systemPackages = with pkgs; [ - qemu - quickemu - ]; - systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ]; - boot.binfmt.emulatedSystems = [ - "aarch64-linux" - "riscv64-linux" - ]; + environment.systemPackages = with pkgs; [ + qemu + quickemu + ]; + systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ]; + boot.binfmt.emulatedSystems = [ + "aarch64-linux" + "riscv64-linux" + ]; } diff --git a/modules/regreet/regreet.nix b/modules/regreet/regreet.nix index f0161cf..0a21ad3 100644 --- a/modules/regreet/regreet.nix +++ b/modules/regreet/regreet.nix @@ -1,61 +1,82 @@ -{ pkgs, username, lib, ... }: { - /*services.greetd = { - enable = true; - settings = { - default_session = { - user = username; - command = "$HOME/.wayland-session"; - }; - }; - };*/ - - services.displayManager = { - sessionPackages = [ pkgs.hyprland ]; - }; - - environment.etc= { - "greetd/background.png".source = ../../wallpapers/lucy_with_cat.png; - "greetd/environments".text = '' - hyprland - fish - ''; - }; - - programs.regreet = { - enable = true; - cageArgs = ["-s" "-m" "last" ]; - settings = { - background = { - path = "/etc/greetd/background.png"; - fit = "Fill"; - }; - - env.SESSION_DIRS = "$HOME/.wayland-session"; - - GTK = { - application_prefer_dark_theme = true; - cursor_theme_name = "Adwaita"; - font_name = lib.mkForce "FiraCodeNerdFontPropo 12"; - icon_theme_name = lib.mkForce "materialdesignicons"; - theme_name = "Adwaita"; - }; - - commands = { - reboot = ["systemctl" "reboot"]; - poweroff = ["systemctl" "poweroff"]; - x11_prefix = [ "startx" "/usr/bin/env" ]; - }; - - appearance = { - greeting_msg = "Hey there, Master!"; - }; - - widget.clock = { - format = "%A %d.%m.%Y %T"; - resolution = "500ms"; - timezone = "Europe/Berlin"; - label_width = 150; - }; +{ + pkgs, + username, + lib, + ... +}: +{ + /* + services.greetd = { + enable = true; + settings = { + default_session = { + user = username; + command = "$HOME/.wayland-session"; + }; + }; }; + */ + + services.displayManager = { + sessionPackages = [ pkgs.hyprland ]; + }; + + environment.etc = { + "greetd/background.png".source = ../../wallpapers/lucy_with_cat.png; + "greetd/environments".text = '' + hyprland + fish + ''; + }; + + programs.regreet = { + enable = true; + cageArgs = [ + "-s" + "-m" + "last" + ]; + settings = { + background = { + path = "/etc/greetd/background.png"; + fit = "Fill"; + }; + + env.SESSION_DIRS = "$HOME/.wayland-session"; + + GTK = { + application_prefer_dark_theme = true; + cursor_theme_name = "Adwaita"; + font_name = lib.mkForce "FiraCodeNerdFontPropo 12"; + icon_theme_name = lib.mkForce "materialdesignicons"; + theme_name = "Adwaita"; + }; + + commands = { + reboot = [ + "systemctl" + "reboot" + ]; + poweroff = [ + "systemctl" + "poweroff" + ]; + x11_prefix = [ + "startx" + "/usr/bin/env" + ]; + }; + + appearance = { + greeting_msg = "Hey there, Master!"; + }; + + widget.clock = { + format = "%A %d.%m.%Y %T"; + resolution = "500ms"; + timezone = "Europe/Berlin"; + label_width = 150; + }; }; + }; } diff --git a/modules/services.nix b/modules/services.nix index 3afe5c1..1862395 100644 --- a/modules/services.nix +++ b/modules/services.nix @@ -1,18 +1,18 @@ { pkgs, ... }: { - services = { - dbus.packages = [pkgs.gcr]; - -# flatpak.enable = true; -# xdg.portals.enable = true; - geoclue2.enable = true; - xserver.enable = true; + services = { + dbus.packages = [ pkgs.gcr ]; - udev.packages = with pkgs; [pkgs.gnome-settings-daemon]; + # flatpak.enable = true; + # xdg.portals.enable = true; + geoclue2.enable = true; + xserver.enable = true; - # Enable CUPS to print documents. - printing.enable = true; + udev.packages = with pkgs; [ pkgs.gnome-settings-daemon ]; - power-profiles-daemon.enable = true; - }; + # Enable CUPS to print documents. + printing.enable = true; + + power-profiles-daemon.enable = true; + }; } diff --git a/modules/system.nix b/modules/system.nix index bdaa461..867e718 100644 --- a/modules/system.nix +++ b/modules/system.nix @@ -3,85 +3,97 @@ lib, username, ... -}: +}: { -# ============================= User related ============================= + # ============================= User related ============================= -# Define a user account. Don't forget to set a password with ‘passwd’. - users.users.${username} = { - isNormalUser = true; - description = username; - extraGroups = ["networkmanager" "wheel" "podman"]; - }; - - programs.steam.enable = true; - programs.dconf.enable = true; - -# List packages installed in system profile. To search, run: -# $ nix search wget - environment.systemPackages = with pkgs; [ - # Bare minimum - neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - wget - git - - # System tools - sysstat - lm_sensors # for `sensors` command - ethtool - pciutils # lspci - usbutils # lsusb - lshw - nvme-cli - smartmontools - bluez - - # Graphics - libGL - glxinfo - - # Rizz - fastfetch - cpufetch - hyfetch - ramfetch - neofetch - ghfetch - libnotify - - # Terminal - yazi # file manager - jq # JSON Parser - yq-go # YAML Parser - glow # Markdown Reader - btop # system monitor - iotop # iomonitor - iftop # network monitor - iperf3 # network tester - nmap # network discovery - eza # ls replacement - curl - dnsutils - ldns - file - which - tree - gnused - gnutar - gawk - zstd - gnupg - fzf - - # Archives - zip - unzip - p7zip - xz - - postman + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.${username} = { + isNormalUser = true; + description = username; + extraGroups = [ + "networkmanager" + "wheel" + "podman" ]; + }; - security.polkit.enable = true; - security.rtkit.enable = true; + programs.steam.enable = true; + programs.dconf.enable = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + # Bare minimum + neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + wget + git + + # System tools + sysstat + lm_sensors # for `sensors` command + ethtool + pciutils # lspci + usbutils # lsusb + lshw + nvme-cli + smartmontools + bluez + + # Graphics + libGL + glxinfo + + # Rizz + fastfetch + cpufetch + hyfetch + ramfetch + neofetch + ghfetch + libnotify + + # Terminal + yazi # file manager + jq # JSON Parser + yq-go # YAML Parser + glow # Markdown Reader + btop # system monitor + iotop # iomonitor + iftop # network monitor + iperf3 # network tester + nmap # network discovery + eza # ls replacement + curl + dnsutils + ldns + file + which + tree + gnused + gnutar + gawk + zstd + gnupg + fzf + + # nix related + nix-index + nix-tree + nix-health + + # Archives + zip + unzip + p7zip + xz + + postman + #teamspeak6-client + ]; + + security.polkit.enable = true; + security.rtkit.enable = true; + + programs.ssh.startAgent = true; } diff --git a/modules/thunderbird.nix b/modules/thunderbird.nix index 878ee15..57f52a7 100644 --- a/modules/thunderbird.nix +++ b/modules/thunderbird.nix @@ -1,4 +1,4 @@ -{ pkgs, ...}: +{ pkgs, ... }: { - programs.thunderbird.enable = true; + programs.thunderbird.enable = true; } diff --git a/modules/vpn.nix b/modules/vpn.nix index 79e96dd..deeef3c 100644 --- a/modules/vpn.nix +++ b/modules/vpn.nix @@ -1,8 +1,8 @@ { pkgs, ... }: { - services.tailscale = { - enable = true; - openFirewall = true; - }; + services.tailscale = { + enable = true; + openFirewall = true; + }; } diff --git a/users/phil/home.nix b/users/phil/home.nix index 9f989cf..2ea3d1f 100644 --- a/users/phil/home.nix +++ b/users/phil/home.nix @@ -1,4 +1,5 @@ -{pkgs, catppuccin, ...}: { +{ pkgs, catppuccin, ... }: +{ ################################################################################################################## # # All Phil's Home Manager Configuration @@ -10,24 +11,26 @@ ../../home/xdg.nix # Bindings ../../home/hyprland # Window Manager -# ../../home/themes/dark + # ../../home/themes/dark ../../home/hyprland/waybar/double-monitor.nix ../../home/programs/dev # Dev Tools - + ../../home/programs/media/media.nix ../../home/programs/media/audacity.nix ../../home/programs/media/obs.nix -# ../../home/programs/media/spicetify.nix + ../../home/programs/media/spicetify.nix ../../home/programs/productivity/blender.nix ../../home/programs/productivity/slicer.nix ../../home/programs/productivity/okular.nix ../../home/programs/productivity/obsidian.nix - ../../home/programs/social/element.nix - ../../home/programs/social/webcord.nix + ../../home/programs/social/element.nix + # ../../home/programs/social/webcord.nix + # ../../home/programs/social/nixcord.nix ../../home/programs/social/zapzap.nix + ../../home/programs/social/teamspeak.nix ../../home/programs/web/firefox.nix ../../home/programs/web/chromium.nix @@ -35,7 +38,7 @@ # Games ../../home/programs/games/itch.nix -# ../../home/programs/games/steam.nix + # ../../home/programs/games/steam.nix ../../home/programs/games/lutris.nix ../../home/programs/games/opensource.nix ../../home/programs/games/airshipper.nix @@ -44,12 +47,15 @@ ]; catppuccin = { - enable = true; - flavor = "mocha"; + enable = true; + flavor = "mocha"; }; programs.git = { userName = "DerGrumpf"; userEmail = "p.keier@beyerstedt-it.de"; }; + + home.file.".config/hypr/hyprland.conf".enable = false; + } diff --git a/users/phil/nixos.nix b/users/phil/nixos.nix index 5508bce..1e5b2b7 100644 --- a/users/phil/nixos.nix +++ b/users/phil/nixos.nix @@ -1,4 +1,4 @@ -{ pkgs, ... } : +{ pkgs, ... }: { ################################################################################################################## @@ -7,16 +7,16 @@ # ################################################################################################################## - users.users.phil = { - # authorizedKeys - openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCaLHfxVylghDMYR8t4QMUpeRRqXasNABQKBEy9MmhbUXCcWiPbPMSZH8FMHON34rm2OrXP1kY/8jQxqBJDA+SqpFR2AZ4Khk9iVMaq5GHxxpn2amZUjoBa+fB29WaiE1npV5JVJV3O0ylw6GtiCnpneE6fGx2MO1vOY/7zKrUX/OK7WfwkDpeEzZgV/j/md917HrzUVeZwdeTq3WCRO8Gew6R8Xs6FRjSiGuH0dq14D4Ow5Zf1cI1jx+JfD/5vGasw8HXPu1NdxsOE+6D7/22IKqGr+S74/lAoyyD5qqk0s05lw8UY/PXBLJaNLZu9Fwx0BqTHpJEvftpmvd9wUxgR3msx9VXtKNSrqivIbDgeU+3oGzzkrGZODl7FCp4XKGmbrX85Z6lKwEGgv5jez4MLZcmT86bxB7m1wIbqSbVtfhS+GI7yPTA/kLzzFa14Im/+LTj95pb8qs2ALMwTMP1j2f9A6D3RriOFihL+68qn+YbK58KuV1R0f+CQRmlfVbk= phil@web.cyperpunk.de" - ]; - shell = pkgs.fish; - }; + users.users.phil = { + # authorizedKeys + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCaLHfxVylghDMYR8t4QMUpeRRqXasNABQKBEy9MmhbUXCcWiPbPMSZH8FMHON34rm2OrXP1kY/8jQxqBJDA+SqpFR2AZ4Khk9iVMaq5GHxxpn2amZUjoBa+fB29WaiE1npV5JVJV3O0ylw6GtiCnpneE6fGx2MO1vOY/7zKrUX/OK7WfwkDpeEzZgV/j/md917HrzUVeZwdeTq3WCRO8Gew6R8Xs6FRjSiGuH0dq14D4Ow5Zf1cI1jx+JfD/5vGasw8HXPu1NdxsOE+6D7/22IKqGr+S74/lAoyyD5qqk0s05lw8UY/PXBLJaNLZu9Fwx0BqTHpJEvftpmvd9wUxgR3msx9VXtKNSrqivIbDgeU+3oGzzkrGZODl7FCp4XKGmbrX85Z6lKwEGgv5jez4MLZcmT86bxB7m1wIbqSbVtfhS+GI7yPTA/kLzzFa14Im/+LTj95pb8qs2ALMwTMP1j2f9A6D3RriOFihL+68qn+YbK58KuV1R0f+CQRmlfVbk= phil@web.cyperpunk.de" + ]; + shell = pkgs.fish; + }; - # Fix underlying System POSIX bugs - programs.bash = { + # Fix underlying System POSIX bugs + programs.bash = { interactiveShellInit = '' if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] then @@ -24,16 +24,16 @@ exec ${pkgs.fish}/bin/fish $LOGIN_OPTION fi ''; - }; + }; - programs.fish = { - enable = true; - interactiveShellInit = '' - fish_config prompt choose disco - function fish_greeting - fastfetch - end - ''; - }; + programs.fish = { + enable = true; + interactiveShellInit = '' + fish_config prompt choose disco + function fish_greeting + fastfetch + end + ''; + }; } diff --git a/wl-copy b/wl-copy new file mode 100644 index 0000000..2893822 --- /dev/null +++ b/wl-copy @@ -0,0 +1,156 @@ +{ + description = "NixOS configuration of DerGrumpf"; + + # the nixConfig here only affects the flake itself, not the system configuration! + nixConfig = { + extra-substituters = [ + "https://nix-community.cachix.org" + ]; + extra-trusted-public-keys = [ + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + hyprland.url = "github:hyprwm/Hyprland"; + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; + nixcord.url = "github:kaylorben/nixcord"; + + /* + nixvim = { + url = "github:nix-community/nixvim/nixos-24.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + */ + + catppuccin.url = "github:catppuccin/nix"; + + home-manager.url = "github:nix-community/home-manager/release-24.11"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + + hyprland-plugins = { + url = "github:hyprwm/hyprland-plugins"; + inputs.hyprland.follows = "hyprland"; + }; + }; + + outputs = + inputs@{ + self, + nixpkgs, + home-manager, + catppuccin, + ... + }: + { + packages.x86_64-linux.default = self.nixosConfigurations.iso.config.system.build.isoImage; + nixosConfigurations = { + iso = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ( + { pkgs, modulesPath, ... }: + { + imports = [ (modulesPath + "/installer/cd-dvd/installation-cd-minimal.nix") ]; + environment.systemPackages = with pkgs; [ + neovim + git + wget + curl + ]; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + } + ) + ]; + }; + + m920q = + let + username = "phil"; + specialArgs = { + inherit username; + inherit inputs; + }; + in + nixpkgs.lib.nixosSystem { + inherit specialArgs; + system = "x86_64-linux"; + + modules = [ + ./hosts/m920q + ./users/${username}/nixos.nix + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.backupFileExtension = "backup"; + home-manager.extraSpecialArgs = inputs // specialArgs; + home-manager.users.${username} = import ./users/${username}/home.nix; + home-manager.sharedModules = [ + inputs.nixcord.homeModules.nixcord + ]; + + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + } + ]; + }; + + qemu = + let + username = "phil"; + specialArgs = { inherit username; }; + in + nixpkgs.lib.nixosSystem { + inherit specialArgs; + system = "x86_64-linux"; + + modules = [ + ./hosts/qemu + ./users/${username}/nixos.nix + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.extraSpecialArgs = inputs // specialArgs; + home-manager.users.${username} = import ./users/${username}/home.nix; + } + ]; + }; + + hp15-n028sg = + let + username = "phil"; + specialArgs = { inherit username; }; + in + nixpkgs.lib.nixosSystem { + inherit specialArgs; + system = "x86_64-linux"; + + modules = [ + ./hosts/hp15-n028sg + ./users/${username}/nixos.nix + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.extraSpecialArgs = inputs // specialArgs; + home-manager.users.${username} = import ./users/${username}/home.nix; + } + ]; + }; + }; + }; +}