wow
Some checks failed
CI / check (push) Has been cancelled
CI / ida (push) Has been cancelled
CI / cpt (push) Has been cancelled
CI / build-nixos (ena) (push) Has been cancelled
CI / build-nixos (hako) (push) Has been cancelled
CI / build-nixos (kazusa) (push) Has been cancelled
CI / build-nixos (mizuki) (push) Has been cancelled

This commit is contained in:
암냥 2026-07-03 00:45:07 +09:00
commit bbac123a8d
144 changed files with 7059 additions and 0 deletions

View file

@ -0,0 +1,59 @@
{
config,
pkgs,
inputs,
...
}:
{
imports = [
./hardware-configuration.nix
"${inputs.self}/modules/nixos/base"
"${inputs.self}/modules/nixos/features/boot.nix"
"${inputs.self}/modules/nixos/features/fonts.nix"
"${inputs.self}/modules/nixos/features/plasma.nix"
"${inputs.self}/modules/nixos/features/sound.nix"
"${inputs.self}/modules/nixos/features/packages.nix"
"${inputs.self}/modules/nixos/features/catppuccin.nix"
"${inputs.self}/modules/nixos/features/figma-agent.nix"
"${inputs.self}/modules/nixos/features/sbctl.nix"
"${inputs.self}/modules/nixos/features/grub-standalone.nix"
"${inputs.self}/modules/nixos/features/virtualisation.nix"
"${inputs.self}/modules/nixos/features/cockpit.nix"
"${inputs.self}/modules/nixos/features/bluetooth.nix"
"${inputs.self}/modules/nixos/features/graphics.nix"
"${inputs.self}/modules/nixos/features/steam.nix"
"${inputs.self}/modules/nixos/features/ssh.nix"
];
networking = {
hostName = "ena";
networkmanager.enable = true;
firewall.enable = false;
};
networking.networkmanager.plugins = [
pkgs.networkmanager-ssh
];
services.printing.enable = true;
services.power-profiles-daemon.enable = true;
services.asusd.enable = true;
services.netbird.enable = true;
systemd.services.asusctl-battery-limit = {
description = "Set ASUS battery charge limit";
wantedBy = [ "multi-user.target" ];
wants = [ "asusd.service" ];
after = [ "asusd.service" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.asusctl}/bin/asusctl battery limit 95";
RemainAfterExit = true;
};
};
services.cloudflare-warp.enable = true;
system.stateVersion = "25.11";
}

View file

@ -0,0 +1,42 @@
{
inputs,
overlays,
}:
let
inherit (inputs)
nixpkgs
home-manager
catppuccin
nix-flatpak
plasma-manager
spicetify-nix
vicinae
;
in
nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hardware-configuration.nix
./configuration.nix
catppuccin.nixosModules.catppuccin
nix-flatpak.nixosModules.nix-flatpak
# lanzaboote.nixosModules.lanzaboote
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.sharedModules = [
plasma-manager.homeModules.plasma-manager
spicetify-nix.homeManagerModules.default
vicinae.homeManagerModules.default
];
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.imnyang = import ./home;
}
];
specialArgs = {
inherit inputs;
inherit overlays;
};
}

View file

@ -0,0 +1,71 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"thunderbolt"
"nvme"
"usbhid"
];
boot.initrd.kernelModules = [ "xe" ];
boot.kernelModules = [ "kvm-intel" ];
boot.kernelParams = [
# NVMe APST(Autonomous Power State Transition) 관련 이슈 방지
"nvme_core.default_ps_max_latency_us=0"
"xe.enable_psr=0"
"intel_idle.max_cstate=2" # C-state를 깊게 들어가지 않도록 제한 (테스트 후 점진적으로 상향 가능)
];
hardware.enableRedistributableFirmware = true;
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/161e6b72-1ec6-4b9c-b1b7-325dd4320c2e";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-5a2a5e2d-749d-408e-82df-82e8607ae67e" = {
device = "/dev/disk/by-uuid/5a2a5e2d-749d-408e-82df-82e8607ae67e";
allowDiscards = true;
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/7078-16D1";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices = [ ];
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
intel-compute-runtime
vpl-gpu-rt # Lunar Lake 비디오 가속을 위한 핵심 패키지
];
};
hardware.cpu.intel.updateMicrocode = true;
services.thermald.enable = true; # 인텔 CPU 발열 및 전력 관리 보조
services.fstrim.enable = true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
# hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -0,0 +1,15 @@
{ inputs, ... }:
let
assets = "${inputs.self}/assets";
in
{
imports = [ "${inputs.self}/modules/home/plasma.nix" ];
programs.plasma.workspace.cursor = {
theme = "pjsk-cursor-n25-ena-ani";
};
programs.plasma.workspace.wallpaper = "${assets}/wallpaper/wallpaper1.jpg";
programs.plasma.kscreenlocker.appearance.wallpaper = "${assets}/wallpaper/wallpaper3.png";
}

View file

@ -0,0 +1,57 @@
{
programs.fish = {
enable = true;
shellAliases = {
# 디렉토리 네비게이션
".." = "cd ..";
"..." = "cd ../..";
# ls 별칭
ls = "eza --icons=always";
ll = "eza --icons=always -l";
la = "eza --icons=always -a";
lla = "eza --icons=always -la";
# NixOS 관련
rebuild = "nr";
update = "nix flake update";
clean = "sudo nix-collect-garbage -d";
};
interactiveShellInit = ''
set -g fish_greeting ""
set -g fish_color_command blue
set -g fish_color_error red
set -g fish_color_param cyan
'';
};
programs.starship = {
enable = true;
settings = {
format = "🎨 $directory:$character";
add_newline = false;
# username = {
# style_user = "purple";
# style_root = "purple";
# format = "[$user]($style)";
# show_always = true;
# };
# hostname = {
# style = "green";
# format = "[$hostname]($style)";
# ssh_only = false;
# };
directory = {
style = "fg:#fbb6c4";
format = "[$path]($style)";
truncation_length = 3;
};
character = {
success_symbol = " 💕";
error_symbol = " ";
};
};
};
}

View file

@ -0,0 +1,46 @@
{
config,
pkgs,
inputs,
...
}:
{
xdg.enable = true;
# gtk.enable = true;
home.stateVersion = "25.05";
home.username = "imnyang";
home.homeDirectory = "/home/imnyang";
home.packages = import ./packages.nix { inherit pkgs inputs; };
home.sessionVariables = {
EDITOR = "nano";
VISUAL = "nano";
};
xdg.configFile."fontconfig/conf.d/10-hm-fonts.conf".force = true;
programs.vicinae = {
enable = true;
systemd = {
enable = true;
autoStart = true;
environment = {
USE_LAYER_SHELL = 1;
};
};
};
imports = [
"${inputs.self}/modules/home/git.nix"
# "${inputs.self}/modules/home/firefox.nix
"${inputs.self}/modules/home/neovim.nix"
"${inputs.self}/modules/home/spicetify.nix"
"${inputs.self}/modules/home/ghostty.nix"
"${inputs.self}/modules/home/zed.nix"
"${inputs.self}/modules/home/discord/linux.nix"
"${inputs.self}/modules/home/vscode.nix"
./config/shell.nix
./config/plasma.nix
];
}

View file

@ -0,0 +1,27 @@
{ pkgs, inputs }:
let
system = pkgs.stdenv.hostPlatform.system;
pkgsPacketTracer8 = import inputs.nixpkgs-2511 {
inherit system;
config = {
allowUnfree = true;
permittedInsecurePackages = [
"ciscoPacketTracer8-8.2.2"
];
};
};
in
with pkgs;
(import ../../../../modules/home/packages.nix { inherit pkgs inputs; })
++ [
# tail-tray
kdePackages.kcolorchooser
fastfetch
# amnezia-vpn
# inputs.waterfox.packages.${pkgs.system}.waterfox
gnome-network-displays
element-desktop
cisco-packet-tracer_9
pkgsPacketTracer8.ciscoPacketTracer8
# hoffice
]

View file

@ -0,0 +1,23 @@
{
pkgs,
inputs,
overlays ? [ ],
...
}:
{
imports = [
./modules/nix.nix
./modules/user.nix
./modules/mac
./modules/packages.nix
./modules/homebrew/default.nix
"${inputs.self}/modules/home/discord/mac.nix"
];
nixpkgs = {
hostPlatform = "aarch64-darwin";
overlays = overlays;
};
system.stateVersion = 5;
}

View file

@ -0,0 +1,36 @@
{
inputs,
overlays,
}:
let
inherit (inputs) darwin home-manager;
in
darwin.lib.darwinSystem {
system = "aarch64-darwin";
modules = [
./configuration.nix
home-manager.darwinModules.home-manager
inputs.nix-homebrew.darwinModules.nix-homebrew
{
nix-homebrew = {
enable = true;
user = "imnyang";
mutableTaps = true;
# nix-darwin's Homebrew module uses /opt/homebrew/bin/brew directly.
# The nix-homebrew integration calls `brew` before it is on PATH.
enableFishIntegration = false;
};
}
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.imnyang = import ./home;
}
];
specialArgs = {
inherit inputs;
inherit overlays;
};
}

View file

@ -0,0 +1,31 @@
{ pkgs, ... }:
{
programs.git = {
enable = true;
# 기본 사용자 설정
# userName = "imnyang";
# userEmail = "imnyang@pm.me";
settings = {
user = {
signingkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOHP3Z+AYrRh9f8TYyqChKfeyNm3lOe0F75AwRHTTaxD";
name = "imnyang";
email = "imnyang@pm.me";
};
# gpg = {
# format = "ssh";
# "ssh".program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign";
# };
# commit.gpgsign = true;
init.defaultBranch = "main";
pull.rebase = false;
includeIf."gitdir:~/workspaces/git/adofai.gg/" = {
path = builtins.toFile "gitconfig-adofaigg" ''
[user]
email = imnyang@adofai.gg
'';
};
};
};
}

View file

@ -0,0 +1,64 @@
{
programs.fish = {
enable = true;
shellAliases = {
".." = "cd ..";
"..." = "cd ../..";
ls = "eza --icons=always";
ll = "eza --icons=always -l";
la = "eza --icons=always -a";
lla = "eza --icons=always -la";
# nix-darwin 관련
rebuild = "sudo darwin-rebuild switch --flake .#kanade";
update = "nix flake update";
clean = "nix-collect-garbage -d";
};
interactiveShellInit = ''
set -g fish_greeting ""
set -g fish_color_command blue
set -g fish_color_error red
set -g fish_color_param cyan
set -gx ANDROID_HOME "$HOME/Library/Android/sdk"
if test -d "$ANDROID_HOME/ndk"
set -l ndk_versions "$ANDROID_HOME"/ndk/*
if test (count $ndk_versions) -gt 0
set -gx NDK_HOME $ndk_versions[-1]
end
end
set -gx SSH_AUTH_SOCK /Users/imnyang/.ssh/proton-pass-agent.sock
'';
};
programs.starship = {
enable = true;
settings = {
format = "🎼 $directory:$character";
add_newline = false;
# username = {
# style_user = "purple";
# style_root = "purple";
# format = "[$user]($style)";
# show_always = true;
# };
# hostname = {
# style = "green";
# format = "[$hostname]($style)";
# ssh_only = false;
# };
directory = {
style = "fg:#fbb6c4";
format = "[$path]($style)";
truncation_length = 3;
};
character = {
success_symbol = " 💕";
error_symbol = " ";
};
};
};
}

View file

@ -0,0 +1,27 @@
{
config,
pkgs,
inputs,
...
}:
{
xdg.enable = true;
home.stateVersion = "25.05";
home.username = "imnyang";
home.homeDirectory = "/Users/imnyang";
home.packages = import ./packages.nix { inherit pkgs inputs; };
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
};
imports = [
"${inputs.self}/modules/home/neovim.nix"
"${inputs.self}/modules/home/ghostty.nix"
"${inputs.self}/modules/home/zed.nix"
./config/git.nix
./config/shell.nix
];
}

View file

@ -0,0 +1,55 @@
{ pkgs, inputs, ... }:
let
dr = import ../../../../modules/nixos/features/packages/dr.nix { inherit pkgs; };
in
with pkgs;
[
# Language runtimes and package managers
nodejs
pnpm
yarn
bun
python3
rustup
go
# Editors and database tools
neovide
jetbrains.datagrip
jetbrains.idea
# CLI utilities
ripgrep
fd
bat
fzf
jq
eza
fastfetch
btop
# Source control
gh
lazygit
# Browsers
google-chrome
# Development applications
postman
scrcpy
# Virtualisation
utm
# Media
iina
# Gaming
prismlauncher
# Nix workflows
dr
inputs.muvel.packages.${pkgs.stdenv.hostPlatform.system}.muvel
]

View file

@ -0,0 +1,8 @@
[
# Apple and mobile development
"cocoapods"
"watchman"
# Media customisation
"spicetify-cli"
]

View file

@ -0,0 +1,46 @@
[
# Security and networking
"1password"
"cloudflare-warp"
"protonvpn"
"microsoft-edge@canary"
# Communication
"discord"
"discord@canary"
"proton-mail"
"signal"
"zoom"
# Productivity and design
"camo-studio"
"proton-drive"
"figma"
"notion"
# Development
"android-studio"
"burp-suite"
"docker-desktop"
"unity-hub"
"visual-studio-code@insiders"
"zed"
"codex"
"codex-app"
"codexbar"
# Media and audio
"finetune"
"spotify"
# Gaming and remote access
"parsec"
"steam"
# macOS utilities
"alt-tab"
"keka"
"raycast"
"thaw"
"mole-app"
]

View file

@ -0,0 +1,18 @@
{
...
}:
{
homebrew = {
enable = true;
enableFishIntegration = true;
onActivation = {
autoUpdate = true;
cleanup = "zap";
upgrade = true;
};
brews = import ./brews.nix;
casks = import ./casks.nix;
};
}

View file

@ -0,0 +1,34 @@
{
pkgs,
inputs,
...
}:
let
avatar = pkgs.runCommand "kanade-avatar.jpg" { nativeBuildInputs = [ pkgs.imagemagick ]; } ''
magick "${inputs.self}/assets/avatar.webp" -quality 92 "$out"
'';
in
{
system.activationScripts.postActivation.text = ''
avatarPath="/Library/User Pictures/imnyang.jpg"
importFile="$(/usr/bin/mktemp /tmp/imnyang-avatar.XXXXXX)"
/usr/bin/install -d -m 0755 "/Library/User Pictures"
/usr/bin/install -m 0644 "${avatar}" "$avatarPath"
# Replace both account-picture representations. JPEGPhoto is embedded in
# the directory record and is used by the login screen and System Settings.
/usr/bin/dscl . -delete /Users/imnyang JPEGPhoto >/dev/null 2>&1 || true
/usr/bin/dscl . -delete /Users/imnyang Picture >/dev/null 2>&1 || true
/usr/bin/dscl . -create /Users/imnyang Picture "$avatarPath"
/usr/bin/printf '%s\n%s:%s' \
'0x0A 0x5C 0x3A 0x2C dsRecTypeStandard:Users 2 dsAttrTypeStandard:RecordName externalbinary:dsAttrTypeStandard:JPEGPhoto' \
'imnyang' \
"$avatarPath" > "$importFile"
/usr/bin/dsimport "$importFile" /Local/Default M
/bin/rm -f "$importFile"
/usr/bin/dscacheutil -flushcache
'';
}

View file

@ -0,0 +1,10 @@
{
imports = [
./avatar.nix
./dock.nix
./keyboard.nix
./preferences.nix
./touch-id.nix
./wallpaper.nix
];
}

View file

@ -0,0 +1,36 @@
{ pkgs, ... }:
{
system.defaults.dock = {
autohide = false;
show-recents = true;
wvous-bl-corner = 1;
wvous-br-corner = 1;
wvous-tl-corner = 1;
wvous-tr-corner = 1;
persistent-apps = [
"/System/Applications/Apps.app"
"/Applications/Microsoft Edge Canary.app"
"/Applications/Discord.app"
"/Applications/KakaoTalk.app"
"/Applications/Signal.app"
"/Applications/Proton Mail.app"
# "/Applications/Proton Pass.app"
# "/System/Applications/Mail.app"
"/Applications/1Password.app"
"/Applications/Figma.app"
"/Applications/Notion.app"
# "/Applications/Notion Calendar.app"
"${pkgs.utm}/Applications/UTM.app"
"/Applications/Spotify.app"
"${pkgs.ghostty-bin}/Applications/Ghostty.app"
"/Applications/Visual Studio Code - Insiders.app"
"/Applications/Zed.app"
"/System/Applications/System Settings.app"
];
mru-spaces = false;
tilesize = 48;
orientation = "bottom";
};
}

View file

@ -0,0 +1,14 @@
{
system.keyboard.enableKeyMapping = true;
system.defaults.NSGlobalDomain = {
ApplePressAndHoldEnabled = false;
InitialKeyRepeat = 15;
KeyRepeat = 2;
NSAutomaticCapitalizationEnabled = false;
NSAutomaticDashSubstitutionEnabled = false;
NSAutomaticPeriodSubstitutionEnabled = false;
NSAutomaticQuoteSubstitutionEnabled = false;
NSAutomaticSpellingCorrectionEnabled = false;
};
}

View file

@ -0,0 +1,92 @@
{ pkgs, ... }:
{
# sudo_local is managed as a regular file by touch-id.nix because macOS 26
# rejects nix-darwin's symlink-based /etc/pam.d management.
security.pam.services.sudo_local.enable = false;
networking = {
hostName = "kanade";
computerName = "kanade";
localHostName = "kanade";
};
time.timeZone = "Asia/Seoul";
# Keep the terminal font declared in the Ghostty Home Manager module available
# to native macOS applications as well.
fonts.packages = [ pkgs.nerd-fonts.jetbrains-mono ];
system.defaults = {
NSGlobalDomain = {
AppleICUForce24HourTime = true;
AppleMeasurementUnits = "Centimeters";
AppleTemperatureUnit = "Celsius";
AppleInterfaceStyleSwitchesAutomatically = false;
AppleInterfaceStyle = null;
NSAutomaticCapitalizationEnabled = false;
NSAutomaticDashSubstitutionEnabled = false;
NSAutomaticPeriodSubstitutionEnabled = false;
NSAutomaticQuoteSubstitutionEnabled = false;
NSAutomaticSpellingCorrectionEnabled = false;
AppleShowAllExtensions = true;
AppleShowAllFiles = true;
NSNavPanelExpandedStateForSaveMode = true;
NSNavPanelExpandedStateForSaveMode2 = true;
"com.apple.sound.beep.feedback" = 0;
};
SoftwareUpdate = {
AutomaticallyInstallMacOSUpdates = false;
};
finder = {
AppleShowAllExtensions = true;
FXEnableExtensionChangeWarning = false;
FXDefaultSearchScope = "SCcf";
FXRemoveOldTrashItems = true;
ShowPathbar = true;
ShowStatusBar = true;
# _FXShowPosixPathInTitle = true;
};
menuExtraClock = {
ShowAMPM = false;
ShowDate = 1;
ShowSeconds = false;
Show24Hour = true;
};
trackpad = {
Clicking = true;
TrackpadRightClick = true;
TrackpadThreeFingerDrag = true;
};
loginwindow.GuestEnabled = false;
CustomUserPreferences = {
"com.apple.AdLib" = {
allowApplePersonalizedAdvertising = false;
};
"com.apple.controlcenter" = {
BatteryShowPercentage = true;
};
"com.apple.desktopservices" = {
DSDontWriteNetworkStores = true;
DSDontWriteUSBStores = true;
};
"com.apple.finder"._FXSortFoldersFirst = true;
"com.apple.screensaver" = {
askForPassword = 1;
askForPasswordDelay = 0;
};
};
};
system.activationScripts.postActivation.text = ''
/System/Library/PrivateFrameworks/SystemAdministration.framework/Resources/activateSettings -u
'';
}

View file

@ -0,0 +1,12 @@
{ pkgs, ... }:
let
sudoLocal = pkgs.writeText "sudo_local" ''
# Managed by nix-darwin: use Touch ID for sudo with password fallback.
auth sufficient pam_tid.so
'';
in
{
system.activationScripts.postActivation.text = ''
/usr/bin/install -m 0444 "${sudoLocal}" /etc/pam.d/sudo_local
'';
}

View file

@ -0,0 +1,42 @@
{
pkgs,
inputs,
...
}:
let
wallpaper = "${inputs.self}/assets/wallpaper/wallpaper1.jpg";
setWallpaperScript = pkgs.writeShellScriptBin "set-wallpaper-script" ''
set -eu
# System Events runs in the logged-in Aqua session and updates every Space.
# Retry because launch agents can start before the desktop is fully ready.
for attempt in {1..12}; do
if /usr/bin/osascript <<'APPLESCRIPT'
tell application "System Events"
tell every desktop
set picture to "${wallpaper}"
end tell
end tell
APPLESCRIPT
then
exit 0
fi
/bin/sleep 5
done
exit 1
'';
in
{
environment.systemPackages = [ setWallpaperScript ];
launchd.user.agents.set-wallpaper = {
command = "${setWallpaperScript}/bin/set-wallpaper-script";
serviceConfig = {
RunAtLoad = true;
ProcessType = "Interactive";
LimitLoadToSessionType = "Aqua";
};
};
}

View file

@ -0,0 +1,37 @@
{ ... }:
{
nixpkgs.config.allowUnfree = true;
nix.settings = {
sandbox = "relaxed";
experimental-features = [
"nix-command"
"flakes"
];
# Optimising during every build can race on Darwin. Run it separately instead.
auto-optimise-store = false;
trusted-users = [
"imnyang"
];
substituters = [
"https://cache.mizuki.guru"
"https://nix.mizuki.my/public"
];
trusted-public-keys = [
"cache.mizuki.guru-1:EbUC9b0ryD7BJKqfT8fl4GoS2ojLV+hI9fW1al5Whp0="
"public:SnHrtrxbCPcZujbJdgsKFeObTfRKQl5KhrI+LljtZUE="
];
};
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
interval = {
Weekday = 0;
Hour = 3;
Minute = 15;
};
options = "--delete-older-than 7d";
};
}

View file

@ -0,0 +1,13 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
# Recovery and bootstrap tools
curl
wget
vim
# Nix tooling
nixd
nil
];
}

View file

@ -0,0 +1,15 @@
{ pkgs, ... }:
{
system.primaryUser = "imnyang";
users.users.imnyang = {
name = "imnyang";
home = "/Users/imnyang";
shell = pkgs.fish;
};
environment.shells = [ pkgs.fish ];
programs.fish.enable = true;
programs.zsh.enable = true;
}

View file

@ -0,0 +1,64 @@
{ pkgs, inputs, ... }:
{
imports = [
./hardware-configuration.nix
"${inputs.self}/modules/nixos/base"
"${inputs.self}/modules/nixos/features/boot.nix"
"${inputs.self}/modules/nixos/features/fonts.nix"
"${inputs.self}/modules/nixos/features/packages.nix"
"${inputs.self}/modules/nixos/features/plasma.nix"
"${inputs.self}/modules/nixos/features/sound.nix"
"${inputs.self}/modules/nixos/features/catppuccin.nix"
"${inputs.self}/modules/nixos/features/ssh.nix"
"${inputs.self}/modules/nixos/features/steam.nix"
"${inputs.self}/modules/nixos/features/sunshine.nix"
];
networking = {
hostName = "mafuyu";
networkmanager.enable = true;
firewall.enable = false;
};
services.caddy = {
enable = true;
virtualHosts."http://broadcast.epc.mizuki.arpa".extraConfig = ''
@preflight method OPTIONS
header {
Access-Control-Allow-Origin *
Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Access-Control-Allow-Headers *
}
respond @preflight "" 204
reverse_proxy 127.0.0.1:6769
'';
virtualHosts."http://broadcast.epc.mizuki.arpa:8027".extraConfig = ''
@preflight method OPTIONS
header {
Access-Control-Allow-Origin *
Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Access-Control-Allow-Headers *
}
respond @preflight "" 204
reverse_proxy 127.0.0.1:1108
'';
};
services.displayManager = {
plasma-login-manager.enable = true;
autoLogin.user = "imnyang";
};
users.users.imnyang.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOHP3Z+AYrRh9f8TYyqChKfeyNm3lOe0F75AwRHTTaxD imnyang@mizuki"
];
system.stateVersion = "26.05";
}

View file

@ -0,0 +1,37 @@
{
inputs,
overlays,
}:
let
inherit (inputs)
nixpkgs
home-manager
catppuccin
plasma-manager
spicetify-nix
;
in
nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hardware-configuration.nix
./configuration.nix
catppuccin.nixosModules.catppuccin
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.sharedModules = [
plasma-manager.homeModules.plasma-manager
spicetify-nix.homeManagerModules.default
];
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.imnyang = import ./home;
}
];
specialArgs = {
inherit inputs;
inherit overlays;
};
}

View file

@ -0,0 +1,79 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"usb_storage"
"usbhid"
"uas"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
boot.kernelParams = [
# 가상 디스플레이(해상도) 1개 생성
"video=virtual:1920x1080@60"
];
fileSystems."/" = {
device = "/dev/disk/by-uuid/223889e0-caa4-4dc5-a7b3-e5260230896f";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/7233-6B3C";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
powerManagement.finegrained = false; # 이슈 있으면 비활하기
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
services.xserver.videoDrivers = [ "nvidia" ];
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
libva-vdpau-driver
libvdpau-va-gl
vulkan-loader
nvidia-vaapi-driver
vulkan-validation-layers
vulkan-extension-layer
];
extraPackages32 = with pkgs.pkgsi686Linux; [
libva-vdpau-driver
libvdpau-va-gl
];
};
}

View file

@ -0,0 +1,16 @@
{ inputs, ... }:
let
assets = "${inputs.self}/assets";
in
{
imports = [ "${inputs.self}/modules/home/plasma.nix" ];
services.kdeconnect.enable = true;
programs.plasma.workspace.cursor = {
theme = "pjsk-cursor-n25-mafuyu-ani";
};
programs.plasma.workspace.wallpaper = "${assets}/wallpaper/wallpaper3.png";
programs.plasma.kscreenlocker.appearance.wallpaper = "${assets}/wallpaper/wallpaper3.png";
}

View file

@ -0,0 +1,54 @@
{
programs.fish = {
enable = true;
shellAliases = {
".." = "cd ..";
"..." = "cd ../..";
ls = "eza --icons=always";
ll = "eza --icons=always -l";
la = "eza --icons=always -a";
lla = "eza --icons=always -la";
rebuild = "nr";
update = "nix flake update";
clean = "sudo nix-collect-garbage -d";
};
interactiveShellInit = ''
set -g fish_greeting ""
set -g fish_color_command blue
set -g fish_color_error red
set -g fish_color_param cyan
'';
};
programs.starship = {
enable = true;
settings = {
format = " $directory:$character";
add_newline = false;
# username = {
# style_user = "purple";
# style_root = "purple";
# format = "[$user]($style)";
# show_always = true;
# };
# hostname = {
# style = "green";
# format = "[$hostname]($style)";
# ssh_only = false;
# };
directory = {
style = "fg:#fbb6c4";
format = "[$path]($style)";
truncation_length = 3;
};
character = {
success_symbol = " 💕";
error_symbol = " ";
};
};
};
}

View file

@ -0,0 +1,44 @@
{
config,
pkgs,
inputs,
...
}:
{
xdg.enable = true;
home.stateVersion = "25.05";
home.username = "imnyang";
home.homeDirectory = "/home/imnyang";
home.packages = import ./packages.nix { inherit pkgs inputs; };
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
};
xdg.configFile."fontconfig/conf.d/10-hm-fonts.conf".force = true;
programs.git = {
enable = true;
settings = {
user = {
name = "imnyang";
email = "imnyang@pm.me";
};
commit.gpgsign = false;
init.defaultBranch = "main";
pull.rebase = false;
};
};
imports = [
"${inputs.self}/modules/home/firefox.nix"
"${inputs.self}/modules/home/neovim.nix"
"${inputs.self}/modules/home/ghostty.nix"
"${inputs.self}/modules/home/zed.nix"
"${inputs.self}/modules/home/discord/linux.nix"
./config/shell.nix
./config/plasma.nix
];
}

View file

@ -0,0 +1,7 @@
{ pkgs, inputs }:
with pkgs;
[
pjsk-cursor.n25.ani
codex
inputs.codex-app.packages.${stdenv.buildPlatform.system}.codex-desktop
]

View file

@ -0,0 +1,55 @@
{ pkgs, inputs, ... }:
{
imports = [
./hardware-configuration.nix
"${inputs.self}/modules/nixos/base"
"${inputs.self}/modules/nixos/features/boot.nix"
"${inputs.self}/modules/nixos/features/fonts.nix"
"${inputs.self}/modules/nixos/features/packages.nix"
"${inputs.self}/modules/nixos/features/plasma.nix"
"${inputs.self}/modules/nixos/features/sound.nix"
"${inputs.self}/modules/nixos/features/catppuccin.nix"
"${inputs.self}/modules/nixos/features/figma-agent.nix"
"${inputs.self}/modules/nixos/features/cockpit.nix"
"${inputs.self}/modules/nixos/features/bluetooth.nix"
"${inputs.self}/modules/nixos/features/graphics.nix"
"${inputs.self}/modules/nixos/features/ssh.nix"
"${inputs.self}/modules/nixos/features/virtualisation.nix"
"${inputs.self}/modules/nixos/features/steam.nix"
"${inputs.self}/modules/nixos/features/sunshine.nix"
];
networking = {
hostName = "mizuki";
networkmanager.enable = true;
firewall.enable = false;
interfaces = {
enp3s0 = {
wakeOnLan.enable = true;
};
};
};
services.caddy = {
enable = true;
virtualHosts."http://broadcast.epc.mizuki.arpa".extraConfig = ''
@preflight method OPTIONS
header {
Access-Control-Allow-Origin *
Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Access-Control-Allow-Headers *
}
respond @preflight "" 204
reverse_proxy 127.0.0.1:6769
'';
};
services.printing.enable = true;
services.flatpak.enable = true;
system.stateVersion = "26.05";
}

View file

@ -0,0 +1,41 @@
{
inputs,
overlays,
}:
let
inherit (inputs)
nixpkgs
home-manager
catppuccin
nix-flatpak
plasma-manager
spicetify-nix
vicinae
;
in
nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hardware-configuration.nix
./configuration.nix
catppuccin.nixosModules.catppuccin
nix-flatpak.nixosModules.nix-flatpak
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.sharedModules = [
plasma-manager.homeModules.plasma-manager
spicetify-nix.homeManagerModules.default
vicinae.homeManagerModules.default
];
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.imnyang = import ./home;
}
];
specialArgs = {
inherit inputs;
inherit overlays;
};
}

View file

@ -0,0 +1,91 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [
"xhci_pci"
"ahci"
"nvme"
"usbhid"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.kernelParams = [ "nvidia.NV_temporaryFilePath=/var/tmp" ];
boot.extraModulePackages = [ ];
boot.extraModprobeConfig = ''
options nvidia NVreg_PreserveVideoMemoryAllocations=1
'';
fileSystems."/" =
{ device = "/dev/mapper/luks-f103ab07-586f-4bfe-b8e9-cdee9d504a0a";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-f103ab07-586f-4bfe-b8e9-cdee9d504a0a".device = "/dev/disk/by-uuid/f103ab07-586f-4bfe-b8e9-cdee9d504a0a";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/C9F2-8CD3";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/data" = {
device = "/dev/disk/by-uuid/0fa840c5-07ad-46b5-a0e8-0ed958d1bb7a";
fsType = "ext4";
options = [
"defaults"
"nofail"
];
};
swapDevices = [
{
device = "/swapfile";
size = 32 * 1024;
}
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
powerManagement.finegrained = false; # 이슈 있으면 비활하기
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
services.xserver.videoDrivers = [ "nvidia" ];
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
libva-vdpau-driver
libvdpau-va-gl
vulkan-loader
nvidia-vaapi-driver
vulkan-validation-layers
vulkan-extension-layer
];
extraPackages32 = with pkgs.pkgsi686Linux; [
libva-vdpau-driver
libvdpau-va-gl
];
};
}

View file

@ -0,0 +1,16 @@
{ inputs, ... }:
let
assets = "${inputs.self}/assets";
in
{
imports = [ "${inputs.self}/modules/home/plasma.nix" ];
services.kdeconnect.enable = true;
programs.plasma.workspace.cursor = {
theme = "pjsk-cursor-n25-mizuki-ani";
};
programs.plasma.workspace.wallpaper = "${assets}/wallpaper/wallpaper1.jpg";
programs.plasma.kscreenlocker.appearance.wallpaper = "${assets}/wallpaper/wallpaper3.png";
}

View file

@ -0,0 +1,54 @@
{
programs.fish = {
enable = true;
shellAliases = {
".." = "cd ..";
"..." = "cd ../..";
ls = "eza --icons=always";
ll = "eza --icons=always -l";
la = "eza --icons=always -a";
lla = "eza --icons=always -la";
rebuild = "nr";
update = "nix flake update";
clean = "sudo nix-collect-garbage -d";
};
interactiveShellInit = ''
set -g fish_greeting ""
set -g fish_color_command blue
set -g fish_color_error red
set -g fish_color_param cyan
'';
};
programs.starship = {
enable = true;
settings = {
format = "🎀 $directory:$character";
add_newline = false;
# username = {
# style_user = "purple";
# style_root = "purple";
# format = "[$user]($style)";
# show_always = true;
# };
# hostname = {
# style = "green";
# format = "[$hostname]($style)";
# ssh_only = false;
# };
directory = {
style = "fg:#fbb6c4";
format = "[$path]($style)";
truncation_length = 3;
};
character = {
success_symbol = " 💕";
error_symbol = " ";
};
};
};
}

View file

@ -0,0 +1,61 @@
{
config,
pkgs,
inputs,
...
}:
{
xdg.enable = true;
# gtk.enable = true;
home.stateVersion = "25.05";
home.username = "imnyang";
home.homeDirectory = "/home/imnyang";
home.packages = import ./packages.nix { inherit pkgs inputs; };
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
};
programs.ssh = {
enable = true;
matchBlocks = {
"*" = {
forwardAgent = false;
identityAgent = "~/.1password/agent.sock";
setEnv = {
TERM = "xterm-256color";
};
extraOptions = {
ServerAliveInterval = "0";
ServerAliveCountMax = "3";
Compression = "no";
AddKeysToAgent = "no";
HashKnownHosts = "no";
UserKnownHostsFile = "~/.ssh/known_hosts";
ControlMaster = "no";
ControlPath = "~/.ssh/master-%r@%n:%p";
ControlPersist = "no";
};
};
};
};
xdg.configFile."fontconfig/conf.d/10-hm-fonts.conf".force = true;
imports = [
"${inputs.self}/modules/home/git.nix"
"${inputs.self}/modules/home/neovim.nix"
"${inputs.self}/modules/home/spicetify.nix"
"${inputs.self}/modules/home/ghostty.nix"
"${inputs.self}/modules/home/zed.nix"
"${inputs.self}/modules/home/vicinae.nix"
./config/shell.nix
./config/plasma.nix
"${inputs.self}/modules/home/discord/linux.nix"
"${inputs.self}/modules/home/obs-studio.nix"
"${inputs.self}/modules/home/vscode.nix"
"${inputs.self}/modules/home/ciscopackettracer.nix"
];
}

View file

@ -0,0 +1,16 @@
{ pkgs, inputs }:
with pkgs;
(import ../../../../modules/home/packages.nix { inherit pkgs inputs; })
++ [
# tail-tray
kdePackages.kcolorchooser
fastfetch
android-studio
lmstudio
# dotnet-runtime
dotnet-sdk
jetbrains.rider
# waterfox-bin
# inputs.waterfox.packages.${pkgs.system}.waterfox
]

View file

@ -0,0 +1,21 @@
{ pkgs, inputs, ... }:
{
imports = [
"${inputs.self}/modules/nixos/base"
"${inputs.self}/modules/nixos/features/ssh.nix"
];
wsl.enable = true;
wsl.defaultUser = "imnyang";
networking = {
hostName = "ribbon";
firewall.enable = false;
};
users.users.imnyang.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOHP3Z+AYrRh9f8TYyqChKfeyNm3lOe0F75AwRHTTaxD imnyang@mizuki"
];
system.stateVersion = "25.11";
}

View file

@ -0,0 +1,31 @@
{
inputs,
overlays,
}:
let
inherit (inputs)
nixpkgs
nixos-wsl
home-manager
;
in
nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
nixos-wsl.nixosModules.default
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.sharedModules = [];
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.users.imnyang = import ./home/home.nix;
}
];
specialArgs = {
inherit inputs;
inherit overlays;
};
}

View file

@ -0,0 +1,57 @@
{
programs.fish = {
enable = true;
shellAliases = {
# 디렉토리 네비게이션
".." = "cd ..";
"..." = "cd ../..";
# ls 별칭
ls = "eza --icons=always";
ll = "eza --icons=always -l";
la = "eza --icons=always -a";
lla = "eza --icons=always -la";
# NixOS 관련
rebuild = "nr";
update = "nix flake update";
clean = "sudo nix-collect-garbage -d";
};
interactiveShellInit = ''
set -g fish_greeting ""
set -g fish_color_command blue
set -g fish_color_error red
set -g fish_color_param cyan
'';
};
programs.starship = {
enable = true;
settings = {
format = "$username@$hostname:$directory$character";
add_newline = false;
username = {
style_user = "purple";
style_root = "purple";
format = "[$user]($style)";
show_always = true;
};
hostname = {
style = "green";
format = "[$hostname]($style)";
ssh_only = false;
};
directory = {
style = "blue";
format = "[$path]($style)";
truncation_length = 3;
};
character = {
success_symbol = " >";
error_symbol = " >";
};
};
};
}

View file

@ -0,0 +1,35 @@
{
config,
pkgs,
inputs,
...
}:
{
home.stateVersion = "25.11";
home.username = "imnyang";
home.homeDirectory = "/home/imnyang";
home.packages = import ./packages.nix { inherit pkgs inputs; };
home.sessionVariables = {
EDITOR = "nvim";
VISUAL = "nvim";
};
programs.git = {
enable = true;
settings = {
user = {
name = "imnyang";
email = "imnyang@pm.me";
};
commit.gpgsign = false;
init.defaultBranch = "main";
pull.rebase = false;
};
};
imports = [
"${inputs.self}/modules/home/neovim.nix"
./config/shell.nix
];
}

View file

@ -0,0 +1,10 @@
{ pkgs, inputs }:
let
nr = import "${inputs.self}/modules/nixos/features/packages/nr.nix" { inherit pkgs; };
nrr = import "${inputs.self}/modules/nixos/features/packages/nrr.nix" { inherit pkgs; };
in
with pkgs;
[
nr
nrr
]