[feat] Add all nix config with device gates

This commit is contained in:
Uttarayan Mondal
2024-02-19 19:14:09 +05:30
parent 935043e290
commit 0fc1c8b054
14 changed files with 135 additions and 177 deletions

View File

@@ -3,8 +3,7 @@
default: nixos
darwin:
# nix run nix-darwin -- switch --flake ~/.local/share/dotfiles/config/nix
nix run nix-darwin -- switch --flake .
nix run nix-darwin -- switch --flake . --show-trace
home:
nix --extra-experimental-features "nix-command flakes" run home-manager/master -- switch --flake .

View File

@@ -1 +1 @@
{pkgs, ...}: {programs.firefox = {enable = pkgs.stdenv.isLinux;};}
{ device, ... }: { programs.firefox = { enable = device.isLinux; }; }

View File

@@ -1,10 +1,5 @@
{
config,
pkgs,
lib,
device,
...
}: let
{ config, pkgs, lib, device, ... }:
let
start-tmux = (import ../scripts/start-tmux.nix) pkgs;
# https://mipmip.github.io/home-manager-option-search/
in {
@@ -12,12 +7,10 @@ in {
# Include the results of the hardware scan.
./tmux.nix
./wezterm.nix
./firefox.nix
../linux/hyprland.nix
../linux/gtk.nix
../linux/anyrun.nix
../linux/ironbar.nix
];
] ++ (if device.isLinux then [
../linux
] else
[ ]);
home.packages = with pkgs;
[
@@ -40,34 +33,14 @@ in {
neovim
(nerdfonts.override { fonts = [ "Hasklig" ]; })
mpv
# # It is sometimes useful to fine-tune packages, for example, by applying
# # overrides. You can do that directly here, just don't forget the
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
# # fonts?
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
]
++ (
if device.isLinux
then
with pkgs; [
] ++ (if device.isLinux then [
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 ];
@@ -75,9 +48,8 @@ in {
handlr open "$@"
'';
})
]
else []
);
] else
[ ]);
xdg.enable = true;
@@ -144,12 +116,6 @@ in {
enableFishIntegration = true;
tmux.enableShellIntegration = true;
};
# keychain = {
# enable = pkgs.isLinux;
# keys = [ "id_ed25519" ];
# enableFishIntegration = true;
# enableNushellIntegration = true;
# };
yazi = {
enable = true;
enableFishIntegration = true;
@@ -165,10 +131,10 @@ in {
# Home Manager needs a bit of information about you and the paths it should
# manage.
username = device.user;
homeDirectory =
if device.isMac
then lib.mkForce "/Users/${device.user}"
else lib.mkForce "/home/${device.user}";
homeDirectory = if device.isMac then
lib.mkForce "/Users/${device.user}"
else
lib.mkForce "/home/${device.user}";
stateVersion = "23.11";

View File

@@ -105,17 +105,17 @@
# overlays = [ anyrun-overlay ];
in {
nixosConfigurations = let devices = nixos_devices;
in import ./nixos {
in import ./nixos/device.nix {
inherit devices inputs nixpkgs home-manager overlays;
};
darwinConfigurations = let devices = darwin_devices;
in import ./darwin {
in import ./darwin/device.nix {
inherit devices inputs nixpkgs home-manager overlays nix-darwin;
};
homeConfigurations = let devices = linux_devices;
in import ./linux {
in import ./linux/device.nix {
inherit devices inputs nixpkgs home-manager overlays;
};
};

View File

@@ -1,20 +1,12 @@
{
inputs,
pkgs,
osConfig,
...
}: {
imports =
if pkgs.stdenv.isLinux
then [inputs.anyrun.nixosModules.home-manager]
else [];
{ inputs, pkgs, osConfig, ... }: {
imports = [ inputs.anyrun.nixosModules.home-manager ];
programs.anyrun = {
enable = pkgs.stdenv.isLinux;
enable = true;
config = {
plugins = with inputs.anyrun.packages.${pkgs.system}; [
inputs.anyrun-nixos-options.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
applications
websearch
@@ -34,11 +26,9 @@
extraConfigFiles = {
"nixos-options.ron".text = let
nixos-options =
osConfig.system.build.manual.optionsJSON
nixos-options = osConfig.system.build.manual.optionsJSON
+ "/share/doc/nixos/options.json";
hm-options =
inputs.home-manager.packages.${pkgs.system}.docs-json
hm-options = inputs.home-manager.packages.${pkgs.system}.docs-json
+ "/share/doc/home-manager/options.json";
# 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
@@ -53,6 +43,7 @@
":nix" = [ nixos-options ];
":hm" = [ hm-options ];
};
in ''
Config(
options: ${options},

View File

@@ -1,17 +1,9 @@
{ 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)
{ pkgs, ... }: {
imports = [
../common/firefox.nix
../linux/hyprland.nix
../linux/gtk.nix
../linux/anyrun.nix
../linux/ironbar.nix
];
}

View 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)

View File

@@ -1,6 +1,7 @@
{ pkgs, ... }: {
programs.gtk = {
enable = pkgs.stdenv.isLinux;
programs = {
gtk = {
enable = true;
theme = {
name = "Catppuccin-Mocha-Standard-Mauve-Dark";
package = pkgs.catppuccin-gtk.override {
@@ -23,4 +24,5 @@
gtk4.extraConfig = { gtk-application-prefer-dark-theme = 1; };
};
};
}

View File

@@ -1,6 +1,6 @@
{ pkgs, ... }: {
{ ... }: {
wayland.windowManager.hyprland = {
enable = pkgs.stdenv.isLinux;
enable = true;
settings = {
monitor = [
",preferred,auto,auto"

View File

@@ -1,14 +1,7 @@
{
pkgs,
inputs,
...
}: {
imports =
if pkgs.stdenv.isLinux
then [inputs.ironbar.homeManagerModules.default]
else [];
{ inputs, ... }: {
imports = [ inputs.ironbar.homeManagerModules.default ];
programs.ironbar = {
enable = pkgs.stdenv.isLinux;
enable = true;
config.monitors = {
HDMI-A-2 = {
position = "bottom";
@@ -59,8 +52,7 @@
}
{ type = "tray"; }
];
start = [
{
start = [{
type = "workspaces";
name_map = {
"1" = "icon:code";
@@ -76,8 +68,7 @@
};
favorites = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" ];
all_monitors = true;
}
];
}];
};
};
style = ''