Compare commits

...

13 commits

15 changed files with 409 additions and 68 deletions

View file

@ -16,6 +16,23 @@
"type": "github" "type": "github"
} }
}, },
"brew-src": {
"flake": false,
"locked": {
"lastModified": 1718075954,
"narHash": "sha256-4TeUhv5VLEufP+Z/NkKnUk4NUaf59cMsj6NvsVbE+8w=",
"owner": "Homebrew",
"repo": "brew",
"rev": "3f08c75e7b950d4340dab462f3e7f77e8093fa2b",
"type": "github"
},
"original": {
"owner": "Homebrew",
"ref": "4.3.5",
"repo": "brew",
"type": "github"
}
},
"catppuccin": { "catppuccin": {
"locked": { "locked": {
"lastModified": 1721784420, "lastModified": 1721784420,
@ -125,6 +142,24 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_3": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flakey-profile": { "flakey-profile": {
"locked": { "locked": {
"lastModified": 1712898590, "lastModified": 1712898590,
@ -182,6 +217,38 @@
"type": "github" "type": "github"
} }
}, },
"homebrew-cask": {
"flake": false,
"locked": {
"lastModified": 1722851290,
"narHash": "sha256-AKG4PyxskEEsbkutZUEMbeToOaX9cPusp61mkOgOwX4=",
"owner": "homebrew",
"repo": "homebrew-cask",
"rev": "812e3ae0f3c750120b131d8b80ae13c8ae3d7f4e",
"type": "github"
},
"original": {
"owner": "homebrew",
"repo": "homebrew-cask",
"type": "github"
}
},
"homebrew-core": {
"flake": false,
"locked": {
"lastModified": 1722848547,
"narHash": "sha256-QtfYus4K58sqtXiYXgd+WL67geNuD7bFriXHCwe6H2g=",
"owner": "homebrew",
"repo": "homebrew-core",
"rev": "5024945b7225d78c56b0482c503f8a20371d5eff",
"type": "github"
},
"original": {
"owner": "homebrew",
"repo": "homebrew-core",
"type": "github"
}
},
"lanzaboote": { "lanzaboote": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
@ -244,22 +311,78 @@
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz" "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz"
} }
}, },
"nixpkgs": { "nix-darwin": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1722421184, "lastModified": 1722609272,
"narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=", "narHash": "sha256-Kkb+ULEHVmk07AX+OhwyofFxBDpw+2WvsXguUS2m6e4=",
"owner": "nixos", "owner": "LnL7",
"repo": "nixpkgs", "repo": "nix-darwin",
"rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58", "rev": "f7142b8024d6b70c66fd646e1d099d3aa5bfec49",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "LnL7",
"ref": "nixos-unstable", "repo": "nix-darwin",
"repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nix-darwin_2": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1716329735,
"narHash": "sha256-ap51w+VqG21vuzyQ04WrhI2YbWHd3UGz0e7dc/QQmoA=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "eac4f25028c1975a939c8f8fba95c12f8a25e01c",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"nix-homebrew": {
"inputs": {
"brew-src": "brew-src",
"flake-utils": "flake-utils_3",
"nix-darwin": "nix-darwin_2",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1719720211,
"narHash": "sha256-FNK5ZxmNC+V/wOuioc5HqkUy0ld4eW3NqcsZHLYg9HI=",
"owner": "zhaofengli-wip",
"repo": "nix-homebrew",
"rev": "0afc51fd86693c73e4b60be8ed8c782c4c09b4cc",
"type": "github"
},
"original": {
"owner": "zhaofengli-wip",
"repo": "nix-homebrew",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1687274257,
"narHash": "sha256-TutzPriQcZ8FghDhEolnHcYU2oHIG5XWF+/SUBNnAOE=",
"path": "/nix/store/22qgs3skscd9bmrxv9xv4q5d4wwm5ppx-source",
"rev": "2c9ecd1f0400076a4d6b2193ad468ff0a7e7fdc5",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1710695816, "lastModified": 1710695816,
@ -276,6 +399,38 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1716330097,
"narHash": "sha256-8BO3B7e3BiyIDsaKA0tY8O88rClYRTjvAp66y+VBUeU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5710852ba686cc1fd0d3b8e22b3117d43ba374c2",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1722421184,
"narHash": "sha256-/DJBI6trCeVnasdjUo9pbnodCLZcFqnVZiLUfqLH4jA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "9f918d616c5321ad374ae6cb5ea89c9e04bf3e58",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks-nix": { "pre-commit-hooks-nix": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": [
@ -308,9 +463,13 @@
"bleedingpkgs": "bleedingpkgs", "bleedingpkgs": "bleedingpkgs",
"catppuccin": "catppuccin", "catppuccin": "catppuccin",
"home-manager": "home-manager", "home-manager": "home-manager",
"homebrew-cask": "homebrew-cask",
"homebrew-core": "homebrew-core",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"lix-module": "lix-module", "lix-module": "lix-module",
"nixpkgs": "nixpkgs", "nix-darwin": "nix-darwin",
"nix-homebrew": "nix-homebrew",
"nixpkgs": "nixpkgs_3",
"stablepkgs": "stablepkgs" "stablepkgs": "stablepkgs"
} }
}, },
@ -384,6 +543,21 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -9,6 +9,17 @@
}; };
stablepkgs.url = "github:nixos/nixpkgs/nixos-24.05"; stablepkgs.url = "github:nixos/nixpkgs/nixos-24.05";
bleedingpkgs.url = "github:nixos/nixpkgs/master"; bleedingpkgs.url = "github:nixos/nixpkgs/master";
nix-darwin.url = "github:LnL7/nix-darwin";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
nix-homebrew.url = "github:zhaofengli-wip/nix-homebrew";
homebrew-core = {
url = "github:homebrew/homebrew-core";
flake = false;
};
homebrew-cask = {
url = "github:homebrew/homebrew-cask";
flake = false;
};
catppuccin.url = "github:catppuccin/nix"; catppuccin.url = "github:catppuccin/nix";
lanzaboote = { lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.1"; url = "github:nix-community/lanzaboote/v0.4.1";
@ -24,7 +35,7 @@
}; };
outputs = { self, nixpkgs, home-manager, catppuccin, lanzaboote, stablepkgs outputs = { self, nixpkgs, home-manager, catppuccin, lanzaboote, stablepkgs
, bleedingpkgs, lix-module, ... }@inputs: { , bleedingpkgs, lix-module, nix-darwin, nix-homebrew, ... }@inputs: rec {
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt; formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt;
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; }; specialArgs = { inherit inputs; };
@ -37,6 +48,7 @@
./modules/nixos/nvidia.nix ./modules/nixos/nvidia.nix
./modules/nixos/networking.nix ./modules/nixos/networking.nix
./modules/common/fonts.nix ./modules/common/fonts.nix
./machines/nixos/hardware-configuration.nix
catppuccin.nixosModules.catppuccin catppuccin.nixosModules.catppuccin
@ -51,15 +63,41 @@
home-manager.backupFileExtension = "backup"; home-manager.backupFileExtension = "backup";
home-manager.users.youwen = { home-manager.users.youwen = {
imports = [ imports = [
./home.nix ./modules/home-manager/linux/linux-home.nix
./modules/home-manager/linux/desktop.nix ./modules/home-manager/linux/desktop.nix
./modules/home-manager/linux/programs.nix ./modules/home-manager/linux/programs.nix
./modules/home-manager/common/core.nix ./modules/home-manager/common/core.nix
./modules/home-manager/linux/catppuccin.nix
inputs.catppuccin.homeManagerModules.catppuccin inputs.catppuccin.homeManagerModules.catppuccin
]; ];
}; };
} }
]; ];
}; };
formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt;
# Build darwin flake using:
# $ darwin-rebuild build --flake .#Youwens-MacBook-Pro
darwinConfigurations."Youwens-MacBook-Pro" = nix-darwin.lib.darwinSystem {
specialArgs = { inherit inputs; };
modules = [
./modules/darwin/darwin-configuration.nix
home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.youwen.imports = [
./modules/home-manager/darwin/darwin-home.nix
./modules/home-manager/common/core.nix
];
home-manager.backupFileExtension = "backup";
# Optionally, use home-manager.extraSpecialArgs to pass
# arguments to home.nix
}
nix-homebrew.darwinModules.nix-homebrew
./modules/darwin/homebrew.nix
./modules/darwin/yabai.nix
];
};
}; };
} }

View file

@ -1,5 +1,4 @@
{ pkgs, ... }: { pkgs, ... }: {
{
fonts = { fonts = {
enableDefaultPackages = true; enableDefaultPackages = true;
fontconfig = { fontconfig = {

View file

@ -1,4 +1,7 @@
{ config, pkgs, ... }: { { inputs, config, pkgs, ... }: {
# Expose the package set, including overlays, for convenience.
# darwinPackages = inputs.self.darwinConfigurations."Youwens-MacBook-Pro".pkgs;
# List packages installed in system profile. To search by name, run: # List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget # $ nix-env -qaP | grep wget
environment.systemPackages = with pkgs; [ ]; environment.systemPackages = with pkgs; [ ];
@ -36,4 +39,14 @@
}; };
security.pam.enableSudoTouchIdAuth = true; security.pam.enableSudoTouchIdAuth = true;
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
(nerdfonts.override { fonts = [ "CascadiaCode" ]; })
(google-fonts.override { fonts = [ "Lora" ]; })
];
};
} }

View file

@ -0,0 +1,14 @@
{ inputs, ... }: {
nix-homebrew = {
enable = true;
enableRosetta = true;
user = "youwen";
taps = {
"homebrew/homebrew-core" = inputs.homebrew-core;
"homebrew/homebrew-cask" = inputs.homebrew-cask;
};
mutableTaps = false;
};
}

30
modules/darwin/yabai.nix Normal file
View file

@ -0,0 +1,30 @@
{ config, pkgs, ... }: {
services.yabai = {
enable = true;
enableScriptingAddition = true;
config = {
focus_follows_mouse = "autoraise";
mouse_follows_focus = "on";
window_placement = "second_child";
window_opacity = "off";
top_padding = 12;
bottom_padding = 12;
left_padding = 12;
right_padding = 12;
window_gap = 10;
split_ratio = 0.5;
split_type = "auto";
layout = "bsp";
mouse_modifier = "fn";
mouse_action1 = "move";
mouse_action2 = "resize";
mouse_drop_action = "swap";
};
};
services.skhd = { enable = true; };
services.jankyborders = {
enable = true;
hidpi = true;
};
}

View file

@ -1,7 +1,6 @@
{ pkgs, ... }: { pkgs, ... }: {
{ programs.bash.enable = pkgs.lib.mkDefault true;
programs.bash.enable = true; programs.nushell = pkgs.lib.mkDefault {
programs.nushell = {
enable = true; enable = true;
configFile.text = '' configFile.text = ''
$env.config = { $env.config = {
@ -11,12 +10,9 @@
''; '';
}; };
programs.fzf = { programs.fzf = pkgs.lib.mkDefault { enable = true; };
enable = true;
catppuccin.enable = true;
};
programs.git = { programs.git = pkgs.lib.mkDefault {
enable = true; enable = true;
userName = "Youwen Wu"; userName = "Youwen Wu";
userEmail = "youwenw@gmail.com"; userEmail = "youwenw@gmail.com";
@ -28,10 +24,8 @@
}; };
}; };
programs.lazygit = { programs.lazygit = pkgs.lib.mkDefault {
enable = true; enable = true;
catppuccin.enable = true;
catppuccin.flavor = "macchiato";
settings = { settings = {
git.paging = { git.paging = {
colorArg = "always"; colorArg = "always";
@ -40,32 +34,28 @@
}; };
}; };
programs.bat.enable = true; programs.bat.enable = pkgs.lib.mkDefault true;
programs.bat.catppuccin = {
enable = true;
flavor = "macchiato";
};
programs.ripgrep.enable = true; programs.ripgrep.enable = pkgs.lib.mkDefault true;
programs.readline = { programs.readline = {
enable = true; enable = true;
extraConfig = "set editing-mode vi"; extraConfig = "set editing-mode vi";
}; };
programs.zoxide = { programs.zoxide = pkgs.lib.mkDefault {
enable = true; enable = true;
# enableZshIntegration = true; # enableZshIntegration = true;
enableFishIntegration = true; enableFishIntegration = true;
enableNushellIntegration = true; enableNushellIntegration = true;
}; };
programs.gh = { programs.gh = pkgs.lib.mkDefault {
enable = true; enable = true;
extensions = [ pkgs.github-copilot-cli ]; extensions = [ pkgs.github-copilot-cli ];
}; };
programs.oh-my-posh = { programs.oh-my-posh = pkgs.lib.mkDefault {
enable = true; enable = true;
# enableZshIntegration = true; # enableZshIntegration = true;
enableFishIntegration = true; enableFishIntegration = true;
@ -75,8 +65,6 @@
programs.fish = pkgs.lib.mkDefault { programs.fish = pkgs.lib.mkDefault {
enable = true; enable = true;
catppuccin.enable = true;
catppuccin.flavor = "mocha";
shellAliases = { shellAliases = {
rebuild = "sudo nixos-rebuild switch"; rebuild = "sudo nixos-rebuild switch";
ls = "eza -l --icons=auto"; ls = "eza -l --icons=auto";
@ -136,10 +124,9 @@
]; ];
}; };
programs.fd.enable = pkgs.lib.mkDefault true;
programs.fd.enable = true; programs.btop = pkgs.lib.mkDefault {
programs.btop = {
enable = true; enable = true;
settings = { settings = {
color_theme = "tokyo-night"; color_theme = "tokyo-night";
@ -148,13 +135,13 @@
}; };
}; };
programs.eza = { programs.eza = pkgs.lib.mkDefault {
enable = true; enable = true;
enableFishIntegration = true; enableFishIntegration = true;
enableBashIntegration = true; enableBashIntegration = true;
}; };
programs.neovim = { programs.neovim = pkgs.lib.mkDefault {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
viAlias = true; viAlias = true;

View file

@ -0,0 +1,70 @@
{ inputs, config, pkgs, ... }:
{
home.username = "youwen";
home.homeDirectory = "/Users/youwen";
# link the configuration file in current directory to the specified location in home directory
# home.file.".config/i3/wallpaper.jpg".source = ./wallpaper.jpg;
# link all files in `./scripts` to `~/.config/i3/scripts`
# home.file.".config/i3/scripts" = {
# source = ./scripts;
# recursive = true; # link recursively
# executable = true; # make all files executable
# };
# encode the file content in nix configuration file directly
# home.file.".xxx".text = ''
# xxx
# '';
home.file.".config/neofetch/config.conf".source =
../../../config/neofetch.conf;
# Packages that should be installed to the user profile.
home.packages = with pkgs; [
neofetch
# archives
zip
xz
unzip
p7zip
# utils
nurl # helps fetch git data for nixpkgs
# nix related
#
# it provides the command `nom` works just like `nix`
# with more details log output
nix-output-monitor
# dev tools
nodePackages_latest.pnpm
rustfmt
rust-analyzer
];
programs.git.extraConfig.commit.gpgsign = "false";
programs.oh-my-posh.enableZshIntegration = true;
programs.bash.enable = true;
programs.zsh.enable = true;
# This value determines the home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new home Manager release introduces backwards
# incompatible changes.
home.stateVersion = "24.05";
#
# You can update home Manager without changing this value. See
# the home Manager release notes for a list of state version
# changes in each release.
# Let home Manager install and manage itself.
programs.home-manager.enable = true;
}

View file

@ -0,0 +1,18 @@
{
programs.fzf.catppuccin = {
enable = true;
flavor = "macchiato";
};
programs.lazygit.catppuccin = {
enable = true;
flavor = "macchiato";
};
programs.bat.catppuccin = {
enable = true;
flavor = "macchiato";
};
programs.fish.catppuccin = {
enable = true;
flavor = "mocha";
};
}

View file

@ -1,5 +1,4 @@
{ pkgs, ...}: { pkgs, ... }: {
{
wayland.windowManager.hyprland = import ./hyprland-conf.nix; wayland.windowManager.hyprland = import ./hyprland-conf.nix;
# Audio effects and EQ tool # Audio effects and EQ tool

View file

@ -19,9 +19,10 @@
# xxx # xxx
# ''; # '';
home.file.".config/neofetch/config.conf".source = ./config/neofetch.conf; home.file.".config/neofetch/config.conf".source =
../../../config/neofetch.conf;
home.file.".wallpapers" = { home.file.".wallpapers" = {
source = ./wallpapers; source = ../../../wallpapers;
recursive = true; recursive = true;
}; };

View file

@ -5,9 +5,9 @@
{ config, inputs, pkgs, ... }: { config, inputs, pkgs, ... }:
{ {
imports = [ # Include the results of the hardware scan. # imports = [ # Include the results of the hardware scan.
./hardware-configuration.nix # ./hardware-configuration.nix
]; # ];
# Bootloader. # Bootloader.
boot.loader = { boot.loader = {
@ -80,7 +80,6 @@
# Enable CUPS to print documents. # Enable CUPS to print documents.
services.printing.enable = true; services.printing.enable = true;
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true; # services.xserver.libinput.enable = true;

View file

@ -1,5 +1,4 @@
{ config, ... }: { config, ... }: {
{
hardware.nvidia = { hardware.nvidia = {
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = true; powerManagement.enable = true;

View file

@ -1,4 +1,4 @@
({ pkgs, lib, ... }: { ({ pkgs, lib, ... }: {
environment.systemPackages = [ environment.systemPackages = [
# For debugging and troubleshooting Secure Boot. # For debugging and troubleshooting Secure Boot.
pkgs.sbctl pkgs.sbctl
@ -14,4 +14,4 @@
enable = true; enable = true;
pkiBundle = "/etc/secureboot"; pkiBundle = "/etc/secureboot";
}; };
}) })