Sure.
This is my flake:
{
description = "Nixos config flake";
inputs = {
# nixpkgs.follows = "nixos-cosmic/nixpkgs";
nixpkgs-unstable = {
url = "github:nixos/nixpkgs/nixos-unstable";
};
nixpkgs-24-11 = {
url = "github:nixos/nixpkgs/nixos-24.11";
};
nix-flatpak = {
url = "github:gmodena/nix-flatpak/";
};
home-manager = {
# url = "github:nix-community/home-manager";
url = "github:nix-community/home-manager/0b491b460f52e87e23eb17bbf59c6ae64b7664c1";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
nix-index-db = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs-unstable";
inputs.home-manager.follows = "home-manager";
};
nixos-cosmic = {
url = "github:lilyinstarlight/nixos-cosmic";
# inputs.nixpkgs.follows = "nixpkgs-unstable";
};
cosmic-manager = {
url = "github:HeitorAugustoLN/cosmic-manager";
inputs = {
nixpkgs.follows = "nixpkgs-unstable";
home-manager.follows = "home-manager";
};
};
};
outputs = {
self,
nixpkgs,
nixpkgs-unstable,
nixpkgs-24-11,
nix-flatpak,
home-manager,
nix-index-db,
plasma-manager,
nixos-cosmic,
cosmic-manager,
...
}@inputs:
let
system = "x86_64-linux";
args = {
inherit inputs;
inherit system;
pkgs-unstable = import nixpkgs-unstable {
inherit system;
config.allowUnfree = true;
};
pkgs-24-11 = import nixpkgs-24-11 {
inherit system;
config.allowUnfree = true;
};
};
speciArgs = {
inherit inputs;
inherit system;
pkgs-unstable = import nixpkgs-unstable {
inherit system;
config.allowUnfree = true;
};
pkgs-24-11 = import nixpkgs-24-11 {
inherit system;
config.allowUnfree = true;
};
flake-inputs = inputs;
};
in
{
nixosConfigurations = {
### dell-1 ###
dell-1 = nixpkgs.lib.nixosSystem {
specialArgs = args;
modules = [
nix-flatpak.nixosModules.nix-flatpak
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = speciArgs;
sharedModules = [
plasma-manager.homeManagerModules.plasma-manager
cosmic-manager.homeManagerModules.cosmic-manager
];
users = {
jeansibelius = import ./home-manager/jeansibelius/home.nix;
rozawielecka = import ./home-manager/rozawielecka/home.nix;
jacekrozycki = import ./home-manager/jacekrozycki/home.nix;
rozliczenia = import ./home-manager/rozliczenia/home.nix;
};
};
}
nix-index-db.nixosModules.nix-index
nixos-cosmic.nixosModules.default
./configuration.nix
./dell-1/import.nix
];
};
### dell-2 ###
dell-2 = nixpkgs.lib.nixosSystem {
specialArgs = args;
modules = [
nix-flatpak.nixosModules.nix-flatpak
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = args;
sharedModules = [
plasma-manager.homeManagerModules.plasma-manager
cosmic-manager.homeManagerModules.cosmic-manager
];
users = {
jeansibelius = import ./home-manager/jeansibelius/home.nix;
rozawielecka = import ./home-manager/rozawielecka/home.nix;
# jacekrozycki = import ./home-manager/jacekrozycki/home.nix;
# rozliczenia = import ./home-manager/rozliczenia/home.nix;
};
};
}
nix-index-db.nixosModules.nix-index
nixos-cosmic.nixosModules.default
./configuration.nix
./dell-2/import.nix
];
};
### dell-3 ###
dell-3 = nixpkgs.lib.nixosSystem {
specialArgs = args;
modules = [
nix-flatpak.nixosModules.nix-flatpak
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = args;
sharedModules = [
plasma-manager.homeManagerModules.plasma-manager
cosmic-manager.homeManagerModules.cosmic-manager
];
users = {
jeansibelius = import ./home-manager/jeansibelius/home.nix;
rozawielecka = import ./home-manager/rozawielecka/home.nix;
jacekrozycki = import ./home-manager/jacekrozycki/home.nix;
rozliczenia = import ./home-manager/rozliczenia/home.nix;
};
};
}
nix-index-db.nixosModules.nix-index
nixos-cosmic.nixosModules.default
./configuration.nix
./dell-3/import.nix
];
};
};
};
}
configuration.nix is in several files, so I’ll try to find only those with nixpkgs. This is my general packages file (for whole system):
{ config, pkgs-unstable, pkgs-24-11, lib, ...}:
{
# imports = [ ./kde-packages.nix ];
nixpkgs.config.allowUnfree = true;
environment = {
systemPackages = [
pkgs-24-11.kdePackages.partitionmanager
pkgs-24-11.kdePackages.skanpage
# pkgs-24-11.kdePackages.kalarm
pkgs-24-11.libreoffice
pkgs-24-11.jre8
pkgs-24-11.audacity
pkgs-unstable.home-manager
pkgs-24-11.kitty
# pkgs-24-11.rustdesk
# pkgs-unstable.rustdesk
pkgs-unstable.onedrive
pkgs-unstable.vlc
pkgs-24-11.vscodium
pkgs-24-11.appimage-run
pkgs-24-11.emacs
pkgs-unstable.vulnix
pkgs-unstable.vim
pkgs-unstable.ctop
pkgs-unstable.ftop
pkgs-unstable.atop
pkgs-unstable.htop
pkgs-unstable.btop
pkgs-unstable.iftop
pkgs-unstable.powertop
pkgs-unstable.sl
pkgs-unstable.fastfetch
pkgs-24-11.gptfdisk
pkgs-24-11.usbutils
pkgs-24-11.exfatprogs
pkgs-24-11.tree
pkgs-24-11.lm_sensors
pkgs-24-11.killall
pkgs-24-11.stress
pkgs-24-11.s-tui
pkgs-24-11.stress-ng
pkgs-24-11.memtester
pkgs-unstable.ncdu
pkgs-unstable.nnn
pkgs-unstable.fff
pkgs-24-11.ventoy-full
];
};
services = {
flatpak = {
enable = true;
update = {
auto = {
enable = true;
onCalendar = "daily";
};
};
packages = [
"com.rustdesk.RustDesk" # RustDesk
"com.github.tchx84.Flatseal" # Flatseal
"org.signal.Signal" # Signal
"com.spotify.Client" # Spotify
# browsers:
"one.ablaze.floorp" # Floorp
"com.vivaldi.Vivaldi" # Vivaldi
/*
"us.zoom.Zoom" # Zoom
"org.audacityteam.Audacity" # Audacity
"org.videolan.VLC" # VLC
"net.nokyan.Resources" # Resources
"org.asamk.SignalCli" # Signal cli
"com.github.IsmaelMartinez.teams_for_linux" # Teams
"org.gnome.Logs" # Logs
"com.nextcloud.desktopclient.nextcloud" # Nextcloud desktop
"com.play0ad.zeroad" # 0 A. D.
"dev.tchx84.Gameeky" # Gameeky
*/
];
};
};
}
This is my home.nix (here I import other files and declare packages):
{config, pkgs, pkgs-24-11, pkgs-unstable, inputs, ...}:
{
imports = [
../shared/shared.nix
./systemd-services.nix
./plasma-manager/plasma-manager.nix
./hyprland/hyprland.nix
./syncthing/syncthing.nix
./fusuma/fusuma.nix
./cosmic/cosmic.nix
inputs.nix-flatpak.homeManagerModules.nix-flatpak
];
home = {
stateVersion = "24.11";
username = "jeansibelius";
homeDirectory = "/home/jeansibelius";
packages = [
pkgs-unstable.musescore
pkgs-unstable.muse-sounds-manager
pkgs-24-11.frescobaldi
pkgs-unstable.gimp
pkgs-unstable.flameshot
pkgs-unstable.eaglemode
pkgs-unstable.zathura
pkgs-unstable.youtube-tui
pkgs-24-11.libreoffice
pkgs-24-11.teams-for-linux
pkgs-24-11.lmms
pkgs-unstable.lynx
# pkgs-unstable.libwebp # converts webp into jpg
pkgs-unstable.tagainijisho
pkgs-unstable.protonvpn-gui
pkgs-unstable.protonmail-desktop
pkgs-unstable.proton-pass
pkgs-24-11.yt-dlp
pkgs-24-11.mindustry-wayland
pkgs-unstable.asc
pkgs-24-11.ventoy-full
];
};
services.flatpak.packages = [
"com.usebottles.bottles" # Bottles
"com.discordapp.Discord" # Discord
"de.haeckerfelix.Shortwave" # Shortwave
"org.raspberrypi.rpi-imager" # Raspberry Pi imager
"org.freac.freac" # Fre:ac
"com.valvesoftware.Steam" # Steam
"app.zen_browser.zen" # Zen
"io.freetubeapp.FreeTube" # Youtube
"org.supertuxproject.SuperTux" # SuperTux
];
programs = {
git = {
enable = true;
userName = "xxxxxxxxx";
userEmail = "xxxxxxxxx";
};
obs-studio = {
enable = true;
};
emacs = {
enable = true;
package = pkgs-unstable.emacs;
};
};
}
(Every user on my laptops has used nixpkgs in their home.nix, should I show those files also?)
This is my Hyprland config:
{ config, lib, pkgs, pkgs-24-11, pkgs-unstable, osConfig, ... }:
{
home.packages = [
pkgs-unstable.waybar
pkgs-unstable.wofi
];
programs.kitty.enable = true;
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
settings = {
exec-once = [
"waybar"
];
lib.mkMerge = [
(lib.mkIf (osConfig.networking.hostName == "dell-1") {
monitor = [
"eDP-1, 1366x768@60, 0x0, 1"
"HDMI-A-1, 1920x1080@100, 0x0, 1"
];
})
(lib.mkIf (osConfig.networking.hostName == "dell-3") {
monitor = "eDP-1, 1920x1080@120, 0x0, 1";
})
];
# keybindings:
"$mod" = "SUPER";
bindr = [
"$mod, SUPER_L, exec, wofi --show run"
"$mod, K, exec, kitty"
"$mod, E, exec, hyprctl dispatch exit"
"$mod, V, exec, com.vivaldi, Vivaldi"
"$mod, N, exec, com.vivaldi.Vivaldi.desktop"
"$mod, B, exec, brave"
"$mod, F, exec, one.ablaze.floorp"
"$mod, H, exec, systemctl hibernate"
"$mod, C, exec, closewindow"
];
input = {
natural_scroll = "true";
touchpad.natural_scroll = "true";
};
};
};
services.hyprpaper = {
enable = true;
settings = {
# wallpaper:
"$wallpaper" = "~/.config/home-manager/hyprland/wallpaper/nausicaa.jpg";
preload = "$wallpaper";
wallpaper = ", $wallpaper";
};
};
}
Please let me know if there is something hacky in here, I would love to hear your thoughts!