fix(shell)!: accept a hostname parameter

Pass along device `hostname` into `home-manager` (and more) configs
Used for the `rebuild` command since `nix-on-droid` uses the `default` system instead of the `$(hostname)` one (because that requires root to change on-device)
This commit is contained in:
reo101 2023-07-26 09:43:14 +03:00
parent bc81e59950
commit 20e7547b0c
Signed by: reo101
GPG key ID: 675AA7EF13964ACB
4 changed files with 45 additions and 120 deletions

View file

@ -1,4 +1,4 @@
{ inputs, outputs, lib, pkgs, config, ... }: { inputs, outputs, hostname, lib, pkgs, config, ... }:
{ {
# Home Manager needs a bit of information about you and the # Home Manager needs a bit of information about you and the
@ -102,6 +102,7 @@
reo101.shell = { reo101.shell = {
enable = true; enable = true;
username = "reo101"; username = "reo101";
inherit hostname;
direnv = true; direnv = true;
zoxide = true; zoxide = true;
}; };

View file

@ -16,10 +16,15 @@ in
reo101.shell = { reo101.shell = {
enable = mkEnableOption "reo101 zsh setup"; enable = mkEnableOption "reo101 zsh setup";
username = mkOption { username = mkOption {
description = "Username to be used in prompt"; description = "Username to be used (for prompt)";
type = types.str; type = types.str;
default = "${config.home.username}"; default = "${config.home.username}";
}; };
hostname = mkOption {
description = "Hostname to be used (for `rebuild`)";
type = types.nullOr types.str;
default = null;
};
atuin = mkOption { atuin = mkOption {
description = "Integrate with atuin"; description = "Integrate with atuin";
type = types.bool; type = types.bool;
@ -36,7 +41,7 @@ in
default = true; default = true;
}; };
flakePath = mkOption { flakePath = mkOption {
description = "Flake path (used for `rebuild` command)"; description = "Flake path (for `rebuild`)";
type = types.str; type = types.str;
default = "${config.xdg.configHome}/rix101"; default = "${config.xdg.configHome}/rix101";
}; };
@ -69,7 +74,7 @@ in
]; ];
# Atuin # Atuin
home.file."${config.xdg.configHome}/config.toml" = mkIf cfg.atuin { home.file."${config.xdg.configHome}/atuin/config.toml" = mkIf cfg.atuin {
text = import ./atuin.nix { text = import ./atuin.nix {
keyPath = "${config.xdg.dataHome}/atuin/key"; keyPath = "${config.xdg.dataHome}/atuin/key";
}; };
@ -88,7 +93,9 @@ in
programs.starship = { programs.starship = {
enable = true; enable = true;
settings = import ./starship.nix { username = cfg.username; }; settings = import ./starship.nix {
inherit (cfg) username;
};
}; };
# Zsh # Zsh
@ -116,17 +123,25 @@ in
rebuild () { rebuild () {
${ ${
let let
inherit (lib.strings) hasInfix; inherit (lib.strings)
hasInfix;
inherit (pkgs.hostPlatform)
isx86_64 isAarch64
isLinux isDarwin;
in in
if hasInfix "nixos" pkgs.system then if isx86_64 && isLinux then
"sudo --validate && sudo nixos-rebuild" "sudo --validate && sudo nixos-rebuild"
else if hasInfix "darwin" pkgs.system then else if isDarwin then
"darwin-rebuild" "darwin-rebuild"
else if "aarch64-linux" == pkgs.system then else if isAarch64 then
"nix-on-droid" "nix-on-droid"
else else
"home-manager" "home-manager"
} --flake ${cfg.flakePath} ''$''\{1:-switch''\} |& nix run nixpkgs#nix-output-monitor } --flake ${
if cfg.hostname != null
then "${cfg.flakePath}#${cfg.hostname}"
else "${cfg.flakePath}"
} ''$''\{1:-switch''\} "''$''\{@:2''\}" |& nix run nixpkgs#nix-output-monitor
} }
'' ''
(optionalString cfg.atuin '' (optionalString cfg.atuin ''

View file

@ -3,8 +3,6 @@
let let
inherit (inputs) nixpkgs; inherit (inputs) nixpkgs;
inherit (nixpkgs) lib; inherit (nixpkgs) lib;
inherit (lib) mapAttrs;
inherit (lib.attrsets) filterAttrs;
in in
rec { rec {
# Boolean helpers # Boolean helpers
@ -14,7 +12,7 @@ rec {
# Directory walking helpers # Directory walking helpers
recurseDir = dir: recurseDir = dir:
mapAttrs lib.mapAttrs
(file: type: (file: type:
if type == "directory" if type == "directory"
then recurseDir "${dir}/${file}" then recurseDir "${dir}/${file}"
@ -131,6 +129,7 @@ rec {
sharedModules = builtins.attrValues homeManagerModules; sharedModules = builtins.attrValues homeManagerModules;
extraSpecialArgs = { extraSpecialArgs = {
inherit inputs outputs; inherit inputs outputs;
inherit hostname;
}; };
}; };
} }
@ -163,13 +162,17 @@ rec {
useGlobalPkgs = false; useGlobalPkgs = false;
useUserPackages = true; useUserPackages = true;
sharedModules = builtins.attrValues homeManagerModules; sharedModules = builtins.attrValues homeManagerModules;
extraSpecialArgs = { inherit inputs outputs; }; extraSpecialArgs = {
inherit inputs outputs;
inherit hostname;
};
}; };
} }
] ++ (builtins.attrValues nixOnDroidModules); ] ++ (builtins.attrValues nixOnDroidModules);
extraSpecialArgs = { extraSpecialArgs = {
inherit inputs outputs; inherit inputs outputs;
inherit hostname;
# rootPath = ./.; # rootPath = ./.;
}; };
@ -190,12 +193,18 @@ rec {
users users
(user: import (root + "/home/${user}.nix")); (user: import (root + "/home/${user}.nix"));
sharedModules = builtins.attrValues homeManagerModules; sharedModules = builtins.attrValues homeManagerModules;
extraSpecialArgs = { inherit inputs outputs; }; extraSpecialArgs = {
inherit inputs outputs;
inherit hostname;
};
}; };
} }
] ++ (builtins.attrValues nixDarwinModules); ] ++ (builtins.attrValues nixDarwinModules);
inputs = { inherit inputs outputs nixpkgs; }; inputs = {
inherit inputs outputs;
inherit nixpkgs;
};
}; };
mkHomeManagerHost = root: system: hostname: inputs.home-manager.lib.homeManagerConfiguration { mkHomeManagerHost = root: system: hostname: inputs.home-manager.lib.homeManagerConfiguration {
@ -205,7 +214,10 @@ rec {
(root + "/home.nix") (root + "/home.nix")
] ++ (builtins.attrValues homeManagerModules); ] ++ (builtins.attrValues homeManagerModules);
extraSpecialArgs = { inherit inputs outputs; }; extraSpecialArgs = {
inherit inputs outputs;
inherit hostname;
};
}; };
createConfigurations = createConfigurations =

View file

@ -1,103 +0,0 @@
# { lib, stdenv, darwin, fetchFromGitHub, rustPlatform, openssl, pkg-config, libxkbcommon }:
# # rustPlatform.buildRustPackage rec {
# rec {
# pname = "vim-fmi-cli";
# version = "0.2.0";
#
# src = fetchFromGitHub {
# owner = "AndrewRadev";
# repo = pname;
# rev = "v${version}";
# sha256 = "sha256-RAlvDiNvDVRNtex0aD8WESc4R/lskjda;sldfjmAr7FjWtgzHWa4ZSI=";
# };
# }
# {
# a = ''''\'''${a}''\''';
#
# src = fetchFromGitHub {
# owner = "g15ecb";
# repo = "promela-mode";
# rev = "53863e62cfedcd0466e1e19b1ca7b5786cb7a576";
# # hash = "sha256-pOVIOj5XnZcNVFNyjMV7Iv0X+R+W+mQfT1o5nay2Kww=";
# };
# }
# let
# a = "v${b}.${c}.${d}";
# b = "2";
# c = "3";
# d = "6";
# rev = a;
# in
# rec {
# src = fetchTest {
# inherit a b c rev;
# };
# rev = "aloda";
# alo = da;
# }
let
# kek
type = "256";
in
let
in
rec {
pname = "vim-fmi-cli";
version = "0.2.0";
sha = "RAlvDiNvDVRNtex0aD8WESc4R/mAr7FjWtgzHWa4ZSI=";
sha256 = "sha${type}-${sha}";
kek = let
in rec {};
src = fetchFromGitHub {
owner = "AndrewRadev";
repo = pname;
rev = "v${version}";
inherit sha256;
};
}
# let
# bb = "2";
# b = bb;
# in
# let
# # ...
# in
# fetchTest {
# a = "1";
# inherit b;
# c = "3";
# rev = "456";
# }
# let
# f = "2";
# s = "3";
# t = "4";
# a = "1";
# c = "2";
# v = "${f}.${s}.${t}";
# kek = rec {
# x = "5";
# y = x;
# };
# aloda = fetchTest rec {
# c = b;
# a = "2";
# b = a;
# rev = "v${c}";
# };
# in
# fetchTest {
# inherit a c;
# m = a;
# b = "b";
# aloda = "${a}b${c}d";
# rev = "v${v}";
# }