diff --git a/config/common.nix b/config/common.nix index bc4bf13..3e2297f 100644 --- a/config/common.nix +++ b/config/common.nix @@ -56,28 +56,32 @@ nixpkgs.config.allowUnfree = true; environment.systemPackages = with pkgs; [ - zsh - htop - fastfetch - restic - nixfmt - rsync - pciutils # lspci - usbutils # lsusb - nmap - tree - p7zip - unar - inetutils # telnet - wget + bitwarden-cli + btop dnsutils + fastfetch + htop iftop + inetutils # telnet + lazygit + nixfmt + nmap + p7zip + pciutils # lspci + restic + rsync + tree + unar + usbutils # lsusb + wget + zsh # media yt-dlp exiftool mediainfo ffmpeg-full + kiwix-tools # barcodes qrencode @@ -90,7 +94,6 @@ man-pages-posix ]; - fonts.packages = with pkgs; [ noto-fonts noto-fonts-cjk-sans @@ -100,7 +103,8 @@ font-awesome_5 ]; - + # Power management + services.power-profiles-daemon.enable = true; environment.shellAliases = { "server" = "ssh admin@192.168.0.30"; @@ -112,5 +116,8 @@ "lsa" = "ls -al"; }; - environment.pathsToLink = [ "/share/applications" "/share/xdg-desktop-portal" ]; + environment.pathsToLink = [ + "/share/applications" + "/share/xdg-desktop-portal" + ]; } diff --git a/config/desktop.nix b/config/desktop.nix index 5bd8a46..72fc66a 100644 --- a/config/desktop.nix +++ b/config/desktop.nix @@ -10,7 +10,7 @@ qt.style = "adwaita-dark"; qt.platformTheme = "gnome"; - + #hyprland services.displayManager.gdm.enable = true; # use sddm until gnome 50 due to https://github.com/systemd/systemd/issues/39259 @@ -25,7 +25,11 @@ openFirewall = true; }; services.tailscale.enable = true; - services.printing.drivers = [ pkgs.brlaser pkgs.brgenml1lpr pkgs.brgenml1cupswrapper ]; + services.printing.drivers = [ + pkgs.brlaser + pkgs.brgenml1lpr + pkgs.brgenml1cupswrapper + ]; # Enable automatic login for the user. # services.displayManager.autoLogin.enable = true; @@ -52,8 +56,7 @@ }; - - programs.chromium = { + programs.chromium = { enable = true; homepageLocation = "https://dashboard.mektem.com"; extraOpts = { @@ -62,9 +65,6 @@ }; }; - - - hardware.keyboard.qmk.enable = true; boot = { @@ -78,13 +78,11 @@ kernelParams = [ "quiet" "udev.log_level=3" - "systemd.show_status=auto" + "systemd.show_status=auto" "rd.udev.log_level=3" ]; }; - - #services.udev.packages = [ pkgs.via ]; nixpkgs.overlays = [ @@ -100,74 +98,66 @@ services.mullvad-vpn.enable = true; environment.systemPackages = with pkgs; [ - audacity brave - blender - orca-slicer firefox - gimp - inkscape - bitwarden-desktop - bitwarden-cli - kiwix - libreoffice - obs-studio - obsidian + #blender + #audacity + #orca-slicer + #gimp + #inkscape + #unstable.protonmail-desktop + #bitwarden-desktop + #libreoffice + #freecad + #kiwix + #obs-studio + #obsidian unstable.proton-authenticator - unstable.protonmail-desktop - unstable.proton-vpn - prismlauncher - unstable.signal-desktop - freecad + #prismlauncher + #unstable.signal-desktop tor-browser - wireshark - monero-gui - moonlight-qt + #wireshark + #monero-gui + #moonlight-qt nvtopPackages.nvidia dconf-editor - via - kdePackages.kdenlive - easyeffects - element-desktop - chirp + #kdePackages.kdenlive + #element-desktop + #chirp scrcpy veracrypt - lmms + #lmms restic-browser # games - webcord - heroic - lutris - cataclysm-dda - runelite - zeroad - unciv - endless-sky - wesnoth - mindustry - openrct2 - openttd - xonotic - osu-lazer-bin - ufoai - ludusavi # steam backup - + #cataclysm-dda + #endless-sky + #mindustry + #openrct2 + #openttd + #osu-lazer-bin + #runelite + #unciv + #webcord + #wesnoth + #xonotic + #zeroad #0ad + # game utils mangohud umu-launcher # emu - ryubing - xemu + #ryubing + #xemu xenia-canary #retroarch-full - rpcs3 - dolphin-emu - cemu + #rpcs3 + #dolphin-emu + #cemu # backup - keepassxc + #keepassxc ]; fonts.fontconfig = { @@ -187,9 +177,14 @@ }; }; + services.hardware.openrgb.enable = true; + services.hardware.openrgb.package = pkgs.openrgb-with-all-plugins; + programs = { adb.enable = true; - + + + localsend = { enable = true; openFirewall = true; @@ -218,38 +213,100 @@ fileSystems."/mnt/media" = { device = "//192.168.0.30/media"; fsType = "cifs"; - options = let - # this line prevents hanging on network split - automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"; + options = + let + # this line prevents hanging on network split + automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"; - in ["${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000"]; + in + [ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ]; }; fileSystems."/mnt/services" = { device = "//192.168.0.30/services"; fsType = "cifs"; - options = let - # this line prevents hanging on network split - automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"; + options = + let + # this line prevents hanging on network split + automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"; - in ["${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000"]; + in + [ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ]; }; fileSystems."/mnt/data" = { device = "//192.168.0.30/data"; fsType = "cifs"; - options = let - # this line prevents hanging on network split - automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"; + options = + let + # this line prevents hanging on network split + automount_opts = "x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"; - in ["${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000"]; + in + [ "${automount_opts},credentials=/etc/nixos/smb-credentials,uid=1000,gid=1000" ]; }; programs.virt-manager.enable = true; - users.groups.libvirtd.members = ["admin"]; + users.groups.libvirtd.members = [ "admin" ]; virtualisation.libvirtd = { enable = true; qemu.swtpm.enable = true; }; virtualisation.spiceUSBRedirection.enable = true; - #services.flatpak.enable = true; + imports = [ inputs.nix-flatpak.nixosModules.nix-flatpak ]; + + services.flatpak = { + enable = true; + update.auto = { + enable = true; + onCalendar = "weekly"; # Default value + }; + packages = [ + "com.bitwarden.desktop" + "com.orcaslicer.OrcaSlicer" + "me.proton.Mail" + "org.audacityteam.Audacity" + "org.blender.Blender" + "org.freecad.FreeCAD" + "org.gimp.GIMP" + "org.inkscape.Inkscape" + "org.kiwix.desktop" + "org.libreoffice.LibreOffice" + "md.obsidian.Obsidian" + "com.obsproject.Studio" + "org.prismlauncher.PrismLauncher" + "org.signal.Signal" + "org.wireshark.Wireshark" + "org.getmonero.Monero" + "com.moonlight_stream.Moonlight" + "org.kde.kdenlive" + "im.riot.Riot" + "com.chirpmyradio.chirp" + "io.lmms.LMMS" + + # games + "com.github.Anuken.Mindustry" + "com.play0ad.zeroad" + "io.github.endless_sky.endless_sky" + "io.github.spacingbat3.webcord" + "io.github.yairm210.unciv" + "io.openrct2.OpenRCT2" + "net.runelite.RuneLite" + "org.cataclysmdda.CataclysmDDA" + "org.openttd.OpenTTD" + "org.wesnoth.Wesnoth" + "org.xonotic.Xonotic" + "sh.ppy.osu" + + # emu + "io.github.ryubing.Ryujinx" + "app.xemu.xemu" + "net.rpcs3.RPCS3" + "org.DolphinEmu.dolphin-emu" + "info.cemu.Cemu" + + # backup + "org.keepassxc.KeePassXC" + + ]; + }; } diff --git a/config/gnome.nix b/config/gnome.nix index 6ca951d..879f2cd 100644 --- a/config/gnome.nix +++ b/config/gnome.nix @@ -2,7 +2,7 @@ # Enable the GNOME Desktop Environment. services.desktopManager.gnome.enable = false; - + environment.systemPackages = with pkgs; [ gnomeExtensions.appindicator gnomeExtensions.blur-my-shell @@ -13,7 +13,7 @@ environment.gnome.excludePackages = with pkgs; [ epiphany # web browser geary # email - decibels #audio player + decibels # audio player gnome-calendar gnome-music gnome-software @@ -23,68 +23,70 @@ yelp # help ]; - programs.dconf = { - enable = true; - profiles.user.databases = [{ - lockAll = true; # prevents overriding - settings = { - "org/gnome/shell" = { - favorite-apps = [ - "org.gnome.Nautilus.desktop" - "brave-browser.desktop" - "proton-mail.desktop" - "obsidian.desktop" - "signal.desktop" - "element-desktop.desktop" - "steam.desktop" - "bitwarden.desktop" - "org.gnome.Settings.desktop" - "org.gnome.Console.desktop" - ]; - enabled-extensions = [ - pkgs.gnomeExtensions.appindicator.extensionUuid - pkgs.gnomeExtensions.blur-my-shell.extensionUuid - pkgs.gnomeExtensions.caffeine.extensionUuid - pkgs.gnomeExtensions.dash-to-dock.extensionUuid - ]; - }; - "org/gnome/desktop/calendar" = { - show-weekdate = true; - }; - "org/gnome/desktop/interface" = { - clock-show-weekday = true; - color-scheme = "prefer-dark"; - document-font-name = "Noto Sans 11"; - enable-hot-corners = false; - font-name = "Noto Sans 11"; - gtk-theme = "Adwaita-dark"; - monospace-font-name = "Fira Mono 12"; - }; - "org/gnome/desktop/peripherals/mouse" = { - accel-profile = "flat"; - }; - "org/gnome/desktop/wm/preferences" = { - button-layout = ":minimize,maximize,close"; - }; - "org/gnome/nautilus/list-view" = { - default-zoom-level = "small"; - }; - "org/gnome/nautilus/preferences" = { - default-folder-viewer = "list-view"; - }; - "org/gnome/shell/extensions/dash-to-dock" = { - click-action = "minimize-or-previews"; - dock-fixed = true; - multi-monitor = true; - show-mounts = false; - show-show-apps-button = true; - apply-custom-theme = true; - }; - "org/gnome/shell/keybindings" = { - show-screenshot-ui = ["s"]; - }; - #org.gnome.desktop.input-sources sources [('xkb', 'us'), ('xkb', 'dz+ar')] + programs.dconf = { + enable = true; + profiles.user.databases = [ + { + lockAll = true; # prevents overriding + settings = { + "org/gnome/shell" = { + favorite-apps = [ + "org.gnome.Nautilus.desktop" + "brave-browser.desktop" + "proton-mail.desktop" + "obsidian.desktop" + "signal.desktop" + "element-desktop.desktop" + "steam.desktop" + "bitwarden.desktop" + "org.gnome.Settings.desktop" + "org.gnome.Console.desktop" + ]; + enabled-extensions = [ + pkgs.gnomeExtensions.appindicator.extensionUuid + pkgs.gnomeExtensions.blur-my-shell.extensionUuid + pkgs.gnomeExtensions.caffeine.extensionUuid + pkgs.gnomeExtensions.dash-to-dock.extensionUuid + ]; }; - }]; - }; -} \ No newline at end of file + "org/gnome/desktop/calendar" = { + show-weekdate = true; + }; + "org/gnome/desktop/interface" = { + clock-show-weekday = true; + color-scheme = "prefer-dark"; + document-font-name = "Noto Sans 11"; + enable-hot-corners = false; + font-name = "Noto Sans 11"; + gtk-theme = "Adwaita-dark"; + monospace-font-name = "Fira Mono 12"; + }; + "org/gnome/desktop/peripherals/mouse" = { + accel-profile = "flat"; + }; + "org/gnome/desktop/wm/preferences" = { + button-layout = ":minimize,maximize,close"; + }; + "org/gnome/nautilus/list-view" = { + default-zoom-level = "small"; + }; + "org/gnome/nautilus/preferences" = { + default-folder-viewer = "list-view"; + }; + "org/gnome/shell/extensions/dash-to-dock" = { + click-action = "minimize-or-previews"; + dock-fixed = true; + multi-monitor = true; + show-mounts = false; + show-show-apps-button = true; + apply-custom-theme = true; + }; + "org/gnome/shell/keybindings" = { + show-screenshot-ui = [ "s" ]; + }; + #org.gnome.desktop.input-sources sources [('xkb', 'us'), ('xkb', 'dz+ar')] + }; + } + ]; + }; +} diff --git a/config/hyprland.nix b/config/hyprland.nix index 1f66add..1eabb53 100644 --- a/config/hyprland.nix +++ b/config/hyprland.nix @@ -1,9 +1,9 @@ -{ pkgs, ...}: +{ pkgs, ... }: { programs.hyprland.enable = true; - security.pam.services.hyprlock = {}; + security.pam.services.hyprlock = { }; #wifi networking.wireless.iwd.enable = true; @@ -13,25 +13,26 @@ environment.systemPackages = with pkgs; [ glib # gsettings - gsettings-desktop-schemas # gsettings + gsettings-desktop-schemas # gsettings dconf # gsettings impala # wifi grim # screenshots slurp # screenshot selection wl-clipboard # copy to clipboard libnotify # enables "notify-send" - nautilus bluetui # bluetooth wiremix # mixer - btop - tesseract #ocr - + tesseract # ocr + hyprpicker + satty # image annotation + # gnome stuff gnome-calculator + nautilus gnome-font-viewer - + gnome-calendar ]; services.udisks2.enable = true; # udiskie automount USB -} \ No newline at end of file +} diff --git a/config/linux.nix b/config/linux.nix index 791011a..48aee39 100644 --- a/config/linux.nix +++ b/config/linux.nix @@ -1,4 +1,4 @@ -{ pkgs, ...}: +{ pkgs, ... }: { # Enable sound with pipewire. @@ -19,7 +19,7 @@ "adbusers" # adb "kvm" # virt "networkmanager" - "lp" #printing + "lp" # printing ]; }; @@ -46,4 +46,4 @@ # enable developer documenation documentation.dev.enable = true; -} \ No newline at end of file +} diff --git a/flake.lock b/flake.lock index 0b6d2c8..65b210f 100644 --- a/flake.lock +++ b/flake.lock @@ -100,6 +100,21 @@ "type": "github" } }, + "nix-flatpak": { + "locked": { + "lastModified": 1777402031, + "narHash": "sha256-6gkfl9y3+ti0Z6dgby8/R4/DRT8sWU0I0TLCIxwWtjk=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "22a3adbe7c5c8c8a10a635d32c9ef7fc01a6e4b8", + "type": "github" + }, + "original": { + "owner": "gmodena", + "repo": "nix-flatpak", + "type": "github" + } + }, "nixos-hardware": { "locked": { "lastModified": 1776983936, @@ -170,6 +185,7 @@ "home-manager-unstable": "home-manager-unstable", "lazyvim": "lazyvim", "nix-darwin": "nix-darwin", + "nix-flatpak": "nix-flatpak", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable" diff --git a/flake.nix b/flake.nix index 4fbb243..63a8ed1 100644 --- a/flake.nix +++ b/flake.nix @@ -12,16 +12,27 @@ nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11"; nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; lazyvim.url = "github:pfassina/lazyvim-nix"; + nix-flatpak.url = "github:gmodena/nix-flatpak"; }; outputs = - { self, nixpkgs, home-manager, home-manager-unstable, nix-darwin, lazyvim, ... }@inputs: + { + self, + nixpkgs, + home-manager, + home-manager-unstable, + nix-darwin, + lazyvim, + nix-flatpak, + ... + }@inputs: { nixosConfigurations.desktop = nixpkgs.lib.nixosSystem { specialArgs = { - inherit self inputs; - hostname = "nixos-desktop"; - }; + inherit self inputs; + inherit nix-flatpak; + hostname = "nixos-desktop"; + }; #inherit system; modules = [ ./config/common.nix @@ -34,11 +45,11 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.extraSpecialArgs = { - inherit lazyvim; - inherit inputs; - hostname = "nixos-desktop"; - }; + home-manager.extraSpecialArgs = { + inherit lazyvim; + inherit inputs; + hostname = "nixos-desktop"; + }; home-manager.users.admin = { imports = [ ./home/common.nix @@ -51,7 +62,7 @@ }; nixosConfigurations.nixos-server = nixpkgs.lib.nixosSystem { - specialArgs = {inherit inputs;}; + specialArgs = { inherit inputs; }; modules = [ ./config/common.nix ./config/linux.nix @@ -70,7 +81,7 @@ } ]; }; - + darwinConfigurations."admins-MacBook-Air" = nix-darwin.lib.darwinSystem { modules = [ ./config/common.nix @@ -90,7 +101,7 @@ ]; }; } - ]; + ]; }; }; diff --git a/home/common.nix b/home/common.nix index 0a34fbc..8a984ce 100644 --- a/home/common.nix +++ b/home/common.nix @@ -1,4 +1,9 @@ -{ config, pkgs, lazyvim, ...}: +{ + config, + pkgs, + lazyvim, + ... +}: { home.sessionVariables = { @@ -7,7 +12,6 @@ BROWSER = "brave"; }; - imports = [ lazyvim.homeManagerModules.default ]; programs = { @@ -31,10 +35,16 @@ ''; }; - - - lazyvim.enable = true; - + lazyvim = { + enable = true; + plugins = { + colorscheme = '' + return { + "kepano/flexoki-neovim" + } + ''; + }; + }; # neovim = { # enable = true; # viAlias = true; @@ -86,7 +96,7 @@ set -g window-status-separator "" set -gw automatic-rename on set -gw automatic-rename-format '#{b:pane_current_path}' - + # theme set -g status-style "bg=default,fg=default" set -g status-left "#[fg=black,bg=blue,bold] #S #[bg=default] " @@ -111,6 +121,33 @@ enable = true; dotDir = "${config.xdg.configHome}/zsh"; syntaxHighlighting.enable = true; + initContent = '' + bindkey -v + export KEYTIMEOUT=1 + + # Use vim keys in tab complete menu: + bindkey -M menuselect 'h' vi-backward-char + bindkey -M menuselect 'k' vi-up-line-or-history + bindkey -M menuselect 'l' vi-forward-char + bindkey -M menuselect 'j' vi-down-line-or-history + bindkey -v '^?' backward-delete-char + + # Change cursor shape for different vi modes. + function zle-keymap-select () { + case $KEYMAP in + vicmd) echo -ne '\e[1 q';; # block + viins|main) echo -ne '\e[5 q';; # beam + esac + } + zle -N zle-keymap-select + zle-line-init() { + zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere) + echo -ne "\e[5 q" + } + zle -N zle-line-init + echo -ne '\e[5 q' # Use beam shape cursor on startup. + preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt. + ''; oh-my-zsh = { enable = true; plugins = [ "git" ]; diff --git a/home/desktop.nix b/home/desktop.nix index 880d26e..9f56ed9 100644 --- a/home/desktop.nix +++ b/home/desktop.nix @@ -13,6 +13,8 @@ ''; }; + services.easyeffects.enable = true; + # Don't touch home.stateVersion = "24.11"; } diff --git a/home/hyprland.nix b/home/hyprland.nix index deaf9ff..d384c9a 100644 --- a/home/hyprland.nix +++ b/home/hyprland.nix @@ -2,10 +2,14 @@ let nix_background = "rgb(16, 15, 15)"; nix_text = "rgb(206, 205, 195)"; - nix_accent = "rgb(67, 133, 190)"; # blue + nix_accent = "rgb(32, 94, 166)"; # blue nix_inactive = "rgb(64, 62, 60)"; - nix_alert = "rgb(209, 77, 65)"; # red - nix_recording = "rgb(218, 112, 44)"; # orange + nix_alert = "rgb(175, 48, 41)"; # red + nix_recording = "rgb(188, 82, 21)"; # orange + nix_font = "JetBrainsMono Nerd Font"; + nix_border_size = 3; + nix_corner = 10; + nix_bar_height = 30; in { home.pointerCursor = { @@ -22,21 +26,56 @@ in services.udiskie.enable = true; # automount USB + services.playerctld.enable = true; # media control for browser, etc + + services.mpd = { + enable = true; + musicDirectory = "/mnt/media/audio/music/flac"; + extraConfig = '' + audio_output { + type "pipewire" + name "PipeWire Sound Server" + } + auto_update "yes" + ''; + }; + + programs.rmpc = { + enable = true; + config = '' + ( + address: "127.0.0.1:6600", + password: None, + theme: None, + cache_dir: None, + on_song_change: None, + volume_step: 5, + max_fps: 30, + scrolloff: 0, + wrap_navigation: false, + enable_mouse: true, + enable_config_hot_reload: true, + select_current_song_on_change: false, + browser_song_sort: [Disc, Track, Artist, Title], + ) + ''; + }; + programs.alacritty = { enable = true; theme = "flexoki"; settings = { font = { normal = { - family = "JetBrainsMono Nerd Font"; + family = nix_font; style = "Regular"; }; bold = { - family = "JetBrainsMono Nerd Font"; + family = nix_font; style = "Bold"; }; italic = { - family = "JetBrainsMono Nerd Font"; + family = nix_font; style = "Italic"; }; size = 9; @@ -50,16 +89,6 @@ in }; }; - programs.kitty = { - enable = true; - shellIntegration.enableZshIntegration = true; - font.name = "JetBrains Mono Nerd Font"; - themeFile = "Catppuccin-Mocha"; - settings = { - background_opacity = 0.9; - }; - }; - services.hyprpaper = { enable = true; settings = { @@ -78,19 +107,21 @@ in enable = true; settings = { global = { - width = "(300, 300)"; height = "(75, 75)"; - font = "JetBrains Mono Nerd Font 14"; + font = "${nix_font} 10"; offset = "(40, 40)"; - frame-color = nix_inactive; - background = nix_background; - foreground = nix_text; + frame_color = "#205ea6"; + background = "#100f0f1A"; + foreground = "#cecdc3"; timeout = 5; + gaps = true; + gap_size = 15; + corner_radius = nix_corner; }; urgency_critical = { - frame-color = nix_alert; + frame_color = nix_alert; timeout = 0; }; @@ -127,19 +158,6 @@ in # }; # }; - # services.swaync = { - # enable = true; - # style = '' - # .notification { - # border-radius: 0px; - # background-color: "#1e1e2e"; - # color: "#cdd6f4"; - # border-color: "#89b4fa"; - # } - # ''; - # - # }; - dconf = { enable = true; settings = { @@ -162,7 +180,7 @@ in border: none; border-radius: 0; min-height: 0; - font-family: 'JetBrainsMono Nerd Font'; + font-family: '${nix_font}'; font-size: 14px; /* up from 12px */ } @@ -185,12 +203,20 @@ in opacity: 0.5; } + window#waybar { + border-radius: 0 0 ${toString nix_corner}px ${toString nix_corner}px; + + } + #cpu, #battery, #pulseaudio, #custom-power, #idle_inhibitor, #bluetooth, + #privacy, + #custom-menu, + #hyprland-submap, #language { min-width: 12px; margin: 0 7.5px; @@ -208,7 +234,7 @@ in margin-right: 13px; } - #custom-expandn { + #custom-expand { margin-right: 18px; } @@ -239,12 +265,13 @@ in opacity: 0; } - #privacy { + #privacy privacy-item *{ min-width: 12px; margin-left: 5px; margin-right: 0; font-size: 10px; padding-bottom: 1px; + color: #ffffff; } #privacy.active { @@ -257,9 +284,13 @@ in ''; settings = { mainBar = { - height = 26; - spacing = 4; - modules-left = [ "hyprland/workspaces" ]; + height = nix_bar_height; + spacing = 0; + modules-left = [ + "custom/menu" + "hyprland/workspaces" + "hyprland/submap" + ]; modules-center = [ "clock" "idle_inhibitor" @@ -274,6 +305,10 @@ in "privacy" ]; + privacy = { + icon-size = 14; + }; + "hyprland/workspaces" = { on-click = "activate"; format = "{icon}"; @@ -306,7 +341,8 @@ in }; tray = { - #spacing = 10; + spacing = 17; + icon-size = 12; }; "hyprland/language" = { @@ -321,6 +357,11 @@ in on-click = "hyprlock & systemctl suspend"; }; + "custom/menu" = { + format = ""; + on-click = "walker"; + }; + "custom/expand" = { tooltip = false; format = ""; @@ -411,13 +452,140 @@ in locale = ""; monitor = ""; terminal_title_flag = ""; - theme = "default"; timeout = 0; }; + theme.name = "my-theme"; + theme.style = '' + @define-color background ${nix_background}; + @define-color foreground ${nix_text}; + @define-color selected-text ${nix_accent}; + @define-color base ${nix_background}; + @define-color border ${nix_accent}; + @define-color text ${nix_text}; + + * { + all: unset; + } + + * { + font-family: monospace; + font-size: 18px; + color: @text; + } + + scrollbar { + opacity: 0; + } + + .normal-icons { + -gtk-icon-size: 16px; + } + + .large-icons { + -gtk-icon-size: 32px; + } + + .box-wrapper { + background: alpha(@base, 0.95); + padding: 20px; + border: 2px solid @border; + } + + .preview-box { + } + + .box { + } + + .search-container { + background: @base; + padding: 10px; + } + + .input placeholder { + opacity: 0.5; + } + + .input { + } + + .input:focus, + .input:active { + box-shadow: none; + outline: none; + } + + .content-container { + } + + .placeholder { + } + + .scroll { + } + + .list { + } + + child, + child > * { + } + + child:hover .item-box { + } + + child:selected .item-box { + } + + child:selected .item-box * { + color: @selected-text; + } + + child:selected { + background: alpha(@text, 0.07); + } + + .item-box { + padding-left: 14px; + } + + .item-text-box { + all: unset; + padding: 14px 0; + } + + .item-text { + } + + .item-subtext { + font-size: 0px; + min-height: 0px; + margin: 0px; + padding: 0px; + } + + .item-image { + margin-right: 14px; + -gtk-icon-transform: scale(0.9); + } + + .current { + font-style: italic; + } + + .keybind-hints { + background: @background; + padding: 10px; + margin-top: 10px; + } + + .preview { + } + ''; }; programs.rofi = { enable = true; - font = "JetBrains Mono 14"; + font = "${nix_font} 14"; plugins = [ pkgs.rofimoji ]; @@ -425,8 +593,18 @@ in programs.hyprlock = { enable = true; settings = { + general = { + ignore_empty_input = true; + }; background = { - color = nix_background; + # color = nix_background; + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + }; + + animations = { + enabled = false; }; input-field = { @@ -434,19 +612,22 @@ in position = "0, 0"; halign = "center"; valign = "center"; - fade_on_emtpy = false; + fade_on_empty = false; font_color = nix_text; outer_color = nix_inactive; inner_color = nix_background; check_color = nix_accent; fail_color = nix_alert; - font_family = "JetBrains Mono Nerd Font"; + font_family = nix_font; + shadow_passes = 0; - placeholder_text = "Enter Password"; + placeholder_text = "Enter Password 󰈷 "; fail_text = "$FAIL ($ATTEMPTS)"; - rounding = 0; + rounding = nix_corner; }; + + "fingerprint:enabled" = true; }; }; @@ -472,10 +653,94 @@ in }; }; + xdg.configFile."hypr/scripts/media.sh" = { + executable = true; + text = '' + # Define a unique ID to reuse for replacing notifications + NOTIF_ID=9999 + + PLAYER=$(playerctl -l 2>/dev/null | grep -i 'brave\|chromium\|chrome' | head -n 1) + + if [ -z "$PLAYER" ]; then + exit 1 + fi + + sleep 0.4s + + # Get play/pause status + STATUS=$(playerctl -p "$PLAYER" status 2>/dev/null) + + # Fetch metadata + TITLE=$(playerctl -p "$PLAYER" metadata title 2>/dev/null) + ARTIST=$(playerctl -p "$PLAYER" metadata artist 2>/dev/null) + + # Format the message based on artist presence + if [ -z "$ARTIST" ]; then + MSG="$TITLE" + else + MSG="$TITLE\n$ARTIST" + fi + + # Send notification using the -r flag to overwrite the old one + if [ "$STATUS" = "Paused" ]; then + notify-send -r $NOTIF_ID "Paused" "$MSG" -i media-playback-pause -t 5000 + else + notify-send -r $NOTIF_ID "Now Playing" "$MSG" -i media-playback-start -t 5000 + fi + ''; + }; + + xdg.configFile."hypr/scripts/screenshot.sh" = { + executable = true; + text = '' + MODE=$1 + FILE=$(mktemp /tmp/screenshot-XXXXXX.png) + + grim -g "$(slurp)" "$FILE" || exit 1 + + wl-copy < "$FILE" + + ACTION=$(dunstify "Screenshot taken" "Copied to clipboard" \ + --icon="$FILE" \ + --action="open,Open in Satty" \ + --timeout=5000) + + [ "$ACTION" = "2" ] && satty --filename "$FILE" + FILE=$(mktemp /tmp/screenshot-XXXXXX.png) + + case "$MODE" in + region) + grim -g "$(slurp)" "$FILE" || exit 1 + ;; + fullscreen) + grim "$FILE" || exit 1 + ;; + window) + GEOMETRY=$(hyprctl clients -j | jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | slurp) + grim -g "$GEOMETRY" "$FILE" || exit 1 + ;; + *) + notify-send "Screenshot" "Invalid mode: $MODE" --urgency=critical + exit 1 + ;; + esac + + wl-copy < "$FILE" + + ACTION=$(notify-send "Screenshot taken ($MODE)" \ + "Copied to clipboard" \ + --icon="$FILE" \ + --action="open=Open in Satty" \ + --wait) + + [ "$ACTION" = "open" ] && satty --filename "$FILE" + ''; + }; + wayland.windowManager.hyprland = { enable = true; plugins = [ - #pkgs.hyprlandPlugins.hyprbars + pkgs.hyprlandPlugins.hyprbars ]; settings = { # This is an example Hyprland config file for Nix. @@ -492,6 +757,27 @@ in # Create your files separately and then link them to this file like this: # source = ~/.config/hypr/myColors.conf # todo: make the line above nix-ish + # + cursor = { + #hide_on_key_press = true; # wish this could be disabled on window basis https://github.com/hyprwm/Hyprland/discussions/12317 + warp_on_change_workspace = 1; + }; + + plugin = { + hyprbars = { + bar_height = nix_bar_height; + hyprbars-button = [ + "rgb(ff605C), 16, 󰖭, hyprctl dispatch killactive" + "rgb(00CA4E), 16, 󰊔, hyprctl dispatch fullscreen 1" + "rgb(FFBD44), 16, , hyprctl dispatch togglefloating" + ]; + on_double_click = "hyprctl dispatch fullscreen 1"; + icon_on_hover = true; + bar_color = nix_background; + "col.text" = nix_text; + bar_buttons_alignment = "right"; + }; + }; ################ ### MONITORS ### @@ -581,14 +867,14 @@ in gaps_in = 10; gaps_out = 20; - border_size = 3; + border_size = nix_border_size; # these need to have variables - "col.active_border" = "0x4385BEFF"; - "col.inactive_border" = "0x403E3CFF"; + "col.active_border" = "0xFF205ea6"; + "col.inactive_border" = "0xFF403E3C"; # Set to true enable resizing windows by clicking and dragging on borders and gaps - resize_on_border = false; + resize_on_border = true; # Please see https://wiki.hypr.land/Configuring/Tearing/ before you turn this on allow_tearing = false; @@ -625,36 +911,35 @@ in }; }; - # https://wiki.hypr.land/Configuring/Variables/#decoration + # https://wiki.hypr.land/Configuring/Basics/Variables/#decoration decoration = { - rounding = 0; - rounding_power = 2; - - # Change transparency of focused and unfocused windows - active_opacity = 1.0; - inactive_opacity = 1.0; + rounding = nix_corner; shadow = { enabled = true; - range = 4; + range = 2; render_power = 3; color = "rgba(1a1a1aee)"; }; - # https://wiki.hypr.land/Configuring/Variables/#blur + # https://wiki.hypr.land/Configuring/Basics/Variables/#blur blur = { enabled = true; - size = 8; - passes = 1; - noise = 0.2; - - vibrancy = 0.1696; + size = 2; + passes = 2; + special = true; + brightness = 0.60; + contrast = 0.75; }; }; layerrule = [ "blur, notifications" "ignorezero, notifications" + + # turn off anim for walker + "noanim, walker" + ]; # add blur to notifications # https://wiki.hypr.land/Configuring/Variables/#animations @@ -674,7 +959,7 @@ in animation = [ "global, 1, 10, default" "border, 1, 5.39, easeOutQuint" - "windows, 1, 4.79, easeOutQuint" + "windows, 1, 3.79, easeOutQuint" "windowsIn, 1, 4.1, easeOutQuint, popin 87%" "windowsOut, 1, 1.49, linear, popin 87%" "fadeIn, 1, 1.73, almostLinear" @@ -685,31 +970,20 @@ in "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" - "zoomFactor, 1, 7, quick" + "workspaces, 0, 1, default" + "specialWorkspace, 1, 3, easeOutQuint, slidevert" ]; }; - # Ref https://wiki.hypr.land/Configuring/Workspace-Rules/ - # "Smart gaps" / "No gaps when only" - # uncomment all if you wish to use that. - # workspace = [ - # "w[tv1], gapsout:0, gapsin:0" - # "f[1], gapsout:0, gapsin:0" - # ]; - # windowrule = [ - # "bordersize 0, floating:0, onworkspace:w[tv1]" - # "rounding 0, floating:0, onworkspace:w[tv1]" - # "bordersize 0, floating:0, onworkspace:f[1]" - # "rounding 0, floating:0, onworkspace:f[1]" - # ]; - # See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more dwindle = { pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below preserve_split = true; # You probably want this + force_split = 2; # Always split on the right + }; + + binds = { + hide_special_on_workspace_change = true; }; # See https://wiki.hypr.land/Configuring/Master-Layout/ for more @@ -722,6 +996,7 @@ in force_default_wallpaper = 0; # Set to 0 or 1 to disable the anime mascot wallpapers disable_hyprland_logo = true; # If true disables the random hyprland logo / anime girl background. :( background_color = nix_background; + focus_on_activate = true; }; ############# @@ -735,11 +1010,15 @@ in kb_model = ""; kb_options = "grp:alt_space_toggle"; kb_rules = ""; - follow_mouse = 1; + repeat_rate = 40; + repeat_delay = 250; + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + accel_profile = "flat"; + touchpad = { disable_while_typing = false; natural_scroll = false; @@ -773,15 +1052,23 @@ in "$mainMod SHIFT, Q, exit," "$mainMod, E, exec, $fileManager" "$mainMod, V, togglefloating," - "$mainMod, F, fullscreen, 1" + "$mainMod, F, fullscreen, 3" + "$mainMod, M, fullscreen, 1" "$mainMod, W, exec, $browser" "$mainMod, space, exec, $menu" #"$mainMod, P, pseudo," # dwindle "$mainMod, T, togglesplit," # dwindle "$mainMod SHIFT, L, exec, hyprlock" "$mainMod SHIFT, F, workspaceopt, allfloat" + "$mainMod SHIFT, H, exec, for i in {1..10}; do dunstctl history-pop; done; sleep 5 && dunstctl close-all" # show last 10 notifications for 5 seconds "$mainMod, G, togglegroup," - "$mainMod SHIFT, S, exec, grim -g \"$(slurp)\" - | wl-copy" + "$mainMod SHIFT, S, exec, ~/.config/hypr/scripts/screenshot.sh region" + ", PRINT, exec, ~/.config/hypr/scripts/screenshot.sh fullscreen" + "$mainMod, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh window" + + # OCR + "$mainMod SHIFT, T, exec, bash -c 'grim -g \"$(slurp)\" - | tesseract - stdout | wl-copy'" + "$mainMod SHIFT, PRINT, exec, pkill hyprpicker || hyprpicker -a | wl-copy" # Move focus with mainMod + arrow keys "$mainMod, h, movefocus, l" @@ -845,10 +1132,10 @@ in # Requires playerctl bindl = [ - ", XF86AudioNext, exec, playerctl next" - ", XF86AudioPause, exec, playerctl play-pause" - ", XF86AudioPlay, exec, playerctl play-pause" - ", XF86AudioPrev, exec, playerctl previous" + ", XF86AudioNext, exec, playerctl next& ~/.config/hypr/scripts/media.sh" + ", XF86AudioPause, exec, playerctl play-pause& ~/.config/hypr/scripts/media.sh" + ", XF86AudioPlay, exec, playerctl play-pause& ~/.config/hypr/scripts/media.sh" + ", XF86AudioPrev, exec, playerctl previous& ~/.config/hypr/scripts/media.sh" ]; ############################## @@ -867,13 +1154,12 @@ in # Fix some dragging issues with XWayland "nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0" - "float, title:^(bluetui)$" - "center, title:^(bluetui)$" - "float, title:^(impala)$" - "center, title:^(impala)$" - "float, title:^(wiremix)$" - "center, title:^(wiremix)$" + # make tuis accessed from waybar float in center + "tag +floating-window, title:(bluetui|impala|wiremix)" + "tag +floating-window, title:^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)" + "float, class:(org.gnome.Calculator)" + # send games to specific workspace "workspace name:games silent, class:$games" "noanim, class:$games" "noblur, class:$games" @@ -882,6 +1168,42 @@ in "rounding 0, class:$games" "fullscreen, class:$games" "immediate, class:$games" + + # pip + "tag +pip, title:(Picture.?in.?[Pp]icture)" + "tag -default-opacity, tag:pip" + "float, tag:pip" + "pin, tag:pip" + "size 600 338, tag:pip" + "keepaspectratio, tag:pip" + "bordersize 0, tag:pip" + "opacity 1 1, tag:pip" + "move (monitor_w-window_w-40) (monitor_h*0.04), tag:pip" + + # steam + "float, class:^(steam)$" + "center, class:^(steam)$, title:^(Steam)$" + "tag -default-opacity, class:^(steam.*)$" + "opacity 1 1, class:^(steam.*)$" + "size 1100 700, class:^(steam)$, title:^(Steam)$" + "size 460 800, class:^(steam)$, title:^(Friends List)$" + "idleinhibit fullscreen, class:^(steam)$" + + # bitwarden + "noscreenshare, class:^(Bitwarden)$" + "tag +floating-window, class:^(Bitwarden)$" + + # Bitwarden Chrome Extension + "noscreenshare, class:^(brave-nngceckbapebfimnlniiiahkandclblb-Default)$" + "tag +floating-window, class:^(brave-nngceckbapebfimnlniiiahkandclblb-Default)$" + + # floating tag + "float, tag:floating-window" + "center, tag:floating-window" + "size 875 600, tag:floating-window" + + # hyprbar + "plugin:hyprbars:nobar, tag:^(?!floating-window$).*$" ]; "$games" = diff --git a/home/podman.nix b/home/podman.nix index 0e3415e..28f1c0d 100644 --- a/home/podman.nix +++ b/home/podman.nix @@ -7,28 +7,28 @@ { -systemd.user.services.podman-prune = { - Unit = { - Description = "Prune unused Podman resources for admin user"; + systemd.user.services.podman-prune = { + Unit = { + Description = "Prune unused Podman resources for admin user"; + }; + Service = { + Type = "oneshot"; + ExecStart = "${pkgs.podman}/bin/podman system prune -f --all"; + }; }; - Service = { - Type = "oneshot"; - ExecStart = "${pkgs.podman}/bin/podman system prune -f --all"; - }; -}; -systemd.user.timers.podman-prune = { - Unit = { - Description = "Weekly Podman prune timer"; + systemd.user.timers.podman-prune = { + Unit = { + Description = "Weekly Podman prune timer"; + }; + Timer = { + OnCalendar = "weekly"; + Persistent = true; + }; + Install = { + WantedBy = [ "timers.target" ]; + }; }; - Timer = { - OnCalendar = "weekly"; - Persistent = true; - }; - Install = { - WantedBy = [ "timers.target" ]; - }; -}; services.podman.networks = { internal_net = { @@ -40,28 +40,28 @@ systemd.user.timers.podman-prune = { services.podman.autoUpdate.onCalendar = "*-*-* 00:00"; services.podman.containers = { -# palworld = { -# image = "docker.io/thijsvanloef/palworld-server-docker:latest"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/palworld" -# ]; -# volumes = [ -# "/pool/services/podman/palworld:/palworld" -# ]; -# ports = [ -# "8211:8211/udp" -# "27015:27015/udp" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; + # palworld = { + # image = "docker.io/thijsvanloef/palworld-server-docker:latest"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/palworld" + # ]; + # volumes = [ + # "/pool/services/podman/palworld:/palworld" + # ]; + # ports = [ + # "8211:8211/udp" + # "27015:27015/udp" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; actual = { image = "docker.io/actualbudget/actual-server:latest"; @@ -81,49 +81,49 @@ systemd.user.timers.podman-prune = { }; }; -# akaunting = { -# image = "docker.io/akaunting/akaunting:latest"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/akaunting" -# ]; -# volumes = [ -# "/pool/services/podman/akaunting/data:/var/www/html/akaunting" -# ]; -# ports = [ -# "8003:80" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; -# -# akaunting-db = { -# image = "docker.io/mariadb:latest"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/akaunting" -# ]; -# volumes = [ -# "/pool/services/podman/akaunting/db:/var/lib/mysql" -# ]; -# ports = [ -# "3307:3306" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; + # akaunting = { + # image = "docker.io/akaunting/akaunting:latest"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/akaunting" + # ]; + # volumes = [ + # "/pool/services/podman/akaunting/data:/var/www/html/akaunting" + # ]; + # ports = [ + # "8003:80" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; + # + # akaunting-db = { + # image = "docker.io/mariadb:latest"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/akaunting" + # ]; + # volumes = [ + # "/pool/services/podman/akaunting/db:/var/lib/mysql" + # ]; + # ports = [ + # "3307:3306" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; archivebox = { image = "docker.io/archivebox/archivebox:latest"; @@ -272,12 +272,12 @@ systemd.user.timers.podman-prune = { autoUpdate = "registry"; network = "internal_net"; environment = { - OIDC_ENABLED="1"; - OIDC_PROVIDER_METADATA_URL="https://authentik.mektem.com/application/o/fresh-rss/.well-known/openid-configuration"; - OIDC_CLIENT_ID="PsqRnVLTezIKL7582E8pnKNFIF0W41kVyMhh4RoG"; - OIDC_CLIENT_SECRET="h1XsvbUcRn33rq7qBBS0GUENEgn6zTJQeHpVPhzcqG4ekdwlCghIn1ALhydYXF1pfS8HaskM3KntHXDTC8a7athLxLzT95Gxr8OpvN9iOY75pUXrNnLJXUrY9o4qKM7m"; - OIDC_X_FORWARDED_HEADERS="X-Forwarded-Port X-Forwarded-Proto X-Forwarded-Host"; - OIDC_SCOPES="openid email profile"; + OIDC_ENABLED = "1"; + OIDC_PROVIDER_METADATA_URL = "https://authentik.mektem.com/application/o/fresh-rss/.well-known/openid-configuration"; + OIDC_CLIENT_ID = "PsqRnVLTezIKL7582E8pnKNFIF0W41kVyMhh4RoG"; + OIDC_CLIENT_SECRET = "h1XsvbUcRn33rq7qBBS0GUENEgn6zTJQeHpVPhzcqG4ekdwlCghIn1ALhydYXF1pfS8HaskM3KntHXDTC8a7athLxLzT95Gxr8OpvN9iOY75pUXrNnLJXUrY9o4qKM7m"; + OIDC_X_FORWARDED_HEADERS = "X-Forwarded-Port X-Forwarded-Proto X-Forwarded-Host"; + OIDC_SCOPES = "openid email profile"; }; volumes = [ "/pool/services/podman/freshrss:/config" @@ -318,40 +318,39 @@ systemd.user.timers.podman-prune = { }; }; -# gitea-anubis = { -# image = "ghcr.io/techarohq/anubis:latest"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/anubis-default" #WHY DOES THIS NOT WORK???? -# "/pool/services/secrets/anubis-nginx" -# ]; -# environment = { -# DIFFICULTY = "4"; -# SERVE_ROBOTS_TXT = "true"; -# POLICY_FNAME = "/data/cfg/botPolicy.json"; -# OG_PASSTHROUGH = "true"; -# OG_EXPIRY_TIME = "24h"; -# BIND = ":3002"; -# METRICS_BIND = ":9090"; -# TARGET = "http://192.168.0.30:3001"; -# }; -# -# volumes = [ -# "/pool/services/podman/anubis/botPolicy.json:/data/cfg/botPolicy.json:ro" -# ]; -# ports = [ -# "3002:3002" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; - + # gitea-anubis = { + # image = "ghcr.io/techarohq/anubis:latest"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/anubis-default" #WHY DOES THIS NOT WORK???? + # "/pool/services/secrets/anubis-nginx" + # ]; + # environment = { + # DIFFICULTY = "4"; + # SERVE_ROBOTS_TXT = "true"; + # POLICY_FNAME = "/data/cfg/botPolicy.json"; + # OG_PASSTHROUGH = "true"; + # OG_EXPIRY_TIME = "24h"; + # BIND = ":3002"; + # METRICS_BIND = ":9090"; + # TARGET = "http://192.168.0.30:3001"; + # }; + # + # volumes = [ + # "/pool/services/podman/anubis/botPolicy.json:/data/cfg/botPolicy.json:ro" + # ]; + # ports = [ + # "3002:3002" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; home-assistant = { image = "ghcr.io/home-assistant/home-assistant:stable"; @@ -406,11 +405,11 @@ systemd.user.timers.podman-prune = { ports = [ "1313:1313" ]; - extraConfig = { - Service = { - TimeoutStartSec = 900; - }; - }; + extraConfig = { + Service = { + TimeoutStartSec = 900; + }; + }; }; immich-db = { @@ -539,46 +538,46 @@ systemd.user.timers.podman-prune = { }; }; -# joplin = { -# image = "docker.io/joplin/server:latest"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/joplin" -# ]; -# ports = [ -# "22300:22300" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; -# -# joplin-db = { -# image = "docker.io/postgres:15"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/joplin" -# ]; -# volumes = [ -# "/pool/services/podman/joplin-db:/var/lib/postgresql/data" -# ]; -# ports = [ -# "5432:5432" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; + # joplin = { + # image = "docker.io/joplin/server:latest"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/joplin" + # ]; + # ports = [ + # "22300:22300" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; + # + # joplin-db = { + # image = "docker.io/postgres:15"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/joplin" + # ]; + # volumes = [ + # "/pool/services/podman/joplin-db:/var/lib/postgresql/data" + # ]; + # ports = [ + # "5432:5432" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; kiwix = { image = "ghcr.io/kiwix/kiwix-serve:latest"; @@ -639,70 +638,69 @@ systemd.user.timers.podman-prune = { }; }; -# mastodon = { -# image = "ghcr.io/linuxserver/mastodon:amd64-latest"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/mastodon" -# ]; -# volumes = [ -# "/pool/services/podman/mastodon/config:/config" -# ]; -# ports = [ -# "808:80" -# "8449:443" -# "3009:3000" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; -# -# mastodon-db = { -# image = "docker.io/postgres:16-alpine"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/mastodon-db" -# ]; -# volumes = [ -# "/pool/services/podman/mastodon/db:/var/lib/postgresql/data" -# ]; -# ports = [ -# "5435:5432" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; -# -# mastodon-redis = { -# image = "registry.hub.docker.com/library/redis:6.2-alpine"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# ]; -# ports = [ -# "6382:6379" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; - + # mastodon = { + # image = "ghcr.io/linuxserver/mastodon:amd64-latest"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/mastodon" + # ]; + # volumes = [ + # "/pool/services/podman/mastodon/config:/config" + # ]; + # ports = [ + # "808:80" + # "8449:443" + # "3009:3000" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; + # + # mastodon-db = { + # image = "docker.io/postgres:16-alpine"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/mastodon-db" + # ]; + # volumes = [ + # "/pool/services/podman/mastodon/db:/var/lib/postgresql/data" + # ]; + # ports = [ + # "5435:5432" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; + # + # mastodon-redis = { + # image = "registry.hub.docker.com/library/redis:6.2-alpine"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # ]; + # ports = [ + # "6382:6379" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; metube = { image = "ghcr.io/alexta69/metube:latest"; @@ -1036,27 +1034,27 @@ systemd.user.timers.podman-prune = { }; }; }; -# rlcraft = { -# image = "docker.io/itzg/minecraft-server:java8"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/rlcraft" -# ]; -# volumes = [ -# "/pool/services/podman/minecraft/rlcraft/data:/data" -# ]; -# ports = [ -# "25565:25565" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; + # rlcraft = { + # image = "docker.io/itzg/minecraft-server:java8"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/rlcraft" + # ]; + # volumes = [ + # "/pool/services/podman/minecraft/rlcraft/data:/data" + # ]; + # ports = [ + # "25565:25565" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; rutorrent = { image = "docker.io/crazymax/rtorrent-rutorrent:latest"; @@ -1119,52 +1117,50 @@ systemd.user.timers.podman-prune = { }; }; - -# tandoor = { -# image = "docker.io/vabene1111/recipes"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/tandoor" -# ]; -# volumes = [ -# "/pool/services/podman/tandoor/staticfiles:/opt/recipes/staticfiles" -# "/pool/services/podman/tandoor/mediafiles:/opt/recipes/mediafiles" -# ]; -# ports = [ -# "9092:80" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; -# -# tandoor-db = { -# image = "docker.io/postgres:16-alpine"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# environmentFile = [ -# "/pool/services/secrets/default" -# "/pool/services/secrets/tandoor" -# ]; -# volumes = [ -# "/pool/services/podman/tandoor/db:/var/lib/postgresql/data" -# ]; -# ports = [ -# "5434:5432" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; - + # tandoor = { + # image = "docker.io/vabene1111/recipes"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/tandoor" + # ]; + # volumes = [ + # "/pool/services/podman/tandoor/staticfiles:/opt/recipes/staticfiles" + # "/pool/services/podman/tandoor/mediafiles:/opt/recipes/mediafiles" + # ]; + # ports = [ + # "9092:80" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; + # + # tandoor-db = { + # image = "docker.io/postgres:16-alpine"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # environmentFile = [ + # "/pool/services/secrets/default" + # "/pool/services/secrets/tandoor" + # ]; + # volumes = [ + # "/pool/services/podman/tandoor/db:/var/lib/postgresql/data" + # ]; + # ports = [ + # "5434:5432" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; thelounge = { image = "lscr.io/linuxserver/thelounge:latest"; @@ -1319,28 +1315,27 @@ systemd.user.timers.podman-prune = { }; }; - -# zigbee2mqtt = { -# image = "docker.io/koenkk/zigbee2mqtt"; -# autoStart = true; -# autoUpdate = "registry"; -# network = "internal_net"; -# devices = [ "/dev/ttyACM0:/dev/ttyACM0" ]; -# environmentFile = [ -# "/pool/services/secrets/default" -# ]; -# volumes = [ -# "/pool/services/podman/zigbee2mqtt:/app/data" -# ]; -# ports = [ -# "8808:8080" -# ]; -# extraConfig = { -# Service = { -# TimeoutStartSec = 900; -# }; -# }; -# }; + # zigbee2mqtt = { + # image = "docker.io/koenkk/zigbee2mqtt"; + # autoStart = true; + # autoUpdate = "registry"; + # network = "internal_net"; + # devices = [ "/dev/ttyACM0:/dev/ttyACM0" ]; + # environmentFile = [ + # "/pool/services/secrets/default" + # ]; + # volumes = [ + # "/pool/services/podman/zigbee2mqtt:/app/data" + # ]; + # ports = [ + # "8808:8080" + # ]; + # extraConfig = { + # Service = { + # TimeoutStartSec = 900; + # }; + # }; + # }; }; diff --git a/hosts/desktop/hardware.nix b/hosts/desktop/hardware.nix index 9585799..b80939d 100644 --- a/hosts/desktop/hardware.nix +++ b/hosts/desktop/hardware.nix @@ -1,39 +1,57 @@ # 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" "nvidia-uvm" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + "nvidia-uvm" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-uuid/bd28421d-7ec4-4b23-964d-c07a6f351e1f"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/bd28421d-7ec4-4b23-964d-c07a6f351e1f"; + fsType = "ext4"; + }; - boot.initrd.luks.devices."luks-e3a81f8e-3ae9-494b-a329-a6f860b10e34".device = "/dev/disk/by-uuid/e3a81f8e-3ae9-494b-a329-a6f860b10e34"; + boot.initrd.luks.devices."luks-e3a81f8e-3ae9-494b-a329-a6f860b10e34".device = + "/dev/disk/by-uuid/e3a81f8e-3ae9-494b-a329-a6f860b10e34"; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/D47C-5FCE"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/be22d9db-283a-4dd9-93d5-1006e392724b"; } + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/D47C-5FCE"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" ]; + }; - fileSystems."/run/media/admin/08cabc7a-9a6e-4c21-8a07-6663af77b705" = - { device = "/dev/disk/by-uuid/08cabc7a-9a6e-4c21-8a07-6663af77b705"; - fsType = "ext4"; - }; + swapDevices = [ + { device = "/dev/disk/by-uuid/be22d9db-283a-4dd9-93d5-1006e392724b"; } + ]; + + fileSystems."/run/media/admin/08cabc7a-9a6e-4c21-8a07-6663af77b705" = { + device = "/dev/disk/by-uuid/08cabc7a-9a6e-4c21-8a07-6663af77b705"; + fsType = "ext4"; + }; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/hosts/desktop/settings.nix b/hosts/desktop/settings.nix index ff75e3a..db56771 100644 --- a/hosts/desktop/settings.nix +++ b/hosts/desktop/settings.nix @@ -1,4 +1,9 @@ -{ config, pkgs, inputs, ... }: +{ + config, + pkgs, + inputs, + ... +}: { @@ -6,15 +11,16 @@ boot.loader.systemd-boot.configurationLimit = 10; boot.loader.efi.canTouchEfiVariables = true; -services.pipewire = { - enable = true; - alsa.enable = true; - pulse.enable = true; - wireplumber.enable = true; -}; + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + wireplumber.enable = true; + }; boot = { - initrd.luks.devices."luks-cbf20b12-90f7-4fbb-95d3-1320eece4d89".device = "/dev/disk/by-uuid/cbf20b12-90f7-4fbb-95d3-1320eece4d89"; + initrd.luks.devices."luks-cbf20b12-90f7-4fbb-95d3-1320eece4d89".device = + "/dev/disk/by-uuid/cbf20b12-90f7-4fbb-95d3-1320eece4d89"; kernelParams = [ "nvidia_drm.modeset=1" "nvidia_drm.fbdev=1" @@ -35,7 +41,10 @@ services.pipewire = { ]; }; defaultGateway = "192.168.30.1"; - nameservers = [ "192.168.0.1" "1.1.1.1" ]; + nameservers = [ + "192.168.0.1" + "1.1.1.1" + ]; }; services = { @@ -44,7 +53,7 @@ services.pipewire = { hardware.nvidia = { modesetting.enable = true; - powerManagement.enable = false; + powerManagement.enable = true; powerManagement.finegrained = false; open = false; package = config.boot.kernelPackages.nvidiaPackages.stable; @@ -53,11 +62,11 @@ services.pipewire = { hardware.opengl.enable = true; # this fixes the sleep/wake issue - systemd.services."systemd-suspend" = { - serviceConfig = { - Environment = ''"SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false"''; - }; - }; + systemd.services."systemd-suspend" = { + serviceConfig = { + Environment = ''"SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false"''; + }; + }; # fixes hardware accel on nvidia open hardware.graphics.extraPackages = [ diff --git a/hosts/macbook/settings.nix b/hosts/macbook/settings.nix index 0b8fcae..a2465a3 100644 --- a/hosts/macbook/settings.nix +++ b/hosts/macbook/settings.nix @@ -2,9 +2,8 @@ { -nixpkgs.hostPlatform = "aarch64-darwin"; -system.stateVersion = 6; - + nixpkgs.hostPlatform = "aarch64-darwin"; + system.stateVersion = 6; environment.systemPackages = with pkgs; [ audacity @@ -35,7 +34,7 @@ system.stateVersion = 6; ryubing xemu - #backup + #backup keepassxc ]; @@ -106,12 +105,12 @@ system.stateVersion = 6; services.yabai = { enable = true; config = { - layout = "float"; - top_padding = "15"; + layout = "float"; + top_padding = "15"; bottom_padding = "15"; - left_padding = "15"; - right_padding = "15"; - window_gap = "15"; + left_padding = "15"; + right_padding = "15"; + window_gap = "15"; }; }; diff --git a/hosts/server-nut/settings.nix b/hosts/server-nut/settings.nix index a8fda71..be30e2f 100644 --- a/hosts/server-nut/settings.nix +++ b/hosts/server-nut/settings.nix @@ -14,9 +14,12 @@ ]; }; defaultGateway = "192.168.0.1"; - nameservers = [ "192.168.0.1" "1.1.1.1" ]; + nameservers = [ + "192.168.0.1" + "1.1.1.1" + ]; }; - + users.users.admin.linger = true; system.stateVersion = "24.11"; -} \ No newline at end of file +} diff --git a/hosts/server/hardware.nix b/hosts/server/hardware.nix index b4858ac..5f8be0b 100644 --- a/hosts/server/hardware.nix +++ b/hosts/server/hardware.nix @@ -1,32 +1,48 @@ # 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 = [ "mpt3sas" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.availableKernelModules = [ + "mpt3sas" + "xhci_pci" + "ahci" + "usb_storage" + "usbhid" + "sd_mod" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-uuid/b9cc7972-36ae-4cb4-a6f4-e342eaca679e"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/b9cc7972-36ae-4cb4-a6f4-e342eaca679e"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/542D-865C"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/1032bbd9-0124-419f-a696-a977755aaf17"; } + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/542D-865C"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" ]; + }; + + swapDevices = [ + { device = "/dev/disk/by-uuid/1032bbd9-0124-419f-a696-a977755aaf17"; } + ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking # (the default) this is the recommended approach. When using systemd-networkd it's diff --git a/hosts/server/settings.nix b/hosts/server/settings.nix index eaa5662..5559b8c 100644 --- a/hosts/server/settings.nix +++ b/hosts/server/settings.nix @@ -7,26 +7,26 @@ #boot.loader.limine.biosDevice = "/dev/vda"; #boot.loader.efi.efiSysMountPoint = "/boot"; -systemd.services.podman-network-vlan50 = { - description = "Create podman vlan50 network"; - after = [ "network.target" ]; - before = [ "podman-nginx.service" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = true; + systemd.services.podman-network-vlan50 = { + description = "Create podman vlan50 network"; + after = [ "network.target" ]; + before = [ "podman-nginx.service" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + if ! ${pkgs.podman}/bin/podman network exists vlan50; then + ${pkgs.podman}/bin/podman network create \ + --driver macvlan \ + --opt parent=vlan50 \ + --subnet 192.168.50.0/24 \ + --gateway 192.168.50.1 \ + vlan50 + fi + ''; }; - script = '' - if ! ${pkgs.podman}/bin/podman network exists vlan50; then - ${pkgs.podman}/bin/podman network create \ - --driver macvlan \ - --opt parent=vlan50 \ - --subnet 192.168.50.0/24 \ - --gateway 192.168.50.1 \ - vlan50 - fi - ''; -}; networking = { vlans = { @@ -55,7 +55,10 @@ systemd.services.podman-network-vlan50 = { ]; }; defaultGateway = "192.168.0.1"; - nameservers = [ "192.168.0.1" "1.1.1.1" ]; + nameservers = [ + "192.168.0.1" + "1.1.1.1" + ]; }; users.users.admin.linger = true; @@ -76,11 +79,11 @@ systemd.services.podman-network-vlan50 = { hardware.graphics = { enable = true; - enable32Bit = true; # only needed if you run 32-bit apps + enable32Bit = true; # only needed if you run 32-bit apps extraPackages = with pkgs; [ mesa.drivers libva - libva-utils # provides vainfo + libva-utils # provides vainfo ]; }; @@ -148,13 +151,13 @@ systemd.services.podman-network-vlan50 = { # }; # give permissions for zigbee USB transceiver - system.activationScripts.script.text = ''chmod o+rw /dev/ttyACM0''; + system.activationScripts.script.text = "chmod o+rw /dev/ttyACM0"; boot.supportedFilesystems = [ "zfs" ]; boot.zfs.forceImportRoot = false; boot.zfs.extraPools = [ "pool" ]; #environment.etc."zfs/keys/pool.key".source = config.age.secrets."zfs/pool.key".path; - + services.zfs.autoScrub = { enable = true; }; @@ -167,9 +170,9 @@ systemd.services.podman-network-vlan50 = { services.zfs.zed = { settings = { - ZED_NTFY_URL="https://ntfy.mektem.com"; - ZED_NTFY_TOPIC="zfs"; - ZED_NTFY_ACCESS_TOKEN="tk_gtjia7itxhg1qik7j58wkgey2parr"; + ZED_NTFY_URL = "https://ntfy.mektem.com"; + ZED_NTFY_TOPIC = "zfs"; + ZED_NTFY_ACCESS_TOKEN = "tk_gtjia7itxhg1qik7j58wkgey2parr"; ZED_NOTIFY_INTERVAL_SECS = 1; ZED_NOTIFY_VERBOSE = true; # Set to false to only get alerts on degradation }; @@ -180,16 +183,16 @@ systemd.services.podman-network-vlan50 = { openFirewall = true; settings = { global = { - "server min protocol" = "SMB2_10"; - "workgroup" = "WORKGROUP"; - "server string" = "smbnix"; - "netbios name" = "smbnix"; - "security" = "user"; - "hosts allow" = "192.168.0. 192.168.30. 192.168.40.10 127.0.0.1 localhost"; - "hosts deny" = "0.0.0.0/0"; - "guest account" = "nobody"; - "map to guest" = "never"; - }; + "server min protocol" = "SMB2_10"; + "workgroup" = "WORKGROUP"; + "server string" = "smbnix"; + "netbios name" = "smbnix"; + "security" = "user"; + "hosts allow" = "192.168.0. 192.168.30. 192.168.40.10 127.0.0.1 localhost"; + "hosts deny" = "0.0.0.0/0"; + "guest account" = "nobody"; + "map to guest" = "never"; + }; "data" = { "path" = "/pool/data"; "browseable" = "yes"; diff --git a/nixos-apple-silicon b/nixos-apple-silicon new file mode 160000 index 0000000..f2506ef --- /dev/null +++ b/nixos-apple-silicon @@ -0,0 +1 @@ +Subproject commit f2506ef24a154e2bcc8fb10f2c73579324f9ead0