diff --git a/README.md b/README.md index 7fd56ce..4ef0367 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Add this repo to your flake inputs: inputs.synix.url = "git+https://git.sid.ovh/sid/synix.git"; ``` -See the [documentation](https://doc.sid.ovh/synix) for a full setup guide. +See the [documentation](https://doc.sid.ovh) for a full setup guide. ## Templates diff --git a/modules/home/hyprland/settings.nix b/modules/home/hyprland/settings.nix index 2c61471..c347a35 100644 --- a/modules/home/hyprland/settings.nix +++ b/modules/home/hyprland/settings.nix @@ -3,15 +3,30 @@ let cfg = config.wayland.windowManager.hyprland; - inherit (builtins) toString; + nonFloatingClasses = [ + "Gimp" + "steam" + "KiCad" + ]; + + nonFloatingClassesRegex = concatStringsSep "|" nonFloatingClasses; + + inherit (builtins) concatStringsSep toString; inherit (lib) mkDefault; in { # Do not add binds here. Use `./binds/default.nix` instead. "$mod" = cfg.modifier; + exec-once = [ + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP" # dbus package comes from NixOS module option `services.dbus.dbusPackage` [1] + "gnome-keyring-daemon --start --components=secrets" # gnome-keyring package comes from NixOS module `services.gnome.gnome-keyring` [1] + ]; + # 1: see Hyprland NixOS module + windowrule = [ - "center, floating:1, not class:^(Gimp)$, not class:^(steam)$" + # "float, class:^(${nonFloatingClassesRegex})$" + "center, floating:1, class:^(?!.*(${nonFloatingClassesRegex})).*$" "float, title:^(Open|Save) Files?$" "noborder, onworkspace:w[t1]" "bordersize ${toString cfg.settings.general.border_size}, floating:1" diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index a858430..094f15e 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -33,5 +33,4 @@ virtualisation = import ./virtualisation; webPage = import ./webPage; windows-oci = import ./windows-oci; - zfs = import ./zfs; } diff --git a/modules/nixos/hyprland/default.nix b/modules/nixos/hyprland/default.nix index 9b33ce5..68e6b9c 100644 --- a/modules/nixos/hyprland/default.nix +++ b/modules/nixos/hyprland/default.nix @@ -8,11 +8,14 @@ in programs.dconf.enable = true; # fixes nixvim hm module + services.flatpak.enable = true; + xdg.portal = { enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; + config.common.default = "gtk"; }; services.gnome.gnome-keyring.enable = true; diff --git a/modules/nixos/zfs/default.nix b/modules/nixos/zfs/default.nix deleted file mode 100644 index 1b15583..0000000 --- a/modules/nixos/zfs/default.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: - -# Set `networking.hostId` to: -# $ head -c 8 /etc/machine-id - -# Mark datasets to snapshot: -# $ sudo zfs set com.sun:auto-snapshot:daily=true dpool/data/backup - -# Generate SSH key for replication (empty passphrase): -# $ sudo -i ssh-keygen -t rsa -b 4096 -f /root/.ssh/zfs-replication - -let - cfg = config.services.zfs; - - inherit (lib) mkDefault mkForce; -in -{ - boot.supportedFilesystems = [ "zfs" ]; - boot.loader.systemd-boot.enable = mkForce false; - boot.loader.grub.enable = mkForce true; - boot.loader.grub.zfsSupport = mkForce true; - - services.zfs.trim = { - enable = mkDefault true; - interval = mkDefault "weekly"; - }; - - services.zfs.scrub = { - enable = mkDefault true; - interval = mkDefault "monthly"; - }; - - services.zfs.autoSnapshot = { - enable = mkDefault true; - flags = mkDefault "-k -p --utc"; - frequent = mkDefault 0; - hourly = mkDefault 24; - daily = mkDefault 7; - weekly = mkDefault 4; - monthly = mkDefault 0; - }; - - services.zfs.autoReplication = { - username = mkDefault "root"; - identityFilePath = mkDefault "/root/.ssh/zfs-replication"; - followDelete = mkDefault true; - }; - - environment.systemPackages = with pkgs; [ lz4 ]; -} diff --git a/modules/nixos/zfs/disks.sh b/modules/nixos/zfs/disks.sh deleted file mode 100644 index 9f966fa..0000000 --- a/modules/nixos/zfs/disks.sh +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env bash -declare -a SSDs=( - # '/dev/disk/by-id/abc123' -) - -declare -a HDDs=( - # '/dev/disk/by-id/def456' -) - -declare -a DATA_DATASETS=( - # 'dataset' -) - -MNT='/mnt' -SWAP_GB=32 - -# Helper function to wait for devices -wait_for_device() { - local device=$1 - echo "Waiting for device: $device ..." - while [[ ! -e $device ]]; do - sleep 1 - done - echo "Device $device is ready." -} - -# Function to install a package if it's not already installed -install_if_missing() { - local cmd="$1" - local package="$2" - if ! command -v "$cmd" &> /dev/null; then - echo "$cmd not found, installing $package..." - nix-env -iA "nixos.$package" - fi -} - -install_if_missing "sgdisk" "gptfdisk" -install_if_missing "partprobe" "parted" - -# Ensure swap parts are off -swapoff --all -udevadm settle - -### SSDs ### -echo "Setting up SSDs..." - -# Wait for SSD devices to be ready -for ssd in "${SSDs[@]}"; do - wait_for_device "$ssd" -done - -# Wipe and partition SSDs -for i in "${!SSDs[@]}"; do - ssd="${SSDs[$i]}" - ssd_num=$((i + 1)) - - echo "Processing SSD $ssd_num: $ssd" - - # Wipe filesystems - wipefs -a "$ssd" - - # Clear part tables - sgdisk --zap-all "$ssd" - - # Partition disk - sgdisk -n1:1M:+1G -t1:EF00 -c1:BOOT$ssd_num "$ssd" - sgdisk -n2:0:+"$SWAP_GB"G -t2:8200 -c2:SWAP$ssd_num "$ssd" - sgdisk -n3:0:0 -t3:BF00 -c3:ROOT$ssd_num "$ssd" - - partprobe -s "$ssd" - udevadm settle - wait_for_device "${ssd}-part3" -done - -# Create root pool -echo "Creating root pool..." -zpool create -f -o ashift=12 -o autotrim=on -R "$MNT" -O acltype=posixacl -O canmount=off -O dnodesize=auto -O normalization=formD -O relatime=on -O xattr=sa -O mountpoint=none rpool mirror "${SSDs[0]}"-part3 "${SSDs[1]}"-part3 - -# Create and mount root system container -zfs create -o canmount=noauto -o mountpoint=legacy rpool/root -mount -o X-mount.mkdir -t zfs rpool/root "$MNT" - -# Create root datasets -declare -a ROOT_DATASETS=('home' 'nix' 'tmp' 'var') -for dataset in "${ROOT_DATASETS[@]}"; do - zfs create -o mountpoint=legacy "rpool/$dataset" - mount -o X-mount.mkdir -t zfs "rpool/$dataset" "$MNT/$dataset" -done - -# Format boot and swap partitions -for i in "${!SSDs[@]}"; do - ssd="${SSDs[$i]}" - ssd_num=$((i + 1)) - - mkfs.vfat -F 32 -n BOOT$ssd_num "${ssd}"-part1 - mkswap -L SWAP$ssd_num "${ssd}"-part2 - swapon -L SWAP$ssd_num -done - -# Mount first boot partition -mount -t vfat -o fmask=0077,dmask=0077,iocharset=iso8859-1,X-mount.mkdir -L BOOT1 "$MNT"/boot - -### HDDs ### -echo "Setting up HDDs..." - -# Wait for HDD devices to be ready -for hdd in "${HDDs[@]}"; do - wait_for_device "$hdd" -done - -# Wipe and partition HDDs -for i in "${!HDDs[@]}"; do - hdd="${HDDs[$i]}" - hdd_num=$((i + 1)) - - echo "Processing HDD $hdd_num: $hdd" - - wipefs -a "$hdd" - sgdisk --zap-all "$hdd" - sgdisk -n1:0:0 -t1:BF00 -c1:DATA$hdd_num "$hdd" -done - -udevadm settle - -# Wait for all HDD partitions to appear -for hdd in "${HDDs[@]}"; do - wait_for_device "${hdd}-part1" -done - -# Create data pool -echo "Creating data pool..." -mkdir -p "$MNT"/data - -hdd_partitions=() -for hdd in "${HDDs[@]}"; do - hdd_partitions+=("${hdd}-part1") -done - -zpool create -f -o ashift=12 -o autotrim=on -R "$MNT" -O acltype=posixacl -O xattr=sa -O dnodesize=auto -O compression=lz4 -O normalization=formD -O relatime=on -O mountpoint=none dpool raidz "${hdd_partitions[@]}" - -# Create and mount data root container -zfs create -o canmount=noauto -o mountpoint=legacy dpool/data -mount -o X-mount.mkdir -t zfs dpool/data "$MNT"/data - -# Create and mount data datasets -for dataset in "${DATA_DATASETS[@]}"; do - zfs create -o mountpoint=legacy "dpool/data/$dataset" - mount -o X-mount.mkdir -t zfs "dpool/data/$dataset" "$MNT/data/$dataset" -done - -echo "Setup complete."