Added new user, made home folder optional, moved hyprland system config to a separate file

This commit is contained in:
Aleksandr Lebedev 2024-12-20 10:18:05 +01:00
parent 87ef397bec
commit b591fcc345
12 changed files with 278 additions and 81 deletions

View file

@ -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="];
};
};
}

View file

@ -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;

View file

@ -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;
}

View file

@ -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";
};
}

View file

@ -0,0 +1,6 @@
{ ... }:
{
imports = [
./hyprland.nix
];
}

View file

@ -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"

View file

@ -0,0 +1,8 @@
{ ... }:
{
services.xserver.enable = true;
services.displayManager.sddm.enable = true;
services.desktopManager.plasma6.enable = true;
programs.dconf.enable = true;
}

View file

@ -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

View file

@ -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;

View file

@ -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/<user> created, owned by that user
}