1
0

flake.nix 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. {
  2. description = "Nix Dotsfiles with flake";
  3. inputs = {
  4. nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
  5. home-manager = {
  6. url = "github:nix-community/home-manager/release-25.11";
  7. inputs.nixpkgs.follows = "nixpkgs";
  8. };
  9. };
  10. outputs =
  11. {
  12. self,
  13. ...
  14. }@inputs:
  15. let
  16. hosts = import ./config/hosts.nix;
  17. mkHomeConfigurations =
  18. {
  19. host,
  20. nixpkgs,
  21. home-manager,
  22. modules ? [ ],
  23. }:
  24. home-manager.lib.homeManagerConfiguration {
  25. pkgs = import nixpkgs {
  26. system = host.arch;
  27. config = {
  28. allowUnfree = true;
  29. };
  30. };
  31. modules = [
  32. ./hosts/${host.dir}/home.nix
  33. ] ++ modules;
  34. };
  35. mkNixOSConfigurations =
  36. {
  37. host,
  38. nixpkgs,
  39. home-manager,
  40. modules ? [ ],
  41. overlays ? [ ],
  42. }:
  43. nixpkgs.lib.nixosSystem {
  44. system = host.arch;
  45. modules = [
  46. ./hosts/${host.dir}/configuration.nix
  47. { nixpkgs.overlays = overlays; }
  48. home-manager.nixosModules.home-manager
  49. {
  50. home-manager.useGlobalPkgs = true;
  51. home-manager.users."${host.user}" = import ./hosts/${host.dir}/home.nix;
  52. }
  53. ] ++ modules;
  54. };
  55. in
  56. {
  57. nixosConfigurations."${hosts.nixstation.hostname}" = mkNixOSConfigurations {
  58. host = hosts.nixstation;
  59. nixpkgs = inputs.nixpkgs;
  60. home-manager = inputs.home-manager;
  61. };
  62. nixosConfigurations."${hosts.nixtop.hostname}" = mkNixOSConfigurations {
  63. host = hosts.nixtop;
  64. nixpkgs = inputs.nixpkgs;
  65. home-manager = inputs.home-manager;
  66. };
  67. #homeConfigurations."${hosts.workstation.user}@${hosts.workstation.hostname}" = mkHomeConfigurations {
  68. # host = hosts.workstation;
  69. # nixpkgs = inputs.nixpkgs;
  70. # home-manager = inputs.home-manager;
  71. #};
  72. #homeConfigurations."${hosts.wsl.hostname}" = mkHomeConfigurations {
  73. # host = hosts.wsl;
  74. # nixpkgs = inputs.nixpkgs-stable;
  75. # home-manager = inputs.home-manager-stable;
  76. #};
  77. };
  78. }