fix: share pkgs & overlays with home-manager

This commit is contained in:
Felix Schröter 2025-05-18 19:30:30 +02:00
parent a04fca65d8
commit f25ca7a488
Signed by: felschr
GPG key ID: 671E39E6744C807D
11 changed files with 74 additions and 63 deletions

View file

@ -75,12 +75,7 @@ rec {
}; };
outputs = outputs =
{ inputs:
self,
nixpkgs,
nixpkgs-unstable,
...
}@inputs:
inputs.flake-parts.lib.mkFlake { inherit inputs; } { inputs.flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ systems = [
"x86_64-linux" "x86_64-linux"
@ -91,7 +86,7 @@ rec {
./lib/flake-module.nix ./lib/flake-module.nix
./hosts/flake-module.nix ./hosts/flake-module.nix
./home/flake-module.nix ./home/flake-module.nix
./overlays.nix ./overlays/flake-module.nix
]; ];
flake = { flake = {
inherit nixConfig; inherit nixConfig;
@ -110,11 +105,6 @@ rec {
... ...
}: }:
{ {
_module.args.pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
devShells.default = pkgs.mkShell { inherit (config.checks.pre-commit) shellHook; }; devShells.default = pkgs.mkShell { inherit (config.checks.pre-commit) shellHook; };
checks = { checks = {

View file

@ -38,11 +38,5 @@
programs.git.defaultProfile = "private"; programs.git.defaultProfile = "private";
xdg.configFile."nixpkgs/config.nix".text = ''
{
allowUnfree = true;
}
'';
home.stateVersion = "25.05"; home.stateVersion = "25.05";
} }

View file

@ -40,12 +40,6 @@ with pkgs;
defaultProfile = "work"; defaultProfile = "work";
}; };
xdg.configFile."nixpkgs/config.nix".text = ''
{
allowUnfree = true;
}
'';
home.packages = with pkgs; [ home.packages = with pkgs; [
fh fh

View file

@ -38,12 +38,6 @@
programs.git.defaultProfile = "private"; programs.git.defaultProfile = "private";
xdg.configFile."nixpkgs/config.nix".text = ''
{
allowUnfree = true;
}
'';
home.packages = with pkgs; [ home.packages = with pkgs; [
# system # system
gparted gparted

View file

@ -1,26 +1,38 @@
{ {
self, self,
inputs, inputs,
pkgs, lib,
... ...
}: }:
let let
createHomeConfig = mkHomeConfiguration =
name: args: {
inputs.home-manager.lib.homeManagerConfiguration ( user,
{ system,
inherit pkgs; modules,
extraSpecialArgs = { inherit inputs; }; }:
} inputs.home-manager.lib.homeManagerConfiguration {
// args pkgs = self.pkgsFor system;
); extraSpecialArgs = { inherit inputs; };
modules =
(with self.homeModules; [ nixpkgs ])
++ [
{
home.username = user;
home.homeDirectory = "/home/${user}";
}
]
++ modules;
};
in in
{ {
imports = [ inputs.home-manager.flakeModules.home-manager ]; imports = [ inputs.home-manager.flakeModules.home-manager ];
flake = { flake = {
homeModules = { homeModules = {
nixpkgs = import ./modules/nixpkgs.nix;
git = import ./modules/git.nix; git = import ./modules/git.nix;
firefox = import ./modules/firefox/firefox.nix; firefox = import ./modules/firefox/firefox.nix;
tor-browser = import ./modules/firefox/tor-browser.nix; tor-browser = import ./modules/firefox/tor-browser.nix;
@ -32,26 +44,31 @@ in
felschr-work = import ./felschr-work.nix; felschr-work = import ./felschr-work.nix;
}; };
homeConfigurations = { homeConfigurations = {
felschr = createHomeConfig { felschr = mkHomeConfiguration {
user = "felschr";
system = "x86_64-linux";
modules = [ modules = [
self.homeModules.git self.homeModules.git
self.homeModules.felschr self.homeModules.felschr
]; ];
}; };
felschr-server = createHomeConfig { felschr-server = mkHomeConfiguration {
user = "felschr";
system = "x86_64-linux";
modules = [ modules = [
self.homeModules.git self.homeModules.git
self.homeModules.felschr-server self.homeModules.felschr-server
]; ];
}; };
felschr-work = createHomeConfig { felschr-work = mkHomeConfiguration {
user = "felschr";
system = "x86_64-linux";
modules = [ modules = [
self.homeModules.git self.homeModules.git
self.homeModules.felschr-work self.homeModules.felschr-work
]; ];
}; };
}; };
# HINT alias for deprecated output homeManagerModules = lib.warn "`homeManagerModules` is deprecated. Use `homeModules` instead." self.homeModules;
homeManagerModules = self.homeModules;
}; };
} }

11
home/modules/nixpkgs.nix Normal file
View file

@ -0,0 +1,11 @@
_:
{
nixpkgs.config.allowUnfree = true;
xdg.configFile."nixpkgs/config.nix".text = ''
{
allowUnfree = true;
}
'';
}

View file

@ -22,8 +22,6 @@
../../services/open-webui.nix ../../services/open-webui.nix
]; ];
nixpkgs.config.allowUnfree = true;
boot.loader.systemd-boot.memtest86.enable = true; boot.loader.systemd-boot.memtest86.enable = true;
# running binaries for other architectures # running binaries for other architectures

View file

@ -50,8 +50,6 @@ in
age.secrets.cloudflare.file = ../../secrets/cloudflare.age; age.secrets.cloudflare.file = ../../secrets/cloudflare.age;
age.secrets.hostKey.file = ../../secrets/home-server/hostKey.age; age.secrets.hostKey.file = ../../secrets/home-server/hostKey.age;
nixpkgs.config.allowUnfree = true;
networking.domain = "home.felschr.com"; networking.domain = "home.felschr.com";
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [

View file

@ -1,14 +0,0 @@
{ inputs, ... }:
{
flake = {
overlays.default = final: prev: {
unstable = import inputs.nixpkgs-unstable {
inherit (prev) system;
config.allowUnfree = true;
};
inherit (inputs.self.packages.${prev.system}) deconz brlaser;
vimPlugins = prev.vimPlugins // final.callPackage ./pkgs/vim-plugins { inherit inputs; };
};
};
}

27
overlays/flake-module.nix Normal file
View file

@ -0,0 +1,27 @@
{ self, inputs, ... }:
{
flake = {
overlays.default = final: prev: {
unstable = import inputs.nixpkgs-unstable {
inherit (prev) system;
config.allowUnfree = true;
};
inherit (inputs.self.packages.${prev.system}) deconz brlaser;
vimPlugins = prev.vimPlugins // final.callPackage ../pkgs/vim-plugins { inherit inputs; };
};
pkgsFor =
system:
import inputs.nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
config.allowUnfree = true;
};
};
perSystem =
{ system, ... }:
{
_module.args.pkgs = self.pkgsFor system;
};
}

View file

@ -4,6 +4,8 @@ let
inherit (inputs.self.outputs) nixConfig; inherit (inputs.self.outputs) nixConfig;
in in
{ {
nixpkgs.config.allowUnfree = true;
nix.gc = { nix.gc = {
automatic = true; automatic = true;
dates = "04:00"; dates = "04:00";