diff --git a/flake.lock b/flake.lock index 968701a..8b03f84 100644 --- a/flake.lock +++ b/flake.lock @@ -577,7 +577,8 @@ "hyprland-plugins": "hyprland-plugins", "nixcord": "nixcord", "nixpkgs": "nixpkgs_4", - "spicetify-nix": "spicetify-nix" + "spicetify-nix": "spicetify-nix", + "unstable": "unstable" } }, "spicetify-nix": { @@ -629,6 +630,22 @@ "type": "github" } }, + "unstable": { + "locked": { + "lastModified": 1756787288, + "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index 4128493..df8a921 100644 --- a/flake.nix +++ b/flake.nix @@ -5,34 +5,35 @@ nixConfig = { extra-substituters = [ "https://nix-community.cachix.org" + "https://hyprland.cachix.org" ]; extra-trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; inputs = { + # Core nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; + unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + + # Desktop ENV 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"; }; + + # Customization + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; + nixcord.url = "github:kaylorben/nixcord"; + catppuccin.url = "github:catppuccin/nix"; + + # User Config + home-manager.url = "github:nix-community/home-manager/release-24.11"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + }; outputs = @@ -43,113 +44,123 @@ 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" - ]; - } - ) - ]; + + let + system = "x86_64-linux"; + + # Common Configuration + commonModules = [ + ( + { config, ... }: + { + nix.settings = { + accept-flake-config = true; + experimental-features = [ + "nix-command" + "flakes" + ]; + }; + } + ) + ]; + + commonHomeManagerConfig = + { + username, + monitorSetup ? "single", + }: + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "backup"; + extraSpecialArgs = { + inherit inputs; + inherit username monitorSetup; + }; + users.${username} = import ./users/${username}/home.nix; + sharedModules = [ + inputs.catppuccin.homeModules.catppuccin + inputs.nixcord.homeModules.nixcord + ]; + }; }; - m920q = - let - username = "phil"; - specialArgs = { - inherit inputs 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.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" - ]; - } - ]; + # System Builder + mkSystem = + { + hostname, + username, + system ? "x86_64-linux", + monitorSetup ? "single", + extraModules ? [ ], + }: + nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { + inherit inputs; + inherit username monitorSetup; }; - - qemu = - let - username = "phil"; - specialArgs = { inherit username; }; - in - nixpkgs.lib.nixosSystem { - inherit specialArgs; - system = "x86_64-linux"; - - modules = [ - ./hosts/qemu + modules = + commonModules + ++ [ + ./hosts/${hostname} ./users/${username}/nixos.nix - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; + (commonHomeManagerConfig { inherit username monitorSetup; }) + ] + ++ extraModules; - 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"; + # ISO configuration + isoConfig = nixpkgs.lib.nixosSystem { + inherit system; + modules = [ + (import (nixpkgs + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix")) + ( + { pkgs, ... }: + { + environment.systemPackages = with pkgs; [ + neovim + git + wget + curl + ]; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + } + ) + ]; + }; - modules = [ - ./hosts/hp15-n028sg - ./users/${username}/nixos.nix + in + { + packages.${system}.default = self.nixosConfigurations.iso.config.system.build.isoImage; - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; + nixosConfigurations = { + iso = isoConfig; + + qemu = mkSystem { + hostname = "qemu"; + username = "phil"; + monitorSetup = "single"; + }; + + m920q = mkSystem { + hostname = "m920q"; + username = "phil"; + monitorSetup = "dual"; + }; + + hp15-n028sg = mkSystem { + hostname = "hp15-n028sg"; + username = "phil"; + monitorSetup = "dual"; + }; - home-manager.extraSpecialArgs = inputs // specialArgs; - home-manager.users.${username} = import ./users/${username}/home.nix; - } - ]; - }; }; }; } diff --git a/home/hyprland/cava.nix b/home/hyprland/cava.nix new file mode 100644 index 0000000..11e3c7d --- /dev/null +++ b/home/hyprland/cava.nix @@ -0,0 +1,40 @@ +{ ... }: + +{ + programs.cava = { + enable = true; + settings = { + + general = { + framerate = 120; + bars = 0; + bar_width = 2; + bar_spacing = 1; + #bar_height = 32; + sensitivity = 90; + autosens = 1; + }; + + input = { + method = "pipewire"; + source = "auto"; + sample_rate = 44100; + sample_bits = 16; + }; + + output = { + channels = "stereo"; + mono_option = "average"; + reverse = 0; + waveform = 0; + }; + + smoothing = { + monstercat = 1; + waves = 0; + noise_reduction = 0.77; + }; + + }; + }; +} diff --git a/home/hyprland/default.nix b/home/hyprland/default.nix index 5de8bf9..ceb8505 100644 --- a/home/hyprland/default.nix +++ b/home/hyprland/default.nix @@ -1,14 +1,29 @@ -{ pkgs, ... }: +{ monitorSetup, ... }: { imports = [ ./kitty.nix # Terminal - ./alacritty.nix ./hyprland.nix ./hypridle.nix ./hyprlock.nix ./hyprpaper.nix ./rofi # App Launcher ./mako.nix # Notifyer + ./cava.nix # Music Visualizer ]; + programs.waybar = + if monitorSetup == "single" then + import ../../home/hyprland/waybar/single.nix + else if monitorSetup == "dual" then + import ../../home/hyprland/waybar/dual.nix + else + { }; + + home.file.".config/waybar" = { + source = ./waybar/configs; + # copy the scripts directory recursively + recursive = true; + }; + + home.file.".config/hypr/hyprland.conf".enable = false; } diff --git a/home/hyprland/hyprland.nix b/home/hyprland/hyprland.nix index 75b7399..6b1bfa2 100644 --- a/home/hyprland/hyprland.nix +++ b/home/hyprland/hyprland.nix @@ -7,7 +7,8 @@ let 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"; + power = "rofi -show p -modi p:rofi-power-menu -theme $HOME/.config/rofi/power.rasi"; + apps = "rofi -show window ${theme}"; in { home.packages = with pkgs; [ @@ -92,8 +93,8 @@ in general = { # See https://wiki.hyprland.org/Configuring/Variables/ for more - gaps_in = 8; - gaps_out = 16; + gaps_in = 4; + gaps_out = 0; border_size = 4; "col.active_border" = "$green"; @@ -106,10 +107,10 @@ in }; decoration = { - rounding = 12; + rounding = 1; shadow = { - enabled = true; + enabled = false; range = 16; render_power = 4; ignore_window = true; @@ -182,27 +183,36 @@ in "nofocus, class:^(xwaylandvideobridge)$" ]; + # See further https://wiki.hypr.land/Configuring/Workspace-Rules/ exec-once = [ "waybar &" "hyprpaper &" + "[workspace 8] obsidian" + "[workspace 1] floorp" + "[workspace 2] spotify" + "[workspace 2] kitty --class=cava-terminal -e cava" + "[workspace 3] thunderbird" + "[workspace 9] kitty" ]; # Keybindings bind = [ + # Application Bindings "${super}, Q, exec, ${terminal}" - "${super}, C, killactive, " - "${super}, M, exit, " "${super}, E, exec, ${fileManager}" - "${super}, V, togglefloating, " + "${super}, O, exec, obsidian" + "${super}, I, exec, floorp" + "${super}, G, exec, thunderbird" + + # Lock Screen + "${super}, M, exit, " + + # Rofi bindings + "${super}, f, exec, ${filebrowser}" + "${super}, A, exec, ${apps}" "${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" @@ -210,6 +220,12 @@ in "${super}, up, movefocus, u" "${super}, down, movefocus, d" + # Window Modifiers + "${super}, P, pseudo, " # dwindle + "${super}, J, togglesplit, " # dwindle + "${super}, V, togglefloating, " # dwindle + "${super}, C, killactive, " + # Switch workspaces with mainMod + [0-9] "${super}, 1, workspace, 1" "${super}, 2, workspace, 2" @@ -249,7 +265,7 @@ in bindl = [ #", XF86AudioMute, exec, amixer set Master toggle - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioMute, exec, pamixer -t" ", XF86AudioPlay, exec, playerctl play-pause" # the stupid key is called play , but it toggles ", XF86AudioNext, exec, playerctl next" ", XF86AudioPrev, exec, playerctl previous" @@ -257,12 +273,10 @@ in bindle = [ # Multi Media Control - ", XF86AudioRaiseVolume, exec, vol --up" - ", XF86AudioLowerVolume, exec, vol --down" + ", XF86AudioRaiseVolume, exec, pamixer -i 5" + ", XF86AudioLowerVolume, exec, pamixer -d 5" ", XF86MonBrightnessUp, exec, bri --up" ", XF86MonBrightnessDown, exec, bri --down" - ", XF86Search, exec, ${menu}" - ]; bindm = [ diff --git a/home/hyprland/rofi/configs/custom.rasi b/home/hyprland/rofi/configs/custom.rasi index d8c7b09..b9910ff 100644 --- a/home/hyprland/rofi/configs/custom.rasi +++ b/home/hyprland/rofi/configs/custom.rasi @@ -52,9 +52,12 @@ window { /* properties for all widgets */ enabled: true; - border-radius: 12px; + border-radius: 1px; cursor: "default"; background-color: @base; + + border: 4px; + border-color: @yellow; } /* Main Box */ @@ -72,7 +75,7 @@ imagebox { background-color: transparent; background-image: url("~/.config/rofi/background.png", height); orientation: vertical; - children: [ "inputbar", "dummy", "mode-switcher" ]; + children: [ "inputbar", "weatherelement", "dummy", "mode-switcher" ]; } listbox { @@ -83,6 +86,13 @@ listbox { children: [ "message", "listview" ]; } +weatherelement { + border-radius: 20px; + background-color: transparent; + text-color: @peach; + str: "Hello This is text"; +} + dummy { background-color: transparent; } diff --git a/home/hyprland/rofi/configs/power.jpg b/home/hyprland/rofi/configs/power.jpg new file mode 100644 index 0000000..57fcb46 Binary files /dev/null and b/home/hyprland/rofi/configs/power.jpg differ diff --git a/home/hyprland/rofi/configs/power.rasi b/home/hyprland/rofi/configs/power.rasi new file mode 100644 index 0000000..05d6bb6 --- /dev/null +++ b/home/hyprland/rofi/configs/power.rasi @@ -0,0 +1,162 @@ +* { + 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 { + font: "Icomoon-Feather 12"; + show-icons: true; +} + +/* +USE_BUTTONS=YES +*/ + +/*****----- Main Window -----*****/ +window { + transparency: "real"; + location: center; + anchor: center; + fullscreen: false; + width: 1000px; + x-offset: 0px; + y-offset: 0px; + + padding: 0px; + border: 4px solid; + border-radius: 2px; + border-color: @blue; + cursor: "default"; + background-color: @base; +} + +/*****----- Main Box -----*****/ +mainbox { + enabled: true; + spacing: 0px; + margin: 0px; + padding: 0px; + border: 0px solid; + border-radius: 0px; + border-color: @blue; + background-color: transparent; + children: [ "inputbar", "listview", "message" ]; +} + + +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 20px; + padding: 100px 40px; + background-color: transparent; + background-image: url("~/.config/rofi/power.jpg", width); + children: [ "textbox-prompt-colon", "prompt"]; +} + +dummy { + background-color: transparent; +} + +textbox-prompt-colon { + enabled: true; + expand: false; + str: " System"; + padding: 15px; + border: 0px 0px 0px 10px; + border-radius: 100% 100% 0px 100%; + border-color: @peach; + background-color: @crust; + text-color: @text; +} +prompt { + enabled: true; + padding: 15px; + border: 0px; + border-radius: 0px 100% 100% 100%; + border-color: @blue; + background-color: @crust; + text-color: @text; +} + +/*****----- Listview -----*****/ +listview { + enabled: true; + columns: 6; + lines: 1; + cycle: true; + dynamic: true; + scrollbar: false; + layout: vertical; + reverse: false; + fixed-height: true; + fixed-columns: true; + + spacing: 30px; + margin: 30px; + background-color: transparent; + cursor: "default"; +} + +/*****----- Elements -----*****/ +element { + enabled: true; + padding: 35px 10px; + border-radius: 5%; + background-color: @crust; + text-color: @text; + cursor: pointer; +} +element-text { + background-color: transparent; + text-color: inherit; + cursor: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} +element selected.normal { + background-color: @crust; + text-color: @sapphire; +} + +/*****----- Message -----*****/ +message { + enabled: true; + margin: 0px; + padding: 15px; + border-radius: 0px; + background-color: @crust; + text-color: @yellow; +} +textbox { + background-color: inherit; + text-color: inherit; + vertical-align: 0.5; + horizontal-align: 0.5; +} + + diff --git a/home/hyprland/waybar/double-monitor.nix b/home/hyprland/waybar/double-monitor.nix deleted file mode 100644 index fd9e6f0..0000000 --- a/home/hyprland/waybar/double-monitor.nix +++ /dev/null @@ -1,201 +0,0 @@ -{ - pkgs, - config, - ... -}: -{ - programs.waybar = { - enable = true; - package = pkgs.waybar; - settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 30; - output = [ "DP-1" ]; - - modules-left = [ - "hyprland/workspaces" - "mpris" - ]; - - modules-center = [ ]; - - modules-right = [ - "network" - "memory" - "cpu" - "clock" - ]; - - # 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 = "🎵"; - }; - - 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/dual.nix b/home/hyprland/waybar/dual.nix new file mode 100644 index 0000000..5dc8858 --- /dev/null +++ b/home/hyprland/waybar/dual.nix @@ -0,0 +1,188 @@ +{ + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ "DP-1" ]; + + modules-left = [ + "hyprland/workspaces" + "mpris" + ]; + + modules-center = [ ]; + + modules-right = [ + "network" + "memory" + "cpu" + "clock" + ]; + + # 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 = "🎵"; + }; + + 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; + }; + }; + }; + +} diff --git a/home/hyprland/waybar/single-monitor.nix b/home/hyprland/waybar/single-monitor.nix deleted file mode 100644 index 8babc4d..0000000 --- a/home/hyprland/waybar/single-monitor.nix +++ /dev/null @@ -1,163 +0,0 @@ -{ - 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" - ]; - - modules-left = [ - "hyprland/workspaces" - "mpris" - ]; - - modules-center = [ - "custom/weather" - ]; - - modules-right = [ - "network" - "memory" - "cpu" - "clock" - ]; - - # 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 = "🎵"; - }; - - 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/hyprland/waybar/single.nix b/home/hyprland/waybar/single.nix new file mode 100644 index 0000000..d1c27ac --- /dev/null +++ b/home/hyprland/waybar/single.nix @@ -0,0 +1,150 @@ +{ + enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + output = [ + "eDP-1" + "DP-1" + "HDMI-A-1" + "Virtual-1" + ]; + + modules-left = [ + "hyprland/workspaces" + "mpris" + ]; + + modules-center = [ + "custom/weather" + ]; + + modules-right = [ + "network" + "memory" + "cpu" + "clock" + ]; + + # 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 = "🎵"; + }; + + 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"; + }; + + }; + }; + +} diff --git a/hosts/hp15-n028sg/default.nix b/hosts/hp15-n028sg/default.nix index cfab2c5..b1cd274 100644 --- a/hosts/hp15-n028sg/default.nix +++ b/hosts/hp15-n028sg/default.nix @@ -2,7 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page # and in the NixOS manual (accessible by running ‘nixos-help’). -{ config, pkgs, ... }: +{ config, lib, ... }: { imports = [ diff --git a/hosts/m920q/default.nix b/hosts/m920q/default.nix index edb0857..cf66dba 100644 --- a/hosts/m920q/default.nix +++ b/hosts/m920q/default.nix @@ -3,9 +3,7 @@ # and in the NixOS manual (accessible by running ‘nixos-help’). { - config, pkgs, - lib, ... }: diff --git a/hosts/qemu/default.nix b/hosts/qemu/default.nix index 2b0821f..29a9358 100644 --- a/hosts/qemu/default.nix +++ b/hosts/qemu/default.nix @@ -2,7 +2,7 @@ # 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, ... }: { imports = [ diff --git a/modules/fonts.nix b/modules/fonts.nix index b97f63e..d398617 100644 --- a/modules/fonts.nix +++ b/modules/fonts.nix @@ -6,6 +6,7 @@ material-icons material-black-colors material-design-icons + icomoon-feather # normal fonts noto-fonts diff --git a/modules/services.nix b/modules/services.nix index 1862395..f006a95 100644 --- a/modules/services.nix +++ b/modules/services.nix @@ -8,11 +8,17 @@ geoclue2.enable = true; xserver.enable = true; - udev.packages = with pkgs; [ pkgs.gnome-settings-daemon ]; + udev.packages = with pkgs; [ gnome-settings-daemon ]; # Enable CUPS to print documents. printing.enable = true; power-profiles-daemon.enable = true; + logind.extraConfig = '' + HandlePowerKey=ignore + HandleSuspendKey=ignore + HandleHibernateKey=ignore + ''; + }; } diff --git a/users/phil/home.nix b/users/phil/home.nix index 2ea3d1f..57563e6 100644 --- a/users/phil/home.nix +++ b/users/phil/home.nix @@ -1,4 +1,7 @@ -{ pkgs, catppuccin, ... }: +{ + catppuccin, + ... +}: { ################################################################################################################## # @@ -11,8 +14,6 @@ ../../home/xdg.nix # Bindings ../../home/hyprland # Window Manager - # ../../home/themes/dark - ../../home/hyprland/waybar/double-monitor.nix ../../home/programs/dev # Dev Tools @@ -27,8 +28,6 @@ ../../home/programs/productivity/obsidian.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 @@ -38,12 +37,10 @@ # Games ../../home/programs/games/itch.nix - # ../../home/programs/games/steam.nix ../../home/programs/games/lutris.nix ../../home/programs/games/opensource.nix ../../home/programs/games/airshipper.nix - catppuccin.homeModules.catppuccin ]; catppuccin = { @@ -56,6 +53,4 @@ userEmail = "p.keier@beyerstedt-it.de"; }; - home.file.".config/hypr/hyprland.conf".enable = false; - } diff --git a/wl-copy b/wl-copy deleted file mode 100644 index 2893822..0000000 --- a/wl-copy +++ /dev/null @@ -1,156 +0,0 @@ -{ - 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; - } - ]; - }; - }; - }; -}