diff --git a/.sops.yaml b/.sops.yaml index 1cb9b70..c23ca17 100755 --- a/.sops.yaml +++ b/.sops.yaml @@ -10,6 +10,8 @@ keys: - &pi5 age1t2d5scrukk0guva5sr97a8tge5j8kd865adezrcru7p269pzwvpsamkgje - &deck age1c8qw59ffcq9l77gfmtyc3djtvt3md0u6dwhrjcgsm98ntyf72ufqugj7cg - &steamdeck age1er5qucsc2mugrzrr7n3xhzv7kemkrqrw4m84r544fkk7nkg5g5eswxkqj0 + - &matt_macbook-pro age1xg6mvj3x6s3t8058c6rsk3q4kskvm6nsffwckxkkjzhyn7r6tczqgkj23p + - &macbook-pro age1rdn39ywgzmc8wlsl5lrfe77e652wzjmjx58gx4k2ydghd35kdqvqscrf3h creation_rules: - path_regex: secrets/[^/]+\.(yaml|json|env|ini)$ key_groups: @@ -24,6 +26,8 @@ creation_rules: - *pi5 - *deck - *steamdeck + - *matt_macbook-pro + - *macbook-pro - path_regex: nas-secrets/[^/]+\.(yaml|json|env|ini)$ key_groups: - age: diff --git a/flake.lock b/flake.lock index 36b3f79..2ad734d 100755 --- a/flake.lock +++ b/flake.lock @@ -293,6 +293,21 @@ } }, "flake-compat_3": { + "locked": { + "lastModified": 1688025799, + "narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=", + "owner": "nix-community", + "repo": "flake-compat", + "rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { "flake": false, "locked": { "lastModified": 1747046372, @@ -308,7 +323,7 @@ "type": "github" } }, - "flake-compat_4": { + "flake-compat_5": { "flake": false, "locked": { "lastModified": 1746162366, @@ -324,7 +339,7 @@ "type": "github" } }, - "flake-compat_5": { + "flake-compat_6": { "flake": false, "locked": { "lastModified": 1696426674, @@ -340,7 +355,7 @@ "type": "github" } }, - "flake-compat_6": { + "flake-compat_7": { "flake": false, "locked": { "lastModified": 1746162366, @@ -356,7 +371,7 @@ "type": "github" } }, - "flake-compat_7": { + "flake-compat_8": { "flake": false, "locked": { "lastModified": 1696426674, @@ -707,6 +722,96 @@ "type": "github" } }, + "mac-home-manager": { + "inputs": { + "nixpkgs": [ + "mac-nixpkgs" + ] + }, + "locked": { + "lastModified": 1751303539, + "narHash": "sha256-NiG8ZE40RrYdwVeK2a2XsM44h/YuGiLucnA3CBhV+wo=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "ee2189cb2f6c9e2b9c734a839faa20ed2ba8b577", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "mac-impermanence": { + "locked": { + "lastModified": 1737831083, + "narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=", + "owner": "nix-community", + "repo": "impermanence", + "rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "impermanence", + "type": "github" + } + }, + "mac-nixos-apple-silicon": { + "inputs": { + "flake-compat": "flake-compat_3", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1748659443, + "narHash": "sha256-dav2hzyCmXZ3n6lEZrfZBG51+g6PUhkzRl3d6Ypd9x0=", + "owner": "nix-community", + "repo": "nixos-apple-silicon", + "rev": "3ddc251d2acce5019b0fa770e224d068610a34e4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixos-apple-silicon", + "type": "github" + } + }, + "mac-nixpkgs": { + "locked": { + "lastModified": 1751011381, + "narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "mac-sops-nix": { + "inputs": { + "nixpkgs": [ + "mac-nixpkgs" + ] + }, + "locked": { + "lastModified": 1750119275, + "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, "napalm": { "inputs": { "flake-utils": [ @@ -736,7 +841,7 @@ "nas-authentik-nix": { "inputs": { "authentik-src": "authentik-src", - "flake-compat": "flake-compat_3", + "flake-compat": "flake-compat_4", "flake-parts": "flake-parts_2", "flake-utils": "flake-utils", "napalm": "napalm", @@ -764,7 +869,7 @@ }, "nas-cosmic": { "inputs": { - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat_5", "nixpkgs": [ "nas-nixpkgs-stable" ], @@ -844,7 +949,7 @@ "nas-lanzaboote": { "inputs": { "crane": "crane_2", - "flake-compat": "flake-compat_5", + "flake-compat": "flake-compat_6", "flake-parts": "flake-parts_3", "nixpkgs": [ "nas-nixpkgs" @@ -870,7 +975,7 @@ "nas-nix-vscode-extensions": { "inputs": { "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1749002682, @@ -889,7 +994,7 @@ "nas-nixai": { "inputs": { "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1749000216, @@ -1091,7 +1196,7 @@ "inputs": { "argononed": "argononed", "nixos-images": "nixos-images", - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1749156319, @@ -1267,6 +1372,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1744868846, "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", @@ -1282,7 +1403,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1748693115, "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", @@ -1298,7 +1419,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1748882666, "narHash": "sha256-z2uanxifOXGEqdiprquIGZu0XaRYih3FHXDQwLc1xis=", @@ -1314,7 +1435,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1750506804, "narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=", @@ -1440,7 +1561,7 @@ }, "pi5-cosmic": { "inputs": { - "flake-compat": "flake-compat_6", + "flake-compat": "flake-compat_7", "nixpkgs": [ "pi5-nixpkgs" ], @@ -1711,6 +1832,11 @@ "desktop-nixpkgs": "desktop-nixpkgs", "desktop-sops-nix": "desktop-sops-nix", "desktop-steam-rom-manager": "desktop-steam-rom-manager", + "mac-home-manager": "mac-home-manager", + "mac-impermanence": "mac-impermanence", + "mac-nixos-apple-silicon": "mac-nixos-apple-silicon", + "mac-nixpkgs": "mac-nixpkgs", + "mac-sops-nix": "mac-sops-nix", "nas-authentik-nix": "nas-authentik-nix", "nas-cosmic": "nas-cosmic", "nas-crowdsec": "nas-crowdsec", @@ -1925,7 +2051,7 @@ "flake-schemas": "flake-schemas_2", "home-manager": "home-manager_2", "jovian": "jovian_2", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "rust-overlay": "rust-overlay_7" }, "locked": { @@ -2023,7 +2149,7 @@ "steamdeck-lanzaboote": { "inputs": { "crane": "crane_3", - "flake-compat": "flake-compat_7", + "flake-compat": "flake-compat_8", "flake-parts": "flake-parts_4", "nixpkgs": [ "steamdeck-nixpkgs" diff --git a/flake.nix b/flake.nix index 4d2a74e..88a7995 100755 --- a/flake.nix +++ b/flake.nix @@ -722,6 +722,7 @@ system = "aarch64-linux"; specialArgs = { inherit inputs outputs; + hyprlandSettings = import ./hosts/mac-nixos/hyprland-settings.nix; }; modules = [ ./hosts/base/base-nogui @@ -748,14 +749,14 @@ { ... }: { imports = [ - ./hosts/mac/home.nix + ./hosts/mac-nixos/home.nix ./modules/home/defaults.nix ./modules/home/git.nix - ./modules/home/gnome.nix - ./modules/home/librewolf.nix +# ./modules/home/gnome.nix +# ./modules/home/librewolf.nix ./modules/home/office.nix ./modules/home/shell.nix - ./modules/home/vscode.nix +# ./modules/home/vscode.nix mac-sops-nix.homeManagerModules.sops ]; }; @@ -805,6 +806,19 @@ }; }; + packages.aarch64-linux.vmware-horizon-fhs = + let + pkgs = import mac-nixpkgs { system = "aarch64-linux"; }; + x64 = import mac-nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; }; + in + pkgs.buildFHSEnv { + name = "horizon-client-x64"; + targetPkgs = _pkgs: with x64; [ + vmware-horizon-client gtk3 xorg.libX11 libxml2 + ]; + runScript = "box64 vmware-view"; + }; + # Expose the package set, including overlays, for convenience. darwinPackages = self.darwinConfigurations."MacBook-Pro".pkgs; diff --git a/hosts/deck/home.nix b/hosts/deck/home.nix index b2bae0a..ca15c41 100755 --- a/hosts/deck/home.nix +++ b/hosts/deck/home.nix @@ -1,10 +1,10 @@ { pkgs, ... }: let shellAliases = { - update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.18"; + update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; update-switch = "sudo nixos-rebuild switch --max-jobs 10"; update-flake = "nix flake update steamdeck-nixpkgs steamdeck-chaotic steamdeck-home-manager steamdeck-impermanence steamdeck-jovian steamdeck-lanzaboote steamdeck-nixos-hardware steamdeck-sops-nix steamdeck-steam-rom-manager --flake /etc/nixos"; - nas-ssh = "ssh admin@10.0.1.18"; + nas-ssh = "ssh admin@10.0.1.3"; }; in { diff --git a/hosts/desktop/filesystems.nix b/hosts/desktop/filesystems.nix index 1e89277..85a11ad 100755 --- a/hosts/desktop/filesystems.nix +++ b/hosts/desktop/filesystems.nix @@ -39,19 +39,19 @@ in # Network shares "/media/nas/backup" = { - device = "//10.0.1.18/Backup"; + device = "//10.0.1.3/Backup"; fsType = "cifs"; options = defaultNetworkShareOptions; }; "/media/nas/isos" = { - device = "//10.0.1.18/isos"; + device = "//10.0.1.3/isos"; fsType = "cifs"; options = defaultNetworkShareOptions; }; "/media/nas/3d_printer" = { - device = "//10.0.1.18/3d_printer"; + device = "//10.0.1.3/3d_printer"; fsType = "cifs"; options = defaultNetworkShareOptions; }; diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index 952abdf..1509374 100755 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -1,10 +1,10 @@ { pkgs, ... }: let shellAliases = { - update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.18"; - update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.18"; + update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; + update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3"; update-flake = "nix flake update desktop-nixpkgs desktop-chaotic desktop-home-manager desktop-impermanence desktop-lanzaboote desktop-nixos-hardware desktop-sops-nix desktop-steam-rom-manager --flake /etc/nixos"; - update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host admin@10.0.1.18 --flake ~/nix-config#jallen-nas"; + update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.3 --build-host admin@10.0.1.3 --flake ~/nix-config#jallen-nas"; }; in { diff --git a/hosts/desktop/services.nix b/hosts/desktop/services.nix index e950db0..7031b93 100755 --- a/hosts/desktop/services.nix +++ b/hosts/desktop/services.nix @@ -100,7 +100,7 @@ in openssh ]; script = '' - rsync -rtpogvPlHzs --ignore-existing --exclude={'/home/matt/Games', '/home/matt/1TB', '/home/matt/Downloads/*', '/home/matt/.cache'} -e ssh /home/matt admin@10.0.1.18:/media/nas/main/backup/desktop-nix/home + rsync -rtpogvPlHzs --ignore-existing --exclude={'/home/matt/Games', '/home/matt/1TB', '/home/matt/Downloads/*', '/home/matt/.cache'} -e ssh /home/matt admin@10.0.1.3:/media/nas/main/backup/desktop-nix/home ''; }; }; diff --git a/hosts/homeassistant/home.nix b/hosts/homeassistant/home.nix index 22c719e..4c8cce6 100755 --- a/hosts/homeassistant/home.nix +++ b/hosts/homeassistant/home.nix @@ -2,11 +2,11 @@ let shellAliases = { ll = "ls -alh"; - update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.18"; - update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.18"; + update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; + update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3"; update-flake = "sudo nix flake update ~/nix-config"; - update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host admin@10.0.1.18 --flake ~/nix-config#jallen-nas"; - nas-ssh = "kitten ssh admin@10.0.1.18"; + update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.3 --build-host admin@10.0.1.3 --flake ~/nix-config#jallen-nas"; + nas-ssh = "kitten ssh admin@10.0.1.3"; ducks = "du -cksh * | sort -hr | head -n 15"; }; diff --git a/hosts/homeassistant/homeassistant.nix b/hosts/homeassistant/homeassistant.nix index d071ad4..18e72a1 100755 --- a/hosts/homeassistant/homeassistant.nix +++ b/hosts/homeassistant/homeassistant.nix @@ -258,7 +258,7 @@ in use_x_forwarded_for = true; trusted_proxies = [ "172.30.33.0/24" - "10.0.1.18" + "10.0.1.3" "10.0.1.0/24" ]; }; diff --git a/hosts/mac-nixos/boot.nix b/hosts/mac-nixos/boot.nix new file mode 100644 index 0000000..3dc0a35 --- /dev/null +++ b/hosts/mac-nixos/boot.nix @@ -0,0 +1,34 @@ +{ pkgs, lib, ... }: +{ + # Use the systemd-boot EFI boot loader. + boot = { + loader = { + systemd-boot = { + enable = true; + configurationLimit = 15; + consoleMode = lib.mkDefault "max"; + }; + efi.canTouchEfiVariables = lib.mkForce false; + }; + + kernelParams = [ + "apple_dcp.show_notch=1" + ]; + + extraModprobeConfig = '' + options hid_apple iso_layout=0 + ''; + + binfmt.registrations. "x86_64-linux" = { + magicOrExtension = ''\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x3e\x00''; + mask = ''\xff\xff\xff\xff\xff\xfe\xfe\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff''; + openBinary = true; + interpreter = "${pkgs.box64}/bin/box64"; + preserveArgvZero = true; + matchCredentials = true; + fixBinary = false; + }; + }; + + zramSwap.enable = true; +} \ No newline at end of file diff --git a/hosts/mac-nixos/configuration.nix b/hosts/mac-nixos/configuration.nix index 752c873..7d47459 100755 --- a/hosts/mac-nixos/configuration.nix +++ b/hosts/mac-nixos/configuration.nix @@ -8,94 +8,58 @@ let in { imports = [ - # Include the results of the hardware scan. + ./boot.nix ./hardware-configuration.nix + ./networking.nix + ./services.nix ]; hardware.asahi = { enable = true; useExperimentalGPUDriver = true; peripheralFirmwareDirectory = ./firmware; - # extractPeripheralFirmware = false; setupAsahiSound = true; }; - # Use the systemd-boot EFI boot loader. - boot.loader = { - systemd-boot = { - enable = true; - configurationLimit = 3; - }; - efi.canTouchEfiVariables = lib.mkForce false; - }; + hardware.graphics.enable32Bit = lib.mkForce false; - boot.extraModprobeConfig = '' - options hid_apple iso_layout=0 - ''; - - boot.binfmt.emulatedSystems = [ "x86_64-linux" ]; - - # Networking configs - networking = { - hostName = "macbook-pro-nixos"; - - # Enable Network Manager - networkmanager = { - enable = lib.mkDefault true; - wifi.powersave = lib.mkDefault false; - settings.connectivity.uri = lib.mkDefault "http://nmcheck.gnome.org/check_network_status.txt"; - }; - }; - - services = { - displayManager.sddm.wayland.enable = lib.mkDefault plasma; - displayManager.sddm.enable = lib.mkDefault plasma; - desktopManager.plasma6.enable = lib.mkDefault plasma; - desktopManager.gnome.enable = lib.mkForce true; - displayManager.gdm.enable = lib.mkForce true; - - # enable auto discovery of printers - avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; - }; - - # Enable Flatpak - flatpak.enable = lib.mkDefault false; - }; + nixpkgs.config.allowUnfree = true; + nixpkgs.config.allowUnsupportedSystem = true; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.matt = { isNormalUser = true; - extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + extraGroups = [ + "wheel" + "keys" + "networkmanager" + "ratbagd" + "input" + "scanner" + "lp" + "video" + "i2c" + ]; # Enable ‘sudo’ for the user. shell = pkgs.zsh; packages = with pkgs; [ firefox tree - neofetch - gdm git box64 - #minecraft prismlauncher distrobox - podman ]; }; - programs.java.enable = true; - - virtualisation.containers.enable = true; + virtualisation = { + containers.enable = true; + podman.enable = true; + }; # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ - apple-cursor - gnomeExtensions.dash-to-dock - gnomeExtensions.arcmenu - gnomeExtensions.appindicator - gnomeExtensions.tiling-assistant + micro vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. wget ]; @@ -103,30 +67,4 @@ in environment.sessionVariables = { DBX_CONTAINER_MANAGER = "podman"; }; - - nixpkgs.config.allowUnsupportedSystem = true; - - # Copy the NixOS configuration file and link it from the resulting system - # (/run/current-system/configuration.nix). This is useful in case you - # accidentally delete configuration.nix. - # system.copySystemConfiguration = true; - - # This option defines the first version of NixOS you have installed on this particular machine, - # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. - # - # Most users should NEVER change this value after the initial install, for any reason, - # even if you've upgraded your system to a new NixOS release. - # - # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, - # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how - # to actually do that. - # - # This value being lower than the current NixOS release does NOT mean your system is - # out of date, out of support, or vulnerable. - # - # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, - # and migrated your data accordingly. - # - # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . - system.stateVersion = "24.05"; # Did you read the comment? } diff --git a/hosts/mac-nixos/hardware-configuration.nix b/hosts/mac-nixos/hardware-configuration.nix index dc082ed..c0cc3fe 100644 --- a/hosts/mac-nixos/hardware-configuration.nix +++ b/hosts/mac-nixos/hardware-configuration.nix @@ -19,39 +19,39 @@ }; fileSystems."/root" = - { device = "/dev/disk/by-uuid/69fa608d-1dd2-408a-9907-7d0881db5b4a"; + { device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc"; fsType = "btrfs"; - options = [ "subvol=root" ]; + options = [ "compress=zstd" "noatime" "subvol=root" ]; }; fileSystems."/etc" = - { device = "/dev/disk/by-uuid/69fa608d-1dd2-408a-9907-7d0881db5b4a"; + { device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc"; fsType = "btrfs"; - options = [ "subvol=etc" ]; + options = [ "compress=zstd" "noatime" "subvol=etc" ]; }; fileSystems."/tmp" = - { device = "/dev/disk/by-uuid/69fa608d-1dd2-408a-9907-7d0881db5b4a"; + { device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc"; fsType = "btrfs"; - options = [ "subvol=tmp" ]; + options = [ "compress=zstd" "noatime" "subvol=tmp" ]; }; fileSystems."/nix" = - { device = "/dev/disk/by-uuid/69fa608d-1dd2-408a-9907-7d0881db5b4a"; + { device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc"; fsType = "btrfs"; - options = [ "subvol=nix" ]; + options = [ "compress=zstd" "noatime" "subvol=nix" ]; }; fileSystems."/var/log" = - { device = "/dev/disk/by-uuid/69fa608d-1dd2-408a-9907-7d0881db5b4a"; + { device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc"; fsType = "btrfs"; - options = [ "subvol=log" ]; + options = [ "compress=zstd" "noatime" "subvol=log" ]; }; fileSystems."/home" = - { device = "/dev/disk/by-uuid/69fa608d-1dd2-408a-9907-7d0881db5b4a"; + { device = "/dev/disk/by-uuid/adcc14fa-8bf7-4b4b-a9e4-b038993b96cc"; fsType = "btrfs"; - options = [ "subvol=home" ]; + options = [ "compress=zstd" "subvol=home" ]; }; fileSystems."/boot" = @@ -60,7 +60,12 @@ options = [ "fmask=0022" "dmask=0022" ]; }; - swapDevices = [ ]; + swapDevices = [ + { + device = "/tmp/swapfile"; + randomEncryption.enable = true; + } + ]; # 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/mac-nixos/hardware-configuration.nix.ori b/hosts/mac-nixos/hardware-configuration.nix.ori deleted file mode 100755 index b617d8e..0000000 --- a/hosts/mac-nixos/hardware-configuration.nix.ori +++ /dev/null @@ -1,69 +0,0 @@ -# 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. -{ lib, modulesPath, ... }: - -{ - imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - - boot.initrd.availableKernelModules = [ "sdhci_pci" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = { - device = "none"; - fsType = "tmpfs"; - }; - - fileSystems."/etc" = { - device = "/dev/disk/by-uuid/19b99a76-0285-443a-a83c-a00a5fab54f5"; - fsType = "btrfs"; - options = [ "subvol=etc" ]; - }; - - fileSystems."/nix" = { - device = "/dev/disk/by-uuid/19b99a76-0285-443a-a83c-a00a5fab54f5"; - fsType = "btrfs"; - options = [ "subvol=nix" ]; - }; - - fileSystems."/var/log" = { - device = "/dev/disk/by-uuid/19b99a76-0285-443a-a83c-a00a5fab54f5"; - fsType = "btrfs"; - options = [ "subvol=log" ]; - }; - - fileSystems."/home" = { - device = "/dev/disk/by-uuid/19b99a76-0285-443a-a83c-a00a5fab54f5"; - fsType = "btrfs"; - options = [ "subvol=home" ]; - }; - - fileSystems."/root" = { - device = "/dev/disk/by-uuid/19b99a76-0285-443a-a83c-a00a5fab54f5"; - fsType = "btrfs"; - options = [ "subvol=root" ]; - }; - - fileSystems."/boot" = { - device = "/dev/disk/by-uuid/F4A1-C77F"; - fsType = "vfat"; - }; - - # fileSystems."/boot" = - # { device = "/dev/disk/by-uuid/3aaa1d0e-057d-4b7d-b2fe-ef02db373e9f"; - # fsType = "ext4"; - # }; - - swapDevices = [ ]; - - # 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 - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp1s0f0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; -} diff --git a/hosts/mac-nixos/home.nix b/hosts/mac-nixos/home.nix index 7686b4a..43f91fa 100755 --- a/hosts/mac-nixos/home.nix +++ b/hosts/mac-nixos/home.nix @@ -4,4 +4,11 @@ home.username = "matt"; home.homeDirectory = "/home/matt"; home.stateVersion = "23.11"; + + home.packages = with pkgs; [ + iw + iwd + orca-slicer + vscodium + ]; } diff --git a/hosts/mac-nixos/hyprland-settings.nix b/hosts/mac-nixos/hyprland-settings.nix new file mode 100644 index 0000000..c6dbf74 --- /dev/null +++ b/hosts/mac-nixos/hyprland-settings.nix @@ -0,0 +1,44 @@ +{ + monitor = [ + "eDP-1,3456x2234@60.00000,0x0,1.0,bitdepth,10,cm,hdr,sdrbrightness,1.2,sdrsaturation,0.98" + ]; + + workspace = [ + "name:firefox, monitor:eDP-1, default:false, special, class:(.*firefox.*)" + "name:discord, monitor:eDP-1, default:true, special, title:(.*vesktop.*), title:(.*Apple Music.*)" + "name:steam, monitor:eDP-1, default:false, special, class:(.*[Ss]team.*)" + ]; + + windowRule = [ + # "tag +fakefull, fullscreen: 0" + # "float, tag:fakefull" + # "size 3356 2160, tag:fakefull" + # "move 100 74, tag:fakefull" + # "noanim, tag:fakefull" + # "noblur, tag:fakefull" + # "norounding, tag:fakefull" + # "noshadow, tag:fakefull" + # "immediate, tag:fakefull" + # "noborder, tag:fakefull" + # "nodim, tag:fakefull" + # "idleinhibit, tag:fakefull" + "size 2160 3356, tag:horizonrdp" + ]; + + waybar = { + modules-right = [ + "tray" + "temperature" + "temperature#gpu" + "keyboard-state#capslock" + "keyboard-state#numlock" + "wireplumber#sink" + # "wireplumber#source" + "bluetooth" + "network" + "clock" + "battery" + "custom/weather" + ]; + }; +} \ No newline at end of file diff --git a/hosts/mac-nixos/networking.nix b/hosts/mac-nixos/networking.nix new file mode 100644 index 0000000..8c177a3 --- /dev/null +++ b/hosts/mac-nixos/networking.nix @@ -0,0 +1,37 @@ +{ pkgs, lib, ... }: +{ + # Networking configs + networking = { + hostName = "macbook-pro-nixos"; + + wireless.iwd = { + enable = true; + settings = { + General = { + EnableNetworkConfiguration = true; + }; + Rank = { + BandModifier2_4GHz = 1.0; + BandModifier5GHz = 5.0; + BandModifier6GHz = 10.0; + }; + # DriverQuirks = { + # PowerSaveDisable = "hci_bcm4377,brcmfmac"; + # }; + Network = { + AutoConnect = true; + }; + }; + }; + + # Enable Network Manager + networkmanager = { + enable = lib.mkForce false; + wifi = { + backend = lib.mkForce "iwd"; + powersave = lib.mkDefault false; + }; + settings.connectivity.uri = lib.mkDefault "http://nmcheck.gnome.org/check_network_status.txt"; + }; + }; +} \ No newline at end of file diff --git a/hosts/mac-nixos/omnissa.nix b/hosts/mac-nixos/omnissa.nix new file mode 100644 index 0000000..6cc5fb5 --- /dev/null +++ b/hosts/mac-nixos/omnissa.nix @@ -0,0 +1,123 @@ +{ stdenv +, lib +, buildFHSEnv +, fetchurl +, makeWrapper +, gsettings-desktop-schemas +, opensc +, writeTextDir +, configText ? "" +}: + +let + version = "2503-8.15.0"; + sysArch = "armhf"; + mainProgram = "horizon-client"; + + wrapBinCommands = path: name: '' + makeWrapper "$out/${path}/${name}" "$out/bin/${name}_wrapper" \ + --set GTK_THEME Adwaita \ + --suffix XDG_DATA_DIRS : "${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}" \ + --suffix LD_LIBRARY_PATH : "$out/lib/omnissa/horizon:$out/lib/omnissa/horizon/vdpService:$out/lib/omnissa" + ''; + + omnissaHorizonClientFiles = stdenv.mkDerivation { + pname = "omnissa-horizon-armhf-files"; + inherit version; + + src = fetchurl { + url = "https://download3.omnissa.com/software/CART26FQ1_LIN_2503_TARBALL/Omnissa-Horizon-Client-Linux-2503-8.15.0-14256322247.tar.gz"; + sha256 = "sha256-x98ITXF9xwzlPq375anQ2qBpMbZAcCqDVXBfvZPha7Q="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir ext + tar -xzf $src + cd Omnissa-Horizon-Client-Linux-*/${sysArch} + + mkdir -p ext + for archive in *.tar.gz; do + tar -C ext --strip-components=1 -xf "$archive" + done + + chmod -R u+w ext/usr/lib + + mkdir -p $out + mv ext/usr $out + mv ext/${sysArch}/lib $out/ + mv ext/${sysArch}/include $out/ + + mkdir -p $out/lib/omnissa/horizon/pkcs11 + ln -s ${opensc}/lib/pkcs11/opensc-pkcs11.so $out/lib/omnissa/horizon/pkcs11/libopenscpkcs11.so + + chmod +x "$out/usr/bin/horizon-client" + ${wrapBinCommands "usr/bin" "horizon-client"} + ''; + }; + + omnissaFHSUserEnv = + pname: + buildFHSEnv { + inherit pname version; + + runScript = "${omnissaHorizonClientFiles}/bin/${pname}_wrapper"; + + targetPkgs = pkgs: with pkgs; [ + atk + cairo + dbus + file + fontconfig + freetype + gdk-pixbuf + glib + gtk3 + libjpeg + libpng + libpulseaudio + libtiff + libuuid + libv4l + libxml2 + pango + pcsclite + pixman + udev + omnissaHorizonClientFiles + xorg.libX11 + xorg.libXau + xorg.libXcursor + xorg.libXext + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXtst + zlib + + (writeTextDir "etc/omnissa/config" configText) + ]; + }; +in +stdenv.mkDerivation { + pname = "omnissa-horizon-client"; + inherit version; + + dontUnpack = true; + + installPhase = '' + mkdir -p $out/bin + ln -s ${omnissaFHSUserEnv "horizon-client"}/bin/horizon-client $out/bin/ + ln -s ${omnissaFHSUserEnv "horizon-eucusbarbitrator"}/bin/horizon-eucusbarbitrator $out/bin/ + ''; + + passthru.unwrapped = omnissaHorizonClientFiles; + + meta = { + description = "Omnissa Horizon Client for ARM"; + homepage = "https://www.omnissa.com/products/horizon-8/"; + license = lib.licenses.unfree; + platforms = [ "aarch64-linux" "armv7l-linux" ]; + }; +} diff --git a/hosts/mac-nixos/services.nix b/hosts/mac-nixos/services.nix new file mode 100644 index 0000000..482390f --- /dev/null +++ b/hosts/mac-nixos/services.nix @@ -0,0 +1,83 @@ +{ lib, ... }: +{ + services = { + auto-cpufreq = { + enable = true; + settings = { + # settings for when connected to a power source + charger = { + # see available governors by running: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors + # preferred governor + governor = "performance"; + + # minimum cpu frequency (in kHz) + # example: for 800 MHz = 800000 kHz --> scaling_min_freq = 800000 + # see conversion info: https://www.rapidtables.com/convert/frequency/mhz-to-hz.html + # to use this feature, uncomment the following line and set the value accordingly + # scaling_min_freq = 800000 + + # maximum cpu frequency (in kHz) + # example: for 1GHz = 1000 MHz = 1000000 kHz -> scaling_max_freq = 1000000 + # see conversion info: https://www.rapidtables.com/convert/frequency/mhz-to-hz.html + # to use this feature, uncomment the following line and set the value accordingly + # scaling_max_freq = 1000000 + + # turbo boost setting. possible values: always, auto, never + turbo = "auto"; + }; + # settings for when using battery power + battery = { + # see available governors by running: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors + # preferred governor + governor = "schedutil"; + + # minimum cpu frequency (in kHz) + # example: for 800 MHz = 800000 kHz --> scaling_min_freq = 800000 + # see conversion info: https://www.rapidtables.com/convert/frequency/mhz-to-hz.html + # to use this feature, uncomment the following line and set the value accordingly + # scaling_min_freq = 800000 + + # maximum cpu frequency (in kHz) + # see conversion info: https://www.rapidtables.com/convert/frequency/mhz-to-hz.html + # example: for 1GHz = 1000 MHz = 1000000 kHz -> scaling_max_freq = 1000000 + # to use this feature, uncomment the following line and set the value accordingly + # scaling_max_freq = 1000000 + + # turbo boost setting (always, auto, or never) + turbo = "auto"; + + # battery charging threshold + # reference: https://github.com/AdnanHodzic/auto-cpufreq/#battery-charging-thresholds + #enable_thresholds = true + #start_threshold = 20 + #stop_threshold = 80 + }; + }; + }; + + displayManager = { + sddm = { + enable = lib.mkForce true; + wayland.enable = lib.mkForce true; + }; + gdm.enable = lib.mkForce false; + }; + + desktopManager = { + plasma6.enable = lib.mkForce false; + gnome.enable = lib.mkForce false; + }; + + logind = { + lidSwitch = "suspend"; + lidSwitchExternalPower = "ignore"; + powerKey = "suspend"; + powerKeyLongPress = "poweroff"; + }; + + # Enable Flatpak + flatpak.enable = lib.mkDefault false; + + gvfs.enable = true; + }; +} diff --git a/hosts/nas/apps.nix b/hosts/nas/apps.nix index 491a2e9..8c9a1ed 100755 --- a/hosts/nas/apps.nix +++ b/hosts/nas/apps.nix @@ -1,4 +1,7 @@ { pkgs, lib, ... }: +let + settings = import ./settings.nix; +in { imports = [ ./apps/actual @@ -69,7 +72,7 @@ crowdsec = { enable = true; port = 9898; - apiAddress = "10.0.1.18"; + apiAddress = settings.hostAddress; apiKey = "1daH89qmJ41r2Lpd9hvDw4sxtOAtBzaj3aKFOFqE"; dataDir = "/media/nas/ssd/nix-app-data/crowdsec"; }; diff --git a/hosts/nas/apps/actual/default.nix b/hosts/nas/apps/actual/default.nix index 836b581..29bb78a 100644 --- a/hosts/nas/apps/actual/default.nix +++ b/hosts/nas/apps/actual/default.nix @@ -2,8 +2,9 @@ with lib; let cfg = config.nas-apps.actual; + settings = import ../settings.nix; dataDir = "/data"; - hostAddress = "10.0.1.18"; + hostAddress = settings.hostAddress; actualUserId = config.users.users.nix-apps.uid; actualGroupId = config.users.groups.jallen-nas.gid; in diff --git a/hosts/nas/apps/arrs/default.nix b/hosts/nas/apps/arrs/default.nix index 9f328b8..aeaf53f 100755 --- a/hosts/nas/apps/arrs/default.nix +++ b/hosts/nas/apps/arrs/default.nix @@ -7,6 +7,7 @@ with lib; let cfg = config.nas-apps.arrs; + settings = import ../settings.nix; radarrDataDir = "/var/lib/radarr"; downloadDir = "/downloads"; incompleteDir = "/downloads-incomplete"; @@ -29,7 +30,7 @@ in containers.arrs = { autoStart = true; privateNetwork = true; - hostAddress = "10.0.1.18"; + hostAddress = settings.hostAddress; localAddress = cfg.localAddress; config = diff --git a/hosts/nas/apps/gitea/default.nix b/hosts/nas/apps/gitea/default.nix index 7aa122c..bd0b290 100644 --- a/hosts/nas/apps/gitea/default.nix +++ b/hosts/nas/apps/gitea/default.nix @@ -2,7 +2,8 @@ with lib; let cfg = config.nas-apps.gitea; - hostAddress = "10.0.1.18"; + settings = import ../settings.nix; + hostAddress = settings.hostAddress; # localAddress = "10.0.4.18"; # httpPort = 3000; # sshPort = 2222; diff --git a/hosts/nas/apps/immich/default.nix b/hosts/nas/apps/immich/default.nix index 53b8960..05808eb 100755 --- a/hosts/nas/apps/immich/default.nix +++ b/hosts/nas/apps/immich/default.nix @@ -1,5 +1,6 @@ { config, lib, ... }: let + settings = import ../settings.nix; immichPort = 2283; dataDir = "/media/nas/main/photos"; dbPassword = config.sops.secrets."jallen-nas/immich/db-password".path; @@ -15,7 +16,7 @@ in environment = { IMMICH_HOST = lib.mkForce "0.0.0.0"; - IMMICH_TRUSTED_PROXIES = "10.0.1.18"; + IMMICH_TRUSTED_PROXIES = settings.hostAddress; TZ = "America/Chicago"; }; diff --git a/hosts/nas/apps/jellyseerr/default.nix b/hosts/nas/apps/jellyseerr/default.nix index 925a73b..49f40de 100755 --- a/hosts/nas/apps/jellyseerr/default.nix +++ b/hosts/nas/apps/jellyseerr/default.nix @@ -3,12 +3,13 @@ let jellyseerrPort = 5055; dataDir = "/var/lib/private/jellyseerr"; + settings = import ../settings.nix; in { containers.jellyseerr = { autoStart = true; privateNetwork = true; - hostAddress = "10.0.1.18"; + hostAddress = settings.hostAddress; localAddress = "10.0.1.52"; hostAddress6 = "fc00::1"; localAddress6 = "fc00::4"; diff --git a/hosts/nas/apps/nextcloud/default.nix b/hosts/nas/apps/nextcloud/default.nix index a0c2956..8e73604 100755 --- a/hosts/nas/apps/nextcloud/default.nix +++ b/hosts/nas/apps/nextcloud/default.nix @@ -1,12 +1,13 @@ { config, pkgs, ... }: let + settings = import ../settings.nix; adminpass = config.sops.secrets."jallen-nas/nextcloud/adminpassword".path; secretsFile = config.sops.secrets."jallen-nas/nextcloud/smtp_settings".path; jwtSecretFile = config.sops.secrets."jallen-nas/onlyoffice-key".path; nextcloudUserId = config.users.users.nix-apps.uid; nextcloudGroupId = config.users.groups.jallen-nas.gid; nextcloudPackage = pkgs.unstable.nextcloud31; - hostAddress = "10.0.1.18"; + hostAddress = settings.hostAddress; localAddress = "10.0.2.18"; nextcloudPortExtHttp = 9988; nextcloudPortExtHttps = 9943; diff --git a/hosts/nas/apps/paperless/default.nix b/hosts/nas/apps/paperless/default.nix index 3f15880..8905009 100755 --- a/hosts/nas/apps/paperless/default.nix +++ b/hosts/nas/apps/paperless/default.nix @@ -4,6 +4,7 @@ ... }: let + settings = import ../settings.nix; paperlessPort = 28981; paperlessUserId = config.users.users.nix-apps.uid; paperlessGroupId = config.users.groups.jallen-nas.gid; @@ -14,7 +15,7 @@ in containers.paperless = { autoStart = true; privateNetwork = true; - hostAddress = "10.0.1.18"; + hostAddress = settings.hostAddress; localAddress = "10.0.1.20"; hostAddress6 = "fc00::1"; localAddress6 = "fc00::20"; diff --git a/hosts/nas/apps/traefik/default.nix b/hosts/nas/apps/traefik/default.nix index 4cbc264..b59101a 100755 --- a/hosts/nas/apps/traefik/default.nix +++ b/hosts/nas/apps/traefik/default.nix @@ -1,7 +1,8 @@ { config, ... }: let + settings = import ../settings.nix; domain = "mjallen.dev"; - serverIp = "10.0.1.18"; + serverIp = settings.hostAddress; # Forward services authUrl = "http://${serverIp}:9000/outpost.goauthentik.io"; diff --git a/hosts/nas/networking.nix b/hosts/nas/networking.nix index b8496f8..15820dd 100755 --- a/hosts/nas/networking.nix +++ b/hosts/nas/networking.nix @@ -1,6 +1,6 @@ { config, ... }: let - hostname = "jallen-nas"; + settings = import ./settings.nix; ports = [ 8008 # restic 9000 # authentik @@ -27,7 +27,7 @@ in { # Networking configs networking = { - hostName = hostname; + hostName = settings.hostname; useNetworkd = true; @@ -48,7 +48,7 @@ in type = "wifi"; }; ipv4 = { - address1 = "10.0.1.18/24"; + address1 = "${settings.hostAddress}/24"; dns = "10.0.1.1"; gateway = "10.0.1.1"; method = "manual"; diff --git a/hosts/pi4/adguard.nix b/hosts/pi4/adguard.nix index f56fab8..d4b78cb 100644 --- a/hosts/pi4/adguard.nix +++ b/hosts/pi4/adguard.nix @@ -29,7 +29,7 @@ trusted_proxies = [ "127.0.0.0/8" "::1/128" - "10.0.1.18" + "10.0.1.3" ]; cache_optimistic = true; }; diff --git a/hosts/pi4/home.nix b/hosts/pi4/home.nix index d36f2c4..0b8c610 100755 --- a/hosts/pi4/home.nix +++ b/hosts/pi4/home.nix @@ -2,11 +2,11 @@ let shellAliases = { ll = "ls -alh"; - update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.18"; - update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.18"; + update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; + update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3"; update-flake = "nix flake update pi4-nixpkgs pi4-home-manager pi4-impermanence pi4-sops-nix pi4-nixos-hardware pi4-nixos-raspberrypi pi4-disko --flake /etc/nixos"; - update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host admin@10.0.1.18 --flake ~/nix-config#jallen-nas"; - nas-ssh = "kitten ssh admin@10.0.1.18"; + update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.3 --build-host admin@10.0.1.3 --flake ~/nix-config#jallen-nas"; + nas-ssh = "kitten ssh admin@10.0.1.3"; ducks = "du -cksh * | sort -hr | head -n 15"; }; in diff --git a/hosts/pi5/hass.nix b/hosts/pi5/hass.nix index 35fd275..0d2ee04 100644 --- a/hosts/pi5/hass.nix +++ b/hosts/pi5/hass.nix @@ -1,6 +1,6 @@ { ... }: let - hostAddress = "10.0.1.18"; + hostAddress = "10.0.1.3"; localAddress = "10.0.5.18"; hassPort = 8192; in diff --git a/hosts/pi5/home.nix b/hosts/pi5/home.nix index 6ce73cc..f068bdf 100755 --- a/hosts/pi5/home.nix +++ b/hosts/pi5/home.nix @@ -1,11 +1,11 @@ { pkgs, lib, config, ... }: let shellAliases = { - update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.18"; - update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.18"; + update-boot = "sudo nixos-rebuild boot --max-jobs 10 --build-host admin@10.0.1.3"; + update-switch = "sudo nixos-rebuild switch --max-jobs 10 --build-host admin@10.0.1.3"; update-flake = "nix flake update pi5-nixpkgs pi5-home-manager pi5-impermanence pi5-nixos-hardware pi5-sops-nix nixos-raspberrypi --flake /etc/nixos"; - update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.18 --build-host admin@10.0.1.18 --flake ~/nix-config#jallen-nas"; - nas-ssh = "kitten ssh admin@10.0.1.18"; + update-nas = "nixos-rebuild switch --use-remote-sudo --target-host admin@10.0.1.3 --build-host admin@10.0.1.3 --flake ~/nix-config#jallen-nas"; + nas-ssh = "kitten ssh admin@10.0.1.3"; }; in { diff --git a/modules/apps/your-spotify/default.nix b/modules/apps/your-spotify/default.nix index 20fa112..08055f2 100755 --- a/modules/apps/your-spotify/default.nix +++ b/modules/apps/your-spotify/default.nix @@ -22,7 +22,7 @@ in CLIENT_ENDPOINT = "https://your-spotify.mjallen.dev"; SPOTIFY_PUBLIC = "e270589d72a6494680a17d325af8670d"; SPOTIFY_SECRET = "423cb7b69fe8486e89eccd01e0c22924"; - MONGO_ENDPOINT = "mongodb://10.0.1.18:27017"; + MONGO_ENDPOINT = "mongodb://10.0.1.3:27017"; }; }; diff --git a/modules/desktop-environments/hyprland/config/btop/default.nix b/modules/desktop-environments/hyprland/config/btop/default.nix index d82f34f..dd0cab1 100755 --- a/modules/desktop-environments/hyprland/config/btop/default.nix +++ b/modules/desktop-environments/hyprland/config/btop/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; in diff --git a/modules/desktop-environments/hyprland/config/hypr/default.nix b/modules/desktop-environments/hyprland/config/hypr/default.nix index 929259b..2e20406 100755 --- a/modules/desktop-environments/hyprland/config/hypr/default.nix +++ b/modules/desktop-environments/hyprland/config/hypr/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; drawer = "nwg-drawer -fm nautilus -term kitty -mb 10 -mt 10 -ml 10 -mr 10 -pbuseicontheme -i ${settings.iconTheme}"; @@ -35,16 +35,18 @@ in bind = [ "$mod, Return, exec, ${settings.defaultApps.terminal.pname}" "$mod, SPACE, exec, wofi --show drun" + ", xf86Search, exec, wofi --show drun" "$mod, Q, killactive, " "$mod, M, exec, wlogout --protocol layer-shell" - "$mod, E, exec, nautilus" + "$mod, E, exec, ${settings.defaultApps.fileExplorer.pname}" "$mod, V, togglefloating, " "$mod, D, exec, ${drawer}" "$mod, P, pseudo, " # dwindle "$mod, S, togglesplit, " # dwindle "$mod SHIFT, Q, exec, hyprlock" "$mod SHIFT, 4, exec, hyprshot -m region --clipboard-only" - "$mod,F,exec,hyprctl dispatch fullscreen active" + "$mod, F, fullscreen, 1" + "$mod SHIFT, F, fullscreen, 0" "$mod SHIFT, E, exec, smile" "$mod, mouse:276, movecurrentworkspacetomonitor, ${settings.displayLeft.input}" @@ -112,12 +114,20 @@ in ", XF86AudioPlay, exec, playerctl play-pause" ", XF86AudioPrev, exec, playerctl previous" ", XF86AudioNext, exec, playerctl next" + ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + + ", XF86MonBrightnessUp, exec, brightnessctl set +5%" + ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" + + "$mod, XF86MonBrightnessUp, exec, brightnessctl -d kbd_backlight set +10%" + "$mod, XF86MonBrightnessDown, exec, brightnessctl -d kbd_backlight set 10%-" ]; - monitor = [ - "${settings.displayLeft.input},${settings.displayLeft.resolution}@${settings.displayLeft.refreshRate},0x0,1,bitdepth,10,cm,hdr,sdrbrightness,1.2,sdrsaturation,0.98" - "${settings.displayRight.input},${settings.displayRight.resolution}@${settings.displayRight.refreshRate},3840x0,1,bitdepth,10,cm,hdr,sdrbrightness,1.5,sdrsaturation,0.98" - ]; + # monitor = [ + # "${settings.displayLeft.input},${settings.displayLeft.resolution}@${settings.displayLeft.refreshRate},0x0,1.0,bitdepth,10,cm,hdr,sdrbrightness,1.2,sdrsaturation,0.98" + # ]; + + monitor = hyprlandSettings.monitor; render = { cm_fs_passthrough = 1; @@ -183,11 +193,7 @@ in force_default_wallpaper = 0; }; - workspace = [ - "name:firefox, monitor:${settings.displayRight.input}, default:false, special, class:(.*firefox.*)" - "name:discord, monitor:${settings.displayRight.input}, default:true, special, title:(.*vesktop.*), title:(.*Apple Music.*)" - "name:steam, monitor:${settings.displayLeft.input}, default:false, special, class:(.*[Ss]team.*)" - ]; + workspace = hyprlandSettings.workspace; windowrule = [ "float, title:(file_progress)" @@ -255,11 +261,11 @@ in "renderunfocused, tag:horizonrdp" "idleinhibit, tag:horizonrdp" "float, tag:horizonrdp" - "size 2160 7680, tag:horizonrdp" + # "size 2160 7680, tag:horizonrdp" # "move onscreen 0 0, tag:horizonrdp" # float the vmware window cause its annoying to use in fullscreen "float, class:(.*[Vv][Mm]ware-view),title:([Vv][Mm]ware [Hh]orizon [Cc]lient)" - ]; + ] ++ hyprlandSettings.windowRule; input = { kb_layout = "us"; @@ -274,7 +280,8 @@ in follow_mouse = 1; touchpad = { - natural_scroll = "no"; + clickfinger_behavior = 1; + natural_scroll = "yes"; }; sensitivity = 0; # -1.0 - 1.0, 0 means no modification. @@ -296,11 +303,6 @@ in exec-once = xhost +SI:localuser:root exec-once = nwg-look -a exec-once = nwg-dock-hyprland -d - exec-once = nm-applet - exec-once = [silent] firefox - exec-once = [silent] vesktop - exec-once = [silent] chromium --app="https://music.apple.com" - exec-once = [silent] steam ''; }; } diff --git a/modules/desktop-environments/hyprland/config/kitty/default.nix b/modules/desktop-environments/hyprland/config/kitty/default.nix index 14e3159..2918107 100755 --- a/modules/desktop-environments/hyprland/config/kitty/default.nix +++ b/modules/desktop-environments/hyprland/config/kitty/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; in diff --git a/modules/desktop-environments/hyprland/config/mako/default.nix b/modules/desktop-environments/hyprland/config/mako/default.nix index b19c80c..99a1a73 100755 --- a/modules/desktop-environments/hyprland/config/mako/default.nix +++ b/modules/desktop-environments/hyprland/config/mako/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; in diff --git a/modules/desktop-environments/hyprland/config/nwg-dock/default.nix b/modules/desktop-environments/hyprland/config/nwg-dock/default.nix index 4f3a4d9..39f45c3 100644 --- a/modules/desktop-environments/hyprland/config/nwg-dock/default.nix +++ b/modules/desktop-environments/hyprland/config/nwg-dock/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; in diff --git a/modules/desktop-environments/hyprland/config/nwg-drawer/default.nix b/modules/desktop-environments/hyprland/config/nwg-drawer/default.nix index a0cda85..ed50947 100644 --- a/modules/desktop-environments/hyprland/config/nwg-drawer/default.nix +++ b/modules/desktop-environments/hyprland/config/nwg-drawer/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; in diff --git a/modules/desktop-environments/hyprland/config/nwg-panel/default.nix b/modules/desktop-environments/hyprland/config/nwg-panel/default.nix index 421a690..ab3fcc3 100644 --- a/modules/desktop-environments/hyprland/config/nwg-panel/default.nix +++ b/modules/desktop-environments/hyprland/config/nwg-panel/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; in diff --git a/modules/desktop-environments/hyprland/config/waybar/default.nix b/modules/desktop-environments/hyprland/config/waybar/default.nix index ff7b6ff..502b46a 100755 --- a/modules/desktop-environments/hyprland/config/waybar/default.nix +++ b/modules/desktop-environments/hyprland/config/waybar/default.nix @@ -1,24 +1,33 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; defaultOpacity = "opacity: 0.85;"; defaultBorderRadius = "border-radius: 1rem;"; defaultCenterOptions = '' - padding: 0.5rem 1rem; - margin: 5px 0; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + margin: 3px 0; ''; borderRight = '' - padding: 0.5rem 1rem; - margin: 5px 0; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + margin: 3px 0; border-radius: 0rem 1rem 1rem 0rem; - margin-right: 1rem; + margin-right: 0.5rem; ''; borderLeft = '' - padding: 0.5rem 1rem; - margin: 5px 0; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 0.5rem; + padding-right: 0.5rem; + margin: 3px 0; border-radius: 1rem 0rem 0rem 1rem; - margin-left: 1rem; + margin-left: 0.5rem; ''; in { @@ -34,7 +43,7 @@ in systemd.enable = true; settings = { mainBar = { - layer = "bottom"; + layer = "top"; position = "top"; mod = "dock"; exclusive = true; @@ -47,20 +56,22 @@ in modules-center = [ "hyprland/window" ]; - modules-right = [ - "tray" - "custom/lights" - "temperature" - "temperature#gpu" - "keyboard-state#capslock" - "keyboard-state#numlock" - "wireplumber#sink" - "wireplumber#source" - "bluetooth" - "idle_inhibitor" - "clock" - "custom/weather" - ]; + # modules-right = [ + # "tray" + # "custom/lights" + # "temperature" + # "temperature#gpu" + # "keyboard-state#capslock" + # "keyboard-state#numlock" + # "wireplumber#sink" + # "wireplumber#source" + # "bluetooth" + # "idle_inhibitor" + # "clock" + # "custom/weather" + # ]; + + modules-right = hyprlandSettings.waybar.modules-right; # Module Definitions # Left @@ -203,6 +214,19 @@ in tooltip-format-connected = "{status}"; tooltip-format-enumerate-connected = { }; }; + + network = { + interface = "wlan0"; + format = "{ifname}"; + format-wifi = ""; # "{essid} ({signalStrength}%) "; + format-ethernet = "󰊗"; # "{ipaddr}/{cidr} 󰊗"; + format-disconnected = "" ; # An empty format will hide the module. + tooltip-format = "{ifname} via {gwaddr} 󰊗"; + tooltip-format-wifi = "{essid} ({signalStrength}%) "; + tooltip-format-ethernet = "{ifname} "; + tooltip-format-disconnected = "Disconnected"; + max-length = 50; + }; idle_inhibitor = { format = "{icon}"; @@ -226,6 +250,18 @@ in }; }; + battery = { + # bat = "macsmc-ac"; + interval = 60; + states = { + warning = 30; + critical = 15; + }; + format = "{capacity}% {icon}"; + format-icons = ["" "" "" "" ""]; + max-length = 25; + }; + "custom/weather" = { tooltip = true; format = { }; @@ -301,8 +337,8 @@ in ${defaultOpacity} ${defaultBorderRadius} ${defaultCenterOptions} - margin-left: 6rem; - margin-right: 6rem; + margin-left: 4rem; + margin-right: 100rem; } #custom-weather { @@ -312,6 +348,14 @@ in ${borderRight} } + #battery { + color: ${settings.nord.aurora.nord15}; + background-color: ${settings.nord.polarNight.nord0}; + ${defaultOpacity} + ${defaultCenterOptions} + border-radius: 0; + } + #clock { color: ${settings.nord.frost.nord9}; background-color: ${settings.nord.polarNight.nord0}; @@ -328,6 +372,14 @@ in ${borderRight} } + #network { + color: ${settings.nord.aurora.nord15}; + background-color: ${settings.nord.polarNight.nord0}; + ${defaultOpacity} + ${borderRight} + padding-right: 15px; + } + #bluetooth { color: ${settings.nord.frost.nord9}; background-color: ${settings.nord.polarNight.nord0}; @@ -380,8 +432,7 @@ in color: ${settings.nord.frost.nord9}; background-color: ${settings.nord.polarNight.nord0}; ${defaultOpacity} - ${defaultCenterOptions} - border-radius: 0; + ${borderLeft} } #custom-lights { diff --git a/modules/desktop-environments/hyprland/config/wlogout/default.nix b/modules/desktop-environments/hyprland/config/wlogout/default.nix index a66d10f..c0fd8da 100644 --- a/modules/desktop-environments/hyprland/config/wlogout/default.nix +++ b/modules/desktop-environments/hyprland/config/wlogout/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; in diff --git a/modules/desktop-environments/hyprland/config/wofi/default.nix b/modules/desktop-environments/hyprland/config/wofi/default.nix index f086a02..958831c 100755 --- a/modules/desktop-environments/hyprland/config/wofi/default.nix +++ b/modules/desktop-environments/hyprland/config/wofi/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ pkgs, hyprlandSettings, ... }: let settings = import ../../settings.nix { inherit pkgs; }; in diff --git a/modules/desktop-environments/hyprland/default.nix b/modules/desktop-environments/hyprland/default.nix index 511e236..bf7abdd 100755 --- a/modules/desktop-environments/hyprland/default.nix +++ b/modules/desktop-environments/hyprland/default.nix @@ -1,4 +1,4 @@ -{ pkgs, lib, ... }: +{ config, pkgs, lib, hyprlandSettings, ... }: let settings = import ./settings.nix { inherit pkgs; }; @@ -19,7 +19,9 @@ in ./environment.nix ]; - home-manager.users."${settings.user}" = import ./home.nix; + environment.systemPackages = [ bing-wallpaper pkgs.jq ]; + + home-manager.users."${settings.user}" = (import ./home.nix {inherit lib pkgs hyprlandSettings;}); services = { displayManager = { @@ -152,8 +154,8 @@ in xdg.portal = { enable = true; - wlr.enable = false; - xdgOpenUsePortal = false; + wlr.enable = true; + xdgOpenUsePortal = true; extraPortals = [ pkgs.xdg-desktop-portal-hyprland pkgs.xdg-desktop-portal-gnome diff --git a/modules/desktop-environments/hyprland/environment.nix b/modules/desktop-environments/hyprland/environment.nix index adbd3e2..027968b 100755 --- a/modules/desktop-environments/hyprland/environment.nix +++ b/modules/desktop-environments/hyprland/environment.nix @@ -1,6 +1,8 @@ { pkgs, ... }: { environment.systemPackages = with pkgs; [ + box64 + brightnessctl ddcutil dunst egl-wayland @@ -24,6 +26,7 @@ hyprsysteminfo kdePackages.qtmultimedia libnotify + libz mako meson nautilus diff --git a/modules/desktop-environments/hyprland/home.nix b/modules/desktop-environments/hyprland/home.nix index a2e6908..a21bd3c 100755 --- a/modules/desktop-environments/hyprland/home.nix +++ b/modules/desktop-environments/hyprland/home.nix @@ -1,16 +1,16 @@ -{ lib, pkgs, ... }: +{ lib, pkgs, hyprlandSettings, ... }: let - settings = import ./settings.nix { inherit pkgs; }; + settings = import ./settings.nix { inherit pkgs hyprlandSettings; }; wallpaper = "/run/wallpaper.jpg"; in { imports = [ ./config.nix ./config/btop - ./config/hypr + (import ./config/hypr {inherit pkgs hyprlandSettings;}) ./config/kitty ./config/mako - ./config/waybar + (import ./config/waybar {inherit pkgs hyprlandSettings;}) ./config/wofi ]; diff --git a/modules/desktop-environments/hyprland/settings.nix b/modules/desktop-environments/hyprland/settings.nix index ccb2aec..20f4c29 100644 --- a/modules/desktop-environments/hyprland/settings.nix +++ b/modules/desktop-environments/hyprland/settings.nix @@ -20,9 +20,9 @@ in # Displays displayLeft = { - input = "DP-1"; - resolution = "3840x2160"; - refreshRate = "240.00000"; + input = "eDP-1"; + resolution = "3456x2234"; # "3356x2160"; + refreshRate = "60.00000"; }; displayRight = { input = "DP-2"; @@ -81,6 +81,13 @@ in catppuccin-sddm colloid-gtk-theme colloid-icon-theme + nemo + nemo-python + nemo-emblems + nemo-preview + nemo-seahorse + nemo-fileroller + nemo-qml-plugin-dbus papirus-folders sddm-astronaut ]; @@ -88,6 +95,7 @@ in defaultApps = { browser = pkgs.firefox; editor = pkgs.micro; + fileExplorer = pkgs.nemo; visual = pkgs.vscodium; terminal = pkgs.kitty; office = pkgs.onlyoffice-bin_latest; diff --git a/modules/impermanence/default.nix b/modules/impermanence/default.nix index 80385dc..0d35a04 100755 --- a/modules/impermanence/default.nix +++ b/modules/impermanence/default.nix @@ -7,6 +7,7 @@ hideMounts = true; directories = [ "/var/lib/bluetooth" + "/var/lib/iwd" "/var/lib/nixos" "/var/lib/libvirt" "/var/lib/waydroid"