Compare commits

..

2 commits

Author SHA1 Message Date
Leon Schwarzäugl
b73978ad19
feat: make nixosConfig work on home-manager 2025-07-17 03:33:27 +02:00
Leon Schwarzäugl
302c488569
WIP share configuraton between nixos / homemanager 2025-07-17 03:18:37 +02:00
15 changed files with 145 additions and 109 deletions

View file

@ -838,6 +838,11 @@ The rest of the outputs either define or help define the actual configurations:
name = configName; name = configName;
secretsDir = ../hosts/nixos/${configName}/secrets; secretsDir = ../hosts/nixos/${configName}/secrets;
}; };
swarselprofiles = {
minimal = lib.mkIf minimal true;
};
} }
]; ];
}; };
@ -861,6 +866,7 @@ The rest of the outputs either define or help define the actual configurations:
{ {
node.name = configName; node.name = configName;
node.secretsDir = ../hosts/darwin/${configName}/secrets; node.secretsDir = ../hosts/darwin/${configName}/secrets;
} }
]; ];
}; };
@ -1772,78 +1778,70 @@ My work machine. Built for more security, this is the gold standard of my config
let let
primaryUser = config.swarselsystems.mainUser; primaryUser = config.swarselsystems.mainUser;
in in
{ {
imports = [ imports = [
inputs.nixos-hardware.nixosModules.framework-16-7040-amd inputs.nixos-hardware.nixosModules.framework-16-7040-amd
./disk-config.nix ./disk-config.nix
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
swarselprofiles = { swarselprofiles = {
personal = lib.mkIf (!minimal) true; personal = lib.mkIf (!minimal) true;
minimal = lib.mkIf minimal true; work = lib.mkIf (!minimal) true;
work = lib.mkIf (!minimal) true; framework = lib.mkIf (!minimal) true;
framework = lib.mkIf (!minimal) true; amdcpu = true;
amdcpu = true; amdgpu = true;
amdgpu = true; hibernation = true;
hibernation = true; btrfs = true;
btrfs = true; };
}; swarselsystems = {
lowResolution = "1280x800";
highResolution = "2560x1600";
isLaptop = true;
isNixos = true;
isBtrfs = true;
isLinux = true;
sharescreen = "eDP-2";
info = "Framework Laptop 16, 7940HS, RX7700S, 64GB RAM";
firewall = lib.mkForce true;
wallpaper = self + /files/wallpaper/lenovowp.png;
hasBluetooth = true;
hasFingerprint = true;
isImpermanence = false;
isSecureBoot = true;
isCrypted = true;
inherit (config.repo.secrets.local) hostName;
inherit (config.repo.secrets.local) fqdn;
hibernation.offset = 533760;
};
home-manager.users."${primaryUser}" = {
swarselsystems = { swarselsystems = {
isLaptop = true; isSecondaryGpu = true;
isNixos = true; SecondaryGpuCard = "pci-0000_03_00_0";
isBtrfs = true; cpuCount = 16;
isLinux = true; temperatureHwmon = {
sharescreen = "eDP-2"; isAbsolutePath = true;
info = "Framework Laptop 16, 7940HS, RX7700S, 64GB RAM"; path = "/sys/devices/virtual/thermal/thermal_zone0/";
firewall = lib.mkForce true; input-filename = "temp4_input";
wallpaper = self + /files/wallpaper/lenovowp.png;
hasBluetooth = true;
hasFingerprint = true;
isImpermanence = false;
isSecureBoot = true;
isCrypted = true;
inherit (config.repo.secrets.local) hostName;
inherit (config.repo.secrets.local) fqdn;
hibernation.offset = 533760;
}; };
monitors = {
home-manager.users."${primaryUser}" = { main = {
# home.stateVersion = lib.mkForce "23.05"; name = "BOE 0x0BC9 Unknown";
swarselprofiles = { mode = "2560x1600"; # TEMPLATE
personal = lib.mkIf (!minimal) true; scale = "1";
minimal = lib.mkIf minimal true; position = "2560,0";
work = lib.mkIf (!minimal) true; workspace = "15:L";
framework = lib.mkIf (!minimal) true; output = "eDP-2";
};
swarselsystems = {
isSecondaryGpu = true;
SecondaryGpuCard = "pci-0000_03_00_0";
cpuCount = 16;
temperatureHwmon = {
isAbsolutePath = true;
path = "/sys/devices/virtual/thermal/thermal_zone0/";
input-filename = "temp4_input";
};
lowResolution = "1280x800";
highResolution = "2560x1600";
monitors = {
main = {
name = "BOE 0x0BC9 Unknown";
mode = "2560x1600"; # TEMPLATE
scale = "1";
position = "2560,0";
workspace = "15:L";
output = "eDP-2";
};
};
}; };
};
}; };
} };
}
@ -3487,6 +3485,8 @@ This is the "reference implementation" of a setup that runs without NixOS, only
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops
inputs.nix-index-database.hmModules.nix-index inputs.nix-index-database.hmModules.nix-index
"${self}/modules/home" "${self}/modules/home"
"${self}/modules/nixos/common/pii.nix"
"${self}/modules/nixos/common/meta.nix"
]; ];
nixpkgs = { nixpkgs = {
@ -3971,18 +3971,18 @@ This section is for setting things that should be used on hosts that are using t
#+begin_src nix-ts :tangle modules/home/common/sharedoptions.nix #+begin_src nix-ts :tangle modules/home/common/sharedoptions.nix
{ lib, config, nixosConfig, ... }: { lib, config, nixosConfig ? null, ... }:
let let
# mirrorAttrs = lib.mapAttrs (_: v: lib.mkDefault v) nixosConfig.swarselsystems; # mirrorAttrs = lib.mapAttrs (_: v: lib.mkDefault v) nixosConfig.swarselsystems;
inherit (lib) mkDefault mapAttrs filterAttrs; inherit (lib) mkDefault mapAttrs filterAttrs;
mkDefaultCommonAttrs = base: defaults: mkDefaultCommonAttrs = base: defaults:
lib.mapAttrs (_: v: lib.mkDefault v) lib.mapAttrs (_: v: lib.mkDefault v)
(lib.filterAttrs (k: _: base ? ${k}) defaults); (lib.filterAttrs (k: _: base ? ${k}) defaults);
in in
{ {
# config.swarselsystems = mirrorAttrs; # config.swarselsystems = mirrorAttrs;
config.swarselsystems = mkDefaultCommonAttrs config.swarselsystems nixosConfig.swarselsystems; config.swarselsystems = lib.mkIf (nixosConfig != null) (mkDefaultCommonAttrs config.swarselsystems nixosConfig.swarselsystems);
} }
#+end_src #+end_src
**** Topology (automatically active) **** Topology (automatically active)
@ -4166,8 +4166,11 @@ We enable the use of =home-manager= as a NixoS module. A nice trick here is the
imports = [ imports = [
"${self}/profiles/home" "${self}/profiles/home"
"${self}/modules/home" "${self}/modules/home"
# "${self}/modules/nixos/common/pii.nix" {
# "${self}/modules/nixos/common/meta.nix" swarselprofiles = {
minimal = lib.mkIf minimal true;
};
}
]; ];
# node = { # node = {
# secretsDir = if (!config.swarselsystems.isNixos) then ../../../hosts/home/${configName}/secrets else ../../../hosts/nixos/${configName}/secrets; # secretsDir = if (!config.swarselsystems.isNixos) then ../../../hosts/home/${configName}/secrets else ../../../hosts/nixos/${configName}/secrets;
@ -11072,7 +11075,7 @@ I use sops-nix to handle secrets that I want to have available on my machines at
:END: :END:
#+begin_src nix-ts :tangle modules/home/common/yubikey.nix #+begin_src nix-ts :tangle modules/home/common/yubikey.nix
{ lib, config, nixosConfig, ... }: { lib, config, nixosConfig ? config, ... }:
let let
inherit (config.swarselsystems) homeDir; inherit (config.swarselsystems) homeDir;
in in
@ -11349,7 +11352,7 @@ Also in firefox `about:config > toolkit.legacyUserProfileCustomizations.styleshe
Sets environment variables. Here I am only setting the EDITOR variable, most variables are set in the [[#h:02df9dfc-d1af-4a37-a7a0-d8da0af96a20][Sway]] section. Sets environment variables. Here I am only setting the EDITOR variable, most variables are set in the [[#h:02df9dfc-d1af-4a37-a7a0-d8da0af96a20][Sway]] section.
#+begin_src nix-ts :tangle modules/home/common/env.nix #+begin_src nix-ts :tangle modules/home/common/env.nix
{ lib, config, globals, nixosConfig, ... }: { lib, config, globals, nixosConfig ? config, ... }:
let let
inherit (nixosConfig.repo.secrets.common.mail) address1 address2 address3 address4 allMailAddresses; inherit (nixosConfig.repo.secrets.common.mail) address1 address2 address3 address4 allMailAddresses;
inherit (nixosConfig.repo.secrets.common) fullName; inherit (nixosConfig.repo.secrets.common) fullName;
@ -11555,7 +11558,7 @@ Eza provides me with a better =ls= command and some other useful aliases.
Here I set up my git config, automatic signing of commits, useful aliases for my ost used commands (for when I am not using [[#h:d2c7323d-f8c6-4f23-b70a-930e3e4ecce5][Magit]]) as well as a git template defined in [[#h:5ef03803-e150-41bc-b603-e80d60d96efc][Linking dotfiles]]. Here I set up my git config, automatic signing of commits, useful aliases for my ost used commands (for when I am not using [[#h:d2c7323d-f8c6-4f23-b70a-930e3e4ecce5][Magit]]) as well as a git template defined in [[#h:5ef03803-e150-41bc-b603-e80d60d96efc][Linking dotfiles]].
#+begin_src nix-ts :tangle modules/home/common/git.nix #+begin_src nix-ts :tangle modules/home/common/git.nix
{ lib, config, globals, minimal, nixosConfig, ... }: { lib, config, globals, minimal, nixosConfig ? config, ... }:
let let
inherit (nixosConfig.repo.secrets.common.mail) address1; inherit (nixosConfig.repo.secrets.common.mail) address1;
inherit (nixosConfig.repo.secrets.common) fullName; inherit (nixosConfig.repo.secrets.common) fullName;
@ -12096,7 +12099,7 @@ Currently I only use it as before with =initExtra= though.
Normally I use 4 mail accounts - here I set them all up. Three of them are Google accounts (sadly), which are a chore to setup. The last is just a sender account that I setup SMTP for here. Normally I use 4 mail accounts - here I set them all up. Three of them are Google accounts (sadly), which are a chore to setup. The last is just a sender account that I setup SMTP for here.
#+begin_src nix-ts :tangle modules/home/common/mail.nix #+begin_src nix-ts :tangle modules/home/common/mail.nix
{ lib, config, nixosConfig, ... }: { lib, config, nixosConfig ? config, ... }:
let let
inherit (nixosConfig.repo.secrets.common.mail) address1 address2 address2-name address3 address3-name address4 address4-user address4-host; inherit (nixosConfig.repo.secrets.common.mail) address1 address2 address2-name address3 address3-name address4 address4-user address4-host;
inherit (nixosConfig.repo.secrets.common) fullName; inherit (nixosConfig.repo.secrets.common) fullName;
@ -13575,7 +13578,7 @@ Settinfs that are needed for the gpg-agent. Also we are enabling emacs support f
This service changes the screen hue at night. I am not sure if that really does something, but I like the color anyways. This service changes the screen hue at night. I am not sure if that really does something, but I like the color anyways.
#+begin_src nix-ts :tangle modules/home/common/gammastep.nix #+begin_src nix-ts :tangle modules/home/common/gammastep.nix
{ lib, config, nixosConfig, ... }: { lib, config, nixosConfig ? config, ... }:
let let
inherit (nixosConfig.repo.secrets.common.location) latitude longitude; inherit (nixosConfig.repo.secrets.common.location) latitude longitude;
in in
@ -13738,7 +13741,7 @@ The rest of the settings is at [[#h:fb3f3e01-7df4-4b06-9e91-aa9cac61a431][gaming
The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]. Here, I am setting up the different firefox profiles that I need for the SSO sites that I need to access at work as well as a few ssh shorthands. The rest of the settings is at [[#h:bbf2ecb6-c8ff-4462-b5d5-d45b28604ddf][work]]. Here, I am setting up the different firefox profiles that I need for the SSO sites that I need to access at work as well as a few ssh shorthands.
#+begin_src nix-ts :tangle modules/home/optional/work.nix :noweb yes #+begin_src nix-ts :tangle modules/home/optional/work.nix :noweb yes
{ self, config, pkgs, lib, nixosConfig, ... }: { self, config, pkgs, lib, nixosConfig ? config, ... }:
let let
inherit (config.swarselsystems) homeDir; inherit (config.swarselsystems) homeDir;
in in
@ -16120,7 +16123,7 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
:END: :END:
#+begin_src nix-ts :tangle profiles/nixos/personal/default.nix :mkdirp yes #+begin_src nix-ts :tangle profiles/nixos/personal/default.nix :mkdirp yes
{ lib, config, ... }: { lib, config, minimal, ... }:
{ {
options.swarselprofiles.personal = lib.mkEnableOption "is this a personal host"; options.swarselprofiles.personal = lib.mkEnableOption "is this a personal host";
config = lib.mkIf config.swarselprofiles.personal { config = lib.mkIf config.swarselprofiles.personal {
@ -16177,6 +16180,11 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
ssh = lib.mkDefault true; ssh = lib.mkDefault true;
}; };
}; };
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
personal = lib.mkIf (!minimal) true;
};
};
}; };
@ -16381,7 +16389,7 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
:END: :END:
#+begin_src nix-ts :tangle profiles/nixos/work/default.nix :mkdirp yes #+begin_src nix-ts :tangle profiles/nixos/work/default.nix :mkdirp yes
{ lib, config, ... }: { lib, config, minimal, ... }:
{ {
options.swarselprofiles.work = lib.mkEnableOption "is this a work host"; options.swarselprofiles.work = lib.mkEnableOption "is this a work host";
config = lib.mkIf config.swarselprofiles.work { config = lib.mkIf config.swarselprofiles.work {
@ -16390,6 +16398,11 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
work = lib.mkDefault true; work = lib.mkDefault true;
}; };
}; };
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
work = lib.mkIf (!minimal) true;
};
};
}; };
@ -16403,7 +16416,7 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
:END: :END:
#+begin_src nix-ts :tangle profiles/nixos/framework/default.nix :mkdirp yes #+begin_src nix-ts :tangle profiles/nixos/framework/default.nix :mkdirp yes
{ lib, config, ... }: { lib, config, minimal, ... }:
{ {
options.swarselprofiles.framework = lib.mkEnableOption "is this a framework brand host"; options.swarselprofiles.framework = lib.mkEnableOption "is this a framework brand host";
config = lib.mkIf config.swarselprofiles.framework { config = lib.mkIf config.swarselprofiles.framework {
@ -16412,6 +16425,11 @@ Modules that need to be loaded on the NixOS level. Note that these will not be a
framework = lib.mkDefault true; framework = lib.mkDefault true;
}; };
}; };
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
framework = lib.mkIf (!minimal) true;
};
};
}; };

View file

@ -6,6 +6,8 @@
inputs.sops-nix.homeManagerModules.sops inputs.sops-nix.homeManagerModules.sops
inputs.nix-index-database.hmModules.nix-index inputs.nix-index-database.hmModules.nix-index
"${self}/modules/home" "${self}/modules/home"
"${self}/modules/nixos/common/pii.nix"
"${self}/modules/nixos/common/meta.nix"
]; ];
nixpkgs = { nixpkgs = {

View file

@ -15,7 +15,6 @@ in
swarselprofiles = { swarselprofiles = {
personal = lib.mkIf (!minimal) true; personal = lib.mkIf (!minimal) true;
minimal = lib.mkIf minimal true;
work = lib.mkIf (!minimal) true; work = lib.mkIf (!minimal) true;
framework = lib.mkIf (!minimal) true; framework = lib.mkIf (!minimal) true;
amdcpu = true; amdcpu = true;
@ -24,6 +23,8 @@ in
btrfs = true; btrfs = true;
}; };
swarselsystems = { swarselsystems = {
lowResolution = "1280x800";
highResolution = "2560x1600";
isLaptop = true; isLaptop = true;
isNixos = true; isNixos = true;
isBtrfs = true; isBtrfs = true;
@ -43,13 +44,6 @@ in
}; };
home-manager.users."${primaryUser}" = { home-manager.users."${primaryUser}" = {
# home.stateVersion = lib.mkForce "23.05";
swarselprofiles = {
personal = lib.mkIf (!minimal) true;
minimal = lib.mkIf minimal true;
work = lib.mkIf (!minimal) true;
framework = lib.mkIf (!minimal) true;
};
swarselsystems = { swarselsystems = {
isSecondaryGpu = true; isSecondaryGpu = true;
SecondaryGpuCard = "pci-0000_03_00_0"; SecondaryGpuCard = "pci-0000_03_00_0";
@ -59,8 +53,6 @@ in
path = "/sys/devices/virtual/thermal/thermal_zone0/"; path = "/sys/devices/virtual/thermal/thermal_zone0/";
input-filename = "temp4_input"; input-filename = "temp4_input";
}; };
lowResolution = "1280x800";
highResolution = "2560x1600";
monitors = { monitors = {
main = { main = {
name = "BOE 0x0BC9 Unknown"; name = "BOE 0x0BC9 Unknown";

View file

@ -1,4 +1,4 @@
{ lib, config, globals, nixosConfig, ... }: { lib, config, globals, nixosConfig ? config, ... }:
let let
inherit (nixosConfig.repo.secrets.common.mail) address1 address2 address3 address4 allMailAddresses; inherit (nixosConfig.repo.secrets.common.mail) address1 address2 address3 address4 allMailAddresses;
inherit (nixosConfig.repo.secrets.common) fullName; inherit (nixosConfig.repo.secrets.common) fullName;

View file

@ -1,4 +1,4 @@
{ lib, config, nixosConfig, ... }: { lib, config, nixosConfig ? config, ... }:
let let
inherit (nixosConfig.repo.secrets.common.location) latitude longitude; inherit (nixosConfig.repo.secrets.common.location) latitude longitude;
in in

View file

@ -1,4 +1,4 @@
{ lib, config, globals, minimal, nixosConfig, ... }: { lib, config, globals, minimal, nixosConfig ? config, ... }:
let let
inherit (nixosConfig.repo.secrets.common.mail) address1; inherit (nixosConfig.repo.secrets.common.mail) address1;
inherit (nixosConfig.repo.secrets.common) fullName; inherit (nixosConfig.repo.secrets.common) fullName;

View file

@ -1,4 +1,4 @@
{ lib, config, nixosConfig, ... }: { lib, config, nixosConfig ? config, ... }:
let let
inherit (nixosConfig.repo.secrets.common.mail) address1 address2 address2-name address3 address3-name address4 address4-user address4-host; inherit (nixosConfig.repo.secrets.common.mail) address1 address2 address2-name address3 address3-name address4 address4-user address4-host;
inherit (nixosConfig.repo.secrets.common) fullName; inherit (nixosConfig.repo.secrets.common) fullName;

View file

@ -1,4 +1,4 @@
{ lib, config, nixosConfig, ... }: { lib, config, nixosConfig ? null, ... }:
let let
# mirrorAttrs = lib.mapAttrs (_: v: lib.mkDefault v) nixosConfig.swarselsystems; # mirrorAttrs = lib.mapAttrs (_: v: lib.mkDefault v) nixosConfig.swarselsystems;
inherit (lib) mkDefault mapAttrs filterAttrs; inherit (lib) mkDefault mapAttrs filterAttrs;
@ -8,5 +8,5 @@ let
in in
{ {
# config.swarselsystems = mirrorAttrs; # config.swarselsystems = mirrorAttrs;
config.swarselsystems = mkDefaultCommonAttrs config.swarselsystems nixosConfig.swarselsystems; config.swarselsystems = lib.mkIf (nixosConfig != null) (mkDefaultCommonAttrs config.swarselsystems nixosConfig.swarselsystems);
} }

View file

@ -1,4 +1,4 @@
{ lib, config, nixosConfig, ... }: { lib, config, nixosConfig ? config, ... }:
let let
inherit (config.swarselsystems) homeDir; inherit (config.swarselsystems) homeDir;
in in

View file

@ -1,4 +1,4 @@
{ self, config, pkgs, lib, nixosConfig, ... }: { self, config, pkgs, lib, nixosConfig ? config, ... }:
let let
inherit (config.swarselsystems) homeDir; inherit (config.swarselsystems) homeDir;
in in

View file

@ -14,8 +14,11 @@
imports = [ imports = [
"${self}/profiles/home" "${self}/profiles/home"
"${self}/modules/home" "${self}/modules/home"
# "${self}/modules/nixos/common/pii.nix" {
# "${self}/modules/nixos/common/meta.nix" swarselprofiles = {
minimal = lib.mkIf minimal true;
};
}
]; ];
# node = { # node = {
# secretsDir = if (!config.swarselsystems.isNixos) then ../../../hosts/home/${configName}/secrets else ../../../hosts/nixos/${configName}/secrets; # secretsDir = if (!config.swarselsystems.isNixos) then ../../../hosts/home/${configName}/secrets else ../../../hosts/nixos/${configName}/secrets;

View file

@ -26,6 +26,11 @@
name = configName; name = configName;
secretsDir = ../hosts/nixos/${configName}/secrets; secretsDir = ../hosts/nixos/${configName}/secrets;
}; };
swarselprofiles = {
minimal = lib.mkIf minimal true;
};
} }
]; ];
}; };
@ -49,6 +54,7 @@
{ {
node.name = configName; node.name = configName;
node.secretsDir = ../hosts/darwin/${configName}/secrets; node.secretsDir = ../hosts/darwin/${configName}/secrets;
} }
]; ];
}; };

View file

@ -1,4 +1,4 @@
{ lib, config, ... }: { lib, config, minimal, ... }:
{ {
options.swarselprofiles.framework = lib.mkEnableOption "is this a framework brand host"; options.swarselprofiles.framework = lib.mkEnableOption "is this a framework brand host";
config = lib.mkIf config.swarselprofiles.framework { config = lib.mkIf config.swarselprofiles.framework {
@ -7,6 +7,11 @@
framework = lib.mkDefault true; framework = lib.mkDefault true;
}; };
}; };
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
framework = lib.mkIf (!minimal) true;
};
};
}; };

View file

@ -1,4 +1,4 @@
{ lib, config, ... }: { lib, config, minimal, ... }:
{ {
options.swarselprofiles.personal = lib.mkEnableOption "is this a personal host"; options.swarselprofiles.personal = lib.mkEnableOption "is this a personal host";
config = lib.mkIf config.swarselprofiles.personal { config = lib.mkIf config.swarselprofiles.personal {
@ -55,6 +55,11 @@
ssh = lib.mkDefault true; ssh = lib.mkDefault true;
}; };
}; };
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
personal = lib.mkIf (!minimal) true;
};
};
}; };

View file

@ -1,4 +1,4 @@
{ lib, config, ... }: { lib, config, minimal, ... }:
{ {
options.swarselprofiles.work = lib.mkEnableOption "is this a work host"; options.swarselprofiles.work = lib.mkEnableOption "is this a work host";
config = lib.mkIf config.swarselprofiles.work { config = lib.mkIf config.swarselprofiles.work {
@ -7,6 +7,11 @@
work = lib.mkDefault true; work = lib.mkDefault true;
}; };
}; };
home-manager.users."${config.swarselsystems.mainUser}" = {
swarselprofiles = {
work = lib.mkIf (!minimal) true;
};
};
}; };