This commit is contained in:
2026-02-17 02:43:59 +09:00
commit a0f0f7e726
17 changed files with 1348734 additions and 0 deletions

File diff suppressed because one or more lines are too long

1
README.md Normal file
View File

@@ -0,0 +1 @@
sudo nixos-rebuild switch --flake .#mango --impure

164
configuration.nix Normal file
View File

@@ -0,0 +1,164 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }:
let
nvidia_grid_version = "535.288.01";
nvidia_grid_sha256 = "06jbq7hmzynrysxwac34sm0700137k2lliw789q1lkxb7dvzxyg7";
in
{
imports =
[ # Include the results of the hardware scan.
/etc/nixos/hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_6_12;
boot.blacklistedKernelModules = [ "nouveau" ];
boot.supportedFilesystems = [ "nfs" ];
services.rpcbind.enable = true; # needed for NFS
systemd.mounts = [{
type = "nfs";
mountConfig = {
Options = "noatime";
};
what = "192.168.0.137:/mnt/user1/book";
where = "/book";
}];
systemd.automounts = [{
wantedBy = [ "multi-user.target" ];
automountConfig = {
TimeoutIdleSec = "600";
};
where = "/book";
}];
networking.hostName = "nixos"; # Define your hostname.
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Asia/Seoul";
# Select internationalisation properties.
i18n.defaultLocale = "ko_KR.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "ko_KR.UTF-8";
LC_IDENTIFICATION = "ko_KR.UTF-8";
LC_MEASUREMENT = "ko_KR.UTF-8";
LC_MONETARY = "ko_KR.UTF-8";
LC_NAME = "ko_KR.UTF-8";
LC_NUMERIC = "ko_KR.UTF-8";
LC_PAPER = "ko_KR.UTF-8";
LC_TELEPHONE = "ko_KR.UTF-8";
LC_TIME = "ko_KR.UTF-8";
};
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "";
};
#services.displayManager.sddm.enable = true;
#services.displayManager.sddm.wayland.enable = true;
hardware.graphics.enable = true; # Required for graphics acceleration
# 2. NVIDIA 드라이버 설정
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
open = false;
# GRID 드라이버 패키지 오버라이드
package = config.boot.kernelPackages.nvidiaPackages.stable.overrideAttrs (oldAttrs: {
version = nvidia_grid_version;
src = pkgs.fetchurl {
url = "file:///home/bangae1/mango/NVIDIA-Linux-x86_64-${nvidia_grid_version}-grid.run";
sha256 = nvidia_grid_sha256;
};
});
# GRID 기능을 위한 필수 설정
modesetting.enable = true;
powerManagement.enable = false;
};
boot.kernelParams = [ "nvidia.NVreg_EnableVideoMemorySelfRefresh=1" "nvidia.NVreg_OpenRm=0" ];
systemd.services.nvidia-gridd = {
description = "NVIDIA Grid Daemon";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "forking";
# 드라이버 패키지 경로에서 gridd 바이너리를 찾아 실행합니다.
ExecStart = "${config.hardware.nvidia.package}/bin/nvidia-gridd";
Restart = "on-failure";
};
};
# Define a user account. Don't forget to set a password with passwd.
users.users.bangae1 = {
isNormalUser = true;
description = "bangae1";
extraGroups = [ "networkmanager" "wheel" "input" "video" ];
packages = with pkgs; [];
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
code
git
unzip
fish
eza
nfs-utils
ydotool
grim
kime
wlr-randr
kitty
sunshine
];
fonts.packages = with pkgs; [
nerd-fonts.jetbrains-mono
];
environment.etc."nvidia/gridd.conf".text = ''
ServerAddress=192.168.0.216
ServerPort=443
FeatureType=1
'';
nix.settings.experimental-features = [ "nix-command" "flakes" ];
programs.firefox.enable = true;
programs.fish.enable = true;
programs.nano.nanorc = ''
set tabsize 2
set tabstospaces
'';
services.openssh.enable = true;
system.stateVersion = "25.11"; # Did you read the comment?
}

180
flake.lock generated Normal file
View File

@@ -0,0 +1,180 @@
{
"nodes": {
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1769996383,
"narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "57928607ea566b5db3ad13af0e57e921e6b12381",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1749398372,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1771188132,
"narHash": "sha256-qLXxN/tPrZtnekaLBQuVtxQfvqqs5cT5WbyH4zZaTGI=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ae8003d8b61d0d373e7ca3da1a48f9c870d15df9",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"mango": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
],
"scenefx": "scenefx"
},
"locked": {
"lastModified": 1771219016,
"narHash": "sha256-03NOJrkvEC/Pc6iXqouRDga6+oyIiC8LzaCZZ/WYktI=",
"owner": "DreamMaoMao",
"repo": "mango",
"rev": "15729db19389c98b754cdfd6d89cf4f2373f2a15",
"type": "github"
},
"original": {
"owner": "DreamMaoMao",
"repo": "mango",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1771008912,
"narHash": "sha256-gf2AmWVTs8lEq7z/3ZAsgnZDhWIckkb+ZnAo5RzSxJg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a82ccc39b39b621151d6732718e3e250109076fa",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1769909678,
"narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "72716169fe93074c333e8d0173151350670b824c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1748740939,
"narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "656a64127e9d791a334452c6b6606d17539476e2",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"noctalia": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1771260119,
"narHash": "sha256-UX66mkcKr62yJ6bTVzKl7Mzk8n8+FzJxAIFWp5NK1Pc=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "5fcca04138663917516310e382b0aac2479bc053",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"type": "github"
}
},
"root": {
"inputs": {
"flake-parts": "flake-parts",
"home-manager": "home-manager",
"mango": "mango",
"nixpkgs": "nixpkgs",
"noctalia": "noctalia"
}
},
"scenefx": {
"inputs": {
"nixpkgs": [
"mango",
"nixpkgs"
]
},
"locked": {
"lastModified": 1750785057,
"narHash": "sha256-tGX6j4W91rcb+glXJo43sjPI9zQvPotonknG1BdihR4=",
"owner": "wlrfx",
"repo": "scenefx",
"rev": "3a6cfb12e4ba97b43326357d14f7b3e40897adfc",
"type": "github"
},
"original": {
"owner": "wlrfx",
"repo": "scenefx",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

45
flake.nix Normal file
View File

@@ -0,0 +1,45 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-parts.url = "github:hercules-ci/flake-parts";
mango = {
url = "github:DreamMaoMao/mango";
inputs.nixpkgs.follows = "nixpkgs";
};
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, mango, ... }@inputs:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
nixosConfigurations = {
mango = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit system inputs; };
modules = [
./configuration.nix
mango.nixosModules.mango
{
programs.mango.enable = true;
}
./plugins/noctalia.nix
home-manager.nixosModules.home-manager {
home-manager.extraSpecialArgs = { inherit inputs; };
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.bangae1 = import ./hm/home.nix;
}
];
};
};
};
}

14
hm/home.nix Normal file
View File

@@ -0,0 +1,14 @@
{ config, pkgs, lib, inputs, ... }:
{
home.username = "bangae1";
home.homeDirectory = "/home/bangae1";
home.stateVersion = "25.11";
xdg.configFile."mango" = {
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/mango/hm/mango";
recursive = true;
force = true;
};
}

12
hm/mango/config.conf Normal file
View File

@@ -0,0 +1,12 @@
# This sources the noctalia theme
source = /home/bangae1/.config/mango/noctalia.conf
source = /home/bangae1/.config/mango/config/execs.conf
source = /home/bangae1/.config/mango/config/envs.conf
source = /home/bangae1/.config/mango/config/animations.conf
source = /home/bangae1/.config/mango/config/miscs.conf
source = /home/bangae1/.config/mango/config/binds.conf
source = /home/bangae1/.config/mango/config/monitors.conf
source = /home/bangae1/.config/mango/config/layouts.conf
source = /home/bangae1/.config/mango/config/rules.conf

View File

@@ -0,0 +1,49 @@
# Window effect
blur=0
blur_layer=0
blur_optimized=1
blur_params_num_passes = 2
blur_params_radius = 5
blur_params_noise = 0.02
blur_params_brightness = 0.9
blur_params_contrast = 0.9
blur_params_saturation = 1.2
shadows = 0
layer_shadows = 0
shadow_only_floating = 1
shadows_size = 10
shadows_blur = 15
shadows_position_x = 0
shadows_position_y = 0
border_radius=10
no_radius_when_single=0
focused_opacity=1.0
unfocused_opacity=0.9
# Animation Configuration(support type:zoom,slide)
# tag_animation_direction: 1-horizontal,0-vertical
animations=0
layer_animations=0
animation_type_open=slide
animation_type_close=slide
animation_fade_in=1
animation_fade_out=1
tag_animation_direction=0
zoom_initial_ratio=0.3
zoom_end_ratio=0.8
fadein_begin_opacity=0.5
fadeout_begin_opacity=0.8
animation_duration_move=500
animation_duration_open=400
animation_duration_tag=350
animation_duration_close=800
animation_duration_focus=0
animation_curve_open=0.46,1.0,0.29,1
animation_curve_move=0.46,1.0,0.29,1
animation_curve_tag=0.46,1.0,0.29,1
animation_curve_close=0.08,0.92,0,1
animation_curve_focus=0.46,1.0,0.29,1
animation_curve_opafadeout=0.5,0.5,0.5,0.5
animation_curve_opafadein=0.46,1.0,0.29,1

115
hm/mango/config/binds.conf Normal file
View File

@@ -0,0 +1,115 @@
# Key Bindings
# key name refer to `xev` or `wev` command output,
# mod keys name: super,ctrl,alt,shift,none
# reload config
bind=SUPER,r,reload_config
# menu and terminal
bind=Alt,d,spawn, qs -c noctalia-shell ipc call launcher toggle
bind=Alt,Return,spawn,kitty
bind=Alt,e,spawn, kitty -e yazi
# exit
bind=ALT,q,killclient,
# switch window focus
bind=ALT,Left,focusdir,left
bind=ALT,Right,focusdir,right
bind=ALT,Up,focusdir,up
bind=ALT,Down,focusdir,down
# swap window
bind=Alt+SHIFT,Up,exchange_client,up
bind=Alt+SHIFT,Down,exchange_client,down
bind=Alt+SHIFT,Left,exchange_client,left
bind=Alt+SHIFT,Right,exchange_client,right
# switch window status
bind=ALT,o,toggleoverview,
bind=SUPER,f9,togglefloating
bind=SUPER,f9,resizewin, 1200, 800
bind=super,f9,centerwin
bind=ALT,f10,toggleglobal,
bind=Alt,f11,minimized,
bind=Alt+SHIFT,f11,restore_minimized
bind=ALT,f,togglemaximizescreen,
bind=ALT+SHIFT,f,togglefullscreen,
bind=ALT+z,toggle_scratchpad
# scroller layout
#bind=ALT,e,set_proportion,1.0
#bind=ALT,x,switch_proportion_preset,
# switch layout
bind=SUPER,n,switch_layout
# tag switch
bind=Alt,code:112,viewtoleft,0 #pageup
#bind=CTRL,Left,viewtoleft_have_client,0
bind=Alt,code:117,viewtoright,0 #pagedown
#bind=CTRL,Right,viewtoright_have_client,0
#bind=CTRL+SUPER,Left,tagtoleft,0
#bind=CTRL+SUPER,Right,tagtoright,0
bind=Alt,1,view,1,0
bind=Alt,2,view,2,0
bind=Alt,3,view,3,0
bind=Alt,4,view,4,0
bind=Alt,5,view,5,0
bind=Alt,6,view,6,0
bind=Alt,7,view,7,0
bind=Alt,8,view,8,0
bind=Alt,9,view,9,0
# tag: move client to the tag and focus it
# tagsilent: move client to the tag and not focus it
# bind=Alt,1,tagsilent,1
bind=Alt+Shift,1,tag,1,0
bind=Alt+Shift,2,tag,2,0
bind=Alt+Shift,3,tag,3,0
bind=Alt+Shift,4,tag,4,0
bind=Alt+Shift,5,tag,5,0
bind=Alt+Shift,6,tag,6,0
bind=Alt+Shift,7,tag,7,0
bind=Alt+Shift,8,tag,8,0
bind=Alt+Shift,9,tag,9,0
# monitor switch
bind=alt+shift,Left,focusmon,left
bind=alt+shift,Right,focusmon,right
#bind=SUPER+Alt,Left,tagmon,left
#bind=SUPER+Alt,Right,tagmon,right
#screenshot
bind=SUPER+shift,s,spawn_shell,grim -g "$(slurp)" - | wl-copy
# Mouse Button Bindings
# NONE mode key only work in ov mode
mousebind=Alt,btn_left,moveresize,curmove
mousebind=NONE,btn_middle,togglemaximizescreen,0
mousebind=Alt,btn_right,moveresize,curresize
mousebind=NONE,btn_left,toggleoverview,1
mousebind=NONE,btn_right,killclient,0
# Axis Bindings
axisbind=Alt,UP,focusdir,left
axisbind=Alt,DOWN,focusdir,right
axisbind=Alt+Shift,UP,viewtoleft,0
axisbind=Alt+Shift,DOWN,viewtoright,0
# 3-finger: Window focus
gesturebind=none,left,3,focusdir,left
gesturebind=none,right,3,focusdir,right
#gesturebind=none,up,3,focusdir,up
#gesturebind=none,down,3,focusdir,down
# 4-finger: Workspace navigation
gesturebind=none,up,3,viewtoleft,0
gesturebind=none,down,3,viewtoright,0
gesturebind=none,up,4,toggleoverview
gesturebind=none,down,4,toggleoverview

View File

@@ -0,0 +1,7 @@
#environment
env=GTK_THEME,Adwaita:light
env=XCURSOR_SIZE,24
env= QT_IM_MODULE ,kime
env=GTK_IM_MODULE ,kime
env= XMODIFIERS ,@im=kime
env=TERMINAL,kitty

View File

@@ -0,0 +1,3 @@
# Auto start
exec-once = noctalia-shell
exec = kime

View File

@@ -0,0 +1,26 @@
# Scroller Layout Setting
scroller_structs=20
scroller_default_proportion=0.8
scroller_focus_center=1
scroller_prefer_center=0
edge_scroller_pointer_focus=1
scroller_default_proportion_single=1.0
scroller_proportion_preset=0.5,0.8,1.0
# Master-Stack Layout Setting
new_is_master=1
default_mfact=0.55
default_nmaster=1
smartgaps=0
# layout support:
# tile,scroller,grid,deck,monocle,center_tile,vertical_tile,vertical_scroller
tagrule=id:1,layout_name:scroller
tagrule=id:2,layout_name:scroller
tagrule=id:3,layout_name:scroller
tagrule=id:4,layout_name:scroller
tagrule=id:5,layout_name:scroller
tagrule=id:6,layout_name:scroller
tagrule=id:7,layout_name:scroller
tagrule=id:8,layout_name:scroller
tagrule=id:9,layout_name:scroller

View File

@@ -0,0 +1,53 @@
# Overview Setting
hotarea_size=10
enable_hotarea=1
ov_tab_mode=0
overviewgappi=5
overviewgappo=30
# Misc
no_border_when_single=0
axis_bind_apply_timeout=100
focus_on_activate=1
idleinhibit_ignore_visible=0
sloppyfocus=0
warpcursor=1
focus_cross_monitor=0
focus_cross_tag=0
enable_floating_snap=0
snap_distance=30
cursor_size=24
cursor_theme=Bibata-Modern-Ice
drag_tile_to_tile=1
# keyboard
repeat_rate=25
repeat_delay=600
numlockon=0
xkb_rules_layout=us
# Trackpad
# need relogin to make it apply
disable_trackpad=0
tap_to_click=1
tap_and_drag=1
drag_lock=1
trackpad_natural_scrolling=0
disable_while_typing=1
left_handed=0
middle_button_emulation=0
swipe_min_threshold=1
# mouse
# need relogin to make it apply
mouse_natural_scrolling=0
# Appearance
gappih=5
gappiv=5
gappoh=10
gappov=10
scratchpad_width_ratio=0.8
scratchpad_height_ratio=0.9
borderpx=2

View File

@@ -0,0 +1,3 @@
# Monitor
monitorrule=name:Virtual-1,width:1920,height:1080,refresh:60,x:0,y:0,scale:1,rr:0,vrr:0
allow_tearing=1

View File

@@ -0,0 +1,3 @@
# layer rule
layerrule=animation_type_open:zoom,layer_name:rofi
layerrule=animation_type_close:zoom,layer_name:rofi

12
hm/mango/noctalia.conf Normal file
View File

@@ -0,0 +1,12 @@
# Noctalia Theme for Mango
# Generated automatically by Noctalia Shell
shadowscolor = 0xc4c6d4ff
rootcolor = 0xdfe1ecff
bordercolor = 0x777daeff
focuscolor = 0x2233c3ff
maximizescreencolor = 0x5829a3ff
urgentcolor = 0xfd4663ff
scratchpadcolor = 0x7d2d86ff
globalcolor = 0xb2b7e6ff
overlaycolor = 0xb9a6d9ff

8
plugins/noctalia.nix Normal file
View File

@@ -0,0 +1,8 @@
{ pkgs, inputs, ... }:
{
# install package
environment.systemPackages = with pkgs; [
inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default
# ... maybe other stuff
];
}