@@ -14,7 +14,7 @@ i3:
|
|||||||
nixos-rebuild switch --flake .#ai_i3 --use-remote-sudo
|
nixos-rebuild switch --flake .#ai_i3 --use-remote-sudo
|
||||||
|
|
||||||
s-i3:
|
s-i3:
|
||||||
nixos-rebuild switch --flake .#shoekei_i3 --use-remote-sudo
|
nixos-rebuild switch --flake .#shoukei_i3 --use-remote-sudo
|
||||||
|
|
||||||
hypr:
|
hypr:
|
||||||
nixos-rebuild switch --flake .#ai_hyprland --use-remote-sudo
|
nixos-rebuild switch --flake .#ai_hyprland --use-remote-sudo
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ return {
|
|||||||
{ import = "astrocommunity.colorscheme.catppuccin" },
|
{ import = "astrocommunity.colorscheme.catppuccin" },
|
||||||
-- Highly experimental plugin that completely replaces
|
-- Highly experimental plugin that completely replaces
|
||||||
-- the UI for messages, cmdline and the popupmenu.
|
-- 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
|
-- Fully featured & enhanced replacement for copilot.vim
|
||||||
-- <Tab> work with both auto completion in cmp and copilot
|
-- <Tab> work with both auto completion in cmp and copilot
|
||||||
{ import = "astrocommunity.media.vim-wakatime" },
|
{ import = "astrocommunity.media.vim-wakatime" },
|
||||||
@@ -77,7 +77,7 @@ return {
|
|||||||
-- lazy-loading on events
|
-- lazy-loading on events
|
||||||
event = { "InsertLeave", "TextChanged" },
|
event = { "InsertLeave", "TextChanged" },
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
opts.prompt_style = "notify" -- or stdout
|
opts.prompt_style = "stdout" -- notify or stdout
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -36,9 +36,10 @@
|
|||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
|
|
||||||
# currently we use lazy.nvim as neovim's package manager, so comment this one.
|
# currently we use lazy.nvim as neovim's package manager, so comment this one.
|
||||||
# plugins = with pkgs.vimPlugins; [
|
plugins = with pkgs.vimPlugins; [
|
||||||
# # search all the plugins using https://search.nixos.org/packages
|
# 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)
|
# Extra packages only available to nvim(won't pollute the global home environment)
|
||||||
extraPackages = with pkgs;
|
extraPackages = with pkgs;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{pkgs, ...}: {
|
_: {
|
||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
@@ -23,13 +23,6 @@
|
|||||||
# required to prevent sending default identity files first.
|
# required to prevent sending default identity files first.
|
||||||
IdentitiesOnly yes
|
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
|
Host gtr5
|
||||||
HostName 192.168.5.172
|
HostName 192.168.5.172
|
||||||
Port 22
|
Port 22
|
||||||
@@ -16,38 +16,4 @@
|
|||||||
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
|
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}";
|
home.homeDirectory = "/home/${username}";
|
||||||
|
|
||||||
# add environment variables
|
# environment variables that always set at login
|
||||||
systemd.user.sessionVariables = {
|
home.sessionVariables = {
|
||||||
# clean up ~
|
# clean up ~
|
||||||
LESSHISTFILE = cache + "/less/history";
|
LESSHISTFILE = cache + "/less/history";
|
||||||
LESSKEY = c + "/less/lesskey";
|
LESSKEY = c + "/less/lesskey";
|
||||||
@@ -25,6 +25,4 @@ in rec {
|
|||||||
# enable scrolling in git diff
|
# enable scrolling in git diff
|
||||||
DELTA_PAGER = "less -R";
|
DELTA_PAGER = "less -R";
|
||||||
};
|
};
|
||||||
|
|
||||||
home.sessionVariables = systemd.user.sessionVariables;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
x11.enable = true;
|
x11.enable = true;
|
||||||
package = pkgs.bibata-cursors;
|
package = pkgs.bibata-cursors;
|
||||||
name = "Bibata-Modern-Classic";
|
name = "Bibata-Modern-Ice";
|
||||||
size = 24;
|
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 ----------------------------------------------------
|
#-- Input ----------------------------------------------------
|
||||||
# Configure mouse and touchpad here.
|
# Configure mouse and touchpad here.
|
||||||
input {
|
input {
|
||||||
@@ -199,10 +181,9 @@ bind=SUPER,mouse_up,workspace,e-1
|
|||||||
#-- Startup ----------------------------------------------------
|
#-- Startup ----------------------------------------------------
|
||||||
exec-once=~/.config/hypr/scripts/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!
|
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
|
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
|
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 = center, class:^(.*jetbrains.*)$, title:^(Confirm Exit|Open Project|win424|win201|splash)$
|
||||||
windowrulev2 = size 640 400, class:^(.*jetbrains.*)$, title:^(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 {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
anyrun.homeManagerModules.default
|
anyrun.homeManagerModules.default
|
||||||
|
./options
|
||||||
];
|
];
|
||||||
|
|
||||||
options.modules.desktop.hyprland = {
|
options.modules.desktop.hyprland = {
|
||||||
enable = mkEnableOption "hyprland compositor";
|
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 (
|
config = mkIf cfg.enable (
|
||||||
mkMerge
|
mkMerge ([
|
||||||
(map
|
{
|
||||||
(path: import path args)
|
wayland.windowManager.hyprland.settings = cfg.settings;
|
||||||
[
|
}
|
||||||
./hyprland.nix
|
]
|
||||||
./packages.nix
|
++ (import ./values args))
|
||||||
./anyrun.nix
|
|
||||||
./wayland-apps.nix
|
|
||||||
])
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{mylib, ...}: {
|
||||||
|
imports = mylib.scanPaths ./.;
|
||||||
|
}
|
||||||
@@ -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"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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
|
# they are all depending on hyprland/i3's user graphical-session
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
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;
|
package = hyprland.packages.${pkgs.system}.hyprland;
|
||||||
settings = lib.mkForce {};
|
extraConfig = builtins.readFile ../conf/hyprland.conf;
|
||||||
extraConfig = builtins.readFile ./hypr-conf/hyprland.conf;
|
|
||||||
# gammastep/wallpaper-switcher need this to be enabled.
|
# gammastep/wallpaper-switcher need this to be enabled.
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
};
|
};
|
||||||
@@ -28,47 +38,29 @@
|
|||||||
# hyprland configs, based on https://github.com/notwidow/hyprland
|
# hyprland configs, based on https://github.com/notwidow/hyprland
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
"hypr/mako" = {
|
"hypr/mako" = {
|
||||||
source = ./hypr-conf/mako;
|
source = ../conf/mako;
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
"hypr/scripts" = {
|
"hypr/scripts" = {
|
||||||
source = ./hypr-conf/scripts;
|
source = ../conf/scripts;
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
"hypr/waybar" = {
|
"hypr/waybar" = {
|
||||||
source = ./hypr-conf/waybar;
|
source = ../conf/waybar;
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
"hypr/wlogout" = {
|
"hypr/wlogout" = {
|
||||||
source = ./hypr-conf/wlogout;
|
source = ../conf/wlogout;
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
"hypr/themes" = {
|
|
||||||
source = "${nur-ryan4yin.packages.${pkgs.system}.catppuccin-hyprland}/themes";
|
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# music player - mpd
|
# music player - mpd
|
||||||
"mpd" = {
|
"mpd" = {
|
||||||
source = ./mpd;
|
source = ../conf/mpd;
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# allow fontconfig to discover fonts and configurations installed through home.packages
|
# allow fontconfig to discover fonts and configurations installed through home.packages
|
||||||
fonts.fontconfig.enable = true;
|
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
|
with lib; let
|
||||||
cfg = config.modules.desktop.i3;
|
cfg = config.modules.desktop.i3;
|
||||||
in {
|
in {
|
||||||
|
imports = [
|
||||||
|
./options
|
||||||
|
];
|
||||||
|
|
||||||
options.modules.desktop.i3 = {
|
options.modules.desktop.i3 = {
|
||||||
enable = mkEnableOption "i3 window manager";
|
enable = mkEnableOption "i3 window manager";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (
|
config = mkIf cfg.enable (
|
||||||
mkMerge
|
mkMerge (import ./values args)
|
||||||
(map
|
|
||||||
(path: import path args)
|
|
||||||
[
|
|
||||||
./i3.nix
|
|
||||||
./packages.nix
|
|
||||||
./x11-apps.nix
|
|
||||||
])
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{mylib, ...}: {
|
||||||
|
imports = mylib.scanPaths ./.;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{mylib, ...} @ args:
|
||||||
|
map
|
||||||
|
(path: import path args)
|
||||||
|
(mylib.scanPaths ./.)
|
||||||
@@ -9,7 +9,7 @@ _: {
|
|||||||
enable = true;
|
enable = true;
|
||||||
windowManager.i3 = {
|
windowManager.i3 = {
|
||||||
enable = true;
|
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.
|
# 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
|
# and NixOS will use it to start xorg session when system boot up
|
||||||
@@ -17,20 +17,20 @@ _: {
|
|||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
"i3/i3blocks.conf".source = ./i3blocks.conf;
|
"i3/i3blocks.conf".source = ../conf/i3blocks.conf;
|
||||||
"i3/scripts" = {
|
"i3/scripts" = {
|
||||||
source = ./scripts;
|
source = ../conf/scripts;
|
||||||
# copy the scripts directory recursively
|
# copy the scripts directory recursively
|
||||||
recursive = true;
|
recursive = true;
|
||||||
executable = true; # make all scripts executable
|
executable = true; # make all scripts executable
|
||||||
};
|
};
|
||||||
"i3/layouts" = {
|
"i3/layouts" = {
|
||||||
source = ./layouts;
|
source = ../conf/layouts;
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
# rofi is a application launcher and dmenu replacement
|
# rofi is a application launcher and dmenu replacement
|
||||||
"rofi" = {
|
"rofi" = {
|
||||||
source = ./rofi-conf;
|
source = ../conf/rofi;
|
||||||
# copy the scripts directory recursively
|
# copy the scripts directory recursively
|
||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
@@ -38,24 +38,18 @@ _: {
|
|||||||
|
|
||||||
home.file = {
|
home.file = {
|
||||||
".local/bin/bright" = {
|
".local/bin/bright" = {
|
||||||
source = ./bin/bright;
|
source = ../bin/bright;
|
||||||
executable = true;
|
executable = true;
|
||||||
};
|
};
|
||||||
".local/bin/logout" = {
|
".local/bin/logout" = {
|
||||||
source = ./bin/logout;
|
source = ../bin/logout;
|
||||||
executable = true;
|
executable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# xrandr - set primary screen
|
# 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
|
# allow fontconfig to discover fonts and configurations installed through home.packages
|
||||||
fonts.fontconfig.enable = true;
|
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
|
picom # transparency and shadows
|
||||||
feh # set wallpaper
|
feh # set wallpaper
|
||||||
xcolor # color picker
|
xcolor # color picker
|
||||||
|
xsel # for clipboard support in x11, required by tmux's clipboard support
|
||||||
|
|
||||||
acpi # battery information
|
acpi # battery information
|
||||||
arandr # screen layout manager
|
arandr # screen layout manager
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
firefox
|
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.
|
# TODO vscode & chrome both have wayland support, but they don't work with fcitx5, need to fix it.
|
||||||
@@ -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.
|
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.
|
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.
|
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.
|
1. `suzu`: Orange Pi 5, RK3588s(4xA76 + 4xA55), GPU(4Cores, Mail-G610), NPU(6Tops@int8), 8G RAM + 256G SSD.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
users.users.${username} = {
|
users.users.${username} = {
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDiipi59EnVbi6bK1bGrcbfEM263wgdNfbrt6VBC1rHx ryan@ai-idols"
|
"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);
|
ai_hyprland = nixosSystem (idol_ai_modules_hyprland // base_args);
|
||||||
|
|
||||||
# shoukei
|
# 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);
|
shoukei_hyprland = nixosSystem (_12kingdoms_shoukei_modules_hyprland // base_args);
|
||||||
|
|
||||||
# three virtual machines without desktop environment.
|
# three virtual machines without desktop environment.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
let
|
let
|
||||||
_dekstop_bass_modules = {
|
desktop_base_modules = {
|
||||||
nixos-modules = [
|
nixos-modules = [
|
||||||
../secrets/nixos.nix
|
../secrets/nixos.nix
|
||||||
../modules/nixos/desktop.nix
|
../modules/nixos/desktop.nix
|
||||||
@@ -8,51 +8,36 @@ let
|
|||||||
../home/linux/desktop.nix
|
../home/linux/desktop.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
in {
|
||||||
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 {
|
|
||||||
# 星野 アイ, Hoshino Ai
|
# 星野 アイ, Hoshino Ai
|
||||||
idol_ai_modules_i3 = {
|
idol_ai_modules_i3 = {
|
||||||
nixos-modules =
|
nixos-modules =
|
||||||
[
|
[
|
||||||
../hosts/idols/ai
|
../hosts/idols/ai
|
||||||
|
{modules.desktop.xorg.enable = true;}
|
||||||
]
|
]
|
||||||
++ desktop_i3_modules.nixos-modules;
|
++ desktop_base_modules.nixos-modules;
|
||||||
home-module = desktop_i3_modules.home-module;
|
home-module.imports =
|
||||||
|
[
|
||||||
|
../hosts/idols/ai/home.nix
|
||||||
|
{modules.desktop.i3.enable = true;}
|
||||||
|
]
|
||||||
|
++ desktop_base_modules.home-module.imports;
|
||||||
};
|
};
|
||||||
|
|
||||||
idol_ai_modules_hyprland = {
|
idol_ai_modules_hyprland = {
|
||||||
nixos-modules =
|
nixos-modules =
|
||||||
[
|
[
|
||||||
../hosts/idols/ai
|
../hosts/idols/ai
|
||||||
|
{modules.desktop.wayland.enable = true;}
|
||||||
]
|
]
|
||||||
++ desktop_hyprland_modules.nixos-modules;
|
++ desktop_base_modules.nixos-modules;
|
||||||
home-module = desktop_hyprland_modules.home-module;
|
home-module.imports =
|
||||||
|
[
|
||||||
|
../hosts/idols/ai/home.nix
|
||||||
|
{modules.desktop.hyprland.enable = true;}
|
||||||
|
]
|
||||||
|
++ desktop_base_modules.home-module.imports;
|
||||||
};
|
};
|
||||||
|
|
||||||
# 星野 愛久愛海, Hoshino Akuamarin
|
# 星野 愛久愛海, Hoshino Akuamarin
|
||||||
@@ -62,7 +47,10 @@ in rec {
|
|||||||
../modules/nixos/server.nix
|
../modules/nixos/server.nix
|
||||||
../modules/nixos/proxmox-hardware-configuration.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"];
|
idol_aquamarine_tags = ["dist-build" "aqua"];
|
||||||
|
|
||||||
@@ -73,7 +61,10 @@ in rec {
|
|||||||
../modules/nixos/server.nix
|
../modules/nixos/server.nix
|
||||||
../modules/nixos/proxmox-hardware-configuration.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"];
|
idol_ruby_tags = ["dist-build" "ruby"];
|
||||||
|
|
||||||
@@ -84,7 +75,10 @@ in rec {
|
|||||||
../modules/nixos/server.nix
|
../modules/nixos/server.nix
|
||||||
../modules/nixos/proxmox-hardware-configuration.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"];
|
idol_kana_tags = ["dist-build" "kana"];
|
||||||
|
|
||||||
@@ -97,7 +91,7 @@ in rec {
|
|||||||
# cross-compilation this flake.
|
# cross-compilation this flake.
|
||||||
{nixpkgs.crossSystem.system = "riscv64-linux";}
|
{nixpkgs.crossSystem.system = "riscv64-linux";}
|
||||||
];
|
];
|
||||||
# home-module = import ../home/linux/server.nix;
|
# home-module.imports = [];
|
||||||
};
|
};
|
||||||
rolling_nozomi_tags = ["riscv" "nozomi"];
|
rolling_nozomi_tags = ["riscv" "nozomi"];
|
||||||
|
|
||||||
@@ -110,7 +104,7 @@ in rec {
|
|||||||
# cross-compilation this flake.
|
# cross-compilation this flake.
|
||||||
{nixpkgs.crossSystem.system = "riscv64-linux";}
|
{nixpkgs.crossSystem.system = "riscv64-linux";}
|
||||||
];
|
];
|
||||||
# home-module = import ../home/linux/server.nix;
|
# home-module.imports = [];
|
||||||
};
|
};
|
||||||
rolling_yukina_tags = ["riscv" "yukina"];
|
rolling_yukina_tags = ["riscv" "yukina"];
|
||||||
|
|
||||||
@@ -123,7 +117,7 @@ in rec {
|
|||||||
# cross-compilation this flake.
|
# cross-compilation this flake.
|
||||||
{nixpkgs.crossSystem.config = "aarch64-unknown-linux-gnu";}
|
{nixpkgs.crossSystem.config = "aarch64-unknown-linux-gnu";}
|
||||||
];
|
];
|
||||||
# home-module = import ../home/linux/server.nix;
|
# home-module.imports = [];
|
||||||
};
|
};
|
||||||
_12kingdoms_suzu_tags = ["aarch" "suzu"];
|
_12kingdoms_suzu_tags = ["aarch" "suzu"];
|
||||||
|
|
||||||
@@ -132,18 +126,30 @@ in rec {
|
|||||||
nixos-modules =
|
nixos-modules =
|
||||||
[
|
[
|
||||||
../hosts/12kingdoms/shoukei
|
../hosts/12kingdoms/shoukei
|
||||||
|
{modules.desktop.xorg.enable = true;}
|
||||||
]
|
]
|
||||||
++ desktop_i3_modules.nixos-modules;
|
++ desktop_base_modules.nixos-modules;
|
||||||
home-module = desktop_i3_modules.home-module;
|
home-module.imports =
|
||||||
|
[
|
||||||
|
../hosts/12kingdoms/shoukei/home.nix
|
||||||
|
{modules.desktop.i3.enable = true;}
|
||||||
|
]
|
||||||
|
++ desktop_base_modules.home-module.imports;
|
||||||
};
|
};
|
||||||
|
|
||||||
_12kingdoms_shoukei_modules_hyprland = {
|
_12kingdoms_shoukei_modules_hyprland = {
|
||||||
nixos-modules =
|
nixos-modules =
|
||||||
[
|
[
|
||||||
../hosts/12kingdoms/shoukei
|
../hosts/12kingdoms/shoukei
|
||||||
|
{modules.desktop.wayland.enable = true;}
|
||||||
]
|
]
|
||||||
++ desktop_hyprland_modules.nixos-modules;
|
++ desktop_base_modules.nixos-modules;
|
||||||
home-module = desktop_hyprland_modules.home-module;
|
home-module.imports =
|
||||||
|
[
|
||||||
|
../hosts/12kingdoms/shoukei/home.nix
|
||||||
|
{modules.desktop.hyprland.enable = true;}
|
||||||
|
]
|
||||||
|
++ desktop_base_modules.home-module.imports;
|
||||||
};
|
};
|
||||||
|
|
||||||
# darwin systems
|
# darwin systems
|
||||||
@@ -154,7 +160,10 @@ in rec {
|
|||||||
../modules/darwin
|
../modules/darwin
|
||||||
../secrets/darwin.nix
|
../secrets/darwin.nix
|
||||||
];
|
];
|
||||||
home-module = import ../home/darwin;
|
home-module.imports = [
|
||||||
|
../hosts/harmonica/home.nix
|
||||||
|
../home/darwin
|
||||||
|
];
|
||||||
};
|
};
|
||||||
darwin_fern_modules = {
|
darwin_fern_modules = {
|
||||||
darwin-modules = [
|
darwin-modules = [
|
||||||
@@ -163,6 +172,9 @@ in rec {
|
|||||||
../modules/darwin
|
../modules/darwin
|
||||||
../secrets/darwin.nix
|
../secrets/darwin.nix
|
||||||
];
|
];
|
||||||
home-module = import ../home/darwin;
|
home-module.imports = [
|
||||||
|
../hosts/fern/home.nix
|
||||||
|
../home/darwin
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||