diff --git a/configurations/default.nix b/configurations/default.nix index ff2fcc1..b6ab523 100644 --- a/configurations/default.nix +++ b/configurations/default.nix @@ -9,4 +9,10 @@ sapphira = import ./server.nix flakeContext; # sapphira wsl = import ./wsl.nix flakeContext; # wsl }; + nixOnDroidConfigurations = { + epral = import ./mobile.nix flakeContext; # epral (Android via nix-on-droid) + # Alias so a plain `nix-on-droid switch` from a local clone + # (~/.config/nix-on-droid) picks up the device config without `#epral`. + default = import ./mobile.nix flakeContext; + }; } diff --git a/droid/epral.nix b/configurations/mobile.nix similarity index 91% rename from droid/epral.nix rename to configurations/mobile.nix index 134e144..1b1a3ff 100644 --- a/droid/epral.nix +++ b/configurations/mobile.nix @@ -18,7 +18,7 @@ let }: { imports = [ - inputs.self.nixosModules.default # base defaultModule (termux-trimmed) + inputs.self.nixosModules.strict ]; xlib.device = { @@ -44,25 +44,26 @@ let nano # Some common stuff that people expect to have - openssh - treefmt - git - procps - psmisc # provides killall (attr `killall` was removed from nixpkgs) + bzip2 diffutils findutils - util-linux # renamed from utillinux - tzdata - hostname - man + git gnugrep gnupg gnused gnutar - bzip2 gzip - zip + hostname + man + ncurses + openssh + procps + psmisc # provides killall (attr `killall` was removed from nixpkgs) + treefmt + tzdata unzip + util-linux # renamed from utillinux + zip ]; # Backup etc files instead of failing to activate generation if a file already exists in /etc @@ -71,12 +72,17 @@ let # Shared userspace home-manager config (same cozy shell as on NixOS hosts). # nix-on-droid forces home.username / home.homeDirectory from user.*, # so the strict module must not set them. + # xlib is injected via home-manager.extraSpecialArgs (the HM submodule + # does not inherit the nix-on-droid module args). home-manager = { useGlobalPkgs = true; backupFileExtension = "hm-bak"; + extraSpecialArgs = { + inherit xlib; + }; config = { ... }: { imports = [ - ../home/shared/strict.nix + ../home/termux.nix ]; home.stateVersion = "24.05"; }; diff --git a/droid/default.nix b/droid/default.nix deleted file mode 100644 index c5615c0..0000000 --- a/droid/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ inputs, ... }@flakeContext: -{ - nixOnDroidConfigurations = { - epral = import ./epral.nix flakeContext; # epral (Android via nix-on-droid) - # Alias so a plain `nix-on-droid switch` from a local clone - # (~/.config/nix-on-droid) picks up the device config without `#epral`. - default = import ./epral.nix flakeContext; - }; -} diff --git a/flake.nix b/flake.nix index 315cdb1..30b39f4 100644 --- a/flake.nix +++ b/flake.nix @@ -120,7 +120,6 @@ } // (import ./configurations flakeContext) // (import ./deploy flakeContext) - // (import ./droid flakeContext) // (import ./home flakeContext) // (import ./modules flakeContext) // (import ./overlays flakeContext) diff --git a/home/shared/strict.nix b/home/termux.nix similarity index 87% rename from home/shared/strict.nix rename to home/termux.nix index baa261a..0e636b1 100644 --- a/home/shared/strict.nix +++ b/home/termux.nix @@ -2,6 +2,7 @@ config, lib, pkgs, + xlib, ... }: # Shared "strict" home-manager module. @@ -17,46 +18,45 @@ # (which stay NixOS-only for now). When this module is wired into NixOS hosts # via sharedModules, deduplicate those files. { - home.packages = with pkgs; [ - # Lazy (alias lc) - lazycli + home = { + packages = with pkgs; [ + # Lazy (alias lc) + lazycli - # IDE - fresh-editor # EDITOR + # IDE + fresh-editor # EDITOR - # Base utils - curl - wget - fd - tree - dust - gdu - mc - rsync - jq - unzip - zip - zstd + # Base utils + curl + wget + fd + tree + dust + gdu + mc + rsync + jq + unzip + zip + zstd - # Net diagnostic - mtr - dnsutils + # Net diagnostic + mtr + dnsutils - # Monitoring - htop - ]; - - home.sessionVariables = { - TUCKR_HOME = "$HOME/Storage/dotfiles"; - EDITOR = "fresh"; + # Monitoring + htop + ]; + sessionVariables = { + TUCKR_HOME = "$HOME/Storage/dotfiles"; + EDITOR = "fresh"; + }; + file.".nanorc".text = '' + set nowrap + set tabstospaces + set tabsize 2 + ''; }; - - home.file.".nanorc".text = '' - set nowrap - set tabstospaces - set tabsize 2 - ''; - programs = { # ---- Shell: zsh ---- zsh = { @@ -90,6 +90,7 @@ lg = "lazygit"; lc = "lazycli"; gp = "git pull"; + ns = "nix-on-droid switch --flake ~/.config/nix-on-droid#${xlib.device.hostname}"; gp-ns = "gp && ns"; gc = "git add . && git commit -m 'dev: автокоммит $(date +'%Y-%m-%d %H:%M:%S')'"; y = "yazi"; @@ -97,7 +98,8 @@ beet-path-library = "realpath --relative-to='${config.home.homeDirectory}/.config/beets/My' ."; z-proxy = "export ALL_PROXY=socks5://localhost:10808"; zh-proxy = "export HTTPS_PROXY=http://localhost:10808 && export HTTP_PROXY=http://localhost:10808"; - + nix-dir = "cd ~/.config/nix-on-droid"; + # beets beet-ima = "beet im ./ -A"; diff --git a/modules/default.nix b/modules/default.nix index 2b58e78..f3503e2 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -12,29 +12,22 @@ let # NixOS-only modules. termux runs nix-on-droid (its own module system, # class = "nixOnDroid"): options like services.*, users.*, sops.*, disko.* # and nixpkgs.overlays (flake assertion) do not exist there. - imports = - with inputs; - [ - ./options.nix - (./. + "/${deviceType}") # specific modules - ] - ++ lib.optionals (deviceType != "termux") [ - ./essentials - ./users.nix + imports = with inputs; [ + ./essentials + ./options.nix + ./users.nix + (./. + "/${deviceType}") - home-manager.nixosModules.home-manager # home-manager module - # nix-index-database.nixosModules.nix-index # nix-index module - grub2-themes.nixosModules.default # grub2 themes module - sops-nix.nixosModules.sops # sops module - self.homeConfigurations.default.nixosModule # default homeConfigurations - disko.nixosModules.disko # disko module - ]; - # nix-on-droid asserts that nixpkgs.* stays unset in flake mode. - nixpkgs.overlays = lib.mkIf (deviceType != "termux") ( - with inputs; [ - self.nixosOverlays.default - ] - ); + home-manager.nixosModules.home-manager # home-manager module + # nix-index-database.nixosModules.nix-index # nix-index module + grub2-themes.nixosModules.default # grub2 themes module + sops-nix.nixosModules.sops # sops module + self.homeConfigurations.default.nixosModule # default homeConfigurations + disko.nixosModules.disko # disko module + ]; + nixpkgs.overlays = with inputs; [ + self.nixosOverlays.default + ]; _module.args = { inputs = inputs; xlib = config.xlib; @@ -57,6 +50,28 @@ let sops-nix.nixosModules.sops # sops module ]; + _module.args = { + inputs = inputs; + xlib = config.xlib; + }; + }; + strictModule = + { + config, + deviceType, + lib, + xlib, + ... + }: + { + imports = with inputs; [ + # ./essentials + # ./users.nix + ./options.nix + (./. + "/${deviceType}") + # sops-nix.nixosModules.sops + ]; + _module.args = { inputs = inputs; xlib = config.xlib; @@ -67,5 +82,6 @@ in nixosModules = { default = defaultModule; public = publicModule; + strict = strictModule; }; } diff --git a/modules/server/homebox.nix b/modules/server/homebox.nix index 25e6db7..32102b6 100644 --- a/modules/server/homebox.nix +++ b/modules/server/homebox.nix @@ -30,7 +30,7 @@ in "d ${configDir} 0755 homebox homebox -" "z ${configDir} 0755 homebox homebox -" ]; - + fileSystems = { "${varDir}" = { device = "${configDir}";