From 6a9de226ef13c7637435b0ad25c3752a02077772 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Fri, 25 Jul 2025 18:04:18 +0200 Subject: [PATCH 01/40] feat(nixos-95): extract DE themining into nixosModule the desktop environment can be included via `self.nixosModules.nixos95` this will expose two options (for now): nixos95.enable -> enable the desktop environment nixos95.wallpaper -> path to the wallpaper to use currently the setup is closy coupled to this configuration, which will change in the future, so it can be used with any configuration --- .../Hosts/Default/configuration.nix | 36 ++------- Configurations/Hosts/Default/home/home.nix | 3 - Modules/Desktops/XFCE-retro/default.nix | 79 ------------------- README.md | 12 ++- flake.nix | 3 + nixos95/core.nix | 22 ++++++ nixos95/default.nix | 24 ++++++ nixos95/desktop.nix | 35 ++++++++ .../dotfiles}/launcher-13/brave.desktop | 0 .../dotfiles}/launcher-14/signal.desktop | 0 .../dotfiles}/launcher-15/obsidian.desktop | 0 .../dotfiles}/launcher-16/spotify.desktop | 0 .../dotfiles}/xfce4-desktop.xml | 4 +- .../dotfiles}/xfce4-keyboard-shortcuts.xml | 0 .../dotfiles}/xfce4-panel.xml | 0 .../dotfiles}/xfce4-sessions.xml | 0 .../Dotfiles => nixos95/dotfiles}/xfwm4.xml | 0 .../dotfiles}/xsettings.xml | 0 nixos95/keybinds.nix | 20 +++++ nixos95/taskbar.nix | 30 +++++++ nixos95/theme.nix | 35 ++++++++ 21 files changed, 185 insertions(+), 118 deletions(-) delete mode 100644 Modules/Desktops/XFCE-retro/default.nix create mode 100644 nixos95/core.nix create mode 100644 nixos95/default.nix create mode 100644 nixos95/desktop.nix rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/launcher-13/brave.desktop (100%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/launcher-14/signal.desktop (100%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/launcher-15/obsidian.desktop (100%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/launcher-16/spotify.desktop (100%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/xfce4-desktop.xml (85%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/xfce4-keyboard-shortcuts.xml (100%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/xfce4-panel.xml (100%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/xfce4-sessions.xml (100%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/xfwm4.xml (100%) rename {Modules/Desktops/XFCE-retro/Dotfiles => nixos95/dotfiles}/xsettings.xml (100%) create mode 100644 nixos95/keybinds.nix create mode 100644 nixos95/taskbar.nix create mode 100644 nixos95/theme.nix diff --git a/Configurations/Hosts/Default/configuration.nix b/Configurations/Hosts/Default/configuration.nix index 8df8f3e..197a190 100644 --- a/Configurations/Hosts/Default/configuration.nix +++ b/Configurations/Hosts/Default/configuration.nix @@ -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 @@ -136,4 +112,4 @@ in { ################################################################ system.stateVersion = "25.05"; -} \ No newline at end of file +} diff --git a/Configurations/Hosts/Default/home/home.nix b/Configurations/Hosts/Default/home/home.nix index 7c4a2a1..c81b378 100644 --- a/Configurations/Hosts/Default/home/home.nix +++ b/Configurations/Hosts/Default/home/home.nix @@ -24,9 +24,6 @@ in { # All Home Manager Modules ../../../../Modules/Applications - # Extended Retro theme - ../../../../Modules/Desktops/XFCE-retro - # Desktop applications ./desktop.nix ]; diff --git a/Modules/Desktops/XFCE-retro/default.nix b/Modules/Desktops/XFCE-retro/default.nix deleted file mode 100644 index c561c3a..0000000 --- a/Modules/Desktops/XFCE-retro/default.nix +++ /dev/null @@ -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 - ''; -} diff --git a/README.md b/README.md index cf8f3ad..e6f3eda 100644 --- a/README.md +++ b/README.md @@ -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/ diff --git a/flake.nix b/flake.nix index 8e08c98..2950a72 100644 --- a/flake.nix +++ b/flake.nix @@ -23,6 +23,9 @@ home-manager, ... }: { + + nixosModules.nixos95 = import ./nixos95; + nixosConfigurations = { ############################################################ # 💻 Default Host diff --git a/nixos95/core.nix b/nixos95/core.nix new file mode 100644 index 0000000..5695274 --- /dev/null +++ b/nixos95/core.nix @@ -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 ]; + +} diff --git a/nixos95/default.nix b/nixos95/default.nix new file mode 100644 index 0000000..744b77b --- /dev/null +++ b/nixos95/default.nix @@ -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 + ]; + +} diff --git a/nixos95/desktop.nix b/nixos95/desktop.nix new file mode 100644 index 0000000..9cfd47e --- /dev/null +++ b/nixos95/desktop.nix @@ -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; + }; + }; + + }; + + }; + +} diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/launcher-13/brave.desktop b/nixos95/dotfiles/launcher-13/brave.desktop similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/launcher-13/brave.desktop rename to nixos95/dotfiles/launcher-13/brave.desktop diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/launcher-14/signal.desktop b/nixos95/dotfiles/launcher-14/signal.desktop similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/launcher-14/signal.desktop rename to nixos95/dotfiles/launcher-14/signal.desktop diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/launcher-15/obsidian.desktop b/nixos95/dotfiles/launcher-15/obsidian.desktop similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/launcher-15/obsidian.desktop rename to nixos95/dotfiles/launcher-15/obsidian.desktop diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/launcher-16/spotify.desktop b/nixos95/dotfiles/launcher-16/spotify.desktop similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/launcher-16/spotify.desktop rename to nixos95/dotfiles/launcher-16/spotify.desktop diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/xfce4-desktop.xml b/nixos95/dotfiles/xfce4-desktop.xml similarity index 85% rename from Modules/Desktops/XFCE-retro/Dotfiles/xfce4-desktop.xml rename to nixos95/dotfiles/xfce4-desktop.xml index 8c8d4cb..f74c768 100644 --- a/Modules/Desktops/XFCE-retro/Dotfiles/xfce4-desktop.xml +++ b/nixos95/dotfiles/xfce4-desktop.xml @@ -5,13 +5,13 @@ - + - + diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/xfce4-keyboard-shortcuts.xml b/nixos95/dotfiles/xfce4-keyboard-shortcuts.xml similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/xfce4-keyboard-shortcuts.xml rename to nixos95/dotfiles/xfce4-keyboard-shortcuts.xml diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/xfce4-panel.xml b/nixos95/dotfiles/xfce4-panel.xml similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/xfce4-panel.xml rename to nixos95/dotfiles/xfce4-panel.xml diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/xfce4-sessions.xml b/nixos95/dotfiles/xfce4-sessions.xml similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/xfce4-sessions.xml rename to nixos95/dotfiles/xfce4-sessions.xml diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/xfwm4.xml b/nixos95/dotfiles/xfwm4.xml similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/xfwm4.xml rename to nixos95/dotfiles/xfwm4.xml diff --git a/Modules/Desktops/XFCE-retro/Dotfiles/xsettings.xml b/nixos95/dotfiles/xsettings.xml similarity index 100% rename from Modules/Desktops/XFCE-retro/Dotfiles/xsettings.xml rename to nixos95/dotfiles/xsettings.xml diff --git a/nixos95/keybinds.nix b/nixos95/keybinds.nix new file mode 100644 index 0000000..06b92ed --- /dev/null +++ b/nixos95/keybinds.nix @@ -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; + }; + }; + + }; + +} diff --git a/nixos95/taskbar.nix b/nixos95/taskbar.nix new file mode 100644 index 0000000..1c74c8b --- /dev/null +++ b/nixos95/taskbar.nix @@ -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; + }; + + }; + +} diff --git a/nixos95/theme.nix b/nixos95/theme.nix new file mode 100644 index 0000000..e0436a9 --- /dev/null +++ b/nixos95/theme.nix @@ -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; + }; + +} + From ddcb125ee3502f992ab2ef95b7b84718647127b5 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Sun, 27 Jul 2025 01:28:01 +0200 Subject: [PATCH 02/40] feat(taskbar): allow users to configure the taskbar there are now options to: - enable a battery icon (nixos95.taskbar.battery-plugin.enable) - change the home icon (nixos95.taskbar.homeIcon) - define pinned applications (nixos95.taskbar.applications) --- nixos95/dotfiles/battery.rc | 19 ++ nixos95/dotfiles/launcher-13/brave.desktop | 10 - nixos95/dotfiles/launcher-14/signal.desktop | 11 - nixos95/dotfiles/launcher-15/obsidian.desktop | 10 - nixos95/dotfiles/launcher-16/spotify.desktop | 10 - nixos95/dotfiles/xfce4-panel.xml | 81 ------- nixos95/taskbar.nix | 215 ++++++++++++++++-- 7 files changed, 218 insertions(+), 138 deletions(-) create mode 100644 nixos95/dotfiles/battery.rc delete mode 100644 nixos95/dotfiles/launcher-13/brave.desktop delete mode 100644 nixos95/dotfiles/launcher-14/signal.desktop delete mode 100644 nixos95/dotfiles/launcher-15/obsidian.desktop delete mode 100644 nixos95/dotfiles/launcher-16/spotify.desktop delete mode 100644 nixos95/dotfiles/xfce4-panel.xml diff --git a/nixos95/dotfiles/battery.rc b/nixos95/dotfiles/battery.rc new file mode 100644 index 0000000..cc72256 --- /dev/null +++ b/nixos95/dotfiles/battery.rc @@ -0,0 +1,19 @@ +display_label=false +display_icon=true +display_power=false +display_percentage=false +display_bar=false +display_time=false +tooltip_display_percentage=true +tooltip_display_time=false +low_percentage=30 +critical_percentage=20 +action_on_low=1 +action_on_critical=1 +hide_when_full=0 +colorA=rgb(119,118,123) +colorH=rgb(143,240,164) +colorL=rgb(248,228,92) +colorC=rgb(237,51,59) +command_on_low= +command_on_critical= diff --git a/nixos95/dotfiles/launcher-13/brave.desktop b/nixos95/dotfiles/launcher-13/brave.desktop deleted file mode 100644 index 82e79b8..0000000 --- a/nixos95/dotfiles/launcher-13/brave.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=Brave -GenericName=Web Browser -Comment=Browse the Web -Exec=brave -Icon=world -Terminal=false -Categories=Network;WebBrowser; diff --git a/nixos95/dotfiles/launcher-14/signal.desktop b/nixos95/dotfiles/launcher-14/signal.desktop deleted file mode 100644 index cd6cee7..0000000 --- a/nixos95/dotfiles/launcher-14/signal.desktop +++ /dev/null @@ -1,11 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=Signal - -Comment=Private Messenger -Exec=signal-desktop %U -Icon=signal-desktop -Terminal=false -Categories=Network;InstantMessaging; - diff --git a/nixos95/dotfiles/launcher-15/obsidian.desktop b/nixos95/dotfiles/launcher-15/obsidian.desktop deleted file mode 100644 index 80b6393..0000000 --- a/nixos95/dotfiles/launcher-15/obsidian.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=Obsidian - -Comment=Markdown Editor -Exec=obsidian %u -Icon=obsidian -Terminal=false -Categories=Office;Utility; \ No newline at end of file diff --git a/nixos95/dotfiles/launcher-16/spotify.desktop b/nixos95/dotfiles/launcher-16/spotify.desktop deleted file mode 100644 index e514b9d..0000000 --- a/nixos95/dotfiles/launcher-16/spotify.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Version=1.0 -Type=Application -Name=Spotify - -Comment=Spotify Music -Exec=spotify %U -Icon=spotify -Terminal=false -Categories=AudioVideo;Player; diff --git a/nixos95/dotfiles/xfce4-panel.xml b/nixos95/dotfiles/xfce4-panel.xml deleted file mode 100644 index 6286790..0000000 --- a/nixos95/dotfiles/xfce4-panel.xml +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nixos95/taskbar.nix b/nixos95/taskbar.nix index 1c74c8b..e3e81db 100644 --- a/nixos95/taskbar.nix +++ b/nixos95/taskbar.nix @@ -3,28 +3,211 @@ * 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 { + cfg = config.nixos95.taskbar; + user = config.nixos95.user; + t = lib.types; +in { - environment.systemPackages = [ - pkgs.xfce.xfce4-whiskermenu-plugin - ]; + options.nixos95.taskbar = { - home-manager.users.${cfg.user} = { - - xdg.configFile = { - "xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml" = { - force = true; - source = ./dotfiles/xfce4-panel.xml; + homeIcon = lib.mkOption { + description = '' + Home icon used in the lefter corner of the taskbar + + Can be either a `path` to an icon to use, + or the name (string) of an icon in the current theme. + This will be the `Win95_plus` theme by default. + You can check for existing icons inside `/Ressources/Icons/Win95_plus`. + ''; + default = "whisker-menu-button"; + type = t.either t.str t.path; + example = "world"; + }; + + battery-plugin = { + enable = lib.mkOption { + description = '' + Enable the battery plugin in the taskbar. + + This will show the charging status in the right corner. + On hover it will show the excat percentage. + ''; + default = true; + example = false; + type = t.bool; }; + }; - # 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; + applications = lib.mkOption { + description = '' + (in order) list of applications to pin in the taskbar. + + Applications must be defined as a set each with the following name-value paris: + { + enable = bool; [optional; default = true] + name = string; [application name shown on hover; optional] + description = string; [text shown on hover; optional] + icon = string | path; [icon shown in the task bar] + terminal = bool; [start the program inside a terminal; optional; default = false] + [either pkg or exe must be defined] + pkg = package; [use mainProgramm of a nix package; e.g. pkgs.firefox] + exe = string; [provide a program name directly; e.g. firefox] + } + + The `icon` can be specified as an icon name (in the current Iocn pack) + or as a `path` to an image directly. + See `/Ressources/Icons/Win95_plus` for the default icons. + + ''; + default = [ + { + name = "Files"; + description = "View and manage local files"; + icon = "folder_open"; + exe = "exo-open --launch FileManager"; + } + { + name = "Terminal"; + description = "Run commands"; + icon = "xfce4-terminal"; + pkg = pkgs.xfce.xfce4-terminal; + } + { + name = "Browser"; + description = "Access the world wide web"; + icon = "firefox"; + exe = "exo-open --launch WebBrowser"; + } + ]; + type = t.listOf t.attrs; }; }; + config = lib.mkIf config.nixos95.enable { + + environment.systemPackages = [ + pkgs.xfce.xfce4-whiskermenu-plugin + (lib.mkIf cfg.battery-plugin.enable pkgs.xfce.xfce4-battery-plugin) + ]; + + home-manager.users.${user} = { + + xdg.configFile = { + + "xfce4/panel/battery-7.rc" = { + force = true; + enable = cfg.battery-plugin.enable; + source = ./dotfiles/battery.rc; + }; + + "xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml" = let + + ifBattery = str : if cfg.battery-plugin.enable then str else ""; + battery_id = ifBattery '' ''; + battery_xml = ifBattery '' ''; + + applications_cfg = cfg.applications + |> lib.filter ( elm : !( lib.hasAttr "enable" elm) || elm.enable ) + |> lib.imap0 ( ptr : elm : rec { + # we start IDs in the 20 range to not get confilics with other plugins + plugin_id = "2" + builtins.toString ptr; + plugin_desktop = let + desc = if elm ? description then elm.description else ""; + term = if elm ? term && elm.term then "true" else "false"; + exec = if elm ? pkg then lib.getExe elm.pkg else elm.exe; + in pkgs.writeTextFile { + name = "${elm.name}.desktop"; + text = '' + [Desktop Entry] + Version=1.0 + Type=Application + Name=${elm.name} + Icon=${elm.icon} + Exec=${exec} + Comment=${desc} + Terminal=${term} + ''; + }; + plugin_xml = '' + + + + + + + ''; + }); + + app_ids = applications_cfg + |> lib.map ( elm : '' '' ) + |> lib.concatStringsSep "\n"; + app_xml = applications_cfg + |> lib.map ( elm : elm.plugin_xml ) + |> lib.concatStringsSep "\n"; + + in { + force = true; + text = '' + + + + + + + + + + + + + + + ${app_ids} + + + + + ${battery_id} + + + + + + + + + + + + ${app_xml} + + + + + + + + + + + + + + + + + + + ${battery_xml} + + + ''; + }; + + }; + + }; + }; + } From ed87c8bd4697392b10d3df332ceee8a2796bee50 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Sun, 27 Jul 2025 01:29:16 +0200 Subject: [PATCH 03/40] config: migrate to new config options 1. enable pipe-operators 2. reapply the correct taskbar applications 3. disable battery plugin --- .../Hosts/Default/configuration.nix | 31 +++++++++++++++++++ Modules/System/common.nix | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/Configurations/Hosts/Default/configuration.nix b/Configurations/Hosts/Default/configuration.nix index 197a190..733ce59 100644 --- a/Configurations/Hosts/Default/configuration.nix +++ b/Configurations/Hosts/Default/configuration.nix @@ -34,6 +34,37 @@ in { nixos95 = { enable = true; user = username; + + taskbar = { + homeIcon = "whisker-menu-button"; + battery-plugin.enable = false; + applications = [ + { + name = "Brave"; + description = "Browse the Web"; + pkg = pkgs.brave; + icon = "world"; + } + { + name = "Signal"; + description = "Private Messenger"; + pkg = pkgs.signal-desktop; + icon = "signal"; + } + { + name = "Obsidian"; + description = "Markdown Editor"; + exe = "obsidian %u"; + icon = "obsidian"; + } + { + name = "Spotify"; + description = "Spotify Music"; + exe = "spotify %U"; + icon = "spotify"; + } + ]; + }; }; ################################################################ diff --git a/Modules/System/common.nix b/Modules/System/common.nix index dde1865..c5c7661 100644 --- a/Modules/System/common.nix +++ b/Modules/System/common.nix @@ -39,7 +39,7 @@ LC_TIME = "de_DE.UTF-8"; }; - nix.settings.experimental-features = ["nix-command" "flakes"]; + nix.settings.experimental-features = ["nix-command" "flakes" "pipe-operators"]; nixpkgs.config.allowUnfree = true; console.keyMap = "de"; From e4ffbff315bf7014e25dad658fb5c0a10abdc148 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Sun, 27 Jul 2025 01:34:48 +0200 Subject: [PATCH 04/40] docs: add section about experimental features --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index e6f3eda..88e033f 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,13 @@ Some have been lightly edited. Originals were created by [aconfuseddragon](https home-manager switch ``` +### Experimental Features + +NixOS-95 relys on multiple experimental nix features. These are: +1. [flakes](https://wiki.nixos.org/wiki/Flakes) +2. [pipe-operators](https://nix.dev/manual/nix/2.26/language/operators#pipe-operators) +They are needed to activate the configuration. + ### Rebuild Notes Due to how **Home Manager** and XFCE handle theming, changes may not fully apply on the first attempt. From bd2af79f22fe75c98ac3ee8a77fd9aa8ac53cd9f Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 11:12:30 +0200 Subject: [PATCH 05/40] docs: showcase how to enable experimental features --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 88e033f..e28565c 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,9 @@ Some have been lightly edited. Originals were created by [aconfuseddragon](https 3. **Build and switch to the system configuration**: ```bash - sudo nixos-rebuild switch --flake .#default + sudo nixos-rebuild switch --flake .#default \ + --extra-experimental-features flakes \ + --extra-experimental-features pipe-operators ``` 4. **Apply user settings with Home Manager**: @@ -107,6 +109,13 @@ NixOS-95 relys on multiple experimental nix features. These are: 2. [pipe-operators](https://nix.dev/manual/nix/2.26/language/operators#pipe-operators) They are needed to activate the configuration. +To enable them in your config set: +```nix +nix.settings.experimental-features = [ + "flakes" "pipe-operators" +]; +``` + ### Rebuild Notes Due to how **Home Manager** and XFCE handle theming, changes may not fully apply on the first attempt. From d5458a9fcf1f42265ceabf1db33b994a514b4784 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 15:24:12 +0200 Subject: [PATCH 06/40] feat(keybinds): add options to specify keybinds this adds two new options: nixos95.keybinds.commands -> specify normal shortcuts nixos95.keybinds.xfwm4 -> specify xfwm4 related shortcuts --- nixos95/dotfiles/xfce4-keyboard-shortcuts.xml | 197 ------------------ nixos95/keybinds.nix | 109 +++++++++- nixos95/taskbar.nix | 5 +- nixos95/util/lib.nix | 6 + 4 files changed, 110 insertions(+), 207 deletions(-) delete mode 100644 nixos95/dotfiles/xfce4-keyboard-shortcuts.xml create mode 100644 nixos95/util/lib.nix diff --git a/nixos95/dotfiles/xfce4-keyboard-shortcuts.xml b/nixos95/dotfiles/xfce4-keyboard-shortcuts.xml deleted file mode 100644 index f5582e2..0000000 --- a/nixos95/dotfiles/xfce4-keyboard-shortcuts.xml +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nixos95/keybinds.nix b/nixos95/keybinds.nix index 06b92ed..0ae9207 100644 --- a/nixos95/keybinds.nix +++ b/nixos95/keybinds.nix @@ -2,17 +2,110 @@ * 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 { +{ config, lib, pkgs, ... }: let + cfg = config.nixos95.keybinds; + t = lib.types; + slib = pkgs.callPackage ./util/lib.nix { }; +in { - home-manager.users.${cfg.user} = { + options.nixos95.keybinds = { + commands = lib.mkOption { + description = '' + Keyboard shortcuts that should be made available. - xdg.configFile = { - "xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml" = { - force = true; - source = ./dotfiles/xfce4-keyboard-shortcuts.xml; + Each keyboard shortcut is defined as a set with the follwoing schema: + { + enable = bool; [optional; default = true] + key = string; [key sequence to triggger the command] + # to specify which command to execute use on of the following: + pkg = package; [use mainProgramm of a nix package; e.g. pkgs.firefox] + exe = string; [provide a program name directly; e.g. firefox] + } + + > Modifier keys must be surrounded by angle brackets + ''; + type = t.listOf t.attrs; + default = [ + { + key = "r"; + exe = "xfce4-appfinder --collapsed"; + } + { + key = "XF86WWW"; + exe = "exo-open --launch WebBrowser"; + } + { + key = "XF86Mail"; + exe = "exo-open --launch MailReder"; + } + { + key = "Print"; + exe = "xfce4-screenshooter"; + } + ]; + }; + xfwm4 = lib.mkOption { + description = '' + Keyboard shortcuts to control xfwm4 + + Each keyboard shortcut is defined as a set with the follwoing schema: + { + enable = bool; [optional; default = true] + key = string; [key sequence to triggger the command] + # to specify which command to execute use on of the following: + pkg = package; [use mainProgramm of a nix package; e.g. pkgs.firefox] + exe = string; [provide a program name directly; e.g. firefox] + } + + > Modifier keys must be surrounded by angle brackets + ''; + type = t.listOf t.attrs; + default = [ ]; + }; + }; + + config = lib.mkIf config.nixos95.enable { + + home-manager.users.${config.nixos95.user} = { + + xdg.configFile = let + to_xml = list : list + |> lib.filter slib.isEnable + |> lib.map ( elm : let + key = lib.escapeXML elm.key; + exe = lib.escapeXML (slib.getExe elm); + in '' '') + |> lib.concatStringsSep "\n"; + commands_xml = to_xml cfg.commands; + xfwm4_xml = to_xml cfg.xfwm4; + in { + "xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml" = { + force = true; + text = '' + + + + + + + ${commands_xml} + + + + + + ${xfwm4_xml} + + + + + + + + ''; + }; }; + }; }; diff --git a/nixos95/taskbar.nix b/nixos95/taskbar.nix index e3e81db..7fad763 100644 --- a/nixos95/taskbar.nix +++ b/nixos95/taskbar.nix @@ -6,6 +6,7 @@ cfg = config.nixos95.taskbar; user = config.nixos95.user; t = lib.types; + slib = pkgs.callPackage ./util/lib.nix { }; in { options.nixos95.taskbar = { @@ -108,14 +109,14 @@ in { battery_xml = ifBattery '' ''; applications_cfg = cfg.applications - |> lib.filter ( elm : !( lib.hasAttr "enable" elm) || elm.enable ) + |> lib.filter slib.isEnable |> lib.imap0 ( ptr : elm : rec { # we start IDs in the 20 range to not get confilics with other plugins plugin_id = "2" + builtins.toString ptr; plugin_desktop = let desc = if elm ? description then elm.description else ""; term = if elm ? term && elm.term then "true" else "false"; - exec = if elm ? pkg then lib.getExe elm.pkg else elm.exe; + exec = slib.getExe elm; in pkgs.writeTextFile { name = "${elm.name}.desktop"; text = '' diff --git a/nixos95/util/lib.nix b/nixos95/util/lib.nix new file mode 100644 index 0000000..b84463e --- /dev/null +++ b/nixos95/util/lib.nix @@ -0,0 +1,6 @@ +{ lib, ... }: { + # return true if elm.enable is not set or elm.enable is true + isEnable = elm : !( lib.hasAttr "enable" elm ) || elm.enable; + # return executable path from elm.pkg if defined or elm.exe + getExe = elm : if elm ? pkg then lib.getExe elm.pkg else elm.exe; +} From 7134bd487062fd06dbf0f1df7649c8cc71fa646b Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 15:24:46 +0200 Subject: [PATCH 07/40] chore(config): port keyboard shortcuts --- .../Hosts/Default/configuration.nix | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/Configurations/Hosts/Default/configuration.nix b/Configurations/Hosts/Default/configuration.nix index 733ce59..5cddc4d 100644 --- a/Configurations/Hosts/Default/configuration.nix +++ b/Configurations/Hosts/Default/configuration.nix @@ -65,6 +65,95 @@ in { } ]; }; + + keybinds = { + commands = [ + { key="F2"; exe="xfce4-appfinder --collapsed"; } + { key="r"; exe="xfce4-appfinedr --collapsed"; } + { key="Print"; exe="xfce4-screenshooter --window"; } + { key="XF86WWW"; exe="exo-open --launch WebBrowser"; } + { key="XF86Mail"; exe="exo-open --launch MailReader"; } + { key="F3"; exe="xfce4-appfinder" ; } + { key="Print"; exe="xfce4-screenshooter"; } + { key="Escape"; exe="xfdesktop --menu"; } + { key="Print"; exe="xfce4-screenshooter -r"; } + { key="Delete"; exe="xfce4-session-logout"; } + { key="s"; exe="orca"; } + { key="t"; exe="exo-open --launch TerminalEmulator"; } + { key="f"; exe="thunar"; } + { key="l"; exe="xflock4"; } + { key="l"; exe="xflock4"; } + { key="F1"; exe="xfce4-popup-applicationsmenu"; } + { key="p"; exe="xfce4-display-settings --minimal"; } + { key="Escape"; exe="xfce4-taskmanager"; } + { key="e"; exe="thunar"; } + { key="Escape"; exe="xkill"; } + { key="HomePage"; exe="exo-open --launch WebBrowser"; } + { key="XF86Display"; exe="xfce4-display-settings --minimal"; } + ]; + xfwm4 = [ + { key="F12"; exe="workspace_12_key"; } + { key="KP_Down"; exe="tile_down_key"; } + { key="F4"; exe="close_window_key"; } + { key="KP_3"; exe="move_window_workspace_3_key"; } + { key="F2"; exe="workspace_2_key"; } + { key="F6"; exe="workspace_6_key"; } + { key="Down"; exe="down_workspace_key"; } + { key="KP_9"; exe="move_window_workspace_9_key"; } + { key="KP_Up"; exe="tile_up_key"; } + { key="End"; exe="move_window_next_workspace_key"; } + { key="F8"; exe="workspace_8_key"; } + { key="Left"; exe="move_window_left_key"; } + { key="KP_Right"; exe="tile_right_key"; } + { key="KP_4"; exe="move_window_workspace_4_key"; } + { key="Right"; exe="right_key"; } + { key="Down"; exe="down_key"; } + { key="F3"; exe="workspace_3_key"; } + { key="Page_Down"; exe="lower_window_key"; } + { key="F9"; exe="workspace_9_key"; } + { key="Tab"; exe="cycle_windows_key"; } + { key="Right"; exe="move_window_right_key"; } + { key="Right"; exe="right_workspace_key"; } + { key="F6"; exe="stick_window_key"; } + { key="KP_5"; exe="move_window_workspace_5_key"; } + { key="F11"; exe="workspace_11_key"; } + { key="F10"; exe="maximize_window_key"; } + { key="Delete"; exe="del_workspace_key"; } + { key="Tab"; exe="switch_window_key"; } + { key="d"; exe="show_desktop_key"; } + { key="F4"; exe="workspace_4_key"; } + { key="KP_Page_Up"; exe="tile_up_right_key"; } + { key="F7"; exe="move_window_key"; } + { key="Up"; exe="up_key"; } + { key="KP_6"; exe="move_window_workspace_6_key"; } + { key="F11"; exe="fullscreen_key"; } + { key="space"; exe="popup_menu_key"; } + { key="KP_Home"; exe="tile_up_left_key"; } + { key="Escape"; exe="cancel_key"; } + { key="KP_1"; exe="move_window_workspace_1_key"; } + { key="KP_Next"; exe="tile_down_right_key"; } + { key="KP_Left"; exe="tile_left_key"; } + { key="Page_Up"; exe="raise_window_key"; } + { key="Home"; exe="move_window_prev_workspace_key"; } + { key="Tab"; exe="cycle_reverse_windows_key"; } + { key="Left"; exe="left_workspace_key"; } + { key="F12"; exe="above_key"; } + { key="Up"; exe="move_window_up_key"; } + { key="F5"; exe="workspace_5_key"; } + { key="F8"; exe="resize_window_key"; } + { key="KP_7"; exe="move_window_workspace_7_key"; } + { key="KP_2"; exe="move_window_workspace_2_key"; } + { key="KP_End"; exe="tile_down_left_key"; } + { key="Up"; exe="up_workspace_key"; } + { key="F9"; exe="hide_window_key"; } + { key="F7"; exe="workspace_7_key"; } + { key="F10"; exe="workspace_10_key"; } + { key="Left"; exe="left_key"; } + { key="KP_8"; exe="move_window_workspace_8_key"; } + { key="Insert"; exe="add_workspace_key"; } + { key="F1"; exe="workspace_1_key"; } + ]; + }; }; ################################################################ From c6e68bac0a5258f5eceb7cc7ebb30a94023fe8ae Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 18:32:01 +0200 Subject: [PATCH 08/40] chore(config): port only necessary keybinds --- .../Hosts/Default/configuration.nix | 83 ------------------- 1 file changed, 83 deletions(-) diff --git a/Configurations/Hosts/Default/configuration.nix b/Configurations/Hosts/Default/configuration.nix index 5cddc4d..a7de2f6 100644 --- a/Configurations/Hosts/Default/configuration.nix +++ b/Configurations/Hosts/Default/configuration.nix @@ -68,90 +68,7 @@ in { keybinds = { commands = [ - { key="F2"; exe="xfce4-appfinder --collapsed"; } - { key="r"; exe="xfce4-appfinedr --collapsed"; } - { key="Print"; exe="xfce4-screenshooter --window"; } - { key="XF86WWW"; exe="exo-open --launch WebBrowser"; } - { key="XF86Mail"; exe="exo-open --launch MailReader"; } - { key="F3"; exe="xfce4-appfinder" ; } - { key="Print"; exe="xfce4-screenshooter"; } - { key="Escape"; exe="xfdesktop --menu"; } - { key="Print"; exe="xfce4-screenshooter -r"; } - { key="Delete"; exe="xfce4-session-logout"; } - { key="s"; exe="orca"; } - { key="t"; exe="exo-open --launch TerminalEmulator"; } - { key="f"; exe="thunar"; } - { key="l"; exe="xflock4"; } { key="l"; exe="xflock4"; } - { key="F1"; exe="xfce4-popup-applicationsmenu"; } - { key="p"; exe="xfce4-display-settings --minimal"; } - { key="Escape"; exe="xfce4-taskmanager"; } - { key="e"; exe="thunar"; } - { key="Escape"; exe="xkill"; } - { key="HomePage"; exe="exo-open --launch WebBrowser"; } - { key="XF86Display"; exe="xfce4-display-settings --minimal"; } - ]; - xfwm4 = [ - { key="F12"; exe="workspace_12_key"; } - { key="KP_Down"; exe="tile_down_key"; } - { key="F4"; exe="close_window_key"; } - { key="KP_3"; exe="move_window_workspace_3_key"; } - { key="F2"; exe="workspace_2_key"; } - { key="F6"; exe="workspace_6_key"; } - { key="Down"; exe="down_workspace_key"; } - { key="KP_9"; exe="move_window_workspace_9_key"; } - { key="KP_Up"; exe="tile_up_key"; } - { key="End"; exe="move_window_next_workspace_key"; } - { key="F8"; exe="workspace_8_key"; } - { key="Left"; exe="move_window_left_key"; } - { key="KP_Right"; exe="tile_right_key"; } - { key="KP_4"; exe="move_window_workspace_4_key"; } - { key="Right"; exe="right_key"; } - { key="Down"; exe="down_key"; } - { key="F3"; exe="workspace_3_key"; } - { key="Page_Down"; exe="lower_window_key"; } - { key="F9"; exe="workspace_9_key"; } - { key="Tab"; exe="cycle_windows_key"; } - { key="Right"; exe="move_window_right_key"; } - { key="Right"; exe="right_workspace_key"; } - { key="F6"; exe="stick_window_key"; } - { key="KP_5"; exe="move_window_workspace_5_key"; } - { key="F11"; exe="workspace_11_key"; } - { key="F10"; exe="maximize_window_key"; } - { key="Delete"; exe="del_workspace_key"; } - { key="Tab"; exe="switch_window_key"; } - { key="d"; exe="show_desktop_key"; } - { key="F4"; exe="workspace_4_key"; } - { key="KP_Page_Up"; exe="tile_up_right_key"; } - { key="F7"; exe="move_window_key"; } - { key="Up"; exe="up_key"; } - { key="KP_6"; exe="move_window_workspace_6_key"; } - { key="F11"; exe="fullscreen_key"; } - { key="space"; exe="popup_menu_key"; } - { key="KP_Home"; exe="tile_up_left_key"; } - { key="Escape"; exe="cancel_key"; } - { key="KP_1"; exe="move_window_workspace_1_key"; } - { key="KP_Next"; exe="tile_down_right_key"; } - { key="KP_Left"; exe="tile_left_key"; } - { key="Page_Up"; exe="raise_window_key"; } - { key="Home"; exe="move_window_prev_workspace_key"; } - { key="Tab"; exe="cycle_reverse_windows_key"; } - { key="Left"; exe="left_workspace_key"; } - { key="F12"; exe="above_key"; } - { key="Up"; exe="move_window_up_key"; } - { key="F5"; exe="workspace_5_key"; } - { key="F8"; exe="resize_window_key"; } - { key="KP_7"; exe="move_window_workspace_7_key"; } - { key="KP_2"; exe="move_window_workspace_2_key"; } - { key="KP_End"; exe="tile_down_left_key"; } - { key="Up"; exe="up_workspace_key"; } - { key="F9"; exe="hide_window_key"; } - { key="F7"; exe="workspace_7_key"; } - { key="F10"; exe="workspace_10_key"; } - { key="Left"; exe="left_key"; } - { key="KP_8"; exe="move_window_workspace_8_key"; } - { key="Insert"; exe="add_workspace_key"; } - { key="F1"; exe="workspace_1_key"; } ]; }; }; From 084dd141f7e261266014734ebebebe9f3613a375 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 18:44:31 +0200 Subject: [PATCH 09/40] fix(dotfiles): remove unused dotfiles --- nixos95/dotfiles/xfce4-sessions.xml | 6 -- nixos95/dotfiles/xfwm4.xml | 91 ----------------------------- nixos95/dotfiles/xsettings.xml | 45 -------------- 3 files changed, 142 deletions(-) delete mode 100644 nixos95/dotfiles/xfce4-sessions.xml delete mode 100644 nixos95/dotfiles/xfwm4.xml delete mode 100644 nixos95/dotfiles/xsettings.xml diff --git a/nixos95/dotfiles/xfce4-sessions.xml b/nixos95/dotfiles/xfce4-sessions.xml deleted file mode 100644 index 6ac9b5b..0000000 --- a/nixos95/dotfiles/xfce4-sessions.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/nixos95/dotfiles/xfwm4.xml b/nixos95/dotfiles/xfwm4.xml deleted file mode 100644 index 25adfc6..0000000 --- a/nixos95/dotfiles/xfwm4.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/nixos95/dotfiles/xsettings.xml b/nixos95/dotfiles/xsettings.xml deleted file mode 100644 index c79abe1..0000000 --- a/nixos95/dotfiles/xsettings.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 941b1bffe5d08f5e5952001a9cdc38efe723b485 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 22:18:05 +0200 Subject: [PATCH 10/40] fix(paths): use relative paths instead of inputs.self when using nixos95 from another flake, the other flake will take over the path of inputs.self and therefore break the paths. We can fix this by navigating to the root with relative notation and contiuning from there --- nixos95/desktop.nix | 2 +- nixos95/theme.nix | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nixos95/desktop.nix b/nixos95/desktop.nix index 9cfd47e..39d1c94 100644 --- a/nixos95/desktop.nix +++ b/nixos95/desktop.nix @@ -7,7 +7,7 @@ in { wallpaper = lib.mkOption { description = "The wallpaper to use"; type = lib.types.path; - default = "${inputs.self}/Ressources/Images/Wallpapers/Wallpaper-1.png"; + default = ../Ressources/Images/Wallpapers/Wallpaper-1.png; }; }; diff --git a/nixos95/theme.nix b/nixos95/theme.nix index e0436a9..a8413be 100644 --- a/nixos95/theme.nix +++ b/nixos95/theme.nix @@ -1,14 +1,14 @@ { inputs, config, lib, pkgs, ... }: let cfg = config.nixos95; - theme_dir = "${inputs.self}/Ressources/Themes"; + root = ../.; baseTheme = { name = "Chicago95"; - package = pkgs.callPackage "${theme_dir}/Chicago95/chicago95.nix" { }; + package = pkgs.callPackage "${root}/Ressources/Themes/Chicago95/chicago95.nix" { }; }; iconTheme = { name = "Win95_plus"; - package = pkgs.callPackage "${theme_dir}/Win95_plus/win95_plus.nix" { }; + package = pkgs.callPackage "${root}/Ressources/Themes/Win95_plus/win95_plus.nix" { }; }; in lib.mkIf cfg.enable { From aab066428d76b3f12f3f3fb4604e75bacfe7b2cc Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 22:30:00 +0200 Subject: [PATCH 11/40] fix(taskbar): use correct attr value to check for tui applications --- nixos95/taskbar.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos95/taskbar.nix b/nixos95/taskbar.nix index 7fad763..4b56921 100644 --- a/nixos95/taskbar.nix +++ b/nixos95/taskbar.nix @@ -115,7 +115,7 @@ in { plugin_id = "2" + builtins.toString ptr; plugin_desktop = let desc = if elm ? description then elm.description else ""; - term = if elm ? term && elm.term then "true" else "false"; + term = if elm ? terminal && elm.terminal then "true" else "false"; exec = slib.getExe elm; in pkgs.writeTextFile { name = "${elm.name}.desktop"; From 12b0f911a0304e06ebaafbd84ef0422f201f34eb Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 22:42:15 +0200 Subject: [PATCH 12/40] fix: xfwm4 keybinds xfwm4 stores important default keybinds inside the "custom" section. These important keybinds were removed in commit d5458a9fcf1f42265ceabf1db33b994a514b4784 as I thought they would be added automatically back in. This regression is now reverted. --- nixos95/dotfiles/xfwm4-keybinds.xml | 61 +++++++++++++++++++++++++++++ nixos95/keybinds.nix | 1 + 2 files changed, 62 insertions(+) create mode 100644 nixos95/dotfiles/xfwm4-keybinds.xml diff --git a/nixos95/dotfiles/xfwm4-keybinds.xml b/nixos95/dotfiles/xfwm4-keybinds.xml new file mode 100644 index 0000000..cbf5bf8 --- /dev/null +++ b/nixos95/dotfiles/xfwm4-keybinds.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nixos95/keybinds.nix b/nixos95/keybinds.nix index 0ae9207..f9a735c 100644 --- a/nixos95/keybinds.nix +++ b/nixos95/keybinds.nix @@ -94,6 +94,7 @@ in { + ${builtins.readFile ./dotfiles/xfwm4-keybinds.xml} ${xfwm4_xml} From 49037f4576ea75cea64323607cfcfe8d726d2fb9 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:26:54 +0200 Subject: [PATCH 13/40] feat(taskbar/battery-plugin): add power bar Enable the power bar to get a quick overview of the remaining battery. As the bar is not a 'perfect theme fit' (imo) there is an option to disable it (default: enabled) as well as some QoL options to change the critical and warning state as well as some display colors --- nixos95/dotfiles/battery.rc | 19 ------------ nixos95/taskbar.nix | 60 +++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 19 deletions(-) delete mode 100644 nixos95/dotfiles/battery.rc diff --git a/nixos95/dotfiles/battery.rc b/nixos95/dotfiles/battery.rc deleted file mode 100644 index cc72256..0000000 --- a/nixos95/dotfiles/battery.rc +++ /dev/null @@ -1,19 +0,0 @@ -display_label=false -display_icon=true -display_power=false -display_percentage=false -display_bar=false -display_time=false -tooltip_display_percentage=true -tooltip_display_time=false -low_percentage=30 -critical_percentage=20 -action_on_low=1 -action_on_critical=1 -hide_when_full=0 -colorA=rgb(119,118,123) -colorH=rgb(143,240,164) -colorL=rgb(248,228,92) -colorC=rgb(237,51,59) -command_on_low= -command_on_critical= diff --git a/nixos95/taskbar.nix b/nixos95/taskbar.nix index 4b56921..0400451 100644 --- a/nixos95/taskbar.nix +++ b/nixos95/taskbar.nix @@ -7,6 +7,7 @@ user = config.nixos95.user; t = lib.types; slib = pkgs.callPackage ./util/lib.nix { }; + in { options.nixos95.taskbar = { @@ -37,6 +38,42 @@ in { example = false; type = t.bool; }; + power_bar = let + mkColor = state : default : lib.mkOption { + description = "Color to show while ${state}"; + type = t.str; + inherit default; + }; + in { + enable = lib.mkOption { + description = '' + Enable the power bar, which shows the charging level. + ''; + type = t.bool; + default = true; + example = false; + }; + critical_at = lib.mkOption { + description = '' + Set the maximum battery percentage of the "critical" state + ''; + type = t.int; + default = 10; + example = 20; + }; + warning_at = lib.mkOption { + description = '' + Set the maximum battery percentage of the "warning" state + ''; + type = t.int; + default = 20; + example = 30; + }; + color_warning = mkColor "in a warning state" "rgb(248,228,92)"; + color_critical = mkColor "in a critical state" "rgb(237,51,59)"; + color_loading = mkColor "charging" "rgb(119,118,123)"; + color_default = mkColor "discharging" "rgb(143,240,164)"; + }; }; applications = lib.mkOption { @@ -99,6 +136,29 @@ in { "xfce4/panel/battery-7.rc" = { force = true; enable = cfg.battery-plugin.enable; + text = let + bar = cfg.battery-plugin.power_bar; + in '' + display_label=false + display_icon=true + display_power=false + display_percentage=false + display_bar=${if bar.enable then "true" else "false"} + display_time=false + tooltip_display_percentage=true + tooltip_display_time=false + low_percentage=${bar.warning_at} + critical_percentage=${bar.critical_at} + action_on_low=1 + action_on_critical=1 + hide_when_full=0 + colorA=${bar.color_loading} + colorH=${bar.color_default} + colorL=${bar.color_warning} + colorC=${bar.color_critical} + command_on_low= + command_on_critical= + ''; source = ./dotfiles/battery.rc; }; From f77417484489b8411cba999461614f5cd02263a3 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:33:43 +0200 Subject: [PATCH 14/40] fix(taskbar/battery): convert int to str --- nixos95/taskbar.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixos95/taskbar.nix b/nixos95/taskbar.nix index 0400451..a131371 100644 --- a/nixos95/taskbar.nix +++ b/nixos95/taskbar.nix @@ -147,8 +147,8 @@ in { display_time=false tooltip_display_percentage=true tooltip_display_time=false - low_percentage=${bar.warning_at} - critical_percentage=${bar.critical_at} + low_percentage=${builtins.toString bar.warning_at} + critical_percentage=${builtins.toString bar.critical_at} action_on_low=1 action_on_critical=1 hide_when_full=0 From d5b020d4fefeb3ccf982d654e9b0a150b10d58cc Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 28 Jul 2025 23:36:50 +0200 Subject: [PATCH 15/40] fix(taskbar/battery): remove unnecessary source definition --- nixos95/taskbar.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/nixos95/taskbar.nix b/nixos95/taskbar.nix index a131371..f4fd972 100644 --- a/nixos95/taskbar.nix +++ b/nixos95/taskbar.nix @@ -159,7 +159,6 @@ in { command_on_low= command_on_critical= ''; - source = ./dotfiles/battery.rc; }; "xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml" = let From f44e89256a983537396dc75ba841ef285f5538ac Mon Sep 17 00:00:00 2001 From: Peritia Date: Tue, 5 Aug 2025 10:05:11 +0200 Subject: [PATCH 16/40] Update README.md for Beta instructions --- README.md | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e28565c..6ca1201 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Some have been lightly edited. Originals were created by [aconfuseddragon](https --- -## Installation +## Installation - BETA > Requires a NixOS install. @@ -82,21 +82,25 @@ Some have been lightly edited. Originals were created by [aconfuseddragon](https cd NixOS ``` -2. **Regenerate hardware configuration**: +2. **Switch to Dev**: + + ```bash + git switch Dev + ``` + +3. **Regenerate hardware configuration**: ```bash sudo nixos-generate-config --dir Configurations/Hosts/Default ``` -3. **Build and switch to the system configuration**: +4. **Build and switch to the system configuration**: ```bash - sudo nixos-rebuild switch --flake .#default \ - --extra-experimental-features flakes \ - --extra-experimental-features pipe-operators + sudo NIX_CONFIG="experimental-features = nix-command flakes pipe-operators" nixos-rebuild switch --flake .#default ``` -4. **Apply user settings with Home Manager**: +5. **Apply user settings with Home Manager**: ```bash home-manager switch From ca07a6a3e97eb547f935706479c043ffd0cd0572 Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 11 Aug 2025 15:58:06 +0200 Subject: [PATCH 17/40] make it importable --- flake.nix | 42 ++++-------------------------------------- 1 file changed, 4 insertions(+), 38 deletions(-) diff --git a/flake.nix b/flake.nix index 2950a72..95642d2 100644 --- a/flake.nix +++ b/flake.nix @@ -1,46 +1,12 @@ { - description = "NixOS-95"; + description = "NixOS-95: To Style your NixOS to look like Windows95"; - ################################################################ - # 🔗 Inputs - ################################################################ inputs = { - # Core NixOS packages - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - - # Home Manager - home-manager.url = "github:nix-community/home-manager"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; }; - ################################################################ - # 🚀 Outputs - ################################################################ - outputs = inputs @ { - self, - nixpkgs, - home-manager, - ... - }: { - + outputs = { self, nixpkgs, ... }: { nixosModules.nixos95 = import ./nixos95; - - nixosConfigurations = { - ############################################################ - # 💻 Default Host - ############################################################ - default = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { - inherit inputs self; - host = "default"; - }; - modules = [ - ./Configurations/Hosts/Default/configuration.nix - ]; - }; - - }; }; } + From 4cce293352387264c823286a50a53ebcf94f7175 Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 11 Aug 2025 16:02:53 +0200 Subject: [PATCH 18/40] mv to old --- .../Configurations}/Hosts/Default/configuration.nix | 0 .../Configurations}/Hosts/Default/hardware-configuration.nix | 0 .../Configurations}/Hosts/Default/home/desktop.nix | 0 .../Configurations}/Hosts/Default/home/home.nix | 0 .../Configurations}/Hosts/Default/home/user-packages.nix | 0 {Configurations => old/Configurations}/Hosts/Default/user.nix | 0 .../Configurations}/Hosts/Default/variables/system-vars.nix | 0 .../Configurations}/Hosts/Default/variables/user-vars.nix | 0 8 files changed, 0 insertions(+), 0 deletions(-) rename {Configurations => old/Configurations}/Hosts/Default/configuration.nix (100%) rename {Configurations => old/Configurations}/Hosts/Default/hardware-configuration.nix (100%) rename {Configurations => old/Configurations}/Hosts/Default/home/desktop.nix (100%) rename {Configurations => old/Configurations}/Hosts/Default/home/home.nix (100%) rename {Configurations => old/Configurations}/Hosts/Default/home/user-packages.nix (100%) rename {Configurations => old/Configurations}/Hosts/Default/user.nix (100%) rename {Configurations => old/Configurations}/Hosts/Default/variables/system-vars.nix (100%) rename {Configurations => old/Configurations}/Hosts/Default/variables/user-vars.nix (100%) diff --git a/Configurations/Hosts/Default/configuration.nix b/old/Configurations/Hosts/Default/configuration.nix similarity index 100% rename from Configurations/Hosts/Default/configuration.nix rename to old/Configurations/Hosts/Default/configuration.nix diff --git a/Configurations/Hosts/Default/hardware-configuration.nix b/old/Configurations/Hosts/Default/hardware-configuration.nix similarity index 100% rename from Configurations/Hosts/Default/hardware-configuration.nix rename to old/Configurations/Hosts/Default/hardware-configuration.nix diff --git a/Configurations/Hosts/Default/home/desktop.nix b/old/Configurations/Hosts/Default/home/desktop.nix similarity index 100% rename from Configurations/Hosts/Default/home/desktop.nix rename to old/Configurations/Hosts/Default/home/desktop.nix diff --git a/Configurations/Hosts/Default/home/home.nix b/old/Configurations/Hosts/Default/home/home.nix similarity index 100% rename from Configurations/Hosts/Default/home/home.nix rename to old/Configurations/Hosts/Default/home/home.nix diff --git a/Configurations/Hosts/Default/home/user-packages.nix b/old/Configurations/Hosts/Default/home/user-packages.nix similarity index 100% rename from Configurations/Hosts/Default/home/user-packages.nix rename to old/Configurations/Hosts/Default/home/user-packages.nix diff --git a/Configurations/Hosts/Default/user.nix b/old/Configurations/Hosts/Default/user.nix similarity index 100% rename from Configurations/Hosts/Default/user.nix rename to old/Configurations/Hosts/Default/user.nix diff --git a/Configurations/Hosts/Default/variables/system-vars.nix b/old/Configurations/Hosts/Default/variables/system-vars.nix similarity index 100% rename from Configurations/Hosts/Default/variables/system-vars.nix rename to old/Configurations/Hosts/Default/variables/system-vars.nix diff --git a/Configurations/Hosts/Default/variables/user-vars.nix b/old/Configurations/Hosts/Default/variables/user-vars.nix similarity index 100% rename from Configurations/Hosts/Default/variables/user-vars.nix rename to old/Configurations/Hosts/Default/variables/user-vars.nix From 0a7f9ebc579ad382b8f082b3ca42b1d6b50055e2 Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 11 Aug 2025 16:12:18 +0200 Subject: [PATCH 19/40] renaming import --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 95642d2..3298687 100644 --- a/flake.nix +++ b/flake.nix @@ -6,7 +6,7 @@ }; outputs = { self, nixpkgs, ... }: { - nixosModules.nixos95 = import ./nixos95; + nixosModules.default = import ./nixos95; }; } From f00e1f53eef4e702ce695edcdf4a1743037becd5 Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 11 Aug 2025 16:27:29 +0200 Subject: [PATCH 20/40] Update Readme --- README.md | 119 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 75 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 6ca1201..ad9b21b 100644 --- a/README.md +++ b/README.md @@ -25,19 +25,6 @@ This is a **NixOS configuration** designed to evoke the pixel-perfect charm of * NixOS-95/ ├── flake.nix ├── flake.lock -├── Configurations/ -│ └── Hosts/ -│ └── Default/ -│ ├── configuration.nix -│ ├── hardware-configuration.nix -│ ├── user.nix -│ ├── home/ -│ │ ├── home.nix -│ │ ├── desktop.nix -│ │ └── user-packages.nix -│ └── variables/ -│ ├── system-vars.nix -│ └── user-vars.nix ├── Modules/ │ ├── Applications/ │ └── System/ @@ -60,51 +47,95 @@ NixOS-95/ --- - -### Wallpaper and Aesthetics - -Wallpapers are located in `./Resources/Images/Wallpapers`. -Some have been lightly edited. Originals were created by [aconfuseddragon](https://aconfuseddragon.itch.io/downloads). - -> I **do not own** any of the icons or wallpapers. -> If you showcase or redistribute them, **please credit the original artists**. - ---- - ## Installation - BETA -> Requires a NixOS install. +> Requirements: + nix.settings.experimental-features = ["nix-command" "flakes" "pipe-operators"]; + Enabled -1. **Clone the repository**: - ```bash - git clone https://github.com/peritia-system/NixOS-95.git NixOS - cd NixOS - ``` +### 1. Add Nyx to your flake -2. **Switch to Dev**: +```nix +# flake.nix +{ + inputs = { + nixos95.url = "github:Peritia-System/NixOS-95/Beta-import"; + nixos95.inputs.nixpkgs.follows = "nixpkgs"; + } + outputs = inputs @ { nixpkgs, nixos95, ... }: { + nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem { + modules = [ ./configuration.nix ]; + }; + }; +} +``` - ```bash - git switch Dev - ``` +### 2. Import in Configuration.nix -3. **Regenerate hardware configuration**: +```nix +# configuration.nix +{ + imports = [ inputs.self.nixosModules.nixos95 ]; +} +``` - ```bash - sudo nixos-generate-config --dir Configurations/Hosts/Default - ``` +### 3. Enable modules + +```nix +{ + # configuration.nix / or sth imported by the main config + nixos95 = { + enable = true; + user = "alex"; + + taskbar = { + homeIcon = "whisker-menu-button"; + battery-plugin.enable = false; + applications = [ + { + name = "Brave"; + description = "Browse the Web"; + pkg = pkgs.brave; + icon = "world"; + } + { + name = "Signal"; + description = "Private Messenger"; + pkg = pkgs.signal-desktop; + icon = "signal"; + } + { + name = "Obsidian"; + description = "Markdown Editor"; + exe = "obsidian %u"; + icon = "obsidian"; + } + { + name = "Spotify"; + description = "Spotify Music"; + exe = "spotify %U"; + icon = "spotify"; + } + ]; + }; + + keybinds = { + commands = [ + { key="l"; exe="xflock4"; } + ]; + }; + }; + +} +``` 4. **Build and switch to the system configuration**: ```bash sudo NIX_CONFIG="experimental-features = nix-command flakes pipe-operators" nixos-rebuild switch --flake .#default ``` - -5. **Apply user settings with Home Manager**: - - ```bash - home-manager switch - ``` +w ### Experimental Features From 57736d3b9885689bf48b5407cda507159a67f3e7 Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 11 Aug 2025 16:27:40 +0200 Subject: [PATCH 21/40] rm old configuration --- .../Hosts/Default/configuration.nix | 152 ---------------- .../Hosts/Default/hardware-configuration.nix | 42 ----- .../Hosts/Default/home/desktop.nix | 169 ------------------ .../Hosts/Default/home/home.nix | 114 ------------ .../Hosts/Default/home/user-packages.nix | 6 - old/Configurations/Hosts/Default/user.nix | 32 ---- .../Hosts/Default/variables/system-vars.nix | 3 - .../Hosts/Default/variables/user-vars.nix | 8 - 8 files changed, 526 deletions(-) delete mode 100644 old/Configurations/Hosts/Default/configuration.nix delete mode 100644 old/Configurations/Hosts/Default/hardware-configuration.nix delete mode 100644 old/Configurations/Hosts/Default/home/desktop.nix delete mode 100644 old/Configurations/Hosts/Default/home/home.nix delete mode 100644 old/Configurations/Hosts/Default/home/user-packages.nix delete mode 100644 old/Configurations/Hosts/Default/user.nix delete mode 100644 old/Configurations/Hosts/Default/variables/system-vars.nix delete mode 100644 old/Configurations/Hosts/Default/variables/user-vars.nix diff --git a/old/Configurations/Hosts/Default/configuration.nix b/old/Configurations/Hosts/Default/configuration.nix deleted file mode 100644 index a7de2f6..0000000 --- a/old/Configurations/Hosts/Default/configuration.nix +++ /dev/null @@ -1,152 +0,0 @@ -{ config, pkgs, host, lib, inputs, userconf, ... }: - -let - # Load user-specific variables - userVars = import ./variables/user-vars.nix; - inherit (userVars) username gitUsername gitEmail keyboardLayout; - nixDirectory = "/home/${username}/NixOS"; -in { - ################################################################ - # Module Imports - ################################################################ - - imports = [ - # Host-specific hardware configuration (autogenerated) - ./hardware-configuration.nix - - # System-level user definition - ./user.nix - - # Base and global modules - ../../../Modules/System - - # Home Manager integration - inputs.home-manager.nixosModules.home-manager - - # nixos95 - inputs.self.nixosModules.nixos95 - - ]; - ################################################################ - # Display & Desktop Environment - ################################################################ - - nixos95 = { - enable = true; - user = username; - - taskbar = { - homeIcon = "whisker-menu-button"; - battery-plugin.enable = false; - applications = [ - { - name = "Brave"; - description = "Browse the Web"; - pkg = pkgs.brave; - icon = "world"; - } - { - name = "Signal"; - description = "Private Messenger"; - pkg = pkgs.signal-desktop; - icon = "signal"; - } - { - name = "Obsidian"; - description = "Markdown Editor"; - exe = "obsidian %u"; - icon = "obsidian"; - } - { - name = "Spotify"; - description = "Spotify Music"; - exe = "spotify %U"; - icon = "spotify"; - } - ]; - }; - - keybinds = { - commands = [ - { key="l"; exe="xflock4"; } - ]; - }; - }; - - ################################################################ - # System Packages (XFCE & Utilities) - ################################################################ - - environment.systemPackages = with pkgs; [ - - # Optional Extras - xfce.gigolo - xfce.xfce4-screenshooter - xfce.parole - # xfce.xfce4-clipman - - # other: - zsh - - - ]; - - - - programs.steam = { - enable = true; - 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 - }; - - services.openssh.enable = true; - - programs.zsh = { - enable = true; - ohMyZsh = { - enable = true; - theme = "xiong-chiamiov-plus"; - plugins = ["git"]; - }; - }; - - - - - - ################################################################ - # Home Manager Configuration - ################################################################ - - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - backupFileExtension = "delme-HMbackup"; - - users.${username} = import ./home/home.nix { - inherit config nixDirectory pkgs; - }; - }; - - ################################################################ - # Bootloader - ################################################################ - - boot.loader = { - grub = { - enable = true; - efiSupport = false; - useOSProber = false; - devices = ["nodev"]; - }; - systemd-boot.enable = false; - efi.canTouchEfiVariables = false; - }; - - ################################################################ - # System Version - ################################################################ - - system.stateVersion = "25.05"; -} diff --git a/old/Configurations/Hosts/Default/hardware-configuration.nix b/old/Configurations/Hosts/Default/hardware-configuration.nix deleted file mode 100644 index 7a96c96..0000000 --- a/old/Configurations/Hosts/Default/hardware-configuration.nix +++ /dev/null @@ -1,42 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ - -{ config, lib, pkgs, modulesPath, ... }: - -{ - -abort '' - This file is a placeholder and should not be edited manually. - - Please run: - nixos-generate-config - - to regenerate the correct hardware configuration. - - This file was intentionally disabled to prevent accidental editing. -''; - - imports = - [ (modulesPath + "/profiles/qemu-guest.nix") - ]; - - boot.initrd.125312 = [ "ah124123ci" "xhci_pci" "¹3¹32134" "2143432" "12441234" ]; - boot.initrd.14231 = [ ]; - boot.124 = [ "124-124214" ]; - boot.1241324134 = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/9b55ed5e-1-443f-a5e8-1fb378fdad77"; - fsType = "ext4"; - }; - - swapDevices = [ 1241324134124214]; - - # Enables DHCP on each ethernet and wireless interface. In case of scripted networking - # (the default) this is the recommended approach. When using systemd-networkd it's - # still possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault 1324414124444444444444444444444444444444444; - # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; -} diff --git a/old/Configurations/Hosts/Default/home/desktop.nix b/old/Configurations/Hosts/Default/home/desktop.nix deleted file mode 100644 index d3c9050..0000000 --- a/old/Configurations/Hosts/Default/home/desktop.nix +++ /dev/null @@ -1,169 +0,0 @@ -{ config, pkgs, lib, ... }: - -let - # Your application definitions - apps = { - brave = { - name = "Brave"; - genericName = "Web Browser"; - exec = "brave"; - icon = "world"; - comment = "Browse the Web"; - terminal = false; - categories = [ "Network" "WebBrowser" ]; - }; - - terminal = { - name = "Terminal"; - exec = "xfce4-terminal"; - icon = "utilities-terminal"; - comment = "Run a terminal emulator"; - terminal = true; - categories = [ "System" "Utility" ]; - }; - - libre-calc = { - name = "Libre Calc"; - exec = "libreoffice --calc"; - icon = "libreoffice-calc"; - comment = "Spreadsheet program"; - terminal = false; - categories = [ "Office" ]; - }; - - libre-write = { - name = "Libre Write"; - exec = "libreoffice --writer"; - icon = "libreoffice-writer"; - comment = "Word processor"; - terminal = false; - categories = [ "Office" ]; - }; - - mpv = { - name = "MPV"; - exec = "mpv"; - icon = "mpv"; - comment = "Video Player"; - terminal = false; - categories = [ "AudioVideo" "Player" ]; - }; - - obsidian = { - name = "Obsidian"; - exec = "obsidian %u"; - icon = "obsidian"; - comment = "Markdown Editor"; - terminal = false; - categories = [ "Office" "Utility" ]; - }; - - gwenview = { - name = "Gwenview"; - exec = "gwenview %U"; - icon = "gwenview"; - comment = "Image Viewer"; - terminal = false; - categories = [ "Graphics" ]; - }; - - krita = { - name = "Krita"; - exec = "krita %F"; - icon = "krita"; - comment = "Digital painting"; - terminal = false; - categories = [ "Graphics" ]; - }; - - prism-launcher = { - name = "Prism Launcher"; - exec = "prismlauncher %U"; - icon = "minecraft"; - comment = "Minecraft Launcher"; - terminal = false; - categories = [ "Game" ]; - }; - - protonvpn = { - name = "ProtonVPN"; - exec = "protonvpn-app"; - icon = "protonvpn"; - comment = "VPN Client"; - terminal = false; - categories = [ "Network" "Security" ]; - }; - - signal = { - name = "Signal"; - exec = "signal-desktop %U"; - icon = "signal-desktop"; - comment = "Private Messenger"; - terminal = false; - categories = [ "Network" "InstantMessaging" ]; - }; - - vesktop = { - name = "Vesktop"; - exec = "vesktop %U"; - icon = "discord"; - comment = "Discord Client"; - terminal = false; - categories = [ "Network" "Chat" ]; - }; - - spotify = { - name = "Spotify"; - exec = "spotify %U"; - icon = "spotify"; - comment = "Spotify Music"; - terminal = false; - categories = [ "AudioVideo" "Player" ]; - }; - - okular = { - name = "Okular"; - exec = "okular %U"; - icon = "okular"; - comment = "PDF Viewer"; - terminal = false; - categories = [ "Office" "Viewer" ]; - }; - - steam = { - name = "Steam"; - exec = "steam"; - icon = "steam"; - comment = "Steam Game Platform"; - terminal = false; - categories = [ "Game" ]; - }; - }; - -in { - home.activation.desktopFiles = lib.hm.dag.entryAfter [ "writeBoundary" ] ( - '' - mkdir -p "$HOME/Desktop" - '' + (lib.concatStringsSep "\n" (lib.mapAttrsToList (name: data: - let - desktopText = '' - [Desktop Entry] - Version=1.0 - Type=Application - Name=${data.name} - ${lib.optionalString (data ? genericName) "GenericName=${data.genericName}"} - Comment=${data.comment} - Exec=${data.exec} - Icon=${data.icon} - Terminal=${if data.terminal then "true" else "false"} - Categories=${lib.concatStringsSep ";" data.categories}; - ''; - in '' - cat > "$HOME/Desktop/${name}.desktop" < Date: Mon, 11 Aug 2025 16:28:07 +0200 Subject: [PATCH 22/40] test --- .../Applications/GUI-Apps/Browser/brave/brave.nix | 0 .../Applications/GUI-Apps/Desktop-Apps/krita.nix | 0 .../Applications/GUI-Apps/Desktop-Apps/obsidian.nix | 0 .../Applications/GUI-Apps/Desktop-Apps/office-apps.nix | 0 .../Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix | 0 .../Applications/GUI-Apps/Desktop-Apps/spotify.nix | 0 .../Applications/GUI-Apps/Desktop-Apps/standard-apps.nix | 0 .../Applications/GUI-Apps/Desktop-Apps/vesktop.nix | 0 .../Applications/GUI-Apps/Desktop-Apps/vscodium.nix | 0 .../Applications/GUI-Apps/Gaming/prismlauncher.nix | 0 {Modules => temp-Modules}/Applications/GUI-Apps/VPN/protonvpn.nix | 0 {Modules => temp-Modules}/Applications/GUI-Apps/default.nix | 0 .../Applications/Shell/cli-tools/default.nix | 0 {Modules => temp-Modules}/Applications/Shell/default.nix | 0 {Modules => temp-Modules}/Applications/Shell/zsh/default.nix | 0 {Modules => temp-Modules}/Applications/default.nix | 0 {Modules => temp-Modules}/System/common.nix | 0 {Modules => temp-Modules}/System/default.nix | 0 18 files changed, 0 insertions(+), 0 deletions(-) rename {Modules => temp-Modules}/Applications/GUI-Apps/Browser/brave/brave.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Desktop-Apps/krita.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Desktop-Apps/obsidian.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Desktop-Apps/office-apps.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Desktop-Apps/spotify.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Desktop-Apps/vesktop.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Desktop-Apps/vscodium.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/Gaming/prismlauncher.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/VPN/protonvpn.nix (100%) rename {Modules => temp-Modules}/Applications/GUI-Apps/default.nix (100%) rename {Modules => temp-Modules}/Applications/Shell/cli-tools/default.nix (100%) rename {Modules => temp-Modules}/Applications/Shell/default.nix (100%) rename {Modules => temp-Modules}/Applications/Shell/zsh/default.nix (100%) rename {Modules => temp-Modules}/Applications/default.nix (100%) rename {Modules => temp-Modules}/System/common.nix (100%) rename {Modules => temp-Modules}/System/default.nix (100%) diff --git a/Modules/Applications/GUI-Apps/Browser/brave/brave.nix b/temp-Modules/Applications/GUI-Apps/Browser/brave/brave.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Browser/brave/brave.nix rename to temp-Modules/Applications/GUI-Apps/Browser/brave/brave.nix diff --git a/Modules/Applications/GUI-Apps/Desktop-Apps/krita.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/krita.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Desktop-Apps/krita.nix rename to temp-Modules/Applications/GUI-Apps/Desktop-Apps/krita.nix diff --git a/Modules/Applications/GUI-Apps/Desktop-Apps/obsidian.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/obsidian.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Desktop-Apps/obsidian.nix rename to temp-Modules/Applications/GUI-Apps/Desktop-Apps/obsidian.nix diff --git a/Modules/Applications/GUI-Apps/Desktop-Apps/office-apps.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/office-apps.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Desktop-Apps/office-apps.nix rename to temp-Modules/Applications/GUI-Apps/Desktop-Apps/office-apps.nix diff --git a/Modules/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix rename to temp-Modules/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix diff --git a/Modules/Applications/GUI-Apps/Desktop-Apps/spotify.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/spotify.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Desktop-Apps/spotify.nix rename to temp-Modules/Applications/GUI-Apps/Desktop-Apps/spotify.nix diff --git a/Modules/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix rename to temp-Modules/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix diff --git a/Modules/Applications/GUI-Apps/Desktop-Apps/vesktop.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/vesktop.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Desktop-Apps/vesktop.nix rename to temp-Modules/Applications/GUI-Apps/Desktop-Apps/vesktop.nix diff --git a/Modules/Applications/GUI-Apps/Desktop-Apps/vscodium.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/vscodium.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Desktop-Apps/vscodium.nix rename to temp-Modules/Applications/GUI-Apps/Desktop-Apps/vscodium.nix diff --git a/Modules/Applications/GUI-Apps/Gaming/prismlauncher.nix b/temp-Modules/Applications/GUI-Apps/Gaming/prismlauncher.nix similarity index 100% rename from Modules/Applications/GUI-Apps/Gaming/prismlauncher.nix rename to temp-Modules/Applications/GUI-Apps/Gaming/prismlauncher.nix diff --git a/Modules/Applications/GUI-Apps/VPN/protonvpn.nix b/temp-Modules/Applications/GUI-Apps/VPN/protonvpn.nix similarity index 100% rename from Modules/Applications/GUI-Apps/VPN/protonvpn.nix rename to temp-Modules/Applications/GUI-Apps/VPN/protonvpn.nix diff --git a/Modules/Applications/GUI-Apps/default.nix b/temp-Modules/Applications/GUI-Apps/default.nix similarity index 100% rename from Modules/Applications/GUI-Apps/default.nix rename to temp-Modules/Applications/GUI-Apps/default.nix diff --git a/Modules/Applications/Shell/cli-tools/default.nix b/temp-Modules/Applications/Shell/cli-tools/default.nix similarity index 100% rename from Modules/Applications/Shell/cli-tools/default.nix rename to temp-Modules/Applications/Shell/cli-tools/default.nix diff --git a/Modules/Applications/Shell/default.nix b/temp-Modules/Applications/Shell/default.nix similarity index 100% rename from Modules/Applications/Shell/default.nix rename to temp-Modules/Applications/Shell/default.nix diff --git a/Modules/Applications/Shell/zsh/default.nix b/temp-Modules/Applications/Shell/zsh/default.nix similarity index 100% rename from Modules/Applications/Shell/zsh/default.nix rename to temp-Modules/Applications/Shell/zsh/default.nix diff --git a/Modules/Applications/default.nix b/temp-Modules/Applications/default.nix similarity index 100% rename from Modules/Applications/default.nix rename to temp-Modules/Applications/default.nix diff --git a/Modules/System/common.nix b/temp-Modules/System/common.nix similarity index 100% rename from Modules/System/common.nix rename to temp-Modules/System/common.nix diff --git a/Modules/System/default.nix b/temp-Modules/System/default.nix similarity index 100% rename from Modules/System/default.nix rename to temp-Modules/System/default.nix From 7292eda50366e517b0295277da055826111f7d76 Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 11 Aug 2025 16:37:46 +0200 Subject: [PATCH 23/40] rm old config --- .../GUI-Apps/Browser/brave/brave.nix | 28 --------- .../GUI-Apps/Desktop-Apps/krita.nix | 17 ------ .../GUI-Apps/Desktop-Apps/obsidian.nix | 15 ----- .../GUI-Apps/Desktop-Apps/office-apps.nix | 23 -------- .../GUI-Apps/Desktop-Apps/signal-desktop.nix | 17 ------ .../GUI-Apps/Desktop-Apps/spotify.nix | 16 ----- .../GUI-Apps/Desktop-Apps/standard-apps.nix | 22 ------- .../GUI-Apps/Desktop-Apps/vesktop.nix | 17 ------ .../GUI-Apps/Desktop-Apps/vscodium.nix | 24 -------- .../GUI-Apps/Gaming/prismlauncher.nix | 21 ------- .../Applications/GUI-Apps/VPN/protonvpn.nix | 11 ---- .../Applications/GUI-Apps/default.nix | 32 ---------- .../Applications/Shell/cli-tools/default.nix | 17 ------ temp-Modules/Applications/Shell/default.nix | 14 ----- .../Applications/Shell/zsh/default.nix | 43 -------------- temp-Modules/Applications/default.nix | 16 ----- temp-Modules/System/common.nix | 58 ------------------- temp-Modules/System/default.nix | 10 ---- 18 files changed, 401 deletions(-) delete mode 100644 temp-Modules/Applications/GUI-Apps/Browser/brave/brave.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Desktop-Apps/krita.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Desktop-Apps/obsidian.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Desktop-Apps/office-apps.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Desktop-Apps/spotify.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Desktop-Apps/vesktop.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Desktop-Apps/vscodium.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/Gaming/prismlauncher.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/VPN/protonvpn.nix delete mode 100644 temp-Modules/Applications/GUI-Apps/default.nix delete mode 100644 temp-Modules/Applications/Shell/cli-tools/default.nix delete mode 100644 temp-Modules/Applications/Shell/default.nix delete mode 100644 temp-Modules/Applications/Shell/zsh/default.nix delete mode 100644 temp-Modules/Applications/default.nix delete mode 100644 temp-Modules/System/common.nix delete mode 100644 temp-Modules/System/default.nix diff --git a/temp-Modules/Applications/GUI-Apps/Browser/brave/brave.nix b/temp-Modules/Applications/GUI-Apps/Browser/brave/brave.nix deleted file mode 100644 index 1b0af1b..0000000 --- a/temp-Modules/Applications/GUI-Apps/Browser/brave/brave.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -with lib; let - cfg = config.brave-and-extension; -in { - options.brave-and-extension.enable = mkEnableOption "Enable Brave with extensions and flags"; - - config = mkIf cfg.enable { - programs.brave = { - package = pkgs.brave; - enable = true; - extensions = [ - {id = "cjpalhdlnbpafiamejdnhcphjbkeiagm";} # uBlock Origin - - ]; - - commandLineArgs = [ - "--disable-features=AutofillSavePaymentMethods" - "--disable-features=PasswordManagerOnboarding" - "--disable-features=AutofillEnableAccountWalletStorage" - ]; - }; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/krita.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/krita.nix deleted file mode 100644 index cdf73c5..0000000 --- a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/krita.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -with lib; let - cfg = config.krita; -in { - options.krita.enable = mkEnableOption "Enable krita"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - pkgs.krita - ]; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/obsidian.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/obsidian.nix deleted file mode 100644 index 8d09ff9..0000000 --- a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/obsidian.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; { - options.obsidian.enable = mkEnableOption "Enable Obsidian installation"; - - config = mkIf config.obsidian.enable { - home.packages = with pkgs; [ - obsidian - ]; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/office-apps.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/office-apps.nix deleted file mode 100644 index 22d434d..0000000 --- a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/office-apps.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config; - - officeApps = with pkgs; [ - libreoffice - thunderbird - ]; -in { - options.officeApps.enable = mkEnableOption '' - Enable office/document applications (e.g., LibreOffice, Thunderbird) - ''; - - config = { - home.packages = - optionals cfg.officeApps.enable officeApps; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix deleted file mode 100644 index e5c44f6..0000000 --- a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/signal-desktop.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -with lib; let - cfg = config.signal; -in { - options.signal.enable = mkEnableOption "Enable Signals Desktop Version"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - pkgs.signal-desktop - ]; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/spotify.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/spotify.nix deleted file mode 100644 index f135e2f..0000000 --- a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/spotify.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; { - options.spotify.enable = mkEnableOption "Enable Spotify installation"; - - config = mkIf config.spotify.enable { - home.packages = with pkgs; [ - spotify - cava - ]; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix deleted file mode 100644 index 526685e..0000000 --- a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/standard-apps.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; let - cfg = config; - - standardApps = with pkgs; [ - kdePackages.gwenview - kdePackages.okular - ]; -in { - options.standardApps.enable = mkEnableOption '' - Enable image and graphics applications (e.g., Gwenview, Okular) - ''; - - config = { - home.packages = optionals cfg.standardApps.enable standardApps; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/vesktop.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/vesktop.nix deleted file mode 100644 index a51c9af..0000000 --- a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/vesktop.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -with lib; let - cfg = config.vesktop; -in { - options.vesktop.enable = mkEnableOption "Enable Vesktop, the Custom Discord client, with extensions"; - - config = mkIf cfg.enable { - home.packages = with pkgs; [ - pkgs.vesktop - ]; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/vscodium.nix b/temp-Modules/Applications/GUI-Apps/Desktop-Apps/vscodium.nix deleted file mode 100644 index d2820f6..0000000 --- a/temp-Modules/Applications/GUI-Apps/Desktop-Apps/vscodium.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -with lib; let - cfg = config.vscodium-and-extension; -in { - options.vscodium-and-extension.enable = mkEnableOption "Enable VScodium with extensions"; - - config = mkIf cfg.enable { - programs.vscode = { - enable = true; - package = pkgs.vscodium; - profiles.default.extensions = with pkgs.vscode-extensions; [ - catppuccin.catppuccin-vsc - jnoortheen.nix-ide - ms-python.python - ms-azuretools.vscode-docker - ]; - }; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/Gaming/prismlauncher.nix b/temp-Modules/Applications/GUI-Apps/Gaming/prismlauncher.nix deleted file mode 100644 index 3307b00..0000000 --- a/temp-Modules/Applications/GUI-Apps/Gaming/prismlauncher.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - options.prismlauncher.enable = lib.mkEnableOption "Enable PrismLauncher and dependencies"; - - config = lib.mkIf config.prismlauncher.enable { - home.packages = [ - (pkgs.prismlauncher.override { - # Add binary required by some mod - additionalPrograms = [ pkgs.ffmpeg ]; - - # Set Java runtimes - jdks = [ - pkgs.jdk8 - pkgs.jdk17 - pkgs.jdk21 or pkgs.jdk - ]; - }) - ]; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/VPN/protonvpn.nix b/temp-Modules/Applications/GUI-Apps/VPN/protonvpn.nix deleted file mode 100644 index d8d63c8..0000000 --- a/temp-Modules/Applications/GUI-Apps/VPN/protonvpn.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - options.protonvpn.enable = lib.mkEnableOption "Enable ProtonVPN and dependencies"; - - config = lib.mkIf config.protonvpn.enable { - home.packages = with pkgs; [ - protonvpn-gui - ]; - }; -} diff --git a/temp-Modules/Applications/GUI-Apps/default.nix b/temp-Modules/Applications/GUI-Apps/default.nix deleted file mode 100644 index 379b6f7..0000000 --- a/temp-Modules/Applications/GUI-Apps/default.nix +++ /dev/null @@ -1,32 +0,0 @@ -# Import all modules so home.nix only needs to import this file -{ config, pkgs, lib, inputs, ... }: { - imports = [ - - ################ - # 🖥️ Desktop Apps # - ################ - ./Desktop-Apps/krita.nix - ./Desktop-Apps/obsidian.nix - ./Desktop-Apps/office-apps.nix - ./Desktop-Apps/signal-desktop.nix - ./Desktop-Apps/spotify.nix - ./Desktop-Apps/standard-apps.nix - ./Desktop-Apps/vesktop.nix - ./Desktop-Apps/vscodium.nix - - ############# - # 🌐 Browser # - ############# - ./Browser/brave/brave.nix - - ############ - # 🎮 Gaming # - ############ - ./Gaming/prismlauncher.nix - - ########### - # 🔐 VPNs # - ########### - ./VPN/protonvpn.nix - ]; -} diff --git a/temp-Modules/Applications/Shell/cli-tools/default.nix b/temp-Modules/Applications/Shell/cli-tools/default.nix deleted file mode 100644 index e1726c6..0000000 --- a/temp-Modules/Applications/Shell/cli-tools/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ lib, config, pkgs, ... }: - -{ - options.cliTools.enable = lib.mkEnableOption "Enable CLI tools like fastfetch and hyfetch"; - - config = lib.mkIf config.cliTools.enable { - home.packages = with pkgs; [ - fastfetch - hyfetch - bat - fzf - tree - lsd - tmux - ]; - }; -} diff --git a/temp-Modules/Applications/Shell/default.nix b/temp-Modules/Applications/Shell/default.nix deleted file mode 100644 index 5e6b946..0000000 --- a/temp-Modules/Applications/Shell/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -# Import all modules so home.nix only needs to import this file -{ config, pkgs, lib, inputs, ... }: { - imports = [ - #################### - # 🧰 CLI Tools # - #################### - ./cli-tools/default.nix - - #################### - # 🐚 Zsh Shell # - #################### - ./zsh/default.nix - ]; -} diff --git a/temp-Modules/Applications/Shell/zsh/default.nix b/temp-Modules/Applications/Shell/zsh/default.nix deleted file mode 100644 index 704247a..0000000 --- a/temp-Modules/Applications/Shell/zsh/default.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - config, - pkgs, - lib, - ... -}: -with lib; { - programs.zsh = { - enable = true; - enableCompletion = true; - - plugins = [ - { - name = "zsh-autosuggestions"; - src = pkgs.zsh-autosuggestions; - } - { - name = "zsh-syntax-highlighting"; - src = pkgs.zsh-syntax-highlighting; - } - ]; - - initContent = '' - hyfetch - - alias ls='lsd' - alias l='ls -l' - alias la='ls -a' - alias lla='ls -la' - alias lt='ls --tree' - - HISTFILE=~/.zsh_history; - HISTSIZE=10000; - SAVEHIST=10000; - setopt appendhistory; - ''; - }; - - home.packages = with pkgs; [ - zsh-autosuggestions - zsh-syntax-highlighting - ]; -} diff --git a/temp-Modules/Applications/default.nix b/temp-Modules/Applications/default.nix deleted file mode 100644 index 95e6bc1..0000000 --- a/temp-Modules/Applications/default.nix +++ /dev/null @@ -1,16 +0,0 @@ -# Import all modules so home.nix only needs to import this file -{ config, pkgs, lib, inputs, ... }: { - imports = [ - ################# - # 🖥 GUI Software # - ################# - ./GUI-Apps - - ################# - # 🐚 Shell Setup # - ################# - ./Shell - - - ]; -} diff --git a/temp-Modules/System/common.nix b/temp-Modules/System/common.nix deleted file mode 100644 index c5c7661..0000000 --- a/temp-Modules/System/common.nix +++ /dev/null @@ -1,58 +0,0 @@ -{ - config, - pkgs, - lib, - host, - ... -}: { - - # Enable Bluetooth - hardware.bluetooth.enable = true; # enables support for Bluetooth - hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot - - - # Enable firmware (Intel AX200 needs firmware files from linux-firmware) - hardware.enableAllFirmware = true; - hardware.firmware = [ pkgs.linux-firmware ]; - - - #error: The option `dconf' does not exist. Definition values: - programs.dconf.enable = true; - - networking = { - networkmanager.enable = true; - hostName = host; - }; - - time.timeZone = "Europe/Berlin"; - - i18n.defaultLocale = "en_GB.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "de_DE.UTF-8"; - LC_IDENTIFICATION = "de_DE.UTF-8"; - LC_MEASUREMENT = "de_DE.UTF-8"; - LC_MONETARY = "de_DE.UTF-8"; - LC_NAME = "de_DE.UTF-8"; - LC_NUMERIC = "de_DE.UTF-8"; - LC_PAPER = "de_DE.UTF-8"; - LC_TELEPHONE = "de_DE.UTF-8"; - LC_TIME = "de_DE.UTF-8"; - }; - - nix.settings.experimental-features = ["nix-command" "flakes" "pipe-operators"]; - nixpkgs.config.allowUnfree = true; - - console.keyMap = "de"; - - services.printing.enable = true; - - # Sound and pipewire - services.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; -} diff --git a/temp-Modules/System/default.nix b/temp-Modules/System/default.nix deleted file mode 100644 index d6c3251..0000000 --- a/temp-Modules/System/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -# Import all modules so configuration.nix only needs to import this file -{ config, pkgs, lib, inputs, username, ... }: { - imports = [ - ############## - # ⚙️ Defaults # - ############## - ./common.nix - - ]; -} From 11686d0192ec5eca921786f45e0a7f6f0f471278 Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 11 Aug 2025 16:49:27 +0200 Subject: [PATCH 24/40] adjust readme again --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ad9b21b..af46e5c 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ NixOS-95/ # flake.nix { inputs = { - nixos95.url = "github:Peritia-System/NixOS-95/Beta-import"; + nixos95.url = "github:Peritia-System/NixOS-95/Dev"; nixos95.inputs.nixpkgs.follows = "nixpkgs"; } outputs = inputs @ { nixpkgs, nixos95, ... }: { From 0dcd437fe99829b302752b22209fe2d1f91bd7ab Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Thu, 21 Aug 2025 11:08:54 +0200 Subject: [PATCH 25/40] docs: cleanup README fixed some typos and added an overview of all available config options --- README.md | 105 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 60 insertions(+), 45 deletions(-) diff --git a/README.md b/README.md index af46e5c..208c4d4 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ NixOS-95/ Enabled -### 1. Add Nyx to your flake +### 1. Add Nixos95 to your flake and import the module ```nix # flake.nix @@ -63,79 +63,94 @@ NixOS-95/ nixos95.url = "github:Peritia-System/NixOS-95/Dev"; nixos95.inputs.nixpkgs.follows = "nixpkgs"; } - outputs = inputs @ { nixpkgs, nixos95, ... }: { + outputs = inputs @ { nixos95, ... }: { nixosConfigurations.HOSTNAME = nixpkgs.lib.nixosSystem { - modules = [ ./configuration.nix ]; + modules = [ + nixos95.nixosModules.default + ./configuration.nix + ]; }; }; } ``` -### 2. Import in Configuration.nix +### 2. Enable modules -```nix -# configuration.nix +You can configure Nixos95 under the `nixos95` namespace. For a minimal config just set: +``` { - imports = [ inputs.self.nixosModules.nixos95 ]; + nixos95.enable = true; } ``` -### 3. Enable modules +> Warning: This will activate the xfce desktop manager, as well as lightdm and ssdm as display manager. +> You might want to disable your other desktop environment to prevent bugs. + +If you want to further customize Nixos95 you can use the following config options (given values are the default ones): ```nix { - # configuration.nix / or sth imported by the main config nixos95 = { - enable = true; - user = "alex"; + enable = true; # default is false + user = "USERNAME"; # no default set; specifies the user used by home-manager + + wallpaper = ./Resources/Images/Wallpapers/Wallpaper-1.png; taskbar = { homeIcon = "whisker-menu-button"; - battery-plugin.enable = false; - applications = [ - { - name = "Brave"; - description = "Browse the Web"; - pkg = pkgs.brave; - icon = "world"; - } - { - name = "Signal"; - description = "Private Messenger"; - pkg = pkgs.signal-desktop; - icon = "signal"; - } - { - name = "Obsidian"; - description = "Markdown Editor"; - exe = "obsidian %u"; - icon = "obsidian"; - } - { - name = "Spotify"; - description = "Spotify Music"; - exe = "spotify %U"; - icon = "spotify"; - } - ]; + battery-plugin = { + enable = true; + power_bar = { + enabe = true; + critical_at = 10; + warning_at = 20; + color_warning = "rgb(248,228,92)"; + color_critical = "rgb(237,51,59)"; + color_loading = "rgb(119,118,123)"; + color_default = "rgb(143,240,164)"; + }; + }; }; + applications = [ + { + name = "Files"; + description = "View and manage local files"; + icon = "folder_open"; + exe = "exo-open --launch FileManager"; + } + { + name = "Terminal"; + description = "Run commands"; + icon = "xfce4-terminal"; + pkg = pkgs.xfce.xfce4-terminal; + } + { + name = "Browser"; + description = "Access the world wide web"; + icon = "firefox"; + exe = "exo-open --launch WebBrowser"; + } + ]; keybinds = { commands = [ + { key = "r"; exe = "xfce4-appfinder --collapsed"; } + { key = "XF86WWW"; exe = "exo-open --launch WebBrowser"; } + { key = "XF86Mail"; exe = "exo-open --launch MailReder"; } + { key = "Print"; exe = "xfce4-screenshooter"; } { key="l"; exe="xflock4"; } ]; + xfwm4 = [ ]; }; }; - } ``` -4. **Build and switch to the system configuration**: +### 3. **Build and switch to the system configuration**: - ```bash - sudo NIX_CONFIG="experimental-features = nix-command flakes pipe-operators" nixos-rebuild switch --flake .#default - ``` -w +```bash +sudo NIX_CONFIG="experimental-features = nix-command flakes pipe-operators" nixos-rebuild switch --flake .#default +``` ### Experimental Features @@ -147,7 +162,7 @@ They are needed to activate the configuration. To enable them in your config set: ```nix nix.settings.experimental-features = [ - "flakes" "pipe-operators" + "flakes" "pipe-operators" ]; ``` From 8b2e87c159876b90c5afafe654a26230d7510b71 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Thu, 21 Aug 2025 10:26:55 +0200 Subject: [PATCH 26/40] feat: add home-manager directly in NixOS-95 For users that already use home-manager, this shouldn't change anything (they just have to pin the home-manager input to their own version). However for users that currently do not use home-manager this will allow them to not care about it. This way, home-manager will become an 'implementation detail' --- flake.lock | 10 +++++----- flake.nix | 8 ++++++-- nixos95/core.nix | 3 +++ nixos95/default.nix | 4 +++- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index 039c8c6..1c795ba 100644 --- a/flake.lock +++ b/flake.lock @@ -22,15 +22,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753250450, - "narHash": "sha256-i+CQV2rPmP8wHxj0aq4siYyohHwVlsh40kV89f3nw1s=", - "owner": "nixos", + "lastModified": 1755615617, + "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "fc02ee70efb805d3b2865908a13ddd4474557ecf", + "rev": "20075955deac2583bb12f07151c2df830ef346b4", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" diff --git a/flake.nix b/flake.nix index 3298687..bb07cc5 100644 --- a/flake.nix +++ b/flake.nix @@ -3,10 +3,14 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; - outputs = { self, nixpkgs, ... }: { - nixosModules.default = import ./nixos95; + outputs = { self, nixpkgs, home-manager,... }: { + nixosModules.default = import ./nixos95 { inherit home-manager; }; }; } diff --git a/nixos95/core.nix b/nixos95/core.nix index 5695274..5786d43 100644 --- a/nixos95/core.nix +++ b/nixos95/core.nix @@ -2,6 +2,9 @@ cfg = config.nixos95; in lib.mkIf cfg.enable { + + home-manager.users.${cfg.user}.home.stateVersion = lib.mkDefault "25.05"; + services.xserver = { enable = true; desktopManager.xfce.enable = true; diff --git a/nixos95/default.nix b/nixos95/default.nix index 744b77b..641050f 100644 --- a/nixos95/default.nix +++ b/nixos95/default.nix @@ -1,4 +1,4 @@ -{ config, lib, ...}: let +{ home-manager }: { config, lib, ...}: let cfg = config.nixos95; in { @@ -14,6 +14,8 @@ in { }; imports = [ + home-manager.nixosModules.home-manager + ./core.nix ./desktop.nix ./keybinds.nix From b1514b1c69cd53a3517b6009d47324560cdcd29c Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Thu, 21 Aug 2025 10:45:09 +0200 Subject: [PATCH 27/40] docs: inform to pin home-manager version we dont really want anyone to install two different home-manaer versions, i feel like this could lead to problems --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index af46e5c..04a9c04 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,17 @@ NixOS-95/ } ``` +If you are using home-manager you should also pin your version for Nixos95: +``` +{ + inputs = { + ... + nixos95.inputs.home-manager.follows = "home-manager"; + }; + ... +} +``` + ### 2. Import in Configuration.nix ```nix From c0bd1bd615882040494c35be0106280cc44cd5ad Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Sun, 24 Aug 2025 09:23:13 +0200 Subject: [PATCH 28/40] docs(example): add example configuration added both a home-manager and 'minimal configuration'. They can be built and testet in this repo via: - nixos-generate-config --dir example/default # or example/home-manager - nix build path:./example/default#nixosConfigurations.default.config.system.build.toplevel # or path:./example/home-manager#... the flake.lock and hardeware-configuration is ignored to prevent accidental commitment of the hardware-configuration (and get the freshes packages when somebody might use these configs as templates --- .gitignore | 2 + README.md | 9 ++++ example/default/configuration.nix | 63 ++++++++++++++++++++++++ example/default/flake.nix | 25 ++++++++++ example/home-manager/configuration.nix | 66 ++++++++++++++++++++++++++ example/home-manager/flake.nix | 33 +++++++++++++ flake.nix | 24 ++++++++++ 7 files changed, 222 insertions(+) create mode 100644 .gitignore create mode 100644 example/default/configuration.nix create mode 100644 example/default/flake.nix create mode 100644 example/home-manager/configuration.nix create mode 100644 example/home-manager/flake.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2377d20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +example/*/flake.lock +example/*/hardware-configuration.nix diff --git a/README.md b/README.md index 04a9c04..4300872 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,15 @@ NixOS-95/ nix.settings.experimental-features = ["nix-command" "flakes" "pipe-operators"]; Enabled +You can initilize a new flake-based configuration with: +``` +# minimal +nix flake init -t github:Peritia-System/NixOS-95/Dev +# with home-manager +nix flake init -t github:Peritia-System/NixOS-95/Dev#home-manager +``` + +Or follow the manual installation process: ### 1. Add Nyx to your flake diff --git a/example/default/configuration.nix b/example/default/configuration.nix new file mode 100644 index 0000000..710e991 --- /dev/null +++ b/example/default/configuration.nix @@ -0,0 +1,63 @@ +{ pkgs, ... }: { + + system.stateVersion = "25.05"; + nix.settings.experimental-features = [ + "flakes" "nix-command" "pipe-operators" + ]; + + nixos95 = { + enable = true; + user = "alice"; + + taskbar = { + homeIcon = "whisker-menu-button"; + battery-plugin.enable = false; + applications = [ + { + name = "Files"; + description = "View and manage local files"; + icon = "folder_open"; + exe = "exo-open --launch FileManager"; + } + { + name = "Firefox"; + description = "Browse the Web"; + pkg = pkgs.firefox; + icon = "world"; + } + { + name = "Signal"; + description = "Private Messenger"; + pkg = pkgs.signal-desktop; + icon = "signal"; + } + ]; + }; + + keybinds = { + commands = [ + { key="l"; exe="xflock4"; } + ]; + }; + }; + + users.users.alice = { + isNormalUser = true; + initialPassword = "password"; + home = "/home/alice"; + createHome = true; + + packages = [ + pkgs.firefox + pkgs.neovim + pkgs.signal-desktop + ]; + }; + + networking.hostName = "nixos95"; + networking.networkmanager.enable = true; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + +} diff --git a/example/default/flake.nix b/example/default/flake.nix new file mode 100644 index 0000000..6b163c5 --- /dev/null +++ b/example/default/flake.nix @@ -0,0 +1,25 @@ +{ + description = "Nixos95 example configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + + nixos95 = { + url = "github:Peritia-System/NixOS-95"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { nixpkgs, nixos95, ... }: { + + nixosConfigurations.default = nixpkgs.lib.nixosSystem { + system = "x84_64-linux"; + modules = [ + nixos95.nixosModules.default + ./configuration.nix + ./hardware-configuration.nix + ]; + }; + + }; +} diff --git a/example/home-manager/configuration.nix b/example/home-manager/configuration.nix new file mode 100644 index 0000000..d994db5 --- /dev/null +++ b/example/home-manager/configuration.nix @@ -0,0 +1,66 @@ +{ pkgs, ... }: { + + system.stateVersion = "25.05"; + nix.settings.experimental-features = [ + "flakes" "nix-command" "pipe-operators" + ]; + + nixos95 = { + enable = true; + user = "alice"; + + taskbar = { + homeIcon = "whisker-menu-button"; + battery-plugin.enable = false; + applications = [ + { + name = "Files"; + description = "View and manage local files"; + icon = "folder_open"; + exe = "exo-open --launch FileManager"; + } + { + name = "Firefox"; + description = "Browse the Web"; + pkg = pkgs.firefox; + icon = "world"; + } + { + name = "Signal"; + description = "Private Messenger"; + pkg = pkgs.signal-desktop; + icon = "signal"; + } + ]; + }; + + keybinds = { + commands = [ + { key="l"; exe="xflock4"; } + ]; + }; + }; + + networking.hostName = "nixos95"; + users.users.alice = { + isNormalUser = true; + initialPassword = "password"; + home = "/home/alice"; + createHome = true; + }; + + home-manager.users.alice = { + programs.firefox.enable = true; + programs.neovim.enable = true; + + home.packages = [ + pkgs.signal-desktop + ]; + }; + + networking.networkmanager.enable = true; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + +} diff --git a/example/home-manager/flake.nix b/example/home-manager/flake.nix new file mode 100644 index 0000000..fbd677d --- /dev/null +++ b/example/home-manager/flake.nix @@ -0,0 +1,33 @@ +{ + description = "Nixos95 example configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixos95 = { + url = "github:Peritia-System/NixOS-95"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; + }; + + outputs = { nixpkgs, nixos95, home-manager, ... }: { + + nixosConfigurations.default = nixpkgs.lib.nixosSystem { + system = "x84_64-linux"; + modules = [ + nixos95.nixosModules.default + home-manager.nixosModules.home-manager + + ./configuration.nix + ./hardware-configuration.nix + ]; + }; + + }; +} diff --git a/flake.nix b/flake.nix index bb07cc5..638c74b 100644 --- a/flake.nix +++ b/flake.nix @@ -11,6 +11,30 @@ outputs = { self, nixpkgs, home-manager,... }: { nixosModules.default = import ./nixos95 { inherit home-manager; }; + + templates.default = { + description = "Minimal Nixos-95 configuration"; + path = ./example/default; + welcomeText = '' + # Welcome to Nixos95 + + Please run `ǹixos-generate-config --dir .` to generate hardware configuration. + + > You can now continue with Step 3 in the README.md + ''; + }; + + templates.default = { + description = "Minimal Nixos-95 configuration with home-manager"; + path = ./example/home-manager; + welcomeText = '' + # Welcome to Nixos95 (with home-manager) + + Please run `nixos-generate-config --dir .` to generate harde configuration. + + > You can now continue with Step 3 in the README.md + ''; + }; }; } From da2c5573ec2e29e2b0b0118496c760806164281e Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Mon, 25 Aug 2025 09:29:36 +0200 Subject: [PATCH 29/40] fix(templates): use correct name for home-manager template --- flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake.nix b/flake.nix index 638c74b..03f28ba 100644 --- a/flake.nix +++ b/flake.nix @@ -24,7 +24,7 @@ ''; }; - templates.default = { + templates.home-manager = { description = "Minimal Nixos-95 configuration with home-manager"; path = ./example/home-manager; welcomeText = '' From 13f82702c6ea0e5de664b572c0c6cb9e654812ce Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 25 Aug 2025 09:55:39 +0200 Subject: [PATCH 30/40] fix: Wrong Standard Branch --- example/default/flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/default/flake.nix b/example/default/flake.nix index 6b163c5..b501a3d 100644 --- a/example/default/flake.nix +++ b/example/default/flake.nix @@ -5,7 +5,7 @@ nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; nixos95 = { - url = "github:Peritia-System/NixOS-95"; + url = "github:Peritia-System/NixOS-95/Dev"; inputs.nixpkgs.follows = "nixpkgs"; }; }; From 0f086039f67c095311f5d69df25cbcd2592cd5fb Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 25 Aug 2025 09:56:29 +0200 Subject: [PATCH 31/40] fix: prepare for merge with main --- example/default/flake.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example/default/flake.nix b/example/default/flake.nix index b501a3d..6b163c5 100644 --- a/example/default/flake.nix +++ b/example/default/flake.nix @@ -5,7 +5,7 @@ nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; nixos95 = { - url = "github:Peritia-System/NixOS-95/Dev"; + url = "github:Peritia-System/NixOS-95"; inputs.nixpkgs.follows = "nixpkgs"; }; }; From 9fccc0521addb0272a2a2e95332af39a75a8534f Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 25 Aug 2025 10:34:55 +0200 Subject: [PATCH 32/40] Add roadmap --- Roadmap.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Roadmap.md diff --git a/Roadmap.md b/Roadmap.md new file mode 100644 index 0000000..e69de29 From 68ff8cf403b6050f991e731513ec96f1889784af Mon Sep 17 00:00:00 2001 From: Peritia Date: Mon, 25 Aug 2025 10:35:08 +0200 Subject: [PATCH 33/40] add things to do --- Roadmap.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Roadmap.md b/Roadmap.md index e69de29..87e54bd 100644 --- a/Roadmap.md +++ b/Roadmap.md @@ -0,0 +1,7 @@ +# Upcoming + +| Feature / Fix | Description | Done | +| ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---- | +| Fix Background | Currently the Background does not get set automatically | | +| Adjust the readme | encourage people to edit the standard config atleast slightly | | +| Generate nixo95 instead of a configuration.nix | Currently we are generating a configuration.nix. also encourage people to use their original one. Nixos95 is only supposed to have options that are nessecarry for nixos95 | | From 9e56739cc4cfc417299d8c3a487942520853e564 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Wed, 17 Sep 2025 09:30:20 +0200 Subject: [PATCH 34/40] feat: add screenshot utility --- nixos95/core.nix | 4 ++++ nixos95/keybinds.nix | 39 +++++++++++++++++++++++++++------------ 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/nixos95/core.nix b/nixos95/core.nix index 5786d43..e390236 100644 --- a/nixos95/core.nix +++ b/nixos95/core.nix @@ -22,4 +22,8 @@ in lib.mkIf cfg.enable { xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + environment.systemPackages = [ + pkgs.xfce.xfce4-screenshooter + ]; + } diff --git a/nixos95/keybinds.nix b/nixos95/keybinds.nix index f9a735c..8a8d571 100644 --- a/nixos95/keybinds.nix +++ b/nixos95/keybinds.nix @@ -9,6 +9,31 @@ in { options.nixos95.keybinds = { + default_commands = lib.mkOption { + internal = true; + description = '' + INTERNAL: additional default keyboard shortcuts to add + ''; + type = t.listOf t.attrs; + default = [ + { + key = "XF86WWW"; + exe = "exo-open --launch WebBrowser"; + } + { + key = "XF86Mail"; + exe = "exo-open --launch MailReder"; + } + { + key = "Print"; + exe = "xfce4-screenshooter"; + } + { + key = "s"; + exe = "xfce4-screenshooter --fullscreen"; + } + ]; + }; commands = lib.mkOption { description = '' Keyboard shortcuts that should be made available. @@ -30,18 +55,6 @@ in { key = "r"; exe = "xfce4-appfinder --collapsed"; } - { - key = "XF86WWW"; - exe = "exo-open --launch WebBrowser"; - } - { - key = "XF86Mail"; - exe = "exo-open --launch MailReder"; - } - { - key = "Print"; - exe = "xfce4-screenshooter"; - } ]; }; xfwm4 = lib.mkOption { @@ -76,6 +89,7 @@ in { exe = lib.escapeXML (slib.getExe elm); in '' '') |> lib.concatStringsSep "\n"; + default_commands_xml = to_xml cfg.default_commands; commands_xml = to_xml cfg.commands; xfwm4_xml = to_xml cfg.xfwm4; in { @@ -88,6 +102,7 @@ in { + ${default_commands_xml} ${commands_xml} From 933b0f7ff1a7472775e20b3686dd3294aa225b83 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Wed, 17 Sep 2025 09:39:02 +0200 Subject: [PATCH 35/40] feat: add windows like whiskermenu open keybind --- nixos95/keybinds.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nixos95/keybinds.nix b/nixos95/keybinds.nix index 8a8d571..b67f40b 100644 --- a/nixos95/keybinds.nix +++ b/nixos95/keybinds.nix @@ -32,6 +32,10 @@ in { key = "s"; exe = "xfce4-screenshooter --fullscreen"; } + { + key = "Super_L"; + pkg = pkgs.xfce.xfce4-whiskermenu-plugin; # open whiskermenu with a press on SUPER like on windows + } ]; }; commands = lib.mkOption { From ff23d37b5c3aaa2b6b33c433a25d14bc79d14755 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Wed, 17 Sep 2025 11:25:35 +0200 Subject: [PATCH 36/40] feat: add volume control keys --- nixos95/keybinds.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/nixos95/keybinds.nix b/nixos95/keybinds.nix index b67f40b..2e682c1 100644 --- a/nixos95/keybinds.nix +++ b/nixos95/keybinds.nix @@ -15,7 +15,9 @@ in { INTERNAL: additional default keyboard shortcuts to add ''; type = t.listOf t.attrs; - default = [ + default = let + amixer = lib.getExe' pkgs.alsa-utils; + in [ { key = "XF86WWW"; exe = "exo-open --launch WebBrowser"; @@ -36,6 +38,18 @@ in { key = "Super_L"; pkg = pkgs.xfce.xfce4-whiskermenu-plugin; # open whiskermenu with a press on SUPER like on windows } + { + key = "XF86AudioMute"; + exe = "${amixer} set Master toggle"; + } + { + key = "XF86AudioLowerVolume"; + exe = "${amixer} set Master 5%-"; + } + { + key = "XF86AudioRaiseVolume"; + exe = "${amixer} set Master 5%+"; + } ]; }; commands = lib.mkOption { From 8a30d60c6793ba0c1ee5a84fab43a519ac3c5567 Mon Sep 17 00:00:00 2001 From: gytic <149968794+gytic@users.noreply.github.com> Date: Wed, 17 Sep 2025 11:33:39 +0200 Subject: [PATCH 37/40] fix: switch to pactl i guess it has a wider adpotion because it just relies on pulseaudio? --- nixos95/keybinds.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/nixos95/keybinds.nix b/nixos95/keybinds.nix index 2e682c1..0fb40a0 100644 --- a/nixos95/keybinds.nix +++ b/nixos95/keybinds.nix @@ -16,7 +16,8 @@ in { ''; type = t.listOf t.attrs; default = let - amixer = lib.getExe' pkgs.alsa-utils; + # relies on pulseaudio + pactl = lib.getExe' pkgs.pulseaudio "pactl"; in [ { key = "XF86WWW"; @@ -40,15 +41,15 @@ in { } { key = "XF86AudioMute"; - exe = "${amixer} set Master toggle"; + exe = "${pactl} set-sink-mute @DEFAULT_SINK@ toggle"; } { key = "XF86AudioLowerVolume"; - exe = "${amixer} set Master 5%-"; + exe = "${pactl} set-sink-volume @DEFAULT_SINK@ -5%"; } { key = "XF86AudioRaiseVolume"; - exe = "${amixer} set Master 5%+"; + exe = "${pactl} set-sink-volume @DEFAULT_SINK@ +5%"; } ]; }; From 86536daae7079ec974fcaf01dd1fbd4a9b735cd3 Mon Sep 17 00:00:00 2001 From: Peritia Date: Wed, 1 Oct 2025 11:33:42 +0200 Subject: [PATCH 38/40] fix: rm Wallpaper setting --- nixos95/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos95/default.nix b/nixos95/default.nix index 641050f..18fae8a 100644 --- a/nixos95/default.nix +++ b/nixos95/default.nix @@ -17,7 +17,7 @@ in { home-manager.nixosModules.home-manager ./core.nix - ./desktop.nix + #./desktop.nix ./keybinds.nix ./taskbar.nix ./theme.nix From d945a0d7bef83f9c75a326557207e64926b5d54f Mon Sep 17 00:00:00 2001 From: Peritia Date: Tue, 13 Jan 2026 10:38:48 +0100 Subject: [PATCH 39/40] fix: renaming XFCE tools --- README.md | 2 +- flake.lock | 12 ++++++------ nixos95/core.nix | 2 +- nixos95/keybinds.nix | 2 +- nixos95/taskbar.nix | 6 +++--- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 54ba555..db7dcfa 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ If you want to further customize Nixos95 you can use the following config option name = "Terminal"; description = "Run commands"; icon = "xfce4-terminal"; - pkg = pkgs.xfce.xfce4-terminal; + pkg = pkgs.xfce4-terminal; } { name = "Browser"; diff --git a/flake.lock b/flake.lock index 1c795ba..2a00108 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1753294394, - "narHash": "sha256-1Dfgq09lHZ8AdYB2Deu/mYP1pMNpob8CgqT5Mzo44eI=", + "lastModified": 1768271922, + "narHash": "sha256-zmFw7AtcmfMxW3vR7AiGeQQeHhdrd2x7a3hxzd6vJYI=", "owner": "nix-community", "repo": "home-manager", - "rev": "1fde6fb1be6cd5dc513dc1c287d69e4eb2de973e", + "rev": "fbd566923adcfa67be512a14a79467e2ab8a5777", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755615617, - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "lastModified": 1768127708, + "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38", "type": "github" }, "original": { diff --git a/nixos95/core.nix b/nixos95/core.nix index e390236..6894bf5 100644 --- a/nixos95/core.nix +++ b/nixos95/core.nix @@ -23,7 +23,7 @@ in lib.mkIf cfg.enable { xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; environment.systemPackages = [ - pkgs.xfce.xfce4-screenshooter + pkgs.xfce4-screenshooter ]; } diff --git a/nixos95/keybinds.nix b/nixos95/keybinds.nix index 0fb40a0..e79d8aa 100644 --- a/nixos95/keybinds.nix +++ b/nixos95/keybinds.nix @@ -37,7 +37,7 @@ in { } { key = "Super_L"; - pkg = pkgs.xfce.xfce4-whiskermenu-plugin; # open whiskermenu with a press on SUPER like on windows + pkg = pkgs.xfce4-whiskermenu-plugin; # open whiskermenu with a press on SUPER like on windows } { key = "XF86AudioMute"; diff --git a/nixos95/taskbar.nix b/nixos95/taskbar.nix index f4fd972..3540451 100644 --- a/nixos95/taskbar.nix +++ b/nixos95/taskbar.nix @@ -108,7 +108,7 @@ in { name = "Terminal"; description = "Run commands"; icon = "xfce4-terminal"; - pkg = pkgs.xfce.xfce4-terminal; + pkg = pkgs.xfce4-terminal; } { name = "Browser"; @@ -125,8 +125,8 @@ in { config = lib.mkIf config.nixos95.enable { environment.systemPackages = [ - pkgs.xfce.xfce4-whiskermenu-plugin - (lib.mkIf cfg.battery-plugin.enable pkgs.xfce.xfce4-battery-plugin) + pkgs.xfce4-whiskermenu-plugin + (lib.mkIf cfg.battery-plugin.enable pkgs.xfce4-battery-plugin) ]; home-manager.users.${user} = { From 468026f0b4604312ea59654433d5b828293297e7 Mon Sep 17 00:00:00 2001 From: Peritia Date: Tue, 13 Jan 2026 11:05:23 +0100 Subject: [PATCH 40/40] Documentation: Add more to Roadmap --- Roadmap.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Roadmap.md b/Roadmap.md index 87e54bd..9d3a429 100644 --- a/Roadmap.md +++ b/Roadmap.md @@ -5,3 +5,15 @@ | Fix Background | Currently the Background does not get set automatically | | | Adjust the readme | encourage people to edit the standard config atleast slightly | | | Generate nixo95 instead of a configuration.nix | Currently we are generating a configuration.nix. also encourage people to use their original one. Nixos95 is only supposed to have options that are nessecarry for nixos95 | | +| set default Taskbar location | Currently this has to be done via the settings menu | | +| add the volume meter to the Taskbar | Currently it will get overwritten each time | | +| add an Theme only install way | So that optionally you can just install the Theme and everything else will be set via menus (prevent overwriting) | | +| add Thunar Plugins | Rn this has to be manually added | | +| add Option to preinstall standard tools | Some free tools that are to be expected on a desktop (like a compression tool for example) | | +| set Standard Browser to Librewolf instead of Brave | Right now the Default example Browser is Brave | | +| Set Whisker-Favorites via an Option | this gets overwritten by Default and there is no way to set an option for it | +| Expose an Install ISO | you can write custom NixOS install ISO: [Guide](https://nixos.wiki/wiki/Creating_a_NixOS_live_CD) | +| Screenshotting Tool | Add the XFCE Screenshotter and set the Shortcuts similar to Snapshot (Super + Shift + S) - Screenshot Selected region; (Print) - Screenshot Screen | +| Add Clipboard Manager | Add the XFCE Screenshotter and set the Shortcuts similar to Snapshot (Super + Shift + S) - Screenshot Selected region; (Print) - Screenshot Screen | +| Add a tool to access remote Filesystems | add remote filesystems to thunar (possibility to do so) | +