Merge pull request #2 from gytic/module

Adding it as a module for easier import
This commit is contained in:
Peritia 2025-07-25 20:13:42 +02:00 committed by GitHub
commit a303c5fdb2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
21 changed files with 185 additions and 118 deletions

View file

@ -23,48 +23,24 @@ in {
# Home Manager integration
inputs.home-manager.nixosModules.home-manager
# nixos95
inputs.self.nixosModules.nixos95
];
################################################################
# Display & Desktop Environment
################################################################
services.xserver = {
nixos95 = {
enable = true;
desktopManager.xfce.enable = true;
xkb = {
layout = "de";
variant = "";
};
user = username;
};
services.xserver.displayManager.lightdm.enable = false;
services.displayManager.sddm = {
enable = true;
package = pkgs.qt6Packages.sddm;
};
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
################################################################
# System Packages (XFCE & Utilities)
################################################################
environment.systemPackages = with pkgs; [
xdg-desktop-portal-gtk
# XFCE Core
xfce.xfwm4
xfce.xfce4-panel
xfce.xfce4-session
xfce.xfce4-settings
xfce.thunar
xfce.mousepad
xfce.xfce4-terminal
xfce.xfce4-appfinder
xfce.xfce4-power-manager
xfce.xfce4-notifyd
xfce.xfce4-whiskermenu-plugin
# Optional Extras
xfce.gigolo

View file

@ -24,9 +24,6 @@ in {
# All Home Manager Modules
../../../../Modules/Applications
# Extended Retro theme
../../../../Modules/Desktops/XFCE-retro
# Desktop applications
./desktop.nix
];

View file

@ -1,79 +0,0 @@
{
config,
pkgs,
lib,
...
}: let
chicago95 = pkgs.callPackage ../../../Ressources/Themes/Chicago95/chicago95.nix {};
dotfilesPath = ./Dotfiles;
resourcesPath = ../../../Ressources;
wallpaperFile = "Wallpaper/NixOS-95-wallpaper.png";
wallpaperPath = "${config.home.homeDirectory}/${wallpaperFile}";
wallpaperOrigin = "${resourcesPath}/Images/Wallpapers/Wallpaper-1.png";
dotfiles = "${dotfilesPath}";
in {
gtk = {
enable = true;
theme = {
name = "Chicago95";
package = chicago95;
};
iconTheme = {
name = "Win95_plus";
package = pkgs.callPackage ../../../Ressources/Themes/Win95_plus/win95_plus.nix {};
};
cursorTheme = {
name = "Chicago95";
package = chicago95;
};
font = {
name = "Sans";
size = 12;
};
};
home.pointerCursor = {
name = "Chicago95";
package = chicago95;
size = 24;
gtk.enable = true;
x11.enable = true;
};
home.packages = with pkgs; [
xfce.xfce4-panel
xfce.xfconf
xfce.xfdesktop
xfce.xfce4-whiskermenu-plugin
xfce.xfce4-docklike-plugin
xorg.xrandr
];
home.file = {
"${wallpaperFile}" = {
source = wallpaperOrigin;
};
};
xdg.configFile = {
"xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml".source = "${dotfiles}/xfce4-desktop.xml";
"xfce4/xfconf/xfce-perchannel-xml/xfce4-sessions.xml".source = "${dotfiles}/xfce4-sessions.xml";
"xfce4/xfconf/xfce-perchannel-xml/xsettings.xml".source = "${dotfiles}/xsettings.xml";
"xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml".source = "${dotfiles}/xfwm4.xml";
"xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml".source = "${dotfiles}/xfce4-keyboard-shortcuts.xml";
# Panel:
"xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml".source = "${dotfiles}/xfce4-panel.xml";
"xfce4/panel/launcher-13/brave.desktop".source = "${dotfiles}/launcher-13/brave.desktop";
"xfce4/panel/launcher-14/signal.desktop".source = "${dotfiles}/launcher-14/signal.desktop";
"xfce4/panel/launcher-15/obsidian.desktop".source = "${dotfiles}/launcher-15/obsidian.desktop";
"xfce4/panel/launcher-16/spotify.desktop".source = "${dotfiles}/launcher-16/spotify.desktop";
};
home.activation.applyXfceTweaks = lib.hm.dag.entryAfter ["writeBoundary"] ''
${pkgs.xfce.xfdesktop}/bin/xfdesktop --reload
'';
}

View file

@ -40,11 +40,15 @@ NixOS-95/
│ └── user-vars.nix
├── Modules/
│ ├── Applications/
│ ├── Desktops/
│ │ └── XFCE-retro/
│ │ ├── default.nix
│ │ └── Dotfiles/
│ └── System/
├── nixos95
│   ├── dotfiles/
│   ├── core.nix
│   ├── default.nix
│   ├── desktop.nix
│   ├── keybinds.nix
│   ├── taskbar.nix
│   └── theme.nix
├── Ressources/
│ ├── Icons/
│ ├── Images/

View file

@ -23,6 +23,9 @@
home-manager,
...
}: {
nixosModules.nixos95 = import ./nixos95;
nixosConfigurations = {
############################################################
# 💻 Default Host

22
nixos95/core.nix Normal file
View file

@ -0,0 +1,22 @@
{ config, lib, pkgs, ... }: let
cfg = config.nixos95;
in lib.mkIf cfg.enable {
services.xserver = {
enable = true;
desktopManager.xfce.enable = true;
xkb = {
layout = "de";
variant = "";
};
};
services.xserver.displayManager.lightdm.enable = false;
services.displayManager.sddm = {
enable = true;
package = pkgs.qt6Packages.sddm;
};
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
}

24
nixos95/default.nix Normal file
View file

@ -0,0 +1,24 @@
{ config, lib, ...}: let
cfg = config.nixos95;
in {
options.nixos95 = {
enable = lib.mkEnableOption "NixOS-95 Desktop environment";
user = lib.mkOption {
description = ''
Username of the home-manager user.
'';
type = lib.types.str;
example = "user";
};
};
imports = [
./core.nix
./desktop.nix
./keybinds.nix
./taskbar.nix
./theme.nix
];
}

35
nixos95/desktop.nix Normal file
View file

@ -0,0 +1,35 @@
{ inputs, config, lib, pkgs, ... }: let
cfg = config.nixos95;
in {
options.nixos95 = {
wallpaper = lib.mkOption {
description = "The wallpaper to use";
type = lib.types.path;
default = "${inputs.self}/Ressources/Images/Wallpapers/Wallpaper-1.png";
};
};
config = lib.mkIf cfg.enable {
home-manager.users.${cfg.user} = {
xdg.configFile = {
"xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml" = let
sed = lib.getExe pkgs.gnused;
desktop = pkgs.runCommand "desktop.xml" { } ''
${sed} -e "s|NIXOS-95_WALLPAPER|${cfg.wallpaper}|g" ${./dotfiles/xfce4-desktop.xml} > $out
'';
in {
force = true;
source = desktop;
};
};
};
};
}

View file

@ -5,13 +5,13 @@
<property name="backdrop" type="empty">
<property name="screen0" type="empty">
<property name="monitor0" type="empty">
<property name="image-path" type="string" value="/home/user/Wallpaper/NixOS-95-wallpaper.png"/>
<property name="image-path" type="string" value="NIXOS-95_WALLPAPER"/>
<property name="image-show" type="bool" value="true"/>
<property name="image-style" type="int" value="5"/>
</property>
<property name="monitoreDP-1" type="empty">
<property name="workspace0" type="empty">
<property name="last-image" type="string" value="/home/user/Wallpaper/NixOS-95-wallpaper.png"/>
<property name="last-image" type="string" value="NIXOS-95_WALLPAPER"/>
<property name="image-style" type="int" value="5"/>
</property>
</property>

20
nixos95/keybinds.nix Normal file
View file

@ -0,0 +1,20 @@
/**
* For now this just hard copies the config file.
* This can be improved by allowing users to define there own keybinds
*/
{ config, lib, ... }: let
cfg = config.nixos95;
in lib.mkIf cfg.enable {
home-manager.users.${cfg.user} = {
xdg.configFile = {
"xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml" = {
force = true;
source = ./dotfiles/xfce4-keyboard-shortcuts.xml;
};
};
};
}

30
nixos95/taskbar.nix Normal file
View file

@ -0,0 +1,30 @@
/**
* For now this just hard copies the config file.
* This can be improved by allowing users to define there own task bar config
*/
{ config, lib, pkgs, ... }: let
cfg = config.nixos95;
in lib.mkIf cfg.enable {
environment.systemPackages = [
pkgs.xfce.xfce4-whiskermenu-plugin
];
home-manager.users.${cfg.user} = {
xdg.configFile = {
"xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml" = {
force = true;
source = ./dotfiles/xfce4-panel.xml;
};
# Panel:
"xfce4/panel/launcher-13/brave.desktop".source = ./dotfiles/launcher-13/brave.desktop;
"xfce4/panel/launcher-14/signal.desktop".source = ./dotfiles/launcher-14/signal.desktop;
"xfce4/panel/launcher-15/obsidian.desktop".source = ./dotfiles/launcher-15/obsidian.desktop;
"xfce4/panel/launcher-16/spotify.desktop".source = ./dotfiles/launcher-16/spotify.desktop;
};
};
}

35
nixos95/theme.nix Normal file
View file

@ -0,0 +1,35 @@
{ inputs, config, lib, pkgs, ... }: let
cfg = config.nixos95;
theme_dir = "${inputs.self}/Ressources/Themes";
baseTheme = {
name = "Chicago95";
package = pkgs.callPackage "${theme_dir}/Chicago95/chicago95.nix" { };
};
iconTheme = {
name = "Win95_plus";
package = pkgs.callPackage "${theme_dir}/Win95_plus/win95_plus.nix" { };
};
in lib.mkIf cfg.enable {
home-manager.users.${cfg.user} = {
gtk = {
enable = true;
theme = baseTheme;
iconTheme = iconTheme;
cursorTheme = baseTheme;
font = {
name = "Sans";
size = 12;
};
};
home.pointerCursor = {
size = 24;
gtk.enable = true;
x11.enable = true;
} // baseTheme;
};
}