[feat] Add all nix config with device gates
This commit is contained in:
@@ -3,8 +3,7 @@
|
|||||||
default: nixos
|
default: nixos
|
||||||
|
|
||||||
darwin:
|
darwin:
|
||||||
# nix run nix-darwin -- switch --flake ~/.local/share/dotfiles/config/nix
|
nix run nix-darwin -- switch --flake . --show-trace
|
||||||
nix run nix-darwin -- switch --flake .
|
|
||||||
|
|
||||||
home:
|
home:
|
||||||
nix --extra-experimental-features "nix-command flakes" run home-manager/master -- switch --flake .
|
nix --extra-experimental-features "nix-command flakes" run home-manager/master -- switch --flake .
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{pkgs, ...}: {programs.firefox = {enable = pkgs.stdenv.isLinux;};}
|
{ device, ... }: { programs.firefox = { enable = device.isLinux; }; }
|
||||||
|
|||||||
@@ -1,10 +1,5 @@
|
|||||||
{
|
{ config, pkgs, lib, device, ... }:
|
||||||
config,
|
let
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
device,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
start-tmux = (import ../scripts/start-tmux.nix) pkgs;
|
start-tmux = (import ../scripts/start-tmux.nix) pkgs;
|
||||||
# https://mipmip.github.io/home-manager-option-search/
|
# https://mipmip.github.io/home-manager-option-search/
|
||||||
in {
|
in {
|
||||||
@@ -12,12 +7,10 @@ in {
|
|||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./tmux.nix
|
./tmux.nix
|
||||||
./wezterm.nix
|
./wezterm.nix
|
||||||
./firefox.nix
|
] ++ (if device.isLinux then [
|
||||||
../linux/hyprland.nix
|
../linux
|
||||||
../linux/gtk.nix
|
] else
|
||||||
../linux/anyrun.nix
|
[ ]);
|
||||||
../linux/ironbar.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs;
|
home.packages = with pkgs;
|
||||||
[
|
[
|
||||||
@@ -38,46 +31,25 @@ in {
|
|||||||
clang
|
clang
|
||||||
# neovim-nightly
|
# neovim-nightly
|
||||||
neovim
|
neovim
|
||||||
(nerdfonts.override {fonts = ["Hasklig"];})
|
(nerdfonts.override { fonts = [ "Hasklig" ]; })
|
||||||
mpv
|
mpv
|
||||||
|
] ++ (if device.isLinux then [
|
||||||
# # It is sometimes useful to fine-tune packages, for example, by applying
|
handlr-regex
|
||||||
# # overrides. You can do that directly here, just don't forget the
|
webcord-vencord
|
||||||
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
spotify
|
||||||
# # fonts?
|
spotify-player
|
||||||
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
lsof
|
||||||
|
wl-clipboard
|
||||||
# # You can also create simple shell scripts directly inside your
|
ncpamixer
|
||||||
# # configuration. For example, this adds a command 'my-hello' to your
|
(pkgs.writeShellApplication {
|
||||||
# # environment:
|
name = "xdg-open";
|
||||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
runtimeInputs = [ handlr-regex ];
|
||||||
# echo "Hello, ${config.home.username}!"
|
text = ''
|
||||||
# '')
|
handlr open "$@"
|
||||||
]
|
'';
|
||||||
++ (
|
})
|
||||||
if device.isLinux
|
] else
|
||||||
then
|
[ ]);
|
||||||
with pkgs; [
|
|
||||||
handlr-regex
|
|
||||||
gnome.nautilus
|
|
||||||
webcord-vencord
|
|
||||||
spotify
|
|
||||||
spotify-player
|
|
||||||
lsof
|
|
||||||
wl-clipboard
|
|
||||||
yubikey-personalization
|
|
||||||
ncpamixer
|
|
||||||
yubikey-agent
|
|
||||||
(pkgs.writeShellApplication {
|
|
||||||
name = "xdg-open";
|
|
||||||
runtimeInputs = [handlr-regex];
|
|
||||||
text = ''
|
|
||||||
handlr open "$@"
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
]
|
|
||||||
else []
|
|
||||||
);
|
|
||||||
|
|
||||||
xdg.enable = true;
|
xdg.enable = true;
|
||||||
|
|
||||||
@@ -109,7 +81,7 @@ in {
|
|||||||
|
|
||||||
nushell = {
|
nushell = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAliases = {"cd" = "z";};
|
shellAliases = { "cd" = "z"; };
|
||||||
package = pkgs.nushellFull;
|
package = pkgs.nushellFull;
|
||||||
configFile.text = ''
|
configFile.text = ''
|
||||||
$env.config = {
|
$env.config = {
|
||||||
@@ -144,12 +116,6 @@ in {
|
|||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
tmux.enableShellIntegration = true;
|
tmux.enableShellIntegration = true;
|
||||||
};
|
};
|
||||||
# keychain = {
|
|
||||||
# enable = pkgs.isLinux;
|
|
||||||
# keys = [ "id_ed25519" ];
|
|
||||||
# enableFishIntegration = true;
|
|
||||||
# enableNushellIntegration = true;
|
|
||||||
# };
|
|
||||||
yazi = {
|
yazi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
@@ -157,7 +123,7 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
# Let Home Manager install and manage itself.
|
# Let Home Manager install and manage itself.
|
||||||
home-manager = {enable = true;};
|
home-manager = { enable = true; };
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
@@ -165,10 +131,10 @@ in {
|
|||||||
# Home Manager needs a bit of information about you and the paths it should
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
# manage.
|
# manage.
|
||||||
username = device.user;
|
username = device.user;
|
||||||
homeDirectory =
|
homeDirectory = if device.isMac then
|
||||||
if device.isMac
|
lib.mkForce "/Users/${device.user}"
|
||||||
then lib.mkForce "/Users/${device.user}"
|
else
|
||||||
else lib.mkForce "/home/${device.user}";
|
lib.mkForce "/home/${device.user}";
|
||||||
|
|
||||||
stateVersion = "23.11";
|
stateVersion = "23.11";
|
||||||
|
|
||||||
|
|||||||
@@ -105,17 +105,17 @@
|
|||||||
# overlays = [ anyrun-overlay ];
|
# overlays = [ anyrun-overlay ];
|
||||||
in {
|
in {
|
||||||
nixosConfigurations = let devices = nixos_devices;
|
nixosConfigurations = let devices = nixos_devices;
|
||||||
in import ./nixos {
|
in import ./nixos/device.nix {
|
||||||
inherit devices inputs nixpkgs home-manager overlays;
|
inherit devices inputs nixpkgs home-manager overlays;
|
||||||
};
|
};
|
||||||
|
|
||||||
darwinConfigurations = let devices = darwin_devices;
|
darwinConfigurations = let devices = darwin_devices;
|
||||||
in import ./darwin {
|
in import ./darwin/device.nix {
|
||||||
inherit devices inputs nixpkgs home-manager overlays nix-darwin;
|
inherit devices inputs nixpkgs home-manager overlays nix-darwin;
|
||||||
};
|
};
|
||||||
|
|
||||||
homeConfigurations = let devices = linux_devices;
|
homeConfigurations = let devices = linux_devices;
|
||||||
in import ./linux {
|
in import ./linux/device.nix {
|
||||||
inherit devices inputs nixpkgs home-manager overlays;
|
inherit devices inputs nixpkgs home-manager overlays;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,20 +1,12 @@
|
|||||||
{
|
{ inputs, pkgs, osConfig, ... }: {
|
||||||
inputs,
|
imports = [ inputs.anyrun.nixosModules.home-manager ];
|
||||||
pkgs,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
if pkgs.stdenv.isLinux
|
|
||||||
then [inputs.anyrun.nixosModules.home-manager]
|
|
||||||
else [];
|
|
||||||
programs.anyrun = {
|
programs.anyrun = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = true;
|
||||||
config = {
|
config = {
|
||||||
plugins = with inputs.anyrun.packages.${pkgs.system}; [
|
plugins = with inputs.anyrun.packages.${pkgs.system}; [
|
||||||
inputs.anyrun-nixos-options.packages.${pkgs.system}.default
|
inputs.anyrun-nixos-options.packages.${pkgs.system}.default
|
||||||
inputs.anyrun-hyprwin.packages.${pkgs.system}.default
|
inputs.anyrun-hyprwin.packages.${pkgs.system}.default
|
||||||
# inputs.anyrun-rink.packages.${pkgs.system}.default
|
inputs.anyrun-rink.packages.${pkgs.system}.default
|
||||||
# rink
|
# rink
|
||||||
applications
|
applications
|
||||||
websearch
|
websearch
|
||||||
@@ -23,10 +15,10 @@
|
|||||||
symbols
|
symbols
|
||||||
kidex
|
kidex
|
||||||
];
|
];
|
||||||
x = {fraction = 0.5;};
|
x = { fraction = 0.5; };
|
||||||
y = {fraction = 0.3;};
|
y = { fraction = 0.3; };
|
||||||
height = {absolute = 0;};
|
height = { absolute = 0; };
|
||||||
width = {absolute = 1000;};
|
width = { absolute = 1000; };
|
||||||
showResultsImmediately = true;
|
showResultsImmediately = true;
|
||||||
maxEntries = 10;
|
maxEntries = 10;
|
||||||
layer = "overlay";
|
layer = "overlay";
|
||||||
@@ -34,11 +26,9 @@
|
|||||||
|
|
||||||
extraConfigFiles = {
|
extraConfigFiles = {
|
||||||
"nixos-options.ron".text = let
|
"nixos-options.ron".text = let
|
||||||
nixos-options =
|
nixos-options = osConfig.system.build.manual.optionsJSON
|
||||||
osConfig.system.build.manual.optionsJSON
|
|
||||||
+ "/share/doc/nixos/options.json";
|
+ "/share/doc/nixos/options.json";
|
||||||
hm-options =
|
hm-options = inputs.home-manager.packages.${pkgs.system}.docs-json
|
||||||
inputs.home-manager.packages.${pkgs.system}.docs-json
|
|
||||||
+ "/share/doc/home-manager/options.json";
|
+ "/share/doc/home-manager/options.json";
|
||||||
# or alternatively if you wish to read any other documentation options, such as home-manager
|
# or alternatively if you wish to read any other documentation options, such as home-manager
|
||||||
# get the docs-json package from the home-manager flake
|
# get the docs-json package from the home-manager flake
|
||||||
@@ -50,9 +40,10 @@
|
|||||||
# ":nall" = [nixos-options hm-options some-other-option];
|
# ":nall" = [nixos-options hm-options some-other-option];
|
||||||
# };
|
# };
|
||||||
options = builtins.toJSON {
|
options = builtins.toJSON {
|
||||||
":nix" = [nixos-options];
|
":nix" = [ nixos-options ];
|
||||||
":hm" = [hm-options];
|
":hm" = [ hm-options ];
|
||||||
};
|
};
|
||||||
|
|
||||||
in ''
|
in ''
|
||||||
Config(
|
Config(
|
||||||
options: ${options},
|
options: ${options},
|
||||||
@@ -89,12 +80,12 @@
|
|||||||
"rink.ron".text = ''
|
"rink.ron".text = ''
|
||||||
Config(
|
Config(
|
||||||
currency: Some("${
|
currency: Some("${
|
||||||
builtins.toFile "currency.units" ''
|
builtins.toFile "currency.units" ''
|
||||||
!category currencies "Currencies"
|
!category currencies "Currencies"
|
||||||
usd USD
|
usd USD
|
||||||
inr INR
|
inr INR
|
||||||
''
|
''
|
||||||
}"),
|
}"),
|
||||||
)
|
)
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,17 +1,9 @@
|
|||||||
{ devices, inputs, overlays, home-manager, ... }:
|
{ pkgs, ... }: {
|
||||||
builtins.listToAttrs (builtins.map (device: {
|
imports = [
|
||||||
name = device.user;
|
../common/firefox.nix
|
||||||
value = let
|
../linux/hyprland.nix
|
||||||
pkgs = import inputs.nixpkgs {
|
../linux/gtk.nix
|
||||||
inherit overlays;
|
../linux/anyrun.nix
|
||||||
system = device.system;
|
../linux/ironbar.nix
|
||||||
};
|
];
|
||||||
in home-manager.lib.homeManagerConfiguration {
|
}
|
||||||
inherit pkgs;
|
|
||||||
extraSpecialArgs = {
|
|
||||||
inherit inputs;
|
|
||||||
inherit device;
|
|
||||||
};
|
|
||||||
modules = [ ../common/home.nix ];
|
|
||||||
};
|
|
||||||
}) devices)
|
|
||||||
|
|||||||
17
config/nix/linux/device.nix
Normal file
17
config/nix/linux/device.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{ devices, inputs, overlays, home-manager, ... }:
|
||||||
|
builtins.listToAttrs (builtins.map (device: {
|
||||||
|
name = device.user;
|
||||||
|
value = let
|
||||||
|
pkgs = import inputs.nixpkgs {
|
||||||
|
inherit overlays;
|
||||||
|
system = device.system;
|
||||||
|
};
|
||||||
|
in home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
inherit device;
|
||||||
|
};
|
||||||
|
modules = [ ../common/home.nix ];
|
||||||
|
};
|
||||||
|
}) devices)
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{pkgs, ...}: {
|
{ pkgs, ... }: {
|
||||||
foot = {
|
foot = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
server.enable = true;
|
server.enable = true;
|
||||||
|
|||||||
@@ -1,26 +1,28 @@
|
|||||||
{pkgs, ...}: {
|
{ pkgs, ... }: {
|
||||||
programs.gtk = {
|
programs = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
gtk = {
|
||||||
theme = {
|
enable = true;
|
||||||
name = "Catppuccin-Mocha-Standard-Mauve-Dark";
|
theme = {
|
||||||
package = pkgs.catppuccin-gtk.override {
|
name = "Catppuccin-Mocha-Standard-Mauve-Dark";
|
||||||
variant = "mocha";
|
package = pkgs.catppuccin-gtk.override {
|
||||||
size = "standard";
|
variant = "mocha";
|
||||||
accents = ["mauve"];
|
size = "standard";
|
||||||
tweaks = ["normal"];
|
accents = [ "mauve" ];
|
||||||
|
tweaks = [ "normal" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
name = "Papirus-Dark";
|
name = "Papirus-Dark";
|
||||||
package = pkgs.catppuccin-papirus-folders.override {
|
package = pkgs.catppuccin-papirus-folders.override {
|
||||||
accent = "mauve";
|
accent = "mauve";
|
||||||
flavor = "mocha";
|
flavor = "mocha";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gtk3.extraConfig = { gtk-application-prefer-dark-theme = 1; };
|
||||||
|
|
||||||
|
gtk4.extraConfig = { gtk-application-prefer-dark-theme = 1; };
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk3.extraConfig = {gtk-application-prefer-dark-theme = 1;};
|
|
||||||
|
|
||||||
gtk4.extraConfig = {gtk-application-prefer-dark-theme = 1;};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ pkgs, ... }: {
|
{ ... }: {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
monitor = [
|
monitor = [
|
||||||
",preferred,auto,auto"
|
",preferred,auto,auto"
|
||||||
|
|||||||
@@ -1,25 +1,18 @@
|
|||||||
{
|
{ inputs, ... }: {
|
||||||
pkgs,
|
imports = [ inputs.ironbar.homeManagerModules.default ];
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
if pkgs.stdenv.isLinux
|
|
||||||
then [inputs.ironbar.homeManagerModules.default]
|
|
||||||
else [];
|
|
||||||
programs.ironbar = {
|
programs.ironbar = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = true;
|
||||||
config.monitors = {
|
config.monitors = {
|
||||||
HDMI-A-2 = {
|
HDMI-A-2 = {
|
||||||
position = "bottom";
|
position = "bottom";
|
||||||
start = [
|
start = [
|
||||||
{
|
{
|
||||||
type = "launcher";
|
type = "launcher";
|
||||||
favourites = ["firefox" "discord"];
|
favourites = [ "firefox" "discord" ];
|
||||||
show_names = false;
|
show_names = false;
|
||||||
show_icons = true;
|
show_icons = true;
|
||||||
}
|
}
|
||||||
{type = "focused";}
|
{ type = "focused"; }
|
||||||
];
|
];
|
||||||
end = [
|
end = [
|
||||||
{
|
{
|
||||||
@@ -32,7 +25,7 @@
|
|||||||
type = "music";
|
type = "music";
|
||||||
player_type = "mpris";
|
player_type = "mpris";
|
||||||
}
|
}
|
||||||
{type = "clock";}
|
{ type = "clock"; }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
DP-1 = {
|
DP-1 = {
|
||||||
@@ -57,27 +50,25 @@
|
|||||||
# networks= 3;
|
# networks= 3;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
{type = "tray";}
|
{ type = "tray"; }
|
||||||
];
|
|
||||||
start = [
|
|
||||||
{
|
|
||||||
type = "workspaces";
|
|
||||||
name_map = {
|
|
||||||
"1" = "icon:code";
|
|
||||||
"2" = "";
|
|
||||||
"3" = "icon:chrome";
|
|
||||||
"4" = "icon:discord";
|
|
||||||
"5" = "icon:steam";
|
|
||||||
"6" = "icon:misc";
|
|
||||||
"7" = "icon:misc";
|
|
||||||
"8" = "icon:docky";
|
|
||||||
"9" = "icon:monodoc";
|
|
||||||
"10" = "icon:spotify";
|
|
||||||
};
|
|
||||||
favorites = ["1" "2" "3" "4" "5" "6" "7" "8" "9" "10"];
|
|
||||||
all_monitors = true;
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
start = [{
|
||||||
|
type = "workspaces";
|
||||||
|
name_map = {
|
||||||
|
"1" = "icon:code";
|
||||||
|
"2" = "";
|
||||||
|
"3" = "icon:chrome";
|
||||||
|
"4" = "icon:discord";
|
||||||
|
"5" = "icon:steam";
|
||||||
|
"6" = "icon:misc";
|
||||||
|
"7" = "icon:misc";
|
||||||
|
"8" = "icon:docky";
|
||||||
|
"9" = "icon:monodoc";
|
||||||
|
"10" = "icon:spotify";
|
||||||
|
};
|
||||||
|
favorites = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" ];
|
||||||
|
all_monitors = true;
|
||||||
|
}];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
style = ''
|
style = ''
|
||||||
|
|||||||
@@ -9,12 +9,12 @@
|
|||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"wireplumber/bluetooth.lua.d/51-bluez-config.lua".text = ''
|
"wireplumber/bluetooth.lua.d/51-bluez-config.lua".text = ''
|
||||||
bluez_monitor.properties = {
|
bluez_monitor.properties = {
|
||||||
["bluez5.enable-sbc-xq"] = true,
|
["bluez5.enable-sbc-xq"] = true,
|
||||||
["bluez5.enable-msbc"] = true,
|
["bluez5.enable-msbc"] = true,
|
||||||
["bluez5.enable-hw-volume"] = true,
|
["bluez5.enable-hw-volume"] = true,
|
||||||
["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
|
["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]"
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user