diff --git a/flake.nix b/flake.nix index d1236b0..6f50187 100644 --- a/flake.nix +++ b/flake.nix @@ -24,6 +24,7 @@ import-tree.url = "github:vic/import-tree"; # imports ./modules recursively }; outputs = inputs @ { flake-parts, ... }: + #outputs = inputs: inputs.flake-parts.lib.mkFlake {inherit inputs;} (inputs.import-tree ./modules); flake-parts.lib.mkFlake { inherit inputs; } ({ flake = let @@ -39,9 +40,9 @@ import nixpkgsInput { inherit system; config.allowUnfreePredicate = mkUnfreePredicate; - }; - pkgs = mkPkgs inputs.nixpkgs; - pkgs-unstable = mkPkgs inputs.nixpkgs-unstable; + }; + pkgs = mkPkgs inputs.nixpkgs; + pkgs-unstable = mkPkgs inputs.nixpkgs-unstable; in { inherit pkgs pkgs-unstable; }; diff --git a/modules/hosts/laptop.nix b/modules/hosts/laptop.nix index a910856..35e2acd 100644 --- a/modules/hosts/laptop.nix +++ b/modules/hosts/laptop.nix @@ -6,8 +6,14 @@ }; modules = with self.nixosModules; [ #inputs.home-manager.nixosModules.home-manager -inputs.home-manager.nixosModules.default +#inputs.home-manager.nixosModules.default # keep this alphabetically organised + + +home-manager-laptop + laptop + { nixpkgs.pkgs = self.pkgs; } + anki audioAndMedia autoCleanup-laptop @@ -25,12 +31,10 @@ inputs.home-manager.nixosModules.default games hardware-configuration-laptop hardwareUtils-laptop - home-manager-laptop hyprland IO kdrive latex - laptop ly mullvad networking @@ -42,21 +46,53 @@ inputs.home-manager.nixosModules.default udev user ];}; - flake.homeConfigurations.tomasr = inputs.home-manager.lib.homeManagerConfiguration { - pkgs = import inputs.nixpkgs { system = "x86_64-linux"; }; + flake.nixosModules.laptop = { ... }: { + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "25.11"; # Did you read the comment? -# system = "x86_64-linux"; - #specialArgs = { - # inherit (self) pkgs pkgs-unstable; - #}; - extraSpecialArgs = { - pkgs-unstable = - import inputs.nixpkgs-unstable { - system = "x86_64-linux"; - }; + /*#home-manager.users.tomasr = self.home.Configurations.tomasr; + #home-manager.nixosModule.home-manager.users.tomasr = self.homeConfigurations.tomasr; + home-manager.users.tomasr = { + imports = [ + self.homeModules.tomasr + ]; +};*/ + }; + flake.nixosModules.home-manager-laptop = { pkgs, ... }: { + imports = [ + inputs.home-manager.nixosModules.default # import official home-manager NixOS module + ]; + + # Warning. Git is used in case I break everything up. It already saved me once + environment.systemPackages = [ pkgs.git ]; + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + + extraSpecialArgs = { + #inherit (self) pkgs-unstable; + pkgs-unstable = self.pkgs-unstable; + inherit self; }; - modules = with self.homeModules; [ + }; + + users.users.tomasr = { + isNormalUser = true; + #shell = pkgs.zsh; + }; + home-manager.users.tomasr = self.homeModules.tomasrModule; + }; + # we shouldn't use homeConfigurations as it makes a standalone home-manager config + flake.homeModules.tomasrModule = { ... }: { + imports = with self.homeModules; [ + inputs.caelestia-shell.homeManagerModules.default anki + caelestia cursor eza fastfetch @@ -74,46 +110,12 @@ inputs.home-manager.nixosModules.default sbb-tui ssh thunderbird - tomasr + #tomasr vivify zoxide zsh zsh-laptop ]; - }; - flake.nixosModules.laptop = { ... }: { - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "25.11"; # Did you read the comment? - - #home-manager.users.tomasr = self.home.Configurations.tomasr; - #home-manager.nixosModule.home-manager.users.tomasr = self.homeConfigurations.tomasr; - home-manager.users.tomasr = { - imports = [ - self.homeModules.tomasr - ]; -}; - }; - flake.nixosModules.home-manager-laptop = { pkgs, ... }: { - imports = [ - inputs.home-manager.nixosModules.default # import official home-manager NixOS module - ]; - - # Warning. Git is used in case I break everything up. It already saved me once - environment.systemPackages = [ pkgs.git ]; - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - }; - }; - flake.homeModules.tomasr = { ... }: { - imports = [ - inputs.caelestia-shell.homeManagerModules.default - ]; home.username = "tomasr"; home.homeDirectory = "/home/tomasr"; diff --git a/modules/hosts/laptop.nix.save b/modules/hosts/laptop.nix.save deleted file mode 100644 index 015ea17..0000000 --- a/modules/hosts/laptop.nix.save +++ /dev/null @@ -1,120 +0,0 @@ -}[[{ inputs, self, ...}: { - flake.nixosConfigurations.laptop = inputs.nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { - inherit (self) pkgs pkgs-unstable; - }; - modules = with self.nixosModules; [ - # keep this alphabetically organised - anki - audioAndMedia - autoCleanup-laptop - autoUpdate-laptop - battery-laptop - bluetooth - bootloader-laptop - browsers - caelestia - development - documentation - disk - disk-laptop - fonts - games - hardware-configuration-laptop - hardwareUtils-laptop - home-manager-laptop - hyprland - IO - kdrive - latex - laptop - ly - mullvad - networking - notifications - office - #ollama - otherUtils - printer - udev - user - ]; - flake.homeConfiguration.tomasr = inputs.home-manager.lib.homeManagerConfiguration { - system = "x86_64-linux"; - specialArgs = { - inherit (self) pkgs pkgs-unstable; - }; - modules = with self.homeModules; [ - anki - cursor - eza - fastfetch - git - gtk - hyprland - hyprland-laptop - kitty - librewolf - mullvad - neovim - oh-my-zsh - ripgrep - rofi - sbb-tui - ssh - thunderbird - tomasr - vivify - zoxide - zsh - zsh-laptop - ]; - }; - flake.nixosModules.laptop = { ... }: { - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "25.11"; # Did you read the comment? - - home-manager.users.tomasr = self.homeModules.tomasr; - }; - flake.nixosModules.home-manager-laptop = { ... }: { - imports = [ - inputs.home-manager.nixosModules.default # import official home-manager NixOS module - ]; - - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - }; - }; - flake.homeModules.tomasr = { ... }: { - imports = [ - inputs.caelestia-shell.homeManagerModules.default - ]; - home.username = "tomasr"; - home.homeDirectory = "/home/tomasr"; - - home.sessionVariables = { - EDITOR = "neovim"; - TERMINAL = "kitty"; - }; - - # Required for Home Manager - home.stateVersion = "25.11"; # match your Home Manager release - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - }; -} diff --git a/modules/packages/README.md b/modules/packages/README.md index 75a0a30..840d553 100644 --- a/modules/packages/README.md +++ b/modules/packages/README.md @@ -5,3 +5,13 @@ For example, to use a newer package version that is still not in nixpkgs-unstabl Some rules about package naming: * If it is a custom derivation of a package, end with `ManuallyDerived` * If it is a script, start with `custom-`. The executable, package name (and file name if it is the only thing in this nix file) must be equal. + + +If perSystem needs `pkgs-unstable` pass it manually with +``` +{ self, ... }: { + perSystem = { pkgs, ...}: + let + pkgs-unstable = self.pkgs-unstable; + in +``` diff --git a/modules/packages/dejaManuallyDerived.nix b/modules/packages/dejaManuallyDerived.nix index 132533e..7078759 100644 --- a/modules/packages/dejaManuallyDerived.nix +++ b/modules/packages/dejaManuallyDerived.nix @@ -1,5 +1,9 @@ -{ ... }: { - perSystem = { pkgs, pkgs-unstable, ...}: { +{ self, ... }: { + perSystem = { pkgs, ...}: + let + pkgs-unstable = self.pkgs-unstable; + in + { # perSystem doesnt like pkgs-unstable we must input it globally packages.dejaManuallyDerived = pkgs-unstable.buildGoModule (finalAttrs: { pname = "deja"; version = "0.2.6";