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

104
flake.lock generated
View file

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

View file

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

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
}