diff --git a/flake.lock b/flake.lock index 980e023..f055fa0 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ ] }, "locked": { - "lastModified": 1768135262, - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { @@ -21,24 +21,6 @@ "type": "github" } }, - "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -46,71 +28,26 @@ ] }, "locked": { - "lastModified": 1770260404, - "narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=", + "lastModified": 1771471179, + "narHash": "sha256-XuP8HPzvt4+m9aKVeL9GdGNlTeyeDn3zEeUuorvrw88=", "owner": "nix-community", "repo": "home-manager", - "rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b", + "rev": "2dedeb55b2c140d9a123ae931588e8903fe202ef", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.11", "repo": "home-manager", "type": "github" } }, - "ixx": { - "inputs": { - "flake-utils": [ - "nixvim", - "nuschtosSearch", - "flake-utils" - ], - "nixpkgs": [ - "nixvim", - "nuschtosSearch", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1754860581, - "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", - "owner": "NuschtOS", - "repo": "ixx", - "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "ref": "v0.1.1", - "repo": "ixx", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1770770419, - "narHash": "sha256-iKZMkr6Cm9JzWlRYW/VPoL0A9jVKtZYiU4zSrVeetIs=", + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6c5e707c6b5339359a9a9e215c5e66d6d802fd7a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-25.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1770841267, - "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae", + "rev": "0182a361324364ae3f436a63005877674cf45efb", "type": "github" }, "original": { @@ -126,52 +63,26 @@ "nixpkgs": [ "nixpkgs" ], - "nuschtosSearch": "nuschtosSearch", - "systems": "systems_2" + "systems": "systems" }, "locked": { - "lastModified": 1769049374, - "narHash": "sha256-h0Os2qqNyycDY1FyZgtbn28VF1ySP74/n0f+LDd8j+w=", + "lastModified": 1771135771, + "narHash": "sha256-wyvBIhDuyCRyjB3yPg77qoyxrlgQtBR1rVW3c9knV3E=", "owner": "nix-community", "repo": "nixvim", - "rev": "b8f76bf5751835647538ef8784e4e6ee8deb8f95", + "rev": "ed0424f0b08d303a7348f52f7850ad1b2704f9ba", "type": "github" }, "original": { "owner": "nix-community", - "ref": "nixos-25.11", "repo": "nixvim", "type": "github" } }, - "nuschtosSearch": { - "inputs": { - "flake-utils": "flake-utils", - "ixx": "ixx", - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1768249818, - "narHash": "sha256-ANfn5OqIxq3HONPIXZ6zuI5sLzX1sS+2qcf/Pa0kQEc=", - "owner": "NuschtOS", - "repo": "search", - "rev": "b6f77b88e9009bfde28e2130e218e5123dc66796", - "type": "github" - }, - "original": { - "owner": "NuschtOS", - "repo": "search", - "type": "github" - } - }, "root": { "inputs": { "home-manager": "home-manager", "nixpkgs": "nixpkgs", - "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", "sops-nix": "sops-nix" } @@ -183,15 +94,15 @@ ] }, "locked": { - "lastModified": 1770683991, - "narHash": "sha256-xVfPvXDf9QN3Eh9dV+Lw6IkWG42KSuQ1u2260HKvpnc=", - "owner": "Mic92", + "lastModified": 1771166946, + "narHash": "sha256-UFc4lfGBr+wJmwgDGJDn1cVD6DTr0/8TdronNUiyXlU=", + "owner": "mic92", "repo": "sops-nix", - "rev": "8b89f44c2cc4581e402111d928869fe7ba9f7033", + "rev": "2d0cf89b4404529778bc82de7e42b5754e0fe4fa", "type": "github" }, "original": { - "owner": "Mic92", + "owner": "mic92", "repo": "sops-nix", "type": "github" } @@ -210,21 +121,6 @@ "repo": "default", "type": "github" } - }, - "systems_2": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 1dd2db7..ad62243 100644 --- a/flake.nix +++ b/flake.nix @@ -1,16 +1,20 @@ { + description = "leonhard's nix config"; + inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; - nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; - - home-manager.url = "github:nix-community/home-manager/release-25.11"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - - nixvim.url = "github:nix-community/nixvim/nixos-25.11"; - nixvim.inputs.nixpkgs.follows = "nixpkgs"; - - sops-nix.url = "github:Mic92/sops-nix"; - sops-nix.inputs.nixpkgs.follows = "nixpkgs"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + sops-nix = { + url = "github:mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = @@ -18,18 +22,41 @@ self, nixpkgs, home-manager, + sops-nix, + nixvim, ... }@inputs: let inherit (self) outputs; system = "x86_64-linux"; - pkgs = import nixpkgs { inherit system; }; + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; - commonModules = [ ./options.nix ]; + homeImports = [ + ./options.nix + nixvim.homeModules.nixvim + ./home-manager/base + ]; mkNixosConfig = name: modules: { "${name}" = nixpkgs.lib.nixosSystem { - modules = modules ++ commonModules; + modules = modules ++ [ + ./nixos/base + ./options.nix + home-manager.nixosModules.home-manager + sops-nix.nixosModules.sops + { + home-manager = { + useGlobalPkgs = true; + extraSpecialArgs = { inherit inputs outputs; }; + users.leonhard.imports = homeImports ++ [ + ./home-manager/leonhard + ]; + }; + } + ]; specialArgs = { inherit inputs outputs; }; }; }; @@ -37,22 +64,15 @@ mkHomeConfig = name: modules: { "${name}" = home-manager.lib.homeManagerConfiguration { inherit pkgs; - modules = modules ++ commonModules; + modules = modules ++ homeImports; extraSpecialArgs = { inherit inputs outputs; }; }; }; in { - packages = import ./pkgs pkgs; - overlays = import ./overlays { inherit inputs; }; - nixosModules = import ./modules/nixos; - homeManagerModules = import ./modules/home-manager; - nixosConfigurations = (mkNixosConfig "desktop" [ ./nixos/desktop ]) // (mkNixosConfig "server" [ ./nixos/server ]); - homeConfigurations = - (mkHomeConfig "leonhard@desktop" [ ./home-manager/desktop/leonhard.nix ]) - // (mkHomeConfig "leonhard@server" [ ./home-manager/server/leonhard.nix ]); + homeConfigurations = mkHomeConfig "leonhard" [ ./home-manager/leonhard ]; }; } diff --git a/home-manager/base.nix b/home-manager/base.nix deleted file mode 100644 index 8c06527..0000000 --- a/home-manager/base.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ - inputs, - outputs, -}: -{ - imports = [ - outputs.homeManagerModules - - inputs.nixvim.homeModules.nixvim - ]; - - nixpkgs = { - overlays = [ - outputs.overlays.additions - outputs.overlays.modifications - outputs.overlays.unstable-packages - ]; - config = { - allowUnfree = true; - }; - }; - - programs.home-manager.enable = true; - - # Nicely reload system units when changing configs - systemd.user.startServices = "sd-switch"; - - # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = "25.11"; -} diff --git a/home-manager/base/default.nix b/home-manager/base/default.nix new file mode 100644 index 0000000..04e6cb8 --- /dev/null +++ b/home-manager/base/default.nix @@ -0,0 +1,28 @@ +{ + osConfig ? null, + lib, + ... +}: +let + mkDefaultSharedAttrs = defaults: lib.mapAttrs (_: v: lib.mkDefault v) defaults; +in +{ + imports = [ + ./git.nix + ./fish.nix + ./nixvim + ./hyprland.nix + ./kitty.nix + ./rofi + ]; + + kekleo = lib.mkIf (osConfig != null) (mkDefaultSharedAttrs (osConfig.kekleo or { })); + + programs.home-manager.enable = true; + + # Nicely reload system units when changing configs + systemd.user.startServices = "sd-switch"; + + # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion + home.stateVersion = "25.11"; +} diff --git a/modules/home-manager/fish.nix b/home-manager/base/fish.nix similarity index 100% rename from modules/home-manager/fish.nix rename to home-manager/base/fish.nix diff --git a/modules/home-manager/git.nix b/home-manager/base/git.nix similarity index 100% rename from modules/home-manager/git.nix rename to home-manager/base/git.nix diff --git a/modules/home-manager/hyprland.nix b/home-manager/base/hyprland.nix similarity index 100% rename from modules/home-manager/hyprland.nix rename to home-manager/base/hyprland.nix diff --git a/modules/home-manager/kitty.nix b/home-manager/base/kitty.nix similarity index 100% rename from modules/home-manager/kitty.nix rename to home-manager/base/kitty.nix diff --git a/modules/home-manager/nixvim/default.nix b/home-manager/base/nixvim/default.nix similarity index 100% rename from modules/home-manager/nixvim/default.nix rename to home-manager/base/nixvim/default.nix diff --git a/modules/home-manager/nixvim/keymaps.nix b/home-manager/base/nixvim/keymaps.nix similarity index 100% rename from modules/home-manager/nixvim/keymaps.nix rename to home-manager/base/nixvim/keymaps.nix diff --git a/modules/home-manager/nixvim/opts.nix b/home-manager/base/nixvim/opts.nix similarity index 100% rename from modules/home-manager/nixvim/opts.nix rename to home-manager/base/nixvim/opts.nix diff --git a/modules/home-manager/nixvim/plugins/cmp.nix b/home-manager/base/nixvim/plugins/cmp.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/cmp.nix rename to home-manager/base/nixvim/plugins/cmp.nix diff --git a/modules/home-manager/nixvim/plugins/default.nix b/home-manager/base/nixvim/plugins/default.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/default.nix rename to home-manager/base/nixvim/plugins/default.nix diff --git a/modules/home-manager/nixvim/plugins/fmt.nix b/home-manager/base/nixvim/plugins/fmt.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/fmt.nix rename to home-manager/base/nixvim/plugins/fmt.nix diff --git a/modules/home-manager/nixvim/plugins/lsp.nix b/home-manager/base/nixvim/plugins/lsp.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/lsp.nix rename to home-manager/base/nixvim/plugins/lsp.nix diff --git a/modules/home-manager/nixvim/plugins/lualine.nix b/home-manager/base/nixvim/plugins/lualine.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/lualine.nix rename to home-manager/base/nixvim/plugins/lualine.nix diff --git a/modules/home-manager/nixvim/plugins/nvim-autopairs.nix b/home-manager/base/nixvim/plugins/nvim-autopairs.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/nvim-autopairs.nix rename to home-manager/base/nixvim/plugins/nvim-autopairs.nix diff --git a/modules/home-manager/nixvim/plugins/telescope.nix b/home-manager/base/nixvim/plugins/telescope.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/telescope.nix rename to home-manager/base/nixvim/plugins/telescope.nix diff --git a/modules/home-manager/nixvim/plugins/treesitter.nix b/home-manager/base/nixvim/plugins/treesitter.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/treesitter.nix rename to home-manager/base/nixvim/plugins/treesitter.nix diff --git a/modules/home-manager/nixvim/plugins/which-key.nix b/home-manager/base/nixvim/plugins/which-key.nix similarity index 100% rename from modules/home-manager/nixvim/plugins/which-key.nix rename to home-manager/base/nixvim/plugins/which-key.nix diff --git a/modules/home-manager/rofi/default.nix b/home-manager/base/rofi/default.nix similarity index 100% rename from modules/home-manager/rofi/default.nix rename to home-manager/base/rofi/default.nix diff --git a/modules/home-manager/rofi/tokyonight.rasi b/home-manager/base/rofi/tokyonight.rasi similarity index 100% rename from modules/home-manager/rofi/tokyonight.rasi rename to home-manager/base/rofi/tokyonight.rasi diff --git a/home-manager/desktop/leonhard.nix b/home-manager/desktop/leonhard.nix deleted file mode 100644 index 9ba8da1..0000000 --- a/home-manager/desktop/leonhard.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - inputs, - outputs, - ... -}: -{ - imports = [ - (import ../base.nix { inherit inputs outputs; }) - ]; - - home = { - username = "leonhard"; - homeDirectory = "/home/leonhard"; - }; -} diff --git a/home-manager/leonhard/default.nix b/home-manager/leonhard/default.nix new file mode 100644 index 0000000..ad63542 --- /dev/null +++ b/home-manager/leonhard/default.nix @@ -0,0 +1,6 @@ +{ + home = { + username = "leonhard"; + homeDirectory = "/home/leonhard"; + }; +} diff --git a/home-manager/server/leonhard.nix b/home-manager/server/leonhard.nix deleted file mode 100644 index d8fffa3..0000000 --- a/home-manager/server/leonhard.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ - inputs, - outputs, - ... -}: -{ - imports = [ - (import ../base.nix { inherit inputs outputs; }) - ../../nixos/server/config.nix - ]; - - home = { - username = "leonhard"; - homeDirectory = "/home/leonhard"; - }; -} diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix deleted file mode 100644 index 98bbcbe..0000000 --- a/modules/home-manager/default.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - imports = [ - ./git.nix - ./fish.nix - ./nixvim - ./hyprland.nix - ./kitty.nix - ./rofi - ]; -} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix deleted file mode 100644 index fc9ade2..0000000 --- a/modules/nixos/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - imports = [ - ./fish.nix - ./firefox.nix - ./hyprland.nix - ./ly.nix - ]; -} diff --git a/nixos/base.nix b/nixos/base/default.nix similarity index 76% rename from nixos/base.nix rename to nixos/base/default.nix index 1829f3d..195f66b 100644 --- a/nixos/base.nix +++ b/nixos/base/default.nix @@ -1,41 +1,26 @@ { inputs, - outputs, -}: -{ lib, - config, pkgs, ... }: { imports = [ - outputs.nixosModules + ./fish.nix + ./firefox.nix + ./hyprland.nix + ./ly.nix ]; - nixpkgs = { - overlays = [ - outputs.overlays.additions - outputs.overlays.modifications - outputs.overlays.unstable-packages - ]; - config = { - allowUnfree = true; - }; - }; - nix = let flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs; in { settings = { - # Enable flakes and new 'nix' command experimental-features = "nix-command flakes"; # Opinionated: disable global registry flake-registry = ""; - # Workaround for https://github.com/NixOS/nix/issues/9574 - nix-path = config.nix.nixPath; }; # Opinionated: disable channels channel.enable = false; diff --git a/modules/nixos/firefox.nix b/nixos/base/firefox.nix similarity index 100% rename from modules/nixos/firefox.nix rename to nixos/base/firefox.nix diff --git a/modules/nixos/fish.nix b/nixos/base/fish.nix similarity index 100% rename from modules/nixos/fish.nix rename to nixos/base/fish.nix diff --git a/modules/nixos/hyprland.nix b/nixos/base/hyprland.nix similarity index 100% rename from modules/nixos/hyprland.nix rename to nixos/base/hyprland.nix diff --git a/modules/nixos/ly.nix b/nixos/base/ly.nix similarity index 100% rename from modules/nixos/ly.nix rename to nixos/base/ly.nix diff --git a/nixos/desktop/default.nix b/nixos/desktop/default.nix index 6545ec8..3939f4c 100644 --- a/nixos/desktop/default.nix +++ b/nixos/desktop/default.nix @@ -1,11 +1,5 @@ -{ - inputs, - outputs, - ... -}: { imports = [ - (import ../base.nix { inherit inputs outputs; }) ./hardware-configuration.nix ]; diff --git a/nixos/server/config.nix b/nixos/server/config.nix deleted file mode 100644 index c9bfaed..0000000 --- a/nixos/server/config.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - kekleo.graphical = false; - kekleo.publicKeys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOsLFjdS9JEcgBPa6NvOzpJp8coJPJwJFuM+PQCZ8brl leonhard" - ]; -} diff --git a/nixos/server/default.nix b/nixos/server/default.nix index f7f8310..ff90efa 100644 --- a/nixos/server/default.nix +++ b/nixos/server/default.nix @@ -1,19 +1,19 @@ { - inputs, - outputs, config, ... }: { imports = [ - (import ../base.nix { inherit inputs outputs; }) ./hardware-configuration.nix - ./config.nix - inputs.sops-nix.nixosModules.sops ./secrets ./dyndns ]; + kekleo.graphical = false; + kekleo.publicKeys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOsLFjdS9JEcgBPa6NvOzpJp8coJPJwJFuM+PQCZ8brl leonhard" + ]; + users.users.leonhard = { initialPassword = "leonhard"; isNormalUser = true;