2
Makefile
@@ -14,7 +14,7 @@ i3:
|
||||
nixos-rebuild switch --flake .#ai_i3 --use-remote-sudo
|
||||
|
||||
s-i3:
|
||||
nixos-rebuild switch --flake .#shoekei_i3 --use-remote-sudo
|
||||
nixos-rebuild switch --flake .#shoukei_i3 --use-remote-sudo
|
||||
|
||||
hypr:
|
||||
nixos-rebuild switch --flake .#ai_hyprland --use-remote-sudo
|
||||
|
||||
@@ -17,7 +17,7 @@ return {
|
||||
{ import = "astrocommunity.colorscheme.catppuccin" },
|
||||
-- Highly experimental plugin that completely replaces
|
||||
-- the UI for messages, cmdline and the popupmenu.
|
||||
{ import = "astrocommunity.utility.noice-nvim" },
|
||||
-- { import = "astrocommunity.utility.noice-nvim" },
|
||||
-- Fully featured & enhanced replacement for copilot.vim
|
||||
-- <Tab> work with both auto completion in cmp and copilot
|
||||
{ import = "astrocommunity.media.vim-wakatime" },
|
||||
@@ -77,7 +77,7 @@ return {
|
||||
-- lazy-loading on events
|
||||
event = { "InsertLeave", "TextChanged" },
|
||||
opts = function(_, opts)
|
||||
opts.prompt_style = "notify" -- or stdout
|
||||
opts.prompt_style = "stdout" -- notify or stdout
|
||||
end,
|
||||
},
|
||||
|
||||
|
||||
@@ -36,9 +36,10 @@
|
||||
vimAlias = true;
|
||||
|
||||
# currently we use lazy.nvim as neovim's package manager, so comment this one.
|
||||
# plugins = with pkgs.vimPlugins; [
|
||||
# # search all the plugins using https://search.nixos.org/packages
|
||||
# ];
|
||||
plugins = with pkgs.vimPlugins; [
|
||||
# search all the plugins using https://search.nixos.org/packages
|
||||
telescope-fzf-native-nvim
|
||||
];
|
||||
|
||||
# Extra packages only available to nvim(won't pollute the global home environment)
|
||||
extraPackages = with pkgs;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{pkgs, ...}: {
|
||||
_: {
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
|
||||
@@ -23,13 +23,6 @@
|
||||
# required to prevent sending default identity files first.
|
||||
IdentitiesOnly yes
|
||||
|
||||
Host github.com
|
||||
# github is controlled by gluttony~
|
||||
IdentityFile ~/.ssh/gluttony
|
||||
# Specifies that ssh should only use the identity file explicitly configured above
|
||||
# required to prevent sending default identity files first.
|
||||
IdentitiesOnly yes
|
||||
|
||||
Host gtr5
|
||||
HostName 192.168.5.172
|
||||
Port 22
|
||||
@@ -16,38 +16,4 @@
|
||||
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
|
||||
'';
|
||||
};
|
||||
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
|
||||
# all my ssh private key are generated by `ssh-keygen -t ed25519 -C "ryan@nickname"`
|
||||
# the config's format:
|
||||
# Host — given the pattern used to match against the host name given on the command line.
|
||||
# HostName — specify nickname or abbreviation for host
|
||||
# IdentityFile — the location of your SSH key authentication file for the account.
|
||||
# format in details:
|
||||
# https://www.ssh.com/academy/ssh/config
|
||||
extraConfig = ''
|
||||
# a private key that is used during authentication will be added to ssh-agent if it is running
|
||||
AddKeysToAgent yes
|
||||
|
||||
Host 192.168.*
|
||||
# allow to securely use local SSH agent to authenticate on the remote machine.
|
||||
# It has the same effect as adding cli option `ssh -A user@host`
|
||||
ForwardAgent yes
|
||||
# romantic holds my homelab~
|
||||
IdentityFile ~/.ssh/romantic
|
||||
# Specifies that ssh should only use the identity file explicitly configured above
|
||||
# required to prevent sending default identity files first.
|
||||
IdentitiesOnly yes
|
||||
|
||||
Host github.com
|
||||
Hostname github.com
|
||||
# github is controlled by gluttony~
|
||||
IdentityFile ~/.ssh/harmonica
|
||||
# Specifies that ssh should only use the identity file explicitly configured above
|
||||
# required to prevent sending default identity files first.
|
||||
IdentitiesOnly yes
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,8 +7,8 @@ in rec {
|
||||
|
||||
home.homeDirectory = "/home/${username}";
|
||||
|
||||
# add environment variables
|
||||
systemd.user.sessionVariables = {
|
||||
# environment variables that always set at login
|
||||
home.sessionVariables = {
|
||||
# clean up ~
|
||||
LESSHISTFILE = cache + "/less/history";
|
||||
LESSKEY = c + "/less/lesskey";
|
||||
@@ -25,6 +25,4 @@ in rec {
|
||||
# enable scrolling in git diff
|
||||
DELTA_PAGER = "less -R";
|
||||
};
|
||||
|
||||
home.sessionVariables = systemd.user.sessionVariables;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
gtk.enable = true;
|
||||
x11.enable = true;
|
||||
package = pkgs.bibata-cursors;
|
||||
name = "Bibata-Modern-Classic";
|
||||
name = "Bibata-Modern-Ice";
|
||||
size = 24;
|
||||
};
|
||||
|
||||
|
||||
@@ -1,21 +1,3 @@
|
||||
## Hyprland configuration file
|
||||
|
||||
# color-scheme: cappuccin-mocha
|
||||
source=~/.config/hypr/themes/mocha.conf
|
||||
|
||||
env = _JAVA_AWT_WM_NONREPARENTING,1
|
||||
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
|
||||
# fix https://github.com/hyprwm/Hyprland/issues/1520
|
||||
env = WLR_NO_HARDWARE_CURSORS,1
|
||||
|
||||
#-- Output ----------------------------------------------------
|
||||
# Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info.
|
||||
|
||||
# format:
|
||||
# monitor=name,resolution,position,scale
|
||||
monitor=DP-2,3840x2160@144,0x0,1.6
|
||||
workspace=DP-2,1
|
||||
|
||||
#-- Input ----------------------------------------------------
|
||||
# Configure mouse and touchpad here.
|
||||
input {
|
||||
@@ -199,10 +181,9 @@ bind=SUPER,mouse_up,workspace,e-1
|
||||
#-- Startup ----------------------------------------------------
|
||||
exec-once=~/.config/hypr/scripts/startup
|
||||
|
||||
|
||||
#-- Fcitx5 input method ----------------------------------------------------
|
||||
# -- Fcitx5 input method
|
||||
windowrule=pseudo,fcitx # enable this will make fcitx5 works, but fcitx5-configtool will not work!
|
||||
exec-once=cp ~/.config/fcitx5/profile-bak ~/.config/fcitx5/profile # restore fcitx5 profile manged by nixos
|
||||
exec-once=cp ~/.config/fcitx5/profile-bak ~/.config/fcitx5/profile # restore fcitx5 profile managed by nixos
|
||||
exec-once=fcitx5 -d --replace # start fcitx5 daemon
|
||||
bind=ALT,E,exec,pkill fcitx5 -9;sleep 1;fcitx5 -d --replace; sleep 1;fcitx5-remote -r
|
||||
|
||||
@@ -211,22 +192,3 @@ windowrulev2 = rounding 0, xwayland:1, floating:1
|
||||
windowrulev2 = center, class:^(.*jetbrains.*)$, title:^(Confirm Exit|Open Project|win424|win201|splash)$
|
||||
windowrulev2 = size 640 400, class:^(.*jetbrains.*)$, title:^(splash)$
|
||||
|
||||
# -- Fix input method in vscode
|
||||
exec-once = hyprctl setcursor "Bibata-Modern-Ice" 24
|
||||
# 效果是 wayland 原生窗口缩放完全正常
|
||||
# xwayland 窗口先渲染到 200% 再降到 hyprland config 里 monitor 设置的值,看上去和原生没啥区别
|
||||
# 相比较一开始的方案输入法字体大小也正确了.唯一有点问题的可能是 xwayland 窗口下的鼠标指针大小不对
|
||||
exec-once = xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2
|
||||
|
||||
-- Fix HiDPI - xwayland
|
||||
# change monitor to high resolution, the last argument is the scale factor
|
||||
monitor=,highres,auto,2
|
||||
|
||||
# unscale XWayland
|
||||
xwayland {
|
||||
force_zero_scaling = true
|
||||
}
|
||||
|
||||
# toolkit-specific scale
|
||||
env = GDK_SCALE,2
|
||||
env = XCURSOR_SIZE,32
|
||||
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 8.4 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 7.8 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
@@ -10,21 +10,38 @@ with lib; let
|
||||
in {
|
||||
imports = [
|
||||
anyrun.homeManagerModules.default
|
||||
./options
|
||||
];
|
||||
|
||||
options.modules.desktop.hyprland = {
|
||||
enable = mkEnableOption "hyprland compositor";
|
||||
settings = lib.mkOption {
|
||||
type = with lib.types; let
|
||||
valueType =
|
||||
nullOr (oneOf [
|
||||
bool
|
||||
int
|
||||
float
|
||||
str
|
||||
path
|
||||
(attrsOf valueType)
|
||||
(listOf valueType)
|
||||
])
|
||||
// {
|
||||
description = "Hyprland configuration value";
|
||||
};
|
||||
in
|
||||
valueType;
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
mkMerge
|
||||
(map
|
||||
(path: import path args)
|
||||
[
|
||||
./hyprland.nix
|
||||
./packages.nix
|
||||
./anyrun.nix
|
||||
./wayland-apps.nix
|
||||
])
|
||||
mkMerge ([
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = cfg.settings;
|
||||
}
|
||||
]
|
||||
++ (import ./values args))
|
||||
);
|
||||
}
|
||||
|
||||
3
home/linux/desktop/hyprland/options/default.nix
Normal file
@@ -0,0 +1,3 @@
|
||||
{mylib, ...}: {
|
||||
imports = mylib.scanPaths ./.;
|
||||
}
|
||||
24
home/linux/desktop/hyprland/options/nvidia.nix
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.modules.desktop.hyprland;
|
||||
in {
|
||||
options.modules.desktop.hyprland = {
|
||||
nvidia = mkEnableOption "whether nvidia GPU is used";
|
||||
};
|
||||
|
||||
config = mkIf (cfg.enable && cfg.nvidia) {
|
||||
wayland.windowManager.hyprland.settings.env = [
|
||||
# for hyprland with nvidia gpu, ref https://wiki.hyprland.org/Nvidia/
|
||||
"LIBVA_DRIVER_NAME,nvidia"
|
||||
"XDG_SESSION_TYPE,wayland"
|
||||
"GBM_BACKEND,nvidia-drm"
|
||||
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
||||
# fix https://github.com/hyprwm/Hyprland/issues/1520
|
||||
"WLR_NO_HARDWARE_CURSORS,1"
|
||||
];
|
||||
};
|
||||
}
|
||||
4
home/linux/desktop/hyprland/values/default.nix
Normal file
@@ -0,0 +1,4 @@
|
||||
{mylib, ...} @ args:
|
||||
map
|
||||
(path: import path args)
|
||||
(mylib.scanPaths ./.)
|
||||
@@ -11,9 +11,19 @@
|
||||
# they are all depending on hyprland/i3's user graphical-session
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
settings = {
|
||||
source = "${nur-ryan4yin.packages.${pkgs.system}.catppuccin-hyprland}/themes/mocha.conf";
|
||||
env = [
|
||||
"NIXOS_OZONE_WL,1" # for any ozone-based browser & electron apps to run on wayland
|
||||
"MOZ_ENABLE_WAYLAND,1" # for firefox to run on wayland
|
||||
"MOZ_WEBRENDER,1"
|
||||
# misc
|
||||
"_JAVA_AWT_WM_NONREPARENTING,1"
|
||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
|
||||
];
|
||||
};
|
||||
package = hyprland.packages.${pkgs.system}.hyprland;
|
||||
settings = lib.mkForce {};
|
||||
extraConfig = builtins.readFile ./hypr-conf/hyprland.conf;
|
||||
extraConfig = builtins.readFile ../conf/hyprland.conf;
|
||||
# gammastep/wallpaper-switcher need this to be enabled.
|
||||
systemd.enable = true;
|
||||
};
|
||||
@@ -28,47 +38,29 @@
|
||||
# hyprland configs, based on https://github.com/notwidow/hyprland
|
||||
xdg.configFile = {
|
||||
"hypr/mako" = {
|
||||
source = ./hypr-conf/mako;
|
||||
source = ../conf/mako;
|
||||
recursive = true;
|
||||
};
|
||||
"hypr/scripts" = {
|
||||
source = ./hypr-conf/scripts;
|
||||
source = ../conf/scripts;
|
||||
recursive = true;
|
||||
};
|
||||
"hypr/waybar" = {
|
||||
source = ./hypr-conf/waybar;
|
||||
source = ../conf/waybar;
|
||||
recursive = true;
|
||||
};
|
||||
"hypr/wlogout" = {
|
||||
source = ./hypr-conf/wlogout;
|
||||
recursive = true;
|
||||
};
|
||||
"hypr/themes" = {
|
||||
source = "${nur-ryan4yin.packages.${pkgs.system}.catppuccin-hyprland}/themes";
|
||||
source = ../conf/wlogout;
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
# music player - mpd
|
||||
"mpd" = {
|
||||
source = ./mpd;
|
||||
source = ../conf/mpd;
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
|
||||
# allow fontconfig to discover fonts and configurations installed through home.packages
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
systemd.user.sessionVariables = {
|
||||
"NIXOS_OZONE_WL" = "1"; # for any ozone-based browser & electron apps to run on wayland
|
||||
"MOZ_ENABLE_WAYLAND" = "1"; # for firefox to run on wayland
|
||||
"MOZ_WEBRENDER" = "1";
|
||||
|
||||
# for hyprland with nvidia gpu, ref https://wiki.hyprland.org/Nvidia/
|
||||
"LIBVA_DRIVER_NAME" = "nvidia";
|
||||
"XDG_SESSION_TYPE" = "wayland";
|
||||
"GBM_BACKEND" = "nvidia-drm";
|
||||
"__GLX_VENDOR_LIBRARY_NAME" = "nvidia";
|
||||
"WLR_NO_HARDWARE_CURSORS" = "1";
|
||||
"WLR_EGL_NO_MODIFIRES" = "1";
|
||||
};
|
||||
}
|
||||
@@ -7,18 +7,15 @@
|
||||
with lib; let
|
||||
cfg = config.modules.desktop.i3;
|
||||
in {
|
||||
imports = [
|
||||
./options
|
||||
];
|
||||
|
||||
options.modules.desktop.i3 = {
|
||||
enable = mkEnableOption "i3 window manager";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
mkMerge
|
||||
(map
|
||||
(path: import path args)
|
||||
[
|
||||
./i3.nix
|
||||
./packages.nix
|
||||
./x11-apps.nix
|
||||
])
|
||||
mkMerge (import ./values args)
|
||||
);
|
||||
}
|
||||
|
||||
3
home/linux/desktop/i3/options/default.nix
Normal file
@@ -0,0 +1,3 @@
|
||||
{mylib, ...}: {
|
||||
imports = mylib.scanPaths ./.;
|
||||
}
|
||||
27
home/linux/desktop/i3/options/nvidia.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.modules.desktop.i3;
|
||||
in {
|
||||
options.modules.desktop.i3 = {
|
||||
nvidia = mkEnableOption "whether nvidia GPU is used";
|
||||
};
|
||||
|
||||
config = mkIf (cfg.enable && cfg.nvidia) (
|
||||
let
|
||||
env = {
|
||||
"LIBVA_DRIVER_NAME" = "nvidia";
|
||||
"GBM_BACKEND" = "nvidia-drm";
|
||||
"__GLX_VENDOR_LIBRARY_NAME" = "nvidia";
|
||||
};
|
||||
in {
|
||||
# environment set for systemd's user session
|
||||
systemd.user.sessionVariables = env;
|
||||
# environment set at user login
|
||||
home.sessionVariables = env;
|
||||
}
|
||||
);
|
||||
}
|
||||
4
home/linux/desktop/i3/values/default.nix
Normal file
@@ -0,0 +1,4 @@
|
||||
{mylib, ...} @ args:
|
||||
map
|
||||
(path: import path args)
|
||||
(mylib.scanPaths ./.)
|
||||
@@ -9,7 +9,7 @@ _: {
|
||||
enable = true;
|
||||
windowManager.i3 = {
|
||||
enable = true;
|
||||
extraConfig = builtins.readFile ./i3-config;
|
||||
extraConfig = builtins.readFile ../conf/i3-config;
|
||||
};
|
||||
# Path, relative to HOME, where Home Manager should write the X session script.
|
||||
# and NixOS will use it to start xorg session when system boot up
|
||||
@@ -17,20 +17,20 @@ _: {
|
||||
};
|
||||
|
||||
xdg.configFile = {
|
||||
"i3/i3blocks.conf".source = ./i3blocks.conf;
|
||||
"i3/i3blocks.conf".source = ../conf/i3blocks.conf;
|
||||
"i3/scripts" = {
|
||||
source = ./scripts;
|
||||
source = ../conf/scripts;
|
||||
# copy the scripts directory recursively
|
||||
recursive = true;
|
||||
executable = true; # make all scripts executable
|
||||
};
|
||||
"i3/layouts" = {
|
||||
source = ./layouts;
|
||||
source = ../conf/layouts;
|
||||
recursive = true;
|
||||
};
|
||||
# rofi is a application launcher and dmenu replacement
|
||||
"rofi" = {
|
||||
source = ./rofi-conf;
|
||||
source = ../conf/rofi;
|
||||
# copy the scripts directory recursively
|
||||
recursive = true;
|
||||
};
|
||||
@@ -38,24 +38,18 @@ _: {
|
||||
|
||||
home.file = {
|
||||
".local/bin/bright" = {
|
||||
source = ./bin/bright;
|
||||
source = ../bin/bright;
|
||||
executable = true;
|
||||
};
|
||||
".local/bin/logout" = {
|
||||
source = ./bin/logout;
|
||||
source = ../bin/logout;
|
||||
executable = true;
|
||||
};
|
||||
|
||||
# xrandr - set primary screen
|
||||
".screenlayout/monitor.sh".source = ./dual-monitor-4k-1080p.sh;
|
||||
".screenlayout/monitor.sh".source = ../conf/dual-monitor-4k-1080p.sh;
|
||||
};
|
||||
|
||||
# allow fontconfig to discover fonts and configurations installed through home.packages
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
systemd.user.sessionVariables = {
|
||||
"LIBVA_DRIVER_NAME" = "nvidia";
|
||||
"GBM_BACKEND" = "nvidia-drm";
|
||||
"__GLX_VENDOR_LIBRARY_NAME" = "nvidia";
|
||||
};
|
||||
}
|
||||
@@ -10,6 +10,7 @@
|
||||
picom # transparency and shadows
|
||||
feh # set wallpaper
|
||||
xcolor # color picker
|
||||
xsel # for clipboard support in x11, required by tmux's clipboard support
|
||||
|
||||
acpi # battery information
|
||||
arandr # screen layout manager
|
||||
@@ -1,7 +1,6 @@
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
firefox
|
||||
xsel # for clipboard support in x11, required by tmux's clipboard support
|
||||
];
|
||||
|
||||
# TODO vscode & chrome both have wayland support, but they don't work with fcitx5, need to fix it.
|
||||
30
hosts/12kingdoms/shoukei/home.nix
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
modules.desktop.hyprland = {
|
||||
nvidia = false;
|
||||
settings = {
|
||||
# Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info.
|
||||
# highres: get the best possible resolution
|
||||
# auto: postition automatically
|
||||
# 1.5: scale to 1.5 times
|
||||
# bitdepth,10: enable 10 bit support
|
||||
monitor = "eDP-1,highres,auto,1.5,bitdepth,10";
|
||||
};
|
||||
};
|
||||
|
||||
modules.desktop.i3 = {
|
||||
nvidia = false;
|
||||
};
|
||||
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
Host github.com
|
||||
Hostname github.com
|
||||
# github is controlled by shoukei~
|
||||
IdentityFile ~/.ssh/shoukei
|
||||
# Specifies that ssh should only use the identity file explicitly configured above
|
||||
# required to prevent sending default identity files first.
|
||||
IdentitiesOnly yes
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -12,7 +12,8 @@
|
||||
1. `nozomi`: Lichee Pi 4A, TH1520(4xC910@2.0G), 8GB RAM + 32G eMMC + 64G SD Card.
|
||||
2. `yukina`: Lichee Pi 4A(Internal Test Version), TH1520(4xC910@2.0G), 8GB RAM + 8G eMMC + 128G SD Card.
|
||||
3. `chiaya`: Milk-V Mars, JH7110(4xU74@1.5 GHz), 4G RAM + No eMMC + 64G SD Card.
|
||||
4. `12kingdoms`: Currently only one aarch64 host
|
||||
4. `12kingdoms`:
|
||||
1. `shoukei`: NixOS
|
||||
1. `suzu`: Orange Pi 5, RK3588s(4xA76 + 4xA55), GPU(4Cores, Mail-G610), NPU(6Tops@int8), 8G RAM + 256G SSD.
|
||||
|
||||
|
||||
|
||||
14
hosts/fern/home.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
_: {
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
Host github.com
|
||||
Hostname github.com
|
||||
# github is controlled by fern~
|
||||
IdentityFile ~/.ssh/fern
|
||||
# Specifies that ssh should only use the identity file explicitly configured above
|
||||
# required to prevent sending default identity files first.
|
||||
IdentitiesOnly yes
|
||||
'';
|
||||
};
|
||||
}
|
||||
14
hosts/harmonica/home.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
_: {
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
Host github.com
|
||||
Hostname github.com
|
||||
# github is controlled by harmonica~
|
||||
IdentityFile ~/.ssh/harmonica
|
||||
# Specifies that ssh should only use the identity file explicitly configured above
|
||||
# required to prevent sending default identity files first.
|
||||
IdentitiesOnly yes
|
||||
'';
|
||||
};
|
||||
}
|
||||
29
hosts/idols/ai/home.nix
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
modules.desktop.hyprland = {
|
||||
nvidia = true;
|
||||
settings = {
|
||||
# Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info.
|
||||
# highres: get the best possible resolution
|
||||
# auto: postition automatically
|
||||
# 1.5: scale to 1.5 times
|
||||
# bitdepth,10: enable 10 bit support
|
||||
monitor = "DP-2,highres,auto,1.5,bitdepth,10";
|
||||
};
|
||||
};
|
||||
|
||||
modules.desktop.i3 = {
|
||||
nvidia = true;
|
||||
};
|
||||
|
||||
programs.ssh = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
Host github.com
|
||||
# github is controlled by gluttony~
|
||||
IdentityFile ~/.ssh/gluttony
|
||||
# Specifies that ssh should only use the identity file explicitly configured above
|
||||
# required to prevent sending default identity files first.
|
||||
IdentitiesOnly yes
|
||||
'';
|
||||
};
|
||||
}
|
||||
2
hosts/idols/aquamarine/home.nix
Normal file
@@ -0,0 +1,2 @@
|
||||
{
|
||||
}
|
||||
2
hosts/idols/kana/home.nix
Normal file
@@ -0,0 +1,2 @@
|
||||
{
|
||||
}
|
||||
2
hosts/idols/ruby/home.nix
Normal file
@@ -0,0 +1,2 @@
|
||||
{
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
users.users.${username} = {
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDiipi59EnVbi6bK1bGrcbfEM263wgdNfbrt6VBC1rHx ryan@ai-idols"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII7PTkP3ixXTZlrJNSHnXgkmHNT+QslFi9wNYXOpVwGB ryan@harmonica"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSfp/hvegbK04HykWvoY1EbDW+vXu1AlCjVivWE2ZeR ryan@shoukei"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ in {
|
||||
ai_hyprland = nixosSystem (idol_ai_modules_hyprland // base_args);
|
||||
|
||||
# shoukei
|
||||
shoukei_ie = nixosSystem (_12kingdoms_shoukei_modules_i3 // base_args);
|
||||
shoukei_i3 = nixosSystem (_12kingdoms_shoukei_modules_i3 // base_args);
|
||||
shoukei_hyprland = nixosSystem (_12kingdoms_shoukei_modules_hyprland // base_args);
|
||||
|
||||
# three virtual machines without desktop environment.
|
||||
|
||||
102
systems/vars.nix
@@ -1,5 +1,5 @@
|
||||
let
|
||||
_dekstop_bass_modules = {
|
||||
desktop_base_modules = {
|
||||
nixos-modules = [
|
||||
../secrets/nixos.nix
|
||||
../modules/nixos/desktop.nix
|
||||
@@ -8,51 +8,36 @@ let
|
||||
../home/linux/desktop.nix
|
||||
];
|
||||
};
|
||||
|
||||
desktop_i3_modules = {
|
||||
nixos-modules =
|
||||
[
|
||||
{modules.desktop.xorg.enable = true;}
|
||||
]
|
||||
++ _dekstop_bass_modules.nixos-modules;
|
||||
home-module.imports =
|
||||
[
|
||||
../home/linux/desktop.nix
|
||||
{modules.desktop.i3.enable = true;}
|
||||
]
|
||||
++ _dekstop_bass_modules.home-module.imports;
|
||||
};
|
||||
desktop_hyprland_modules = {
|
||||
nixos-modules =
|
||||
[
|
||||
{modules.desktop.wayland.enable = true;}
|
||||
]
|
||||
++ _dekstop_bass_modules.nixos-modules;
|
||||
home-module.imports =
|
||||
[
|
||||
../home/linux/desktop.nix
|
||||
{modules.desktop.hyprland.enable = true;}
|
||||
]
|
||||
++ _dekstop_bass_modules.home-module.imports;
|
||||
};
|
||||
in rec {
|
||||
in {
|
||||
# 星野 アイ, Hoshino Ai
|
||||
idol_ai_modules_i3 = {
|
||||
nixos-modules =
|
||||
[
|
||||
../hosts/idols/ai
|
||||
{modules.desktop.xorg.enable = true;}
|
||||
]
|
||||
++ desktop_i3_modules.nixos-modules;
|
||||
home-module = desktop_i3_modules.home-module;
|
||||
++ desktop_base_modules.nixos-modules;
|
||||
home-module.imports =
|
||||
[
|
||||
../hosts/idols/ai/home.nix
|
||||
{modules.desktop.i3.enable = true;}
|
||||
]
|
||||
++ desktop_base_modules.home-module.imports;
|
||||
};
|
||||
|
||||
idol_ai_modules_hyprland = {
|
||||
nixos-modules =
|
||||
[
|
||||
../hosts/idols/ai
|
||||
{modules.desktop.wayland.enable = true;}
|
||||
]
|
||||
++ desktop_hyprland_modules.nixos-modules;
|
||||
home-module = desktop_hyprland_modules.home-module;
|
||||
++ desktop_base_modules.nixos-modules;
|
||||
home-module.imports =
|
||||
[
|
||||
../hosts/idols/ai/home.nix
|
||||
{modules.desktop.hyprland.enable = true;}
|
||||
]
|
||||
++ desktop_base_modules.home-module.imports;
|
||||
};
|
||||
|
||||
# 星野 愛久愛海, Hoshino Akuamarin
|
||||
@@ -62,7 +47,10 @@ in rec {
|
||||
../modules/nixos/server.nix
|
||||
../modules/nixos/proxmox-hardware-configuration.nix
|
||||
];
|
||||
home-module = import ../home/linux/server.nix;
|
||||
home-module.imports = [
|
||||
../hosts/idols/aquamarine/home.nix
|
||||
../home/linux/server.nix
|
||||
];
|
||||
};
|
||||
idol_aquamarine_tags = ["dist-build" "aqua"];
|
||||
|
||||
@@ -73,7 +61,10 @@ in rec {
|
||||
../modules/nixos/server.nix
|
||||
../modules/nixos/proxmox-hardware-configuration.nix
|
||||
];
|
||||
home-module = import ../home/linux/server.nix;
|
||||
home-module.imports = [
|
||||
../hosts/idols/ruby/home.nix
|
||||
../home/linux/server.nix
|
||||
];
|
||||
};
|
||||
idol_ruby_tags = ["dist-build" "ruby"];
|
||||
|
||||
@@ -84,7 +75,10 @@ in rec {
|
||||
../modules/nixos/server.nix
|
||||
../modules/nixos/proxmox-hardware-configuration.nix
|
||||
];
|
||||
home-module = import ../home/linux/server.nix;
|
||||
home-module.imports = [
|
||||
../hosts/idols/kana/home.nix
|
||||
../home/linux/server.nix
|
||||
];
|
||||
};
|
||||
idol_kana_tags = ["dist-build" "kana"];
|
||||
|
||||
@@ -97,7 +91,7 @@ in rec {
|
||||
# cross-compilation this flake.
|
||||
{nixpkgs.crossSystem.system = "riscv64-linux";}
|
||||
];
|
||||
# home-module = import ../home/linux/server.nix;
|
||||
# home-module.imports = [];
|
||||
};
|
||||
rolling_nozomi_tags = ["riscv" "nozomi"];
|
||||
|
||||
@@ -110,7 +104,7 @@ in rec {
|
||||
# cross-compilation this flake.
|
||||
{nixpkgs.crossSystem.system = "riscv64-linux";}
|
||||
];
|
||||
# home-module = import ../home/linux/server.nix;
|
||||
# home-module.imports = [];
|
||||
};
|
||||
rolling_yukina_tags = ["riscv" "yukina"];
|
||||
|
||||
@@ -123,7 +117,7 @@ in rec {
|
||||
# cross-compilation this flake.
|
||||
{nixpkgs.crossSystem.config = "aarch64-unknown-linux-gnu";}
|
||||
];
|
||||
# home-module = import ../home/linux/server.nix;
|
||||
# home-module.imports = [];
|
||||
};
|
||||
_12kingdoms_suzu_tags = ["aarch" "suzu"];
|
||||
|
||||
@@ -132,18 +126,30 @@ in rec {
|
||||
nixos-modules =
|
||||
[
|
||||
../hosts/12kingdoms/shoukei
|
||||
{modules.desktop.xorg.enable = true;}
|
||||
]
|
||||
++ desktop_i3_modules.nixos-modules;
|
||||
home-module = desktop_i3_modules.home-module;
|
||||
++ desktop_base_modules.nixos-modules;
|
||||
home-module.imports =
|
||||
[
|
||||
../hosts/12kingdoms/shoukei/home.nix
|
||||
{modules.desktop.i3.enable = true;}
|
||||
]
|
||||
++ desktop_base_modules.home-module.imports;
|
||||
};
|
||||
|
||||
_12kingdoms_shoukei_modules_hyprland = {
|
||||
nixos-modules =
|
||||
[
|
||||
../hosts/12kingdoms/shoukei
|
||||
{modules.desktop.wayland.enable = true;}
|
||||
]
|
||||
++ desktop_hyprland_modules.nixos-modules;
|
||||
home-module = desktop_hyprland_modules.home-module;
|
||||
++ desktop_base_modules.nixos-modules;
|
||||
home-module.imports =
|
||||
[
|
||||
../hosts/12kingdoms/shoukei/home.nix
|
||||
{modules.desktop.hyprland.enable = true;}
|
||||
]
|
||||
++ desktop_base_modules.home-module.imports;
|
||||
};
|
||||
|
||||
# darwin systems
|
||||
@@ -154,7 +160,10 @@ in rec {
|
||||
../modules/darwin
|
||||
../secrets/darwin.nix
|
||||
];
|
||||
home-module = import ../home/darwin;
|
||||
home-module.imports = [
|
||||
../hosts/harmonica/home.nix
|
||||
../home/darwin
|
||||
];
|
||||
};
|
||||
darwin_fern_modules = {
|
||||
darwin-modules = [
|
||||
@@ -163,6 +172,9 @@ in rec {
|
||||
../modules/darwin
|
||||
../secrets/darwin.nix
|
||||
];
|
||||
home-module = import ../home/darwin;
|
||||
home-module.imports = [
|
||||
../hosts/fern/home.nix
|
||||
../home/darwin
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||