diff --git a/flake.lock b/flake.lock index fa12719..b3c8701 100644 --- a/flake.lock +++ b/flake.lock @@ -222,6 +222,24 @@ } }, "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "nixvim", @@ -734,6 +752,26 @@ "type": "github" } }, + "nix-gaming": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3", + "umu": "umu" + }, + "locked": { + "lastModified": 1734486355, + "narHash": "sha256-e9ui1RA/Bf57fiABB0ddXy4m/FoqM9yiEv6XtaoTyag=", + "owner": "fufexan", + "repo": "nix-gaming", + "rev": "3a37d41cbe8cda558c5d1a83e73fd452207cd914", + "type": "github" + }, + "original": { + "owner": "fufexan", + "repo": "nix-gaming", + "type": "github" + } + }, "nixos-facter-modules": { "locked": { "lastModified": 1732288619, @@ -765,6 +803,18 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1733096140, + "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" + } + }, "nixpkgs-stable": { "locked": { "lastModified": 1730741070, @@ -798,6 +848,22 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1733935885, + "narHash": "sha256-xyiHLs6KJ1fxeGmcCxKjJE4yJknVJxbC8Y/ZRYyC8WE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5a48e3c2e435e95103d56590188cfed7b70e108c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1734424634, "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", @@ -813,7 +879,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1731763621, "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", @@ -829,7 +895,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1732238832, "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", @@ -849,7 +915,7 @@ "inputs": { "devshell": "devshell", "flake-compat": "flake-compat_3", - "flake-parts": "flake-parts", + "flake-parts": "flake-parts_2", "git-hooks": "git-hooks", "home-manager": "home-manager_2", "nix-darwin": "nix-darwin", @@ -927,8 +993,9 @@ "home-manager": "home-manager", "hyprland": "hyprland", "impermanence": "impermanence", + "nix-gaming": "nix-gaming", "nixos-facter-modules": "nixos-facter-modules", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "nixvim": "nixvim", "sops-nix": "sops-nix", "stylix": "stylix" @@ -952,7 +1019,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_5" }, "locked": { "lastModified": 1734546875, @@ -978,7 +1045,7 @@ "flake-utils": "flake-utils_2", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "systems": "systems_3", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", @@ -1114,6 +1181,31 @@ "type": "github" } }, + "umu": { + "inputs": { + "nixpkgs": [ + "nix-gaming", + "nixpkgs" + ] + }, + "locked": { + "dir": "packaging/nix", + "lastModified": 1734207213, + "narHash": "sha256-5CZPAeKm24Y1BKnN8Md3HUViCMCs7AVghRC+05Bdlkk=", + "ref": "refs/heads/main", + "rev": "6189d0d9fd062e89a375db20aeae1d1c009e9833", + "revCount": 869, + "submodules": true, + "type": "git", + "url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix" + }, + "original": { + "dir": "packaging/nix", + "submodules": true, + "type": "git", + "url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index 12c246b..f836880 100644 --- a/flake.nix +++ b/flake.nix @@ -28,6 +28,8 @@ }; nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; + nix-gaming.url = "github:fufexan/nix-gaming"; + impermanence.url = "github:nix-community/impermanence"; }; diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 7e8a58e..d55f71b 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -119,6 +119,10 @@ }) nix-output-monitor + fd + (pkgs.writeShellScriptBin "root-files" '' + sudo ${pkgs.fd}/bin/fd --one-file-system --base-directory / --type f --hidden --exclude "{tmp,etc/passwd}" + '') #https://www.reddit.com/r/NixOS/comments/1d1apm0/comment/l5tgbwz/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button gparted exfatprogs kitty @@ -137,32 +141,14 @@ fastfetch firefox telegram-desktop - waybar - swaynotificationcenter - libnotify - swww vlc - wofi wl-clipboard git git-credential-manager - hyprpicker - networkmanagerapplet egl-wayland kitty-themes btop - hyprlock - wlogout - hypridle solaar - pavucontrol - brightnessctl - satty - grim - slurp - clipse - libheif #https://github.com/NixOS/nixpkgs/issues/164021 - libheif.out blender #kde @@ -199,40 +185,14 @@ kdePackages.kimageformats kdePackages.dolphin kdePackages.dolphin-plugins - - # user packages obs-studio vesktop vscode-fhs - - # development - #clang_18 - #dotnetCorePackages.sdk_8_0_3xx ]; programs.kdeconnect.enable = true; - programs.kdeconnect.package = pkgs.kdePackages.kdeconnect-kde; - programs.hyprlock.enable = true; + programs.kdeconnect.package = lib.mkDefault pkgs.kdePackages.kdeconnect-kde; - xdg = { - menus.enable = true; - mime.enable = true; - }; - xdg.portal = { - enable = true; - config = { - hyprland = { - default = [ - "hyprland" - "kde" - ]; - }; - }; - configPackages = with pkgs; [ - xdg-desktop-portal-hyprland - kdePackages.xdg-desktop-portal-kde - ]; - }; programs.nixvim = { enable = true; @@ -255,13 +215,6 @@ clean.extraArgs = "--keep-since 4d --keep 3"; flake = "/etc/nixos-config"; }; - #https://discourse.nixos.org/t/dolphin-does-not-have-mime-associations/48985/3 - # This fixes the unpopulated MIME menus - environment.etc."/xdg/menus/plasma-applications.menu".text = builtins.readFile "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu"; - environment.etc."/xdg/menus/applications.menu".text = builtins.readFile "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu"; - environment.pathsToLink = [ - "share/thumbnailers" - ]; fonts.packages = with pkgs; [ nerd-fonts.jetbrains-mono font-awesome @@ -293,7 +246,7 @@ programs.steam = { - enable = if hwconfig.system == "x86_64-linux" then true else false; + enable = (hwconfig.system == "x86_64-linux"); remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers @@ -382,15 +335,6 @@ # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "24.05"; # Did you read the comment? - programs.hyprland = { - enable = true; - package = inputs.hyprland.packages."${hwconfig.system}".hyprland; - portalPackage = inputs.hyprland.packages.${hwconfig.system}.xdg-desktop-portal-hyprland; - xwayland.enable = true; - systemd.setPath.enable = true; - }; - services.hypridle.enable = true; - services.xserver.enable = true; services.displayManager.sddm = { enable = true; @@ -402,8 +346,8 @@ settings = { experimental-features = ["nix-command" "flakes"]; auto-optimise-store = true; - substituters = ["https://hyprland.cachix.org"]; - trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; + substituters = ["https://hyprland.cachix.org" "https://nix-gaming.cachix.org" ]; + trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="]; }; }; } diff --git a/nixos/home.nix b/nixos/home.nix index e21f8b6..f3ee035 100644 --- a/nixos/home.nix +++ b/nixos/home.nix @@ -1,15 +1,15 @@ -{ config, pkgs, stylix, hwconfig, first-nixos-install, username, inputs, ... }: +{ config, lib, pkgs, stylix, hwconfig, first-nixos-install, username, inputs, ... }: let in { imports = [ - ./modules/hyprland ./modules/nixvim ./modules/fastfetch - ./homes/${username} - ] ++ (if hwconfig.useImpermanence then [ (import ./modules/impermanence/home.nix { inherit username; inherit inputs; } ) ] else []); + ] ++ (if hwconfig.useImpermanence then [ (import ./modules/impermanence/home.nix { inherit username; inherit inputs; } ) ] else []) + ++ (if config.programs.hyprland.enable then [./modules/hyprland/home.nix] else []) + ++ lib.optional (builtins.pathExists ./homes/${username}) ./homes/${username}; # Home Manager needs a bit of information about you and the paths it should # manage. home.username = username; diff --git a/nixos/hosts/kylekrein-homepc/default.nix b/nixos/hosts/kylekrein-homepc/default.nix index e2d811f..5e56f74 100644 --- a/nixos/hosts/kylekrein-homepc/default.nix +++ b/nixos/hosts/kylekrein-homepc/default.nix @@ -1,10 +1,19 @@ { pkgs, lib, hwconfig, inputs, ... }: { imports = [ + ../../modules/hyprland + ../../modules/libvirt ../../users/kylekrein (import ../../modules/libvirt/user.nix { username = "kylekrein"; }) + + ../../users/tania ]; + + environment.systemPackages = [ + #inputs.nix-gaming.packages.${pkgs.system}.star-citizen + ]; + systemd.network.wait-online.enable = lib.mkForce false; } diff --git a/nixos/modules/hyprland/default.nix b/nixos/modules/hyprland/default.nix index 304b7b7..c1de7b9 100644 --- a/nixos/modules/hyprland/default.nix +++ b/nixos/modules/hyprland/default.nix @@ -1,6 +1,115 @@ -{ ... }: +{ pkgs, inputs, hwconfig, ... }: { - imports = [ - ./hyprland.nix + environment.systemPackages = with pkgs; [ + kdePackages.qtwayland + #libsForQt5.qt5.qtwayland + #libsForQt5.qt5.qtsvg + kdePackages.qtsvg + #kio-fuse #to mount remote filesystems via FUSE + #libsForQt5.kio-extras #extra protocols support (sftp, fish and more) + kdePackages.kio-fuse #to mount remote filesystems via FUSE + kdePackages.kio-extras #extra protocols support (sftp, fish and more) + waybar + swaynotificationcenter + libnotify + swww + wofi + hyprpicker + networkmanagerapplet + hyprlock + wlogout + hypridle + pavucontrol + brightnessctl + satty + grim + slurp + clipse + libheif #https://github.com/NixOS/nixpkgs/issues/164021 + libheif.out + + #kde + kdePackages.kate + kdePackages.gwenview + kdePackages.breeze-icons + kdePackages.breeze + kdePackages.ark + kdePackages.qtstyleplugin-kvantum + kdePackages.okular + kdePackages.kcalc + polkit-kde-agent + kdePackages.kdeconnect-kde + kdePackages.kdesdk-thumbnailers + kdePackages.kdegraphics-thumbnailers + catppuccin-kvantum + kdePackages.kservice + kdePackages.kdbusaddons + kdePackages.kfilemetadata + kdePackages.kconfig + kdePackages.kcoreaddons + kdePackages.kcrash + kdePackages.kguiaddons + kdePackages.ki18n + kdePackages.kitemviews + kdePackages.kwidgetsaddons + kdePackages.kwindowsystem + shared-mime-info + #kdePackages.plasma-workspace + + #kde support tools + libsForQt5.qt5ct + qt6ct + kdePackages.kimageformats + kdePackages.dolphin + kdePackages.dolphin-plugins ]; + + programs.kdeconnect.enable = true; + programs.kdeconnect.package = pkgs.kdePackages.kdeconnect-kde; + programs.hyprlock.enable = true; + + xdg = { + menus.enable = true; + mime.enable = true; + }; + xdg.portal = { + enable = true; + config = { + hyprland = { + default = [ + "hyprland" + "kde" + ]; + }; + }; + configPackages = with pkgs; [ + inputs.hyprland.packages.${hwconfig.system}.xdg-desktop-portal-hyprland + kdePackages.xdg-desktop-portal-kde + ]; + }; + + #https://discourse.nixos.org/t/dolphin-does-not-have-mime-associations/48985/3 + # This fixes the unpopulated MIME menus + environment.etc."/xdg/menus/plasma-applications.menu".text = builtins.readFile "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu"; + environment.etc."/xdg/menus/applications.menu".text = builtins.readFile "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu"; + #environment.pathsToLink = [ + # "share/thumbnailers" + #]; + + programs.hyprland = { + enable = true; + package = inputs.hyprland.packages."${hwconfig.system}".hyprland; + portalPackage = inputs.hyprland.packages.${hwconfig.system}.xdg-desktop-portal-hyprland; + xwayland.enable = true; + systemd.setPath.enable = true; + }; + services.hypridle.enable = true; + + qt = { + enable = true; + platformTheme = "qt5ct"; + style = "kvantum"; + }; + + } diff --git a/nixos/modules/hyprland/home.nix b/nixos/modules/hyprland/home.nix new file mode 100644 index 0000000..304b7b7 --- /dev/null +++ b/nixos/modules/hyprland/home.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + imports = [ + ./hyprland.nix + ]; +} diff --git a/nixos/modules/impermanence/home.nix b/nixos/modules/impermanence/home.nix index f5e9fde..809d307 100644 --- a/nixos/modules/impermanence/home.nix +++ b/nixos/modules/impermanence/home.nix @@ -21,12 +21,13 @@ ".local/share/direnv" { directory = ".local/share/Steam"; - method = "symlink"; + #method = "symlink"; } ".steam" ".mozilla" ".local/share/TelegramDesktop" ".config/solaar" + ".config/kdeconnect" ]; files = [ ".screenrc" diff --git a/nixos/modules/kde-plasma/default.nix b/nixos/modules/kde-plasma/default.nix new file mode 100644 index 0000000..492e570 --- /dev/null +++ b/nixos/modules/kde-plasma/default.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + services.xserver.enable = true; + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + + programs.dconf.enable = true; +} diff --git a/nixos/modules/sops/secrets/secrets.yaml b/nixos/modules/sops/secrets/secrets.yaml index d6255e6..894c991 100644 --- a/nixos/modules/sops/secrets/secrets.yaml +++ b/nixos/modules/sops/secrets/secrets.yaml @@ -1,5 +1,6 @@ users: kylekrein: ENC[AES256_GCM,data:DNLVQ4IPFhUG9MR9hk2BuElvfNZIky3nMGWgilutRwvT3wl25vOLEETrBFoWUO+2ZgLSnhtwWtIJhNlRlTK/rsrUNVTOdwq9AA==,iv:Z+dhr33Wotm064IcwtNfFpvQeL03T29Dn3Bl9VqPL1g=,tag:Qe3sOY0DegSKDptBjnbFrQ==,type:str] + tania: ENC[AES256_GCM,data:veo/dKQpztSGLfCxpWqoTOlPqSaNeNW2pYrTU9z125hjBVt2LC8X+mDp8vA0r8QFKpkGr1BiwviUTuXsSO1IXn3nHfDGsHQqFQ==,iv:q3pCcil1wiKe5xC6QEn3Q4wV1icW+3CCUQw6QZIINWU=,tag:XvBfIEORfdTcUihtcJQZVg==,type:str] sops: kms: [] gcp_kms: [] @@ -15,8 +16,8 @@ sops: M0hSNWNYbGM3a21McUVMaGNqWTdmNTQK3VRFV4EaC8K8AJi2PUt6TeBgueEmPLI8 Vdwwbh89+xD5xf4Zm0LctPRlxxM6diubv0gIZZPy/ZXZfiU32ZnM0w== -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-12-18T08:09:37Z" - mac: ENC[AES256_GCM,data:nnzosChLt1mPHdbLktddccs1lTp0LQAJs36KkYXHxW+sL+QYZu+jIEWm6IaGJ/5xHk99upo3eoZu3o8DrEMvKmiICrXy6hLFipgANTuzV4Ug8bs5aSXuKjqVAs3aMLNJR5+CZZTCFDc7NM12Fy+U33Sn8hMimIC0JQmypdAWXoI=,iv:5ShY+sSHK8DjURndEDdV1g5d9TdGnAI82+qx0pQx9lg=,tag:4p/1h4TzKSuVG72zIn4Uqw==,type:str] + lastmodified: "2024-12-19T00:21:29Z" + mac: ENC[AES256_GCM,data:B/sJ9L4aeDm4n+JIRrnjwRF8tbveuH85Y55pzy3lBvub+VF+mv/4PCyRWR8Upi1HWDqKQjN3yEo2+Px8e24csD7kyyirwFuYcbwNslEG4gm1uffx34sP3G+8bmEoLO76tbHrsMIkWTAQl3rmDOcNvVqzVq8KwGQSA2+3gO4d1+o=,iv:f0lOEBfvcsL5WQMz4Le2mu15IGsYFfE4OIUfnno0xXY=,tag:SusRIyzZlqbDbUN2BgvB8w==,type:str] pgp: [] unencrypted_suffix: _unencrypted version: 3.9.2 diff --git a/nixos/users/kylekrein/default.nix b/nixos/users/kylekrein/default.nix index 834e84b..5db0b34 100644 --- a/nixos/users/kylekrein/default.nix +++ b/nixos/users/kylekrein/default.nix @@ -18,7 +18,7 @@ in }; }; - home-manager.users."${username}" = import ../../home.nix { inherit username; inherit inputs; inherit stylix; inherit first-nixos-install; inherit hwconfig; inherit config; inherit pkgs; }; + home-manager.users."${username}" = import ../../home.nix { inherit lib; inherit username; inherit inputs; inherit stylix; inherit first-nixos-install; inherit hwconfig; inherit config; inherit pkgs; }; kylekrein.services.autoUpgrade = { configDir = lib.mkForce "/home/${username}/nixos-config"; user = lib.mkForce username; diff --git a/nixos/users/tania/default.nix b/nixos/users/tania/default.nix new file mode 100644 index 0000000..9d46a1d --- /dev/null +++ b/nixos/users/tania/default.nix @@ -0,0 +1,25 @@ +{ pkgs, config, lib, hwconfig, inputs, stylix, first-nixos-install, ... }: +let username = "tania"; +in +{ + imports = [ + ]; + users.users.${username} = { + isNormalUser = true; + description = "Tetiana"; + extraGroups = [ "networkmanager" ]; + #initialPassword = "1234"; + hashedPasswordFile = config.sops.secrets."users/${username}".path; + packages = with pkgs; [ + anydesk + ]; + }; + sops.secrets = { + "users/${username}" = { + neededForUsers = true; + }; + }; + + home-manager.users."${username}" = import ../../home.nix { inherit lib; inherit username; inherit inputs; inherit stylix; inherit first-nixos-install; inherit hwconfig; inherit config; inherit pkgs; }; + systemd.tmpfiles.rules = (if hwconfig.useImpermanence then ["d /persist/home/${username} 0700 ${username} users -"] else []); # /persist/home/ created, owned by that user +}