diff --git a/flake.lock b/flake.lock index 972fe87..a1082ed 100644 --- a/flake.lock +++ b/flake.lock @@ -100,6 +100,24 @@ "type": "github" } }, + "catppuccin": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1759572023, + "narHash": "sha256-2fzYq/m2PXie5WZO5LhyiZrTIUdUFp1SCLZAwvPL5xo=", + "owner": "catppuccin", + "repo": "nix", + "rev": "eeada12912d80d04733383d231a9d66172858718", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "type": "github" + } + }, "firefox-gnome-theme": { "flake": false, "locked": { @@ -455,7 +473,7 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems", "xdph": "xdph" @@ -673,7 +691,7 @@ "git-hooks": "git-hooks", "hercules-ci-effects": "hercules-ci-effects", "neovim-src": "neovim-src", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "treefmt-nix": "treefmt-nix" }, "locked": { @@ -707,6 +725,22 @@ } }, "nixpkgs": { + "locked": { + "lastModified": 1759381078, + "narHash": "sha256-gTrEEp5gEspIcCOx9PD8kMaF1iEmfBcTbO0Jag2QhQs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7df7ff7d8e00218376575f0acdcc5d66741351ee", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1757487488, "narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=", @@ -722,7 +756,7 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_3": { "locked": { "lastModified": 1758029226, "narHash": "sha256-TjqVmbpoCqWywY9xIZLTf6ANFvDCXdctCjoYuYPYdMI=", @@ -738,7 +772,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1758035966, "narHash": "sha256-qqIJ3yxPiB0ZQTT9//nFGQYn8X/PBoJbofA7hRKZnmE=", @@ -754,7 +788,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1744536153, "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", @@ -820,11 +854,12 @@ }, "root": { "inputs": { + "catppuccin": "catppuccin", "home-manager": "home-manager", "hyprland": "hyprland", "minimal-tmux": "minimal-tmux", "neovim-nightly-overlay": "neovim-nightly-overlay", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "sops-nix": "sops-nix", "stylix": "stylix", "typsite": "typsite" @@ -832,7 +867,7 @@ }, "rust-overlay": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1749004659, diff --git a/flake.nix b/flake.nix index 99c5154..ba30575 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + catppuccin.url = "github:catppuccin/nix"; + # Neovim neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; @@ -39,7 +41,7 @@ home-manager, stylix, sops-nix, - typsite, + catppuccin, ... }@inputs: let @@ -81,6 +83,7 @@ stylix.nixosModules.stylix home-manager.nixosModules.home-manager sops-nix.nixosModules.sops + catppuccin.nixosModules.catppuccin ]; }; archive = nixpkgs.lib.nixosSystem { diff --git a/machines/test/hardware-configuration.nix b/machines/test/hardware-configuration.nix new file mode 100644 index 0000000..54932ff --- /dev/null +++ b/machines/test/hardware-configuration.nix @@ -0,0 +1,17 @@ +# 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, ... }: + +{ + imports = + [ (modulesPath + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/maskiner/archive/configuration.nix b/maskiner/archive/configuration.nix index 09330ce..c7099db 100644 --- a/maskiner/archive/configuration.nix +++ b/maskiner/archive/configuration.nix @@ -35,12 +35,26 @@ security.sudo.wheelNeedsPassword = false; users.users.root.openssh.authorizedKeys.keys = [ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDALsdpwvC0w/Aj+1fWtzJyyWoUrGkdh8o2thVHeQQBNo0D7cmVberYmi4Cv9gWGX6PaElrnOl0KRdGyro2wxOYokSxgk2VgWW67BFITAQAbKyG2NhXXPbhb4jccDo7WH7TtOG8IofuJTPRu1Duda6k4RN0I0CkyAN6LGX+zy49cq0qKf9ijXYhCDYNih3+Fu/ig0aW/SYmsVoUl2VFTWdI5x5/wLvIjTEZhmAtYIeYADaLnom356cFrUysZa++FUujQAz3Ow236BvP95XZdTsqvfWNZFNIpC9VYF72JeIDCs5wDIr0GFmanF2On1nar+jJpoOE8SdHt357p5g/PqXV5TisN2xQRkqVwO9tWtMl4sF84jA4ULnY2gQWv9jErMxymUQ1IwuPUzDDlbRHCtfexAtkBy7wv6xslKAzG1QahvF/btNs5Caj3LN31rgAuxyooCbKGKTeBP3kHPKcz1iupgidfbO/QqVXBRQJTEdGyAKa8hVmLQZZPC/XUhxESAk= fw@fw-nix" - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8ku8iCb7tXd/tfxYDW+Tj8K9kpfrYZciYUZ6tBpO80inm4EImtfyEeJTuqDWMKov2BftUKs8brNeTBCXUEvU1P0+cpOP9RtYA5tfBXf3su+iVSswJJStIxNboXHrEGKdJJRNsTv/9agshDSUBy6G5TI1cXhv/updornfA4fwOMqOmtlYEn6XCRnsrO6NBLc/uLckdbF75HOsoLvezRvuqTLjpapjaUKGVPrgNXiclIKHmuOx71kgD4FX3rSz9FgKjnfu3a7DBbrHsf/g+N9PjNF1muN9UOV6nK3WwiO9BMWi7NpAWfzJOeZg9chqzI+U6CcsqYVeESgL41so+dnv3 fw@laptop" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP34dnsZSnWdDvd+3BXDwcw7wP0PjPEx2eCdBQJyGD6O fw@laptop" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII60tdNsG0z9q2jHmoTKvkeLQE6OF0bmTsDX1bpqpoG7 fw@jobb" ]; + # Restic + users.users.restic = { + isNormalUser = true; + createHome = true; + home = "/home/restic"; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP34dnsZSnWdDvd+3BXDwcw7wP0PjPEx2eCdBQJyGD6O fw@laptop" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII60tdNsG0z9q2jHmoTKvkeLQE6OF0bmTsDX1bpqpoG7 fw@jobb" + ]; + }; + + # Where repos will live (you can choose a different path/disk) + systemd.tmpfiles.rules = [ + "d /srv/restic 0750 restic restic -" + ]; + networking.firewall.allowedUDPPorts = [ 22000 21027 @@ -49,6 +63,7 @@ services = { openssh = { enable = true; + allowSFTP = true; }; }; diff --git a/maskiner/core/configuration.nix b/maskiner/core/configuration.nix index ea0110d..a34a024 100644 --- a/maskiner/core/configuration.nix +++ b/maskiner/core/configuration.nix @@ -10,7 +10,7 @@ ... }: let - btusb = pkgs.callPackage ../../moduler/btusb.nix { inherit (config.boot.kernelPackages) kernel; }; + # btusb = pkgs.callPackage ../../moduler/btusb.nix { inherit (config.boot.kernelPackages) kernel; }; in { imports = [ @@ -19,7 +19,7 @@ in ../../moduler/base.nix ../../moduler/users.nix - ../../moduler/git.nix + ../../moduler/git.nix ../../moduler/network.nix ../../moduler/programs.nix ../../moduler/system.nix @@ -34,7 +34,7 @@ in stylix = { enable = true; - base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-latte.yaml"; + base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; }; programs.ssh.knownHosts = { @@ -51,7 +51,16 @@ in home-manager.users.fw = { imports = [ ./../../moduler/home.nix + ./../../moduler/programs/waybar + inputs.catppuccin.homeModules.catppuccin ]; + catppuccin = { + librewolf = { + enable = true; + flavor = "latte"; + accent = "peach"; + }; + }; programs.ranger.enable = true; stylix.targets = { lazygit.enable = false; @@ -64,11 +73,11 @@ in }; boot.kernelPackages = pkgs.linuxPackages_latest; - boot.extraModulePackages = [ - (btusb.overrideAttrs (_: { - patches = [ ../../moduler/btusb-add-mt7925.patch ]; - })) - ]; + # boot.extraModulePackages = [ + # (btusb.overrideAttrs (_: { + # patches = [ ../../moduler/btusb-add-mt7925.patch ]; + # })) + # ]; networking.hostName = myhostname; diff --git a/maskiner/node/configuration.nix b/maskiner/node/configuration.nix index bc46a98..3347c3d 100644 --- a/maskiner/node/configuration.nix +++ b/maskiner/node/configuration.nix @@ -8,24 +8,27 @@ myhostname, ... }: +let + modulesDirectory = ../../moduler; +in { # You can import other NixOS modules here imports = [ ./hardware-configuration.nix - ../../moduler/base.nix - ../../moduler/users.nix - ../../moduler/kitchenowl.nix - ../../moduler/radicale.nix - ../../moduler/vaultwarden.nix - ../../moduler/signal.nix - ../../moduler/uptime-kuma.nix - ../../moduler/services/monitoring - ../../moduler/services/headscale - ../../moduler/services/mpd - ../../moduler/services/actual - ../../moduler/services/forgejo - # ../../moduler/wastring.nix - ../../moduler/wedding.nix + ( modulesDirectory + /base.nix ) + ( modulesDirectory + /users.nix ) + ( modulesDirectory + /kitchenowl.nix ) + ( modulesDirectory + /radicale.nix ) + ( modulesDirectory + /vaultwarden.nix ) + ( modulesDirectory + /signal.nix ) + ( modulesDirectory + /uptime-kuma.nix ) + ( modulesDirectory + /wedding.nix ) + + ( modulesDirectory + /services/monitoring ) + ( modulesDirectory + /services/headscale ) + ( modulesDirectory + /services/mpd ) + ( modulesDirectory + /services/actual ) + ( modulesDirectory + /services/forgejo ) ]; sops.defaultSopsFile = ../../secrets/sops.yaml; diff --git a/moduler/dev.nix b/moduler/dev.nix index 03afa7e..a530c23 100644 --- a/moduler/dev.nix +++ b/moduler/dev.nix @@ -24,6 +24,7 @@ in # Nix devenv nixfmt-rfc-style + opentofu # Docker dive diff --git a/moduler/hyprland.nix b/moduler/hyprland.nix index 9c6860d..01b6e59 100644 --- a/moduler/hyprland.nix +++ b/moduler/hyprland.nix @@ -12,11 +12,9 @@ in { environment.systemPackages = with pkgs; [ swww - grim - slurp - wl-clipboard swappy ydotool + wl-clipboard hyprpolkitagent hyprland-qtutils waypipe @@ -28,7 +26,7 @@ in enable = true; settings = { default_session = { - command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd hyprland"; + command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd hyprland"; user = "greeter"; }; }; @@ -57,138 +55,6 @@ in enable = true; font = lib.mkForce "ComicShannsMono Nerd Font 18"; }; - waybar = { - enable = true; - systemd = { - enable = true; - }; - settings = { - mainBar = { - modules-left = [ - "hyprland/workspaces" - ]; - modules-right = [ - "tray" - "clock" - ]; - "custom/arrow1" = { - format = ""; - - }; - tray = { - format = "{icon}"; - "icon-size" = 14; - spacing = 5; - }; - - clock = { - format = "{:%c}"; - }; - }; - }; - style = '' - @define-color bg #eff1f5; - @define-color fg #4c4f69; - @define-color lbg #e6e9ef; - @define-color yellow #df8e1d; - @define-color lavender #7287fd; - @define-color peach #fe640b; - @define-color red #d20f39; - @define-color green #40a02b; - @define-color blue #1e66f5; - @define-color border #dce0e8; - - * { - min-height: 0; - margin: 0px 0px 0px 0px; - padding: 0; - border-radius: 7px; - font-family: "ComicShannsMono Nerd Font"; - font-size: 14pt; - font-weight: 700; - padding-bottom: 0px; - } - - tooltip { - background: @bg; - border-radius: 7px; - border: 2px solid @border; - } - - #window { - margin: 0px 0px 0px 0px; - padding-left: 10px; - padding-right: 7px; - border-radius: 3px; - border-color: @lbg; - background-color: @yellow; - color: @bg; - } - - window#waybar.empty #window { - background-color: @bg; - border-bottom: none; - border-right: none; - } - - window#waybar { - background-color: @bg; - color: @lavender; - } - - /* Workspaces */ - @keyframes button_activate { - from { opacity: .3 } - to { opacity: 1.; } - } - - #workspaces { - margin: 0px 0px 0px 0px; - border-radius: 3px; - padding: 1px; - background-color: @bg; - color: @bg; - } - - #workspaces button { - margin: 0px 0px 0px 0px; - border-radius: 3px; - padding-left: 3px; - padding-right: 9px; - background-color: @bg; - color: @fg; - } - - #workspaces button.active { - background-color:@blue; - color: @bg; - } - - #workspaces button.urgent { - color: #F38BA8; - } - - #workspaces button:hover { - border: solid transparent; - } - #tray { - margin: 0px 0px 0px 0px; - border-radius: 3px; - padding-left: 10px; - padding-right: 10px; - background-color: @bg; - color: @fg; - } - #clock { - margin: 0px 0px 0px 0px; - padding-left: 10px; - padding-right: 10px; - border-radius: 3px; - color: @bg; - background-color: @green; - } - ''; - }; }; services = { cliphist = { @@ -244,7 +110,7 @@ in "$mod" = "ALT"; monitor = [ - "desc: ASUSTek COMPUTER INC ASUS PA279CV S4LMTF159462 (DP-1), 3840x2160@60, 0x0, 1.5" + "desc: ASUSTek COMPUTER INC ASUS PA279CV S4LMTF159462 (DP-1), 3840x2160@60, 0x0, 1.5, transform, 1" "desc: ASUSTek COMPUTER INC VG279 JBLMQS021792 (DP-1), 1920x1080@144, 0x0, 1" "eDP-1, 1920x1080@60, 0x0, 1, transform, 2" ",prefered,auto,1" @@ -298,36 +164,32 @@ in }; }; - animations = { - enabled = false; + animations = { + enabled = true; bezier = [ - "linear, 0, 0, 1, 1" - "md3_standard, 0.2, 0, 0, 1" - "md3_decel, 0.05, 0.7, 0.1, 1" - "md3_accel, 0.3, 0, 0.8, 0.15" - "overshot, 0.05, 0.9, 0.1, 1.1" - "crazyshot, 0.1, 1.5, 0.76, 0.92" - "hyprnostretch, 0.05, 0.9, 0.1, 1.0" - "menu_decel, 0.1, 1, 0, 1" - "menu_accel, 0.38, 0.04, 1, 0.07" - "easeInOutCirc, 0.85, 0, 0.15, 1" - "easeOutCirc, 0, 0.55, 0.45, 1" - "easeOutExpo, 0.16, 1, 0.3, 1" - "softAcDecel, 0.26, 0.26, 0.15, 1" - "md2, 0.4, 0, 0.2, 1" + "easeOutQuint,0.23,1,0.32,1" + "easeInOutCubic,0.65,0.05,0.36,1" + "linear,0,0,1,1" + "almostLinear,0.5,0.5,0.75,1.0#fffff" + "quick,0.15,0,0.1,1" ]; animation = [ - "windows, 1, 1.2, md3_decel, popin 60%" - "windowsIn, 1, 1.2, md3_decel, popin 60%" - "windowsOut, 1, 1.2, md3_accel, popin 60%" - "border, 1, 2, default" - "fade, 1, 1.2, md3_decel" - "layersIn, 1, 1.2, menu_decel, slide" - "layersOut, 1, 1.2, menu_accel" - "fadeLayersIn, 1, 1.2, menu_decel" - "fadeLayersOut, 1, 1.2, menu_accel" - "workspaces, 1, 2, menu_decel, slide" - "specialWorkspace, 1, 1.2, md3_decel, slidevert" + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 4.79, easeOutQuint" + "windowsIn, 1, 4.1, easeOutQuint, popin 87%" + "windowsOut, 1, 1.49, linear, popin 87%" + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" ]; }; @@ -405,8 +267,7 @@ in "$mod, d, exec, ${pkgs.rofi}/bin/rofi -show drun -p 'Run: '" # Screencapture - "$mod, S, exec, ${pkgs.grim}/bin/grim | wl-copy" - "$mod SHIFT+ALT, S, exec, ${pkgs.grim}/bin/grim -g \"$(slurp)\" ~/$(date +%Y-%m-%d-%H%M%S).png" + "$mod SHIFT, s, exec, ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png" ]; bindm = [ diff --git a/moduler/kitty.nix b/moduler/kitty.nix index 4e5bfeb..8dbe1ab 100644 --- a/moduler/kitty.nix +++ b/moduler/kitty.nix @@ -8,7 +8,8 @@ programs.kitty = { enable = true; font = { - name = "ComicShannsMono Nerd Font"; + # name = "ComicShannsMono Nerd Font"; + name = "FiraCode Nerd Font Mono"; size = 14; }; shellIntegration = { diff --git a/moduler/lsp.nix b/moduler/lsp.nix index c052aa8..717df71 100644 --- a/moduler/lsp.nix +++ b/moduler/lsp.nix @@ -28,5 +28,6 @@ lua-language-server marksman typstfmt + tofu-ls ]; } diff --git a/moduler/programs.nix b/moduler/programs.nix index 172cb7a..6886ced 100644 --- a/moduler/programs.nix +++ b/moduler/programs.nix @@ -4,64 +4,68 @@ inputs, lib, config, - pkgs, myhostname, + pkgs, + myhostname, ... -}: { - services.udev = { - extraRules = '' - KERNEL=="ttyACM0", MODE:="666" - ACTION=="add", KERNEL=="sd[a-e][0-9]", ENV{ID_FS_UUID}=="3039-3932", RUN+="${pkgs.systemd}/bin/systemd-mount --no-block -A -G -o gid=users,fmask=113,dmask=002 /dev/%k /mnt/sdcard" - ACTION=="add", KERNEL=="sd[a-e]", ENV{ID_FS_UUID}=="66BA-4EBA", RUN+="${pkgs.systemd}/bin/systemd-mount --no-block -A -G -o gid=users,fmask=113,dmask=002 /dev/%k /mnt/kobo" - ''; - packages = with pkgs; [ - vial - via - ]; - }; +}: +{ + services.udev = { + extraRules = '' + KERNEL=="ttyACM0", MODE:="666" + ACTION=="add", KERNEL=="sd[a-e][0-9]", ENV{ID_FS_UUID}=="3039-3932", RUN+="${pkgs.systemd}/bin/systemd-mount --no-block -A -G -o gid=users,fmask=113,dmask=002 /dev/%k /mnt/sdcard" + ACTION=="add", KERNEL=="sd[a-e]", ENV{ID_FS_UUID}=="66BA-4EBA", RUN+="${pkgs.systemd}/bin/systemd-mount --no-block -A -G -o gid=users,fmask=113,dmask=002 /dev/%k /mnt/kobo" + ''; + packages = with pkgs; [ + vial + via + ]; + }; - environment.systemPackages = with pkgs; [ - # GUI - feishin - signal-desktop - thunderbird - libreoffice - discord - slack - speedcrunch - remmina - vial - via - drawio - freecad-wayland - kdePackages.okular - angryipscanner - # TUI - mpc + environment.systemPackages = with pkgs; [ + # GUI + feishin + signal-desktop + thunderbird + libreoffice + discord + slack + speedcrunch + remmina + vial + via + drawio + freecad-wayland + kdePackages.okular + angryipscanner - # Browsers - librewolf - chawan + # TUI + mpc + codex - # Displaying - zathura - feh - mpv + # Browsers + librewolf + chawan - # System - pavucontrol - pulseaudio - devour # Swallow windows - caligula # Burn ISOs - ptouch-print + # Displaying + zathura + feh + mpv - # Transforms - yt-dlp - imagemagick - pandoc - pinta - pastel - ffmpeg - darktable - ]; + # System + pavucontrol + pulseaudio + devour # Swallow windows + caligula # Burn ISOs + ptouch-print + + # Transforms + yt-dlp + imagemagick + pandoc + pinta + pastel + ffmpeg + darktable + ]; } diff --git a/moduler/programs/waybar/default.nix b/moduler/programs/waybar/default.nix new file mode 100644 index 0000000..3c18973 --- /dev/null +++ b/moduler/programs/waybar/default.nix @@ -0,0 +1,25 @@ +{ + config, + inputs, + pkgs, + ... +}: + +let +in +{ + programs = { + waybar = { + enable = true; + systemd = { + enable = true; + }; + }; + }; + xdg.configFile."waybar/config.jsonc".source = ./waybar.jsonc; + xdg.configFile."waybar/style.css".source = ./waybar.css; + # catppuccin.waybar = { + # enable = true; + # flavor = "latte"; + # }; +} diff --git a/moduler/programs/waybar/waybar.css b/moduler/programs/waybar/waybar.css new file mode 100644 index 0000000..e22cf61 --- /dev/null +++ b/moduler/programs/waybar/waybar.css @@ -0,0 +1,107 @@ +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: FiraCode Nerd Font Bold, sans-serif; + font-size: 16px; + color: #4C4F69; /* Default text color */ +} + +window#waybar { + background-color: #EFF1F5; /* Catppuccin Base */ + border-bottom: 3px solid #B2BCC8; /* Catppuccin Crust */ + color: #4C4F69; /* Default text color */ + transition-property: background-color; + transition-duration: 0.5s; +} + +window#waybar.hidden { + opacity: 0.2; +} + +window#waybar.termite { + background-color: #D7DBE6; /* Catppuccin Mantle */ +} + +window#waybar.chromium { + background-color: #B2BCC8; /* Catppuccin Crust */ + border: none; +} + +button { + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; + color: #4C4F69; /* Default text color */ + transition: background-color 0.3s ease, box-shadow 0.3s ease; +} + +/* Hover effect for buttons */ +button:hover { + background: inherit; + box-shadow: inset 0 -3px #F9E2AF; /* Catppuccin Yellow for hover effect */ +} + +/* Workspace button styles */ +#workspaces button { + padding: 0 5px; + background-color: transparent; + color: #4C4F69; /* Default text color */ + transition: background-color 0.3s ease, box-shadow 0.3s ease; +} + +/* Hover effect for workspace buttons */ +#workspaces button:hover { + background: rgba(0, 0, 0, 0.2); +} + +/* Focused or active workspace styles */ +#workspaces button.focused, #workspaces button.active { + background-color: #A6E3A1; /* Catppuccin Green for active workspace */ + box-shadow: inset 0 -3px #76C7E3; /* Catppuccin Sky for focus highlight */ + color: #4C4F69; /* Default text color */ +} + +/* Urgent workspace styles */ +#workspaces button.urgent { + background-color: #F28A8C; /* Catppuccin Rose for urgent workspace */ +} + +/* Mode (e.g., dark/light mode indicator) */ +#mode { + background-color: #A6E3A1; /* Catppuccin Green */ + box-shadow: inset 0 -3px #F9E2AF; /* Catppuccin Yellow for highlight */ +} + +/* Spacing for workspaces and other modules */ +#clock, +#window, +#workspaces { + margin: 0 4px; +} + +/* If workspaces is the leftmost module, omit left margin */ +.modules-left > widget:first-child > #workspaces { + margin-left: 0; +} + +/* If workspaces is the rightmost module, omit right margin */ +.modules-right > widget:last-child > #workspaces { + margin-right: 0; +} + +#clock { + background-color: #F9E2AF; /* Catppuccin Yellow for clock */ + color: #4C4F69; /* Default text color */ + font-family: FiraCode Nerd Font Bold, sans-serif; + font-size: 16px; + color: #4C4F69; /* Default text color */ +} + +/* Keyframes for blinking effect (e.g., battery critical) */ +@keyframes blink { + to { + background-color: #F9E2AF; /* Catppuccin Yellow */ + color: #4C4F69; /* Default text color */ + } +} diff --git a/moduler/programs/waybar/waybar.jsonc b/moduler/programs/waybar/waybar.jsonc new file mode 100644 index 0000000..aa438ec --- /dev/null +++ b/moduler/programs/waybar/waybar.jsonc @@ -0,0 +1,4 @@ +{ + "modules-left": ["hyprland/workspaces"], + "modules-right": ["clock"] +} diff --git a/moduler/services/adguardhome/default.nix b/moduler/services/adguardhome/default.nix new file mode 100644 index 0000000..7956052 --- /dev/null +++ b/moduler/services/adguardhome/default.nix @@ -0,0 +1,79 @@ +{ + lib, + config, + ... +}: +let + cfg = config.adguardhome; +in +with lib; +{ + options = { + adguardhome = { + enable = mkEnableOption "enables AdGuardHome"; + port = lib.mkOption { + type = lib.types.int; + default = 3000; + description = "The port that AdGuardHome is served on."; + }; + }; + }; + + config = mkMerge [ + (mkIf cfg.enable { + networking.firewall.allowedTCPPorts = [ 53 cfg.port ]; + networking.firewall.allowedUDPPorts = [ 53 ]; + services.adguardhome = { + enable = true; + settings = { + http = { + # You can select any ip and port, just make sure to open firewalls where needed + address = "0.0.0.0:${cfg.port toString}"; + }; + dns = { + upstream_dns = [ + # Example config with quad9 + "9.9.9.9#dns.quad9.net" + "149.112.112.112#dns.quad9.net" + # Uncomment the following to use a local DNS service (e.g. Unbound) + # Additionally replace the address & port as needed + # "127.0.0.1:5335" + ]; + rewrites = [ + { + domain = "macmini.local"; + answer = "192.168.1.100"; + } + { + domain = "centre.local"; + answer = "192.168.1.227"; + } + ]; + }; + filtering = { + protection_enabled = true; + filtering_enabled = true; + + parental_enabled = false; # Parental control-based DNS requests filtering. + safe_search = { + enabled = false; # Enforcing "Safe search" option for search engines, when possible. + }; + }; + # The following notation uses map + # to not have to manually create {enabled = true; url = "";} for every filter + # This is, however, fully optional + # filters = + # map + # (url: { + # enabled = true; + # url = url; + # }) + # [ + # "https://adguardteam.github.io/HostlistsRegistry/assets/filter_9.txt" # The Big List of Hacked Malware Web Sites + # "https://adguardteam.github.io/HostlistsRegistry/assets/filter_11.txt" # malicious url blocklist + # ]; + }; + }; + }) + ]; +} diff --git a/moduler/services/github-runners/default.nix b/moduler/services/github-runners/default.nix new file mode 100644 index 0000000..9aa163d --- /dev/null +++ b/moduler/services/github-runners/default.nix @@ -0,0 +1,54 @@ +{ + lib, + pkgs, + config, + ... +}: +with lib; +{ + options = { + mpd = { + enable = mkEnableOption "enables MPD"; + port = lib.mkOption { + type = lib.types.int; + default = 6600; + description = "The port that MPD is served on."; + }; + httpPort = lib.mkOption { + type = lib.types.int; + default = 8006; + description = "The port that MPD is served on."; + }; + musicDir = lib.mkOption { + type = lib.types.str; + default = "/home/fw/Music"; + description = "the path to the Music"; + }; + }; + }; + config = mkMerge [ + (mkIf config.mpd.enable { + services.mpd = { + enable = true; + user = "fw"; + group = "users"; + network = { + port = config.mpd.port; + listenAddress = "any"; + }; + musicDirectory = config.mpd.musicDir; + extraConfig = '' + audio_output { + type "httpd" + name "My HTTP Stream" + encoder "vorbis" # or "mp3" if you have lame installed + port "${toString config.mpd.httpPort}" # default HTTP port + bind_to_address "0.0.0.0" # listen on all network interfaces + quality "5.0" # Ogg Vorbis quality + } + ''; + }; + }) + ]; + +} diff --git a/moduler/services/headscale/default.nix b/moduler/services/headscale/default.nix index 1df2a51..9173a2f 100644 --- a/moduler/services/headscale/default.nix +++ b/moduler/services/headscale/default.nix @@ -38,10 +38,10 @@ with lib; logtail.enabled = false; dns = { base_domain = config.headscale.baseDomain; - nameservers.global = [ - "1.1.1.1" - "8.8.8.8" - ]; + nameservers.global = [ + "1.1.1.1" + "8.8.8.8" + ]; }; }; };