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/10] 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; + }; + +} + -- 2.51.2 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/10] 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} + + + ''; + }; + + }; + + }; + }; + } -- 2.51.2 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/10] 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"; -- 2.51.2 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/10] 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. -- 2.51.2 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/10] 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. -- 2.51.2 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/10] 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; +} -- 2.51.2 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/10] 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"; } + ]; + }; }; ################################################################ -- 2.51.2 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/10] 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"; } ]; }; }; -- 2.51.2 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/10] 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 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- 2.51.2 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/10] 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 { -- 2.51.2