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 1/3] 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 2/3] 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 3/3] 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 + ''; + }; }; }