50 Commits

Author SHA1 Message Date
kenji cbd2575515 git 2025-07-07 14:22:27 -05:00
lsoriano-mcm 1e73f9ce06 test 2025-07-04 22:37:37 -05:00
kenji c08bc7a576 test 2025-07-02 21:09:17 -05:00
kenji 27cc1641f2 added gaming module 2025-07-02 19:28:47 -05:00
kenji e1de9403e4 test 2025-07-02 08:11:25 -05:00
kenji d1ed8bc004 added 2025-07-02 08:03:25 -05:00
kenji 11da625ace py 2025-07-02 08:02:22 -05:00
kenji 357b9a4f04 test 2025-07-01 09:31:36 -05:00
kenji 2d69f55eba n 2025-07-01 09:22:28 -05:00
kenji c7787f3d27 added quickshell 2025-07-01 08:57:33 -05:00
kenji b37edeed36 major changes 2025-07-01 08:55:17 -05:00
kenji 945ed455c9 added security.nix 2025-06-30 15:45:32 -05:00
kenji 8f4de3964f added amd 2025-06-30 15:42:14 -05:00
kenji d7489f811a graphics added 2025-06-30 15:19:13 -05:00
kenji ed24c8eaea added mangohud 2025-06-30 14:37:42 -05:00
kenji d2baeeba6d added gaming scopes 2025-06-30 14:20:06 -05:00
kenji 6cdfd4c169 fixed gaming 2025-06-30 13:43:35 -05:00
kenji 30a55ac796 fixed browser 2025-06-30 13:35:51 -05:00
biscuit 277e7a1191 test 2025-06-30 13:31:00 -05:00
kenji 59a18fbe85 fixed formatting 2025-06-30 13:26:24 -05:00
kenji 31d4628955 test 2025-06-30 13:20:46 -05:00
biscuit 39162c5ead added config.toml for matugen 2025-06-30 13:15:36 -05:00
biscuit 2cee6724c8 fix minor stuff 2025-06-30 13:14:35 -05:00
biscuit 080f4ec678 added BOOT 2025-06-30 13:08:05 -05:00
biscuit 4271d20f44 major DESKTOP changes 2025-06-30 13:05:11 -05:00
biscuit 71c6d75ff7 users 2025-06-30 12:55:18 -05:00
biscuit 571645a2e6 test 2025-06-30 12:54:23 -05:00
biscuit f52a8923fd test 2025-06-30 12:51:52 -05:00
lsoriano-mcm 1fdd8f51fe changed initialHashedPassword 2025-06-28 21:21:06 -05:00
lsoriano-mcm 8c4c69b5dd changed initialHashedPassword 2025-06-28 21:20:28 -05:00
lsoriano-mcm 79a22e0041 renamed console.nix to terminal.nix 2025-06-28 21:17:45 -05:00
lsoriano-mcm fba74facdc test 2025-06-28 21:16:53 -05:00
lsoriano-mcm bdab858be2 nixos: system revamp 2025-06-28 21:15:22 -05:00
lsoriano-mcm 37e982c983 added SOPS 2025-06-28 21:00:01 -05:00
lsoriano-mcm 6fc18f11a5 added authentication for darwin system 2025-06-28 19:10:41 -05:00
lsoriano-mcm d9128fcf06 cleaned up v1 2025-06-28 17:56:08 -05:00
lsoriano-mcm b7d0583aaf changed initialHasedPasswd 2025-06-28 17:45:45 -05:00
lsoriano-mcm 2d5f115468 flakes updated 2025-06-28 17:40:14 -05:00
lsoriano-mcm 306ee40129 Revert "FIX: finally fixed flake.lock"
This reverts commit 1e19f865de.
2025-06-28 17:31:47 -05:00
lsoriano-mcm f7b315be25 Revert "udp"
This reverts commit 3ebe0c9fca.
2025-06-28 17:30:23 -05:00
lsoriano-mcm d00c9836d6 test2 2025-06-28 17:28:50 -05:00
lsoriano-mcm ea86b6f7e5 test 2025-06-28 17:27:08 -05:00
lsoriano-mcm 1e19f865de FIX: finally fixed flake.lock 2025-06-28 17:14:07 -05:00
lsoriano-mcm 3ebe0c9fca udp 2025-06-23 17:55:39 -05:00
lsoriano-mcm f214789d22 upd 2025-06-23 17:00:36 -05:00
lsoriano-mcm fe79d7a2c4 upd 2025-06-23 16:54:51 -05:00
lsoriano-mcm cc7aa6df6a upd 2025-06-23 16:46:05 -05:00
lsoriano-mcm e8e7b3dd4f upd 2025-06-23 16:27:29 -05:00
lsoriano-mcm 1d5dd8ac1f initial 2025-06-23 16:17:41 -05:00
lsoriano-mcm b631cb20a4 initial 2025-06-23 14:32:58 -05:00
97 changed files with 2308 additions and 779 deletions
+1
View File
@@ -0,0 +1 @@
hosts/desktop/hardware-configuration.nix
+58
View File
@@ -0,0 +1,58 @@
# Sakamoto NixOS
Sakamoto NixOS is built with various profiles intended for reproducibility.
## Available Hosts
- MacBook M series
- Linux
## Installation
1. Install [Nix](https://nixos.org/download/).
2. Ensure Nix is installed properly by running the following (this also gives you `nano` for editing later):
```sh
nix-shell -p nano
```
3. Clone the git repository:
```sh
git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos && cd ~/.config/nixos/
```
4. Copy `info.default.nix` and rename it to `info.local.nix`:
```sh
cp ~/.config/nixos/info.default.nix ~/.config/nixos/info.local.nix
```
🚨 **CRITICAL STEP:** Edit `info.local.nix`:
```sh
nano ~/.config/nixos/info.local.nix
```
Modify it to fit your system — especially your **username**.
If you accidentally leave the default `biscuit`, that user will be created.
**Login password for `biscuit` is `Your-generic-password`.**
5. Execute the following command based on your host:
- **MacBook M series:**
```sh
sudo nix run nix-darwin --extra-experimental-features "nix-command flakes" -- switch --flake ~/.config/nixos#macos
```
- **Linux:**
```sh
sudo nixos-rebuild --flake ~/.config/nixos#desktop --impure
sudo nix run home-manager -- init --switch
home-manager switch --flake ~/.config/nixos#desktop --impure
nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update
reboot
```
-113
View File
@@ -1,113 +0,0 @@
{
programs.firefox = {
enable = true;
languagePacks = [
"en-US"
];
profiles = {
hakase = {
search.force = true;
isDefault = true;
search.default = "ddg";
settings = {
"browser.contentblocking.category" = "strict";
"extensions.pocket.enabled" = false;
"extensions.screenshots.disabled" = true;
"browser.topsites.contile.enabled" = false;
"browser.formfill.enable" = false;
"browser.search.suggest.enabled" = false;
"browser.search.suggest.enabled.private" = false;
"browser.urlbar.suggest.searches" = false;
"browser.urlbar.showSearchSuggestionsFirst" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.feeds.snippets" = false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.system.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.startup.homepage" = "https://dash.sakamoto.dev";
"browser.newtabpage.pinned" = [
{
title = "Dashboard";
url = "https://dash.sakamoto.dev";
}
];
};
bookmarks = {
force = true;
settings = [
{
toolbar = true;
bookmarks = [
{
name = "Home Manager";
url = "https://mynixos.com/home-manager/options/programs";
}
{
name = "YouTube";
url = "https://youtube.com";
}
];
}
];
};
};
};
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
DisableFirefoxAccounts = true;
DisableAccounts = true;
DisableFirefoxScreenshots = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DontCheckDefaultBrowser = true;
DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab"
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
SearchBar = "unified"; # alternative: "separate"
/*
---- EXTENSIONS ----
*/
# Check about:support for extension/add-on ID strings.
# Valid strings for installation_mode are "allowed", "blocked",
# "force_installed" and "normal_installed".
ExtensionSettings = {
"*".installation_mode = "allowed";
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
};
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4493940/bitwarden_password_manager-2025.5.0.xpi";
installation_mode = "force_installed";
};
"tridactyl.vim@cmcaine.co.uk" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4405615/tridactyl_vim-1.24.2.xpi";
installation_mode = "force_installed";
};
# Privacy Badger:
# "jid1-MnnxcxisBPnSXQ@jetpack" = {
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
# installation_mode = "force_installed";
# };
# 1Password:
# "{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
# installation_mode = "force_installed";
# };
};
};
};
}
-5
View File
@@ -1,5 +0,0 @@
{pkgs, ...}: {
home.packages = with pkgs; [
gemini-cli
];
}
-15
View File
@@ -1,15 +0,0 @@
{pkgs, ...}: {
programs.ghostty = {
enable = true;
package =
if pkgs.stdenv.isDarwin
then pkgs.ghostty-bin
else pkgs.ghostty;
enableFishIntegration = true;
settings = {
window-padding-x = 15;
window-padding-y = 15;
window-padding-balance = true;
};
};
}
-10
View File
@@ -1,10 +0,0 @@
{myConfig, ...}: {
programs.git = {
enable = true;
extraConfig = {
user.name = "${myConfig.git.username}";
user.email = "${myConfig.git.email}";
init.defaultBranch = "${myConfig.git.defaultBranch}";
};
};
}
-29
View File
@@ -1,29 +0,0 @@
{
inputs,
pkgs,
...
}: {
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
environment.systemPackages = [
pkgs.hyprpicker
pkgs.hyprlock
pkgs.hypridle
pkgs.hyprpaper
pkgs.hyprsunset
pkgs.hyprpolkitagent
];
# systemd.user.services.hyprpolkitagent = {
# description = "Hyprland Polkit Agent";
# wantedBy = ["graphical-session.target"];
# serviceConfig = {
# ExecStart = "${pkgs.hyprpolkitagent}/libexec/hyprpolkitagent";
# Restart = "on-failure";
# };
# };
}
-7
View File
@@ -1,7 +0,0 @@
{
imports = [
./hypr/binds.nix
./hypr/general.nix
];
wayland.windowManager.hyprland.enable = true;
}
-22
View File
@@ -1,22 +0,0 @@
{
wayland.windowManager.hyprland.settings = {
bindd = [
# essential
"SUPER, Return, Open Terminal, exec, ghostty" # FIXME: must be using xdg-open
"SUPER, Q, Kill active, killactive"
# move focus
"SUPER, J, Move focus down, movefocus, d"
"SUPER, K, Move focus up, movefocus, u"
"SUPER, H, Move focus left, movefocus, l"
"SUPER, L, Move focus right, movefocus, r"
# fullscreen
"SUPER, F, Toggle Fullscreen, fullscreen, 0"
"SUPER SHIFT, F, Toggle Maximized Fullscreen, fullscreen, 1"
# apps
"SUPER, W, Open browser, exec, firefox" # FIXME: must be xdg-open
];
};
}
-8
View File
@@ -1,8 +0,0 @@
{
wayland.windowManager.hyprland.settings = {
general = {
gaps_in = 5;
gaps_out = 15;
};
};
}
-9
View File
@@ -1,9 +0,0 @@
{
inputs,
system,
...
}: {
home.packages = [
inputs.nixovim.packages.${system}.full
];
}
-59
View File
@@ -1,59 +0,0 @@
{
programs.starship = {
enable = true;
settings = {
# Pro layout: one-line, clear spacing
format = ''
[](surface0)$os$directory[](fg:surface0 bg:peach)$git_branch$git_status[](fg:peach bg:surface1)$c$rust$nodejs$python$golang[](fg:surface1 bg:surface0)$nix_shell[](surface0)
$character'';
# Palette definition (Catppuccin Mocha-inspired)
palette = "pro_theme";
palettes.pro_theme = {
surface0 = "#313244";
surface1 = "#45475a";
text = "#cdd6f4";
peach = "#fab387";
sapphire = "#74c7ec";
lavender = "#b4befe";
green = "#a6e3a1";
};
os = {
disabled = false;
format = "[$symbol]($style)";
style = "bg:surface0 fg:text";
symbols = {NixOS = " ";};
};
directory = {
style = "bg:surface0 fg:lavender";
format = "[ $path ]($style)";
truncation_length = 3;
truncation_symbol = "/";
};
git_branch = {
symbol = "󰊢 ";
style = "bg:peach fg:surface0";
format = "[[ $symbol $branch ]($style)]($style)";
};
git_status = {
style = "bg:peach fg:surface0";
format = "[[($all_status$ahead_behind )]($style)]($style)";
};
nix_shell = {
symbol = "󱄅 ";
style = "bg:surface0 fg:sapphire";
format = "[ $symbol $state ]($style)";
};
character = {
success_symbol = "[󱞩](bold green)";
error_symbol = "[󱞩](bold red)";
};
};
};
}
-14
View File
@@ -1,14 +0,0 @@
{pkgs, ...}: {
programs.yazi = {
enable = true;
enableFishIntegration = true;
settings = {
manager = {
show_hidden = true;
sort_by = "natural";
sort_dir_first = true;
linemode = "size";
};
};
};
}
-9
View File
@@ -1,9 +0,0 @@
{
programs.zoxide = {
enable = true;
enableFishIntegration = true;
options = [
"--cmd cd"
];
};
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

+84 -24
View File
@@ -1,31 +1,91 @@
{
myConfig = {
nixos = {
username = "kenji";
hostname = "hakase";
timezone = "America/Chicago";
shell = "fish";
};
git = {
username = "kenji";
email = "kenji@hakase";
defaultBranch = "master";
};
ssh = {
extraConfig = ''
Host macair
User biscuit
HostName 192.168.68.81
general = {
Hostname = "hakase";
Username = "kenji";
Timezone = "America/Chicago";
Host gitea.sakamoto.dev
User kenji
ProxyCommand cloudflared access ssh --hostname %h
HostName gitea.sakamoto.dev
'';
allowUnfree = true; # allows installation of commercial apps.
terminal = {
Font = "JetBrainsMono Nerd Font"; # e.g., JetBrainsMono Nerd Font
Size = "18";
Shell = "fish";
Aliases = {
ls = "ls --color=auto";
update = ''
sh -c '
if [ "$(uname)" = "Darwin" ]; then
sudo darwin-rebuild switch --flake ~/.config/nixos#macos
else
sudo nixos-rebuild switch --flake ~/.config/nixos#desktop && home-manager switch --flake ~/.config/nixos#desktop
fi
'
'';
agu = "pkill gjs & ags run ~/.config/nixos/packages/ags/biscuit/app.ts & disown (jobs -p) &";
};
};
gitProfile = {
User = "kenji";
Email = "kenji@sakamoto.dev";
defaultBranch = "master";
};
ssh = {
extraConfig = ''
Host gitea.sakamoto.dev
User kenji
ProxyCommand cloudflared access ssh --hostname %h
HostName gitea.sakamoto.dev
'';
};
};
terminal = {
aliases = {
update = "sudo nixos-rebuild switch --flake ~/.config/nixos-new/#hakase";
builds = {
builder = {
trustedUsers = [
"@groups"
"biscuit"
];
buildMachines = [
{
hostName = "192.168.68.81";
sshUser = "biscuit";
sshKey = "/home/biscuit/.ssh/id_rsa.pub";
system = "x86_64-linux";
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
}
];
};
};
linux = {
system = "x86_64";
gaming = true;
vpn = {
Enable = false;
secretFile = builtins.toPath ./secrets/.vpn.yaml;
};
touchpadSupport = false;
logitech-hardware.enable = true;
# Custom Applications
apps = {
gaming = true;
apps = pkgs:
with pkgs; [
jellyfin-media-player
];
};
hyprconf = {
Monitor = [
# hyprctl monitors all
# monitor, resolution@refreshrate, position (e.g., 0x0 is middle, 0x1080 is top), scale
"DP-1,highres@165,0x1080,auto"
"DP-2,highres@highrr,0x0,auto"
"HDMI-A-1, preferred, 20000x20000,1"
];
};
};
};
Generated
+399 -197
View File
@@ -1,5 +1,26 @@
{
"nodes": {
"ags": {
"inputs": {
"astal": "astal",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1744557573,
"narHash": "sha256-XAyj0iDuI51BytJ1PwN53uLpzTDdznPDQFG4RwihlTQ=",
"owner": "aylur",
"repo": "ags",
"rev": "3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6",
"type": "github"
},
"original": {
"owner": "aylur",
"repo": "ags",
"type": "github"
}
},
"aquamarine": {
"inputs": {
"hyprutils": [
@@ -20,11 +41,11 @@
]
},
"locked": {
"lastModified": 1765900596,
"narHash": "sha256-+hn8v9jkkLP9m+o0Nm5SiEq10W0iWDSotH2XfjU45fA=",
"lastModified": 1747864449,
"narHash": "sha256-PIjVAWghZhr3L0EFM2UObhX84UQxIACbON0IC0zzSKA=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "d83c97f8f5c0aae553c1489c7d9eff3eadcadace",
"rev": "389372c5f4dc1ac0e7645ed29a35fd6d71672ef5",
"type": "github"
},
"original": {
@@ -33,6 +54,47 @@
"type": "github"
}
},
"astal": {
"inputs": {
"nixpkgs": [
"ags",
"nixpkgs"
]
},
"locked": {
"lastModified": 1742571008,
"narHash": "sha256-5WgfJAeBpxiKbTR/gJvxrGYfqQRge5aUDcGKmU1YZ1Q=",
"owner": "aylur",
"repo": "astal",
"rev": "dc0e5d37abe9424c53dcbd2506a4886ffee6296e",
"type": "github"
},
"original": {
"owner": "aylur",
"repo": "astal",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1749194393,
"narHash": "sha256-vt6hM9DNywnXXuW1qPDLzECmbDcmxhh58wpb0EEQjAo=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "19346808c445f23b08652971be198b9df6c33edc",
"type": "github"
},
"original": {
"owner": "lnl7",
"repo": "nix-darwin",
"type": "github"
}
},
"devshell": {
"inputs": {
"nixpkgs": [
@@ -58,11 +120,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
@@ -89,6 +151,24 @@
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"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"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib_2"
},
"locked": {
"lastModified": 1738453229,
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
@@ -103,7 +183,7 @@
"type": "github"
}
},
"flake-parts_2": {
"flake-parts_3": {
"inputs": {
"nixpkgs-lib": [
"nixovim",
@@ -127,7 +207,25 @@
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1731533236,
@@ -223,11 +321,11 @@
]
},
"locked": {
"lastModified": 1766387499,
"narHash": "sha256-AjK3/UKDzeXFeYNLVBaJ3+HLE9he1g5UrlNd4/BM3eA=",
"lastModified": 1748979197,
"narHash": "sha256-mKYwYcO9RmA2AcAFIXGDBOw5iv/fbjw6adWvMbnfIuk=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "527ad07e6625302b648ed3b28c34b62a79bd103e",
"rev": "34a13086148cbb3ae65a79f753eb451ce5cac3d3",
"type": "github"
},
"original": {
@@ -274,11 +372,11 @@
]
},
"locked": {
"lastModified": 1753964049,
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
"lastModified": 1745948457,
"narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
"rev": "ac903e80b33ba6a88df83d02232483d99f327573",
"type": "github"
},
"original": {
@@ -303,11 +401,11 @@
]
},
"locked": {
"lastModified": 1763733840,
"narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=",
"lastModified": 1745015490,
"narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a",
"rev": "60754910946b4e2dc1377b967b7156cb989c5873",
"type": "github"
},
"original": {
@@ -321,12 +419,11 @@
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprgraphics": "hyprgraphics",
"hyprland-guiutils": "hyprland-guiutils",
"hyprland-protocols": "hyprland-protocols",
"hyprland-qtutils": "hyprland-qtutils",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"hyprwire": "hyprwire",
"nixpkgs": [
"nixpkgs"
],
@@ -335,64 +432,16 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1766498696,
"narHash": "sha256-74qO6ynwUav+QqNhBVn/4yoBCpU6r3/eCkX/V11uL+E=",
"ref": "refs/heads/main",
"rev": "f7f357f15f83612078eb0919ca08b71cac01c25e",
"revCount": 6741,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
},
"original": {
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
}
},
"hyprland-guiutils": {
"inputs": {
"aquamarine": [
"hyprland",
"aquamarine"
],
"hyprgraphics": [
"hyprland",
"hyprgraphics"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprtoolkit": "hyprtoolkit",
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1765643131,
"narHash": "sha256-CCGohW5EBIRy4B7vTyBMqPgsNcaNenVad/wszfddET0=",
"lastModified": 1749049255,
"narHash": "sha256-QXg2B/bF/f9IeSiZwJuhdnz2xcnpu/hDfz4eIHWVhz8=",
"owner": "hyprwm",
"repo": "hyprland-guiutils",
"rev": "e50ae912813bdfa8372d62daf454f48d6df02297",
"repo": "Hyprland",
"rev": "d7a87ce6e2535f1029fc93b062d2828e8549c525",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-guiutils",
"repo": "Hyprland",
"type": "github"
}
},
@@ -408,11 +457,11 @@
]
},
"locked": {
"lastModified": 1765214753,
"narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=",
"lastModified": 1743714874,
"narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab",
"rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2",
"type": "github"
},
"original": {
@@ -421,6 +470,74 @@
"type": "github"
}
},
"hyprland-qt-support": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprland-qtutils",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"hyprland-qtutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-qtutils",
"systems"
]
},
"locked": {
"lastModified": 1737634706,
"narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=",
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"rev": "8810df502cdee755993cb803eba7b23f189db795",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"type": "github"
}
},
"hyprland-qtutils": {
"inputs": {
"hyprland-qt-support": "hyprland-qt-support",
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-qtutils",
"hyprlang",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1745951494,
"narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": [
@@ -437,11 +554,11 @@
]
},
"locked": {
"lastModified": 1764612430,
"narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=",
"lastModified": 1747484975,
"narHash": "sha256-+LAQ81HBwG0lwshHlWe0kfWg4KcChIPpnwtnwqmnoEU=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "0d00dc118981531aa731150b6ea551ef037acddd",
"rev": "163c83b3db48a17c113729c220a60b94596c9291",
"type": "github"
},
"original": {
@@ -450,58 +567,6 @@
"type": "github"
}
},
"hyprtoolkit": {
"inputs": {
"aquamarine": [
"hyprland",
"hyprland-guiutils",
"aquamarine"
],
"hyprgraphics": [
"hyprland",
"hyprland-guiutils",
"hyprgraphics"
],
"hyprlang": [
"hyprland",
"hyprland-guiutils",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-guiutils",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprland-guiutils",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"hyprland-guiutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-guiutils",
"systems"
]
},
"locked": {
"lastModified": 1764592794,
"narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=",
"owner": "hyprwm",
"repo": "hyprtoolkit",
"rev": "5cfe0743f0e608e1462972303778d8a0859ee63e",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprtoolkit",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
@@ -514,11 +579,11 @@
]
},
"locked": {
"lastModified": 1766160771,
"narHash": "sha256-roINUGikWRqqgKrD4iotKbGj3ZKJl3hjMz5l/SyKrHw=",
"lastModified": 1746635225,
"narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "5ac060bfcf2f12b3a6381156ebbc13826a05b09f",
"rev": "674ea57373f08b7609ce93baff131117a0dfe70d",
"type": "github"
},
"original": {
@@ -539,11 +604,11 @@
]
},
"locked": {
"lastModified": 1763640274,
"narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=",
"lastModified": 1747584298,
"narHash": "sha256-PH9qZqWLHvSBQiUnA0NzAyQA3tu2no2z8kz0ZeHWj4w=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671",
"rev": "e511882b9c2e1d7a75d45d8fddd2160daeafcbc3",
"type": "github"
},
"original": {
@@ -552,35 +617,6 @@
"type": "github"
}
},
"hyprwire": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1766253200,
"narHash": "sha256-26qPwrd3od+xoYVywSB7hC2cz9ivN46VPLlrsXyGxvE=",
"owner": "hyprwm",
"repo": "hyprwire",
"rev": "1079777525b30a947c8d657fac158e00ae85de9d",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwire",
"type": "github"
}
},
"ixx": {
"inputs": {
"flake-utils": [
@@ -611,6 +647,27 @@
"type": "github"
}
},
"matugen": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_2"
},
"locked": {
"lastModified": 1745334376,
"narHash": "sha256-GZAesQW51EwCEB9w5caxgi87LiAMhVfP6GqZmet9VZc=",
"owner": "InioX",
"repo": "Matugen",
"rev": "4619cca93513470dc2a1833d9a138297cbccaf2e",
"type": "github"
},
"original": {
"owner": "InioX",
"repo": "Matugen",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
@@ -633,23 +690,42 @@
"type": "github"
}
},
"nixovim": {
"nix-gaming": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"nixvim": "nixvim",
"rust-overlay": [
"rust-overlay"
]
},
"locked": {
"lastModified": 1764015463,
"narHash": "sha256-CfkyQKOVhrSENBoUiCAZbyZtS9lfLlJXUj2kw8i+xtU=",
"lastModified": 1751075759,
"narHash": "sha256-MNAlH/IlSkg5ODfLEgYuDvs4XrM8n3Ukmh6OqQxoJ6s=",
"owner": "fufexan",
"repo": "nix-gaming",
"rev": "622e26d86942642483e1a49d4f0dea2cbb80e6c1",
"type": "github"
},
"original": {
"owner": "fufexan",
"repo": "nix-gaming",
"type": "github"
}
},
"nixovim": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
],
"nixvim": "nixvim",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1749068064,
"narHash": "sha256-pxszYA1LsrW89Z++jMshDqRpNx99QcvfpFIK5mdmneA=",
"ref": "refs/heads/master",
"rev": "0231245a5ba7bcb9dd81373474795514d03a4c30",
"revCount": 70,
"rev": "be2e51f4ddec2389d282280871ca484f3f1f0892",
"revCount": 60,
"type": "git",
"url": "https://git.sakamoto.dev/kenji/nixovim.git"
},
@@ -675,6 +751,21 @@
}
},
"nixpkgs-lib": {
"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"
}
},
"nixpkgs-lib_2": {
"locked": {
"lastModified": 1738452942,
"narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=",
@@ -688,15 +779,31 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1766309749,
"narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=",
"lastModified": 1736320768,
"narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816",
"rev": "4bc9c909d9ac828a039f288cf872d16d38185db8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1748693115,
"narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
@@ -706,7 +813,7 @@
"inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts_2",
"flake-parts": "flake-parts_3",
"git-hooks": "git-hooks",
"home-manager": "home-manager_2",
"nix-darwin": "nix-darwin",
@@ -762,11 +869,11 @@
]
},
"locked": {
"lastModified": 1765911976,
"narHash": "sha256-t3T/xm8zstHRLx+pIHxVpQTiySbKqcQbK+r+01XVKc0=",
"lastModified": 1747372754,
"narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "b68b780b69702a090c8bb1b973bab13756cc7a27",
"rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46",
"type": "github"
},
"original": {
@@ -775,27 +882,51 @@
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"hyprland": "hyprland",
"nixovim": "nixovim",
"nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"quickshell": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1766457837,
"narHash": "sha256-aeBbkQ0HPFNOIsUeEsXmZHXbYq4bG8ipT9JRlCcKHgU=",
"lastModified": 1751354716,
"narHash": "sha256-bLMNn3gh09gtkIEwZW3USt4ehLrmwmfnb3rqahYBI+4=",
"ref": "refs/heads/master",
"rev": "f681e2016fd71b42985bd520b3a20c62488582e9",
"revCount": 599,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
"original": {
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
}
},
"root": {
"inputs": {
"ags": "ags",
"darwin": "darwin",
"home-manager": "home-manager",
"hyprland": "hyprland",
"matugen": "matugen",
"nix-gaming": "nix-gaming",
"nixovim": "nixovim",
"nixpkgs": "nixpkgs_3",
"quickshell": "quickshell",
"sops-nix": "sops-nix",
"unlisted-fonts": "unlisted-fonts"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1739327257,
"narHash": "sha256-rlGK8wxz/e50Z+PQRzuP+m03IrGkhcPGmgkBnkEZ9C8=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "2c7510a559416d07242621d036847152d970612b",
"rev": "e01f2c035b7b8a428c119b183f4cbc55f2eef07c",
"type": "github"
},
"original": {
@@ -804,6 +935,26 @@
"type": "github"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1750119275,
"narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "sops-nix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1689347949,
@@ -820,6 +971,36 @@
}
},
"systems_2": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"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"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -856,6 +1037,27 @@
"type": "github"
}
},
"unlisted-fonts": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1748987994,
"narHash": "sha256-13QQRwZx9tRDmL79+XBM1YaC4W68mVrVW2NCv2w25WA=",
"ref": "refs/heads/master",
"rev": "468d51f24d3dd22c543e657c359fb333ff4df726",
"revCount": 1,
"type": "git",
"url": "https://git.sakamoto.dev/kenji/nix-fonts.git"
},
"original": {
"type": "git",
"url": "https://git.sakamoto.dev/kenji/nix-fonts.git"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": [
@@ -884,11 +1086,11 @@
]
},
"locked": {
"lastModified": 1761431178,
"narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=",
"lastModified": 1745871725,
"narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "4b8801228ff958d028f588f0c2b911dbf32297f9",
"rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e",
"type": "github"
},
"original": {
+88 -22
View File
@@ -1,49 +1,115 @@
{
description = "Hakase Configuration";
description = "Sakamoto's NixOS Configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; # `follows` ensure it follows nixpkgs versiona. Avoids breaking updates.
darwin.url = "github:lnl7/nix-darwin";
darwin.inputs.nixpkgs.follows = "nixpkgs";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
ags.url = "github:aylur/ags";
ags.inputs.nixpkgs.follows = "nixpkgs";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland = {
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
inputs.nixpkgs.follows = "nixpkgs";
};
nixovim = {
url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
};
hyprland.url = "github:hyprwm/Hyprland";
hyprland.inputs.nixpkgs.follows = "nixpkgs";
unlisted-fonts.url = "git+https://git.sakamoto.dev/kenji/nix-fonts.git";
unlisted-fonts.inputs.nixpkgs.follows = "nixpkgs";
nixovim.url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
nixovim.inputs.nixpkgs.follows = "nixpkgs";
matugen.url = "github:/InioX/Matugen";
matugen.inputs.nixpkgs.follows = "nixpkgs";
nix-gaming.url = "github:fufexan/nix-gaming";
nix-gaming.inputs.nixpkgs.follows = "nixpkgs";
sops-nix.url = "github:Mic92/sops-nix";
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
quickshell.url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
quickshell.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {
self,
nixpkgs,
home-manager,
darwin,
ags,
hyprland,
unlisted-fonts,
nixovim,
...
} @ inputs: let
config = import ./config.nix;
lib = nixpkgs.lib;
system = "x86_64-linux";
# pkgs = nixpkgs.legacyPackages.${system}; # alternative, without overlays. Unused.
args =
{
inherit inputs system;
}
// config;
in {
# nixosConfiguration for linux system
nixosConfigurations = {
hakase = nixpkgs.lib.nixosSystem {
desktop = lib.nixosSystem {
inherit system;
specialArgs = args;
modules = [
home-manager.nixosModules.home-manager
./hosts/hakase/configuration.nix
./hosts/desktop/configuration.nix
];
};
};
homeConfigurations = {
desktop = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
overlays = [
# (final: prev: {
# ags_1 = prev.ags_1.overrideAttrs (old: {
# buildInputs = old.buildInputs ++ [pkgs.libdbusmenu-gtk3];
# });
# })
];
};
extraSpecialArgs = args;
modules = [./home/desktop.nix];
};
gaming = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
overlays = [];
};
extraSpecialArgs = args;
modules = [./home/gaming.nix];
};
headless = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
overlays = [];
};
extraSpecialArgs = args;
modules = [./home/headless.nix];
};
};
# darwinConfiguration for macOS M series
darwinConfigurations = {
macos = darwin.lib.darwinSystem {
system = "aarch64-darwin";
specialArgs = args;
modules = [
./hosts/macos/darwin.nix
home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = args;
}
];
};
};
+22
View File
@@ -0,0 +1,22 @@
{
myConfig,
lib,
...
}: {
imports = [
../modules/terminal.nix
../modules/desktop.nix
];
programs.home-manager.enable = true;
home = {
username = "${myConfig.general.Username}";
homeDirectory = "/home/${myConfig.general.Username}";
packages = [];
sessionVariables = {};
};
systemd.user.startServices = "sd-switch";
home.stateVersion = "23.05";
}
-9
View File
@@ -1,9 +0,0 @@
{pkgs, ...}: {
imports = [
../modules/home/terminal.nix
../modules/home/apps.nix
../modules/home/hyprland.nix
];
home.stateVersion = "25.05";
}
+15
View File
@@ -0,0 +1,15 @@
{
config,
pkgs,
inputs,
...
}: {
imports = [
../modules/terminal.nix
];
programs.home-manager.enable = true;
home.packages = [];
home.stateVersion = "23.05";
}
+36
View File
@@ -0,0 +1,36 @@
{
pkgs,
myConfig,
inputs,
lib,
...
}: {
imports =
[
inputs.sops-nix.nixosModules.sops
./hardware-configuration.nix
../../modules/linuxDev.nix
../../modules/system.nix
../../modules/de.nix
]
++ lib.optionals (myConfig.linux.apps.gaming == true) [
../../modules/gaming.nix
];
environment.systemPackages = [];
nixpkgs.config.allowUnfree = true;
nix.settings = {
trusted-users = myConfig.builds.builder.trustedUsers;
experimental-features = ["nix-command" "flakes"];
};
programs.ssh.extraConfig = myConfig.general.ssh.extraConfig;
nix.distributedBuilds = true;
nix.settings.builders-use-substitutes = true;
# nix.buildMachines = builder.buildMachines;
system.stateVersion = "25.05";
}
-11
View File
@@ -1,11 +0,0 @@
{
pkgs,
myConfig,
...
}: {
imports = [
./hardware-configuration.nix
../../modules/system/default.nix
../../modules/system/hyprland.nix
];
}
-33
View File
@@ -1,33 +0,0 @@
# 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 = [ "nvme" "xhci_pci" "ahci" "usbhid" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/mapper/luks-f8bd85aa-b08e-472a-b7f6-5e190b9b9714";
fsType = "ext4";
};
boot.initrd.luks.devices."luks-f8bd85aa-b08e-472a-b7f6-5e190b9b9714".device = "/dev/disk/by-uuid/f8bd85aa-b08e-472a-b7f6-5e190b9b9714";
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/72BA-AF9B";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+43
View File
@@ -0,0 +1,43 @@
{
pkgs,
myConfig,
inputs,
...
}: {
imports = [
../../modules/macosDev.nix
inputs.sops-nix.darwinModules.sops
];
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages = with pkgs; [
];
# Auto upgrade nix package and the daemon service.
# services.nix-daemon.enable = true;
# services.karabiner-elements.enable = true;
# nix.package = pkgs.nix;
# Necessary for using flakes on this system.
nix.settings.experimental-features = "nix-command flakes";
nix.settings.trusted-users = myConfig.builds.builder.trustedUsers;
# Create /etc/zshrc that loads the nix-darwin environment.
programs.zsh.enable = true; # default shell on catalina
programs.fish.enable = true;
# $ darwin-rebuild changelog
system.stateVersion = 5;
# The platform the configuration will be used on.
nixpkgs.hostPlatform = "aarch64-darwin";
security.pam.services.sudo_local.touchIdAuth = true;
users.users.${myConfig.general.Username} = {
name = "${myConfig.general.Username}";
home = "/Users/${myConfig.general.Username}";
# shell = pkgs.${myConfig.general.terminal.Shell}; # no support for nix-darwin, but can be changed via chsh.
};
home-manager.users.${myConfig.general.Username} = import ../../home/macos.nix;
}
View File
+19
View File
@@ -0,0 +1,19 @@
{
lib,
myConfig,
...
}: {
imports =
[
../system/font.nix
../system/browser.nix
../system/wayland.nix
../system/graphics.nix
../system/security.nix
# FIXME
../system/amd.nix
]
++ lib.optionals (myConfig.linux.gaming == true) [
];
}
+20
View File
@@ -0,0 +1,20 @@
{
lib,
myConfig,
...
}: {
imports =
[
../packages/hyprland/default.nix
../packages/hypridle/default.nix
../packages/hyprlock/default.nix
../packages/rofi/default.nix
../packages/matugen/default.nix
../packages/swww/default.nix
../packages/quickshell/default.nix
../packages/ags/default.nix
]
++ lib.optionals (myConfig.linux.gaming == true) [
../packages/mangohud/default.nix
];
}
+7
View File
@@ -0,0 +1,7 @@
{
imports = [
../system/stream.nix
../system/gaming.nix
../system/appimage.nix
];
}
-8
View File
@@ -1,8 +0,0 @@
{
imports = [
../../apps/yazi/home.nix
../../apps/gemini/home.nix
../../apps/firefox/home.nix
../../apps/starship/home.nix
];
}
-5
View File
@@ -1,5 +0,0 @@
{
imports = [
../../apps/hyprland/home.nix
];
}
-9
View File
@@ -1,9 +0,0 @@
{
imports = [
../../apps/neovim/neovim.nix
../../apps/git/home.nix
../../apps/zoxide/home.nix
../../apps/fish/home.nix
../../apps/ghostty/home.nix
];
}
+7
View File
@@ -0,0 +1,7 @@
{...}: {
imports = [
../system/dev/tools.nix
../system/dev/python.nix
../system/dev/linux.nix
];
}
+6
View File
@@ -0,0 +1,6 @@
{...}: {
imports = [
../system/dev/tools.nix
../system/dev/python.nix
];
}
+13
View File
@@ -0,0 +1,13 @@
{...}: {
imports = [
../system/users.nix
../system/hardware.nix
../system/locale.nix
../system/network.nix
../system/programs.nix
../system/services.nix
../system/tty.nix
../system/firewall.nix
../system/boot.nix
];
}
-18
View File
@@ -1,18 +0,0 @@
{pkgs, ...}: {
imports = [
../../system/boot.nix
../../system/amd.nix
../../system/hardware.nix
../../system/home-manager.nix
../../system/services.nix
../../system/user.nix
../../system/version.nix
../../system/fonts.nix
../../system/programs.nix
../../system/security.nix
];
environment.systemPackages = with pkgs; [
git
cloudflared
];
}
-5
View File
@@ -1,5 +0,0 @@
{
imports = [
../../apps/hyprland/default.nix
];
}
+11
View File
@@ -0,0 +1,11 @@
{...}: {
imports = [
../packages/git/default.nix
../packages/fish/default.nix
../packages/kitty/default.nix
../packages/neovim/default.nix
../packages/starship/default.nix
../packages/fastfetch/default.nix
../packages/zsh/default.nix
];
}
+2
View File
@@ -0,0 +1,2 @@
node_modules/
@girs/
+17
View File
@@ -0,0 +1,17 @@
import { App } from "astal/gtk3"
import style from "./style.scss"
import Bar from "./widget/Bar"
App.start({
css: style,
instanceName: "js",
requestHandler(request, res) {
print(request)
res("ok")
},
main: () => {
const monitors = App.get_monitors()
const primary = monitors.find(m => m.primary) || monitors[0]
return Bar(primary)
}
})
+3
View File
@@ -0,0 +1,3 @@
$background: #131318;
$foreground: #e4e1e9;
$primary: #bec2ff;
+21
View File
@@ -0,0 +1,21 @@
declare const SRC: string
declare module "inline:*" {
const content: string
export default content
}
declare module "*.scss" {
const content: string
export default content
}
declare module "*.blp" {
const content: string
export default content
}
declare module "*.css" {
const content: string
export default content
}
+6
View File
@@ -0,0 +1,6 @@
{
"name": "astal-shell",
"dependencies": {
"astal": "/home/biscuit/.local/share/ags"
}
}
+143
View File
@@ -0,0 +1,143 @@
@use "sass:color";
@use "./colors" as *;
// default
// $bg: #212223;
// $fg: #f1f1f1;
// $accent: #378DF7;
// $radius: 7px;
// Kanagawa Theme
// $bg: #1F1F28;
// $fg: #DCD7BA;
// $accent: #C0A36E;
// $radius: 7px;
// mstcl
// $bg: #121212;
// $fg: #f1f1f1;
// $accent: #C0A36E;
// $radius: 7px;
$bg: $background;
$fg: $foreground;
$accent: $primary;
$radius: 7px;
window.Bar {
border: none;
box-shadow: none;
background-color: $bg;
color: $fg;
font-size: 1.1em;
font-weight: bold;
font-family: "JetBrainsMono Nerd Font";
label {
margin: 0 8px;
}
.Workspaces {
button {
all: unset;
background-color: transparent;
&:hover label {
background-color: color.adjust($fg, $alpha: -0.84);
border-color: color.adjust($accent, $alpha: -0.8);
}
&:active label {
background-color: color.adjust($fg, $alpha: -0.8)
}
}
label {
transition: 200ms;
padding: 0 8px;
margin: 2px;
border-radius: $radius;
border: 1pt solid transparent;
}
.focused label {
color: $accent;
border-color: $accent;
}
}
.SysTray {
margin-right: 8px;
button {
padding: 0 4px;
}
}
.Time {
.TimeHM {
font-weight: bold;
color: $accent;
}
.TimeDate {
// color: color.adjust($fg, $lightness: -10%);
color: $fg;
opacity: 0.85;
font-weight: normal;
}
}
.FocusedClient {
color: color.adjust($fg, $lightness: -30%);
opacity: 0.7;
}
.Media .Cover {
min-height: 1.2em;
min-width: 1.2em;
border-radius: $radius;
background-position: center;
background-size: contain;
}
.Battery label {
padding-left: 0;
margin-left: 0;
}
.AudioSlider {
* {
all: unset;
}
icon {
margin-right: .6em;
}
& {
margin: 0 1em;
}
trough {
background-color: color.adjust($fg, $alpha: -0.8);
border-radius: $radius;
}
highlight {
background-color: $accent;
min-height: .8em;
border-radius: $radius;
}
slider {
background-color: $fg;
border-radius: $radius;
min-height: 1em;
min-width: 1em;
margin: -.2em;
}
}
}
+14
View File
@@ -0,0 +1,14 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"compilerOptions": {
"experimentalDecorators": true,
"strict": true,
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "Bundler",
// "checkJs": true,
// "allowJs": true,
"jsx": "react-jsx",
"jsxImportSource": "astal/gtk3",
}
}
+189
View File
@@ -0,0 +1,189 @@
import { App } from "astal/gtk3"
import { Variable, GLib, bind } from "astal"
import { Astal, Gtk, Gdk } from "astal/gtk3"
import Hyprland from "gi://AstalHyprland"
import Mpris from "gi://AstalMpris"
import Battery from "gi://AstalBattery"
import Wp from "gi://AstalWp"
import Network from "gi://AstalNetwork"
import Tray from "gi://AstalTray"
function SysTray() {
const tray = Tray.get_default()
return <box className="SysTray">
{bind(tray, "items").as(items => items.map(item => (
<menubutton
tooltipMarkup={bind(item, "tooltipMarkup")}
usePopover={false}
actionGroup={bind(item, "actionGroup").as(ag => ["dbusmenu", ag])}
menuModel={bind(item, "menuModel")}>
<icon gicon={bind(item, "gicon")} />
</menubutton>
)))}
</box>
}
function Wifi() {
const network = Network.get_default()
const wifi = bind(network, "wifi")
return <box visible={wifi.as(Boolean)}>
{wifi.as(wifi => wifi && (
<icon
tooltipText={bind(wifi, "ssid").as(String)}
className="Wifi"
icon={bind(wifi, "iconName")}
/>
))}
</box>
}
function AudioSlider() {
const speaker = Wp.get_default()?.audio.defaultSpeaker!
return <box className="AudioSlider" css="min-width: 140px">
<icon icon={bind(speaker, "volumeIcon")} />
<slider
hexpand
onDragged={({ value }) => speaker.volume = value}
value={bind(speaker, "volume")}
/>
</box>
}
function BatteryLevel() {
const bat = Battery.get_default()
return <box className="Battery"
visible={bind(bat, "isPresent")}>
<icon icon={bind(bat, "batteryIconName")} />
<label label={bind(bat, "percentage").as(p =>
`${Math.floor(p * 100)} %`
)} />
</box>
}
function Media() {
const mpris = Mpris.get_default()
return <box className="Media">
{bind(mpris, "players").as(ps => ps[0] ? (
<box>
<box
className="Cover"
valign={Gtk.Align.CENTER}
css={bind(ps[0], "coverArt").as(cover =>
`background-image: url('${cover}');`
)}
/>
<label
label={bind(ps[0], "metadata").as(() =>
`${ps[0].title} - ${ps[0].artist}`
)}
/>
</box>
) : (
<label label="Biscuit" />
))}
</box>
}
function Workspaces() {
const hypr = Hyprland.get_default();
return (
<box className="Workspaces">
{bind(hypr, "focusedWorkspace").as((fw) => {
if (!fw) return null;
// Determine the current chunk of 5 visible workspace buttons
const currentChunkStart = Math.floor((fw.id - 1) / 5) * 5 + 1;
const visibleIds = Array.from({ length: 5 }, (_, i) => currentChunkStart + i);
return visibleIds.map((id) => {
// Try to get the real workspace, fall back to a dummy one if it doesn't exist
const ws =
hypr.workspaces.find((w) => w.id === id) ??
Hyprland.Workspace.dummy(id, null);
return (
<button
className={fw.id === id ? "focused" : ""}
onClick={() => ws.focus()}
>
{id}
</button>
);
});
})}
</box>
);
}
function FocusedClient() {
const hypr = Hyprland.get_default();
const focused = bind(hypr, "focusedClient");
return (
<box className="FocusedClient" visible={focused.as(Boolean)}>
{focused.as(client => {
if (!client) return null;
return (
<label
label={bind(client, "title").as(title => {
return title.length > 40
? title.slice(0, 37) + "..."
: title;
})}
/>
);
})}
</box>
);
}
function Time({ format = "%H:%M|%a %b %d" }) {
const time = Variable<string>("").poll(1000, () =>
GLib.DateTime.new_now_local().format(format)!
);
return bind(time).as(str => {
const [hm, date] = str.split("|");
return (
<box className="Time">
<label className="TimeHM" label={hm} />
<label className="TimeDate" label={date} />
</box>
);
});
}
export default function Bar(monitor: Gdk.Monitor) {
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
return <window
className="Bar"
gdkmonitor={monitor}
exclusivity={Astal.Exclusivity.EXCLUSIVE}
anchor={TOP | LEFT | RIGHT}>
<centerbox>
<box hexpand halign={Gtk.Align.START}>
<Workspaces />
<FocusedClient />
</box>
<box>
<Time />
</box>
<box hexpand halign={Gtk.Align.END} >
<SysTray />
<Wifi />
<AudioSlider />
<BatteryLevel />
</box>
</centerbox>
</window>
}
+28
View File
@@ -0,0 +1,28 @@
{
inputs,
pkgs,
system,
...
}: {
imports = [inputs.ags.homeManagerModules.default];
programs.ags = {
enable = true;
configDir = ./biscuit;
extraPackages = let
agsPkgs = inputs.ags.packages.${system};
in
with pkgs; [
agsPkgs.battery
agsPkgs.hyprland
agsPkgs.mpris
agsPkgs.wireplumber
agsPkgs.notifd
agsPkgs.apps
agsPkgs.network
agsPkgs.tray
fzf
];
};
}
+131
View File
@@ -0,0 +1,131 @@
{
programs.fastfetch = {
enable = true;
settings = {
logo = {
padding = {
top = 2;
left = 1;
right = 2;
};
};
display = {
separator = " ";
};
modules = [
# Title
{
type = "title";
format = "{#1} {#}{user-name-colored}";
}
# System Information Header
{
type = "custom";
format = "{#1} {#}System Information";
}
{
type = "os";
key = " {#keys}󰍹 OS";
}
{
type = "kernel";
key = " {#keys}󰒋 Kernel";
}
{
type = "uptime";
key = " {#keys}󰅐 Uptime";
}
{
type = "packages";
key = " {#keys}󰏖 Packages";
format = "{all}";
}
{
type = "custom";
format = "{#1}";
}
# Desktop Environment
{
type = "custom";
format = "{#1} {#}Desktop Environment";
}
{
type = "de";
key = " {#keys}󰧨 DE";
}
{
type = "wm";
key = " {#keys}󱂬 WM";
}
{
type = "wmtheme";
key = " {#keys}󰉼 Theme";
}
{
type = "display";
key = " {#keys}󰹑 Resolution";
}
{
type = "shell";
key = " {#keys}󰞷 Shell";
}
{
type = "terminalfont";
key = " {#keys}󰛖 Font";
}
{
type = "custom";
format = "{#1}";
}
# Hardware Information
{
type = "custom";
format = "{#1} {#}Hardware Information";
}
{
type = "cpu";
key = " {#keys}󰻠 CPU";
}
{
type = "gpu";
key = " {#keys}󰢮 GPU";
}
{
type = "memory";
key = " {#keys}󰍛 Memory";
}
{
type = "disk";
key = " {#keys}󰋊 Disk (/)";
folders = "/";
}
{
type = "custom";
format = "{#1}";
}
# Colors
{
type = "colors";
key = "";
symbol = "circle";
}
# Footer
{
type = "custom";
format = "{#1}";
}
];
};
};
}
@@ -3,15 +3,16 @@
myConfig,
...
}: {
programs.zoxide.enable = true;
programs.fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting
fish_vi_key_bindings
zoxide init fish | source
zoxide init fish --cmd cd | source
'';
shellAliases = myConfig.terminal.aliases;
shellAliases = myConfig.general.terminal.Aliases;
plugins = with pkgs.fishPlugins; [
];
+10
View File
@@ -0,0 +1,10 @@
{myConfig, ...}: {
programs.git = {
enable = true;
extraConfig = {
user.name = "${myConfig.general.gitProfile.User}";
user.email = "${myConfig.general.gitProfile.Email}";
init.defaultBranch = "${myConfig.general.gitProfile.defaultBranch}";
};
};
}
+38
View File
@@ -0,0 +1,38 @@
{...}: {
services.hypridle = {
enable = true;
settings = {
general = {
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
after_sleep_cmd = "hyprctl dispatch dpms on && agu"; # avoid needing to press a key twice to turn on the display.
};
listener = [
{
timeout = 150;
on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
on-resume = "brightnessctl -r"; # restore monitor backlight.
}
{
timeout = 150;
on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0"; # turn off keyboard backlight.
on-resume = "brightnessctl -rd rgb:kbd_backlight"; # turn on keyboard backlight.
}
{
timeout = 300;
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed.
}
{
timeout = 330;
on-timeout = "hyprctl dispatch dpms off"; # screen off after 5.5min.
on-resume = "hyprctl dispatch dpms on && brightnessctl -r"; # screen on and restore brightness on resume.
}
{
timeout = 500;
on-timeout = "systemctl suspend"; # suspend PC after 30min.
}
];
};
};
}
+221
View File
@@ -0,0 +1,221 @@
{myConfig, ...}: {
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
settings = {
"$mod" = "SUPER";
"$term" = "kitty --single-instance";
"$browser" = "firefox";
monitor = myConfig.linux.hyprconf.Monitor;
exec-once = [
"[workspace 20 silent] kitty --single-insance --hold fastfetch"
"[workspace 20 silent] firefox"
"[workspace 1] kitty --single-instance --hold fastfetch"
"pkill gjs & ags run"
"matugen image /home/${myConfig.general.Username}/.config/nixos/assets/wallpapers/ultrawide-nixos-default.png"
"hyprctl setcursor Bibata-Original-Classic 24"
"solaar -w hide"
];
general = {
gaps_in = 2;
gaps_out = 5;
border_size = 2;
# col.active_border = "#0DB7D4FF";
# col.inactive_border = "#31313600";
# col = {
# "inactive_border" = "rgba(595959aa)";
# "active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
# };
resize_on_border = false;
allow_tearing = false;
layout = "dwindle";
};
decoration = {
rounding = 0;
rounding_power = 2;
active_opacity = 1.0;
inactive_opacity = 1.0;
dim_inactive = true;
dim_strength = 0.1;
dim_special = 0.8;
shadow = {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
};
blur = {
enabled = true;
size = 3;
passes = 1;
vibrancy = 0.1696;
};
};
animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92"
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1"
];
animation = [
"windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 3, md3_accel, popin 60%"
"border, 1, 10, default"
"fade, 1, 3, md3_decel"
"layersIn, 1, 3, menu_decel, slide"
"layersOut, 1, 1.6, menu_accel"
"fadeLayersIn, 1, 2, menu_decel"
"fadeLayersOut, 1, 0.5, menu_accel"
"workspaces, 1, 7, menu_decel, slide"
"specialWorkspace, 1, 3, md3_decel, slidevert"
];
};
dwindle = {
pseudotile = true;
preserve_split = true;
};
master = {
new_status = "master";
};
misc = {
force_default_wallpaper = -1;
disable_hyprland_logo = true;
};
input = {
kb_layout = "us";
follow_mouse = 1;
sensitivity = 0;
force_no_accel = true;
repeat_delay = 250;
repeat_rate = 35;
touchpad = {
natural_scroll = false;
};
numlock_by_default = true;
};
gestures = {
workspace_swipe = false;
};
binds = {
workspace_back_and_forth = true;
scroll_event_delay = 0;
};
device = [
{
name = "epic-mouse-v1";
sensitivity = -0.5;
}
];
bind =
[
"$mod, Return, exec, $term"
"$mod, Q, killactive,"
"$mod, M, exit,"
"$mod, E, exec, $fileManager"
"$mod, V, togglefloating,"
"$mod, R, exec, $menu"
"$mod, P, pseudo,"
"$mod, B, togglesplit,"
"$mod, W, exec, $browser"
"$mod, H, movefocus, l"
"$mod, L, movefocus, r"
"$mod, K, movefocus, u"
"$mod, J, movefocus, d"
"$mod SHIFT, K, movewindow, u"
"$mod SHIFT, J, movewindow, d"
"$mod SHIFT, H, movewindow, l"
"$mod SHIFT, L, movewindow, r"
"$mod CTRL, K, resizeactive, 0 -50"
"$mod CTRL, J, resizeactive, 0 50"
"$mod CTRL, H, resizeactive, -50 0"
"$mod CTRL, L, resizeactive, 50 0"
"$mod, S, togglespecialworkspace, magic"
"$mod SHIFT, S, movetoworkspace, special:magic"
"$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1"
"$mod, F, fullscreen, 0"
"$mod, Space, exec, pkill rofi || rofi -show drun"
"$mod, C, exec, pkill rofi || rofi -show calc -modi calc -no-show-match -no-sort"
]
++ (
# workspaces
builtins.concatLists (builtins.genList (
i: let
ws = i + 1;
in [
"$mod, ${toString ws}, workspace, ${toString ws}"
"$mod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}"
]
)
9)
)
++ [
"$mod, 0, workspace, 10"
"$mod, 0, movetoworkspace, 10"
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
bindel = [
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
",XF86MonBrightnessUp, exec, brightnessctl s 10%+"
",XF86MonBrightnessDown, exec, brightnessctl s 10%-"
];
bindl = [
",XF86AudioNext, exec, playerctl next"
",XF86AudioPause, exec, playerctl play-pause"
",XF86AudioPlay, exec, playerctl play-pause"
",XF86AudioPrev, exec, playerctl previous"
];
env = [
"HYPRCURSOR_THEME, Bibata-Original-Classic"
"HYPRCURSOR_SIZE, 24"
];
};
};
}
+7
View File
@@ -0,0 +1,7 @@
{...}: {
programs.hyprlock = {
enable = true;
settings = {
};
};
}
+25
View File
@@ -0,0 +1,25 @@
{myConfig, ...}: {
programs.kitty = {
enable = true;
themeFile = "kanagawa";
settings = {
confirm_os_window_close = 0;
window_padding_width = 10;
font_size = myConfig.general.terminal.Size;
font_family = myConfig.general.terminal.Font;
bold_font = "auto";
italic_font = "auto";
bold_italic_font = "auto";
# optimization
input_delay = 0;
repaint_delay = 2;
sync_to_monitor = false;
wayland_enable_ime = false;
allow_remote_control = true;
};
extraConfig = "include colors.conf";
};
}
+23
View File
@@ -0,0 +1,23 @@
{...}: {
programs.mangohud = {
enable = true;
enableSessionWide = true;
settings = {
toggle_hud = "Shift_R+F12";
full = true;
gpu_temp = true;
cpu_temp = true;
fps_only = false;
blacklist = [
"pamac-manager"
"lact"
"ghb"
"bitwig-studio"
"ptyxis"
"yumex"
];
};
};
}
+70
View File
@@ -0,0 +1,70 @@
[config]
# If set to enabled, it will check for updates when you run the matugen command, notifying you that an update is avaiable.
# WARNING: Matugen needs to be compiled with the `update-informer` feature for this to work.
version_check = false
[config.wallpaper]
# The base command to run for applying the wallpaper, shouldn't have spaces in it.
command = "swww"
# The arguments that will be provided to the command.
# Keywords like {{ mode }} or anything that works inside of hooks doesn't work here.
# The last argument will be the image path.
arguments = ["img", "--transition-type", "center", "--transition-fps", "120"]
# For example, killing the wallpaper daemon. Usage is like a normal hook.
# pre_hook = ""
[config.custom_keywords]
test = "aaaa"
[templates.name1]
# Relative paths will be resolved from the path `config.toml` is in.
input_path = "./colors.whatever-extension"
output_path = "./a/colors-generated.whatever-extension"
# This will use a different input path depending on what mode you use.
# input_path_modes = { dark = "./colors.whatever-extension", light = "./colors.whatever-extension" }
# This will compare all of the colors inside the array with the color you set as `compare_to`, and returns the closest color to it.
# You can then use `{{closest_color}}` inside templates and hooks.
colors_to_compare = [
{ name = "black", color = "#000000" },
{ name = "red", color = "#ff0000" },
{ name = "maroon", color = "#800000" },
{ name = "yellow", color = "#ffff00" },
{ name = "olive", color = "#808000" },
{ name = "lime", color = "#00ff00" },
{ name = "green", color = "#008000" },
{ name = "aqua", color = "#00ffff" },
{ name = "teal", color = "#008080" },
{ name = "blue", color = "#0000ff" },
{ name = "navy", color = "#000080" },
{ name = "fuchsia", color = "#ff00ff" },
{ name = "purple", color = "#800080" },
]
compare_to = "{{colors.primary.default.hex}}"
# Runs before the template is exported. You can use keywords here,
pre_hook = 'echo "source color {{colors.source_color.default.hex}}, source image {{image}}, closest color {{closest_color}}"'
# Runs after the template is exported. You can use keywords here.
post_hook = 'echo "after gen"'
# Only hex values
# https://m3.material.io/styles/color/advanced/adjust-existing-colors#1cc12e43-237b-45b9-8fe0-9a3549c1f61e
# Blend is set to true by default.
[config.custom_colors]
green = "#00ff00"
red = "#ff0000"
blue = { color = "#0000ff", blend = false }
### --- my config
[templates.kitty]
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/kitty.conf'
output_path = '~/.config/kitty/colors.conf'
post_hook = "kitty @ set-colors -a -c ~/.config/kitty/colors.conf"
[templates.ags]
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/ags.scss'
output_path = '~/.config/nixos/pkgs/ags/biscuit/colors.scss'
post_hook = "pkill gjs & ags run ~/.config/nixos/pkgs/ags/biscuit/app.ts & disown (jobs -p) &"
@@ -0,0 +1,3 @@
$background: {{colors.surface.dark.hex}};
$foreground: {{colors.on_surface.dark.hex}};
$primary: {{colors.primary.dark.hex}};
@@ -0,0 +1,41 @@
cursor {{colors.on_surface.default.hex}}
cursor_text_color {{colors.on_surface_variant.default.hex}}
foreground {{colors.on_surface.default.hex}}
background {{colors.surface.default.hex}}
selection_foreground {{colors.on_secondary.default.hex}}
selection_background {{colors.secondary_fixed_dim.default.hex}}
url_color {{colors.primary.default.hex}}
# black
color8 #262626
color0 #4c4c4c
# red
color1 #ac8a8c
color9 #c49ea0
# green
color2 #8aac8b
color10 #9ec49f
# yellow
color3 #aca98a
color11 #c4c19e
# blue
/* color4 #8f8aac */
color4 {{colors.primary.default.hex}}
color12 #a39ec4
# magenta
color5 #ac8aac
color13 #c49ec4
# cyan
color6 #8aacab
color14 #9ec3c4
# white
color15 #e7e7e7
color7 #f0f0f0
+11
View File
@@ -0,0 +1,11 @@
{
pkgs,
inputs,
system,
...
}: {
imports = [inputs.matugen.nixosModules.default];
home.file.".config/matugen/config.toml" = {
source = builtins.toPath ./custom/config.toml;
};
}
+12
View File
@@ -0,0 +1,12 @@
{
pkgs,
inputs,
...
}: let
nixovim = inputs.nixovim.packages.${pkgs.system}.default;
in {
home.packages = [
nixovim
pkgs.lazygit
];
}
+2
View File
@@ -0,0 +1,2 @@
{
}
+8
View File
@@ -0,0 +1,8 @@
{pkgs, ...}: {
programs.rofi = {
enable = true;
plugins = with pkgs; [
rofi-calc
];
};
}
+62
View File
@@ -0,0 +1,62 @@
{lib, ...}: {
programs.starship = {
enable = true;
settings = {
format = lib.concatStrings [
"$username"
"$hostname"
"$directory"
"$git_branch"
"$git_state"
"$git_status"
"$cmd_duration"
"$line_break"
"$python"
"$character"
];
directory = {
style = "blue";
};
character = {
success_symbol = "[](purple)";
error_symbol = "[](red)";
vimcmd_symbol = "[](green)";
};
git_branch = {
format = "[$branch]($style)";
style = "bright-black";
};
git_status = {
format = "[(*$conflicted$untracked$modified$staged$renamed$deleted) $ahead_behind$stashed]($style)";
style = "cyan";
conflicted = "";
untracked = "";
modified = "";
staged = "";
renamed = "";
deleted = "";
stashed = "";
};
git_state = {
format = "([$state( $progress_current/$progress_total)]($style)) ";
style = "bright-black";
};
cmd_duration = {
format = "[$duration]($style) ";
style = "yellow";
};
python = {
format = "[$virtualenv]($style) ";
style = "bright-black";
};
};
};
# home.file.".config/starship.toml" = {
# source = builtins.toPath ./pure.toml;
# };
}
+3
View File
@@ -0,0 +1,3 @@
{...}: {
services.swww.enable = true;
}
+40
View File
@@ -0,0 +1,40 @@
{
pkgs,
myConfig,
...
}: {
home.packages = with pkgs; [
zoxide
];
programs.zsh.enable = true;
programs.zoxide.enable = true;
programs.zsh = {
enableCompletion = false;
syntaxHighlighting.enable = false;
shellAliases = myConfig.general.terminal.Aliases;
history.size = 10000;
antidote = {
enable = true;
plugins = [
"MichaelAquilina/zsh-autoswitch-virtualenv"
"jeffreytse/zsh-vi-mode"
"zdharma-continuum/fast-syntax-highlighting kind:defer"
"zsh-users/zsh-autosuggestions kind:defer"
"zsh-users/zsh-history-substring-search kind:defer"
];
};
initContent = ''
# zsh-autocomplete
# bindkey -M menuselect '^M' .accept-line # run code when selected completion
autoload -Uz compinit
if [ "$(date +'%j')" != "$(stat -f '%Sm' -t '%j' ~/.zcompdump 2>/dev/null)" ]; then
compinit
else
compinit -C
fi
'';
};
}
+11
View File
@@ -0,0 +1,11 @@
keys:
- &admin_kenji age19pf5unuk3hcap0vrrlqr9lkh5eg24aw7z3skf0kverpjdqsltdxsdx88r8
creation_rules:
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
key_groups:
age:
- *admin_kenji
- path_regex: secrets/azmidi/[^/]+\.(yaml|json|env|ini)$
key_groups:
age:
- *admin_kenji
+1
View File
@@ -0,0 +1 @@
abcd: hello-world
+12 -1
View File
@@ -1,3 +1,14 @@
{pkgs, ...}: {
hardware.amdgpu.initrd.enable = true;
environment.systemPackages = with pkgs; [
glxinfo
vulkan-tools
lact
];
systemd.packages = with pkgs; [
lact
];
systemd.services.lactd = {
enable = true;
wantedBy = ["multi-user.target"];
};
}
+15
View File
@@ -0,0 +1,15 @@
{
programs.appimage = {
enable = true;
binfmt = true;
# If moondeck-buddy.AppImage requires specific libraries not included by default
# you might need to add them here. For example:
# package = pkgs.appimage-run.override {
# extraPkgs = pkgs: with pkgs; [
# # Add any missing libraries here, e.g.,
# # libthai
# # qt5.full
# ];
# };
};
}
+8 -30
View File
@@ -1,36 +1,14 @@
{pkgs, ...}: {
boot = {
consoleLogLevel = 3;
initrd.verbose = false;
kernelParams = [
"quiet"
"splash"
"intremap=on"
"boot.shell_on_fail"
"udev.log_priority=3"
"rd.systemd.show_status=auto"
];
loader = {
systemd-boot = {
enable = true;
};
efi = {
canTouchEfiVariables = true;
efiSysMountPoint = "/boot";
};
{...}: {
boot.loader = {
systemd-boot = {
enable = false;
};
initrd = {
systemd.enable = true;
efi = {
canTouchEfiVariables = true;
};
plymouth = {
grub = {
enable = true;
# themePackages = [
# (pkgs.adi1090x-plymouth-themes.override {
# selected_themes = ["circle_hud"];
# })
# ];
# theme = "circle_hud";
device = "nodev";
};
};
}
+107
View File
@@ -0,0 +1,107 @@
{
config,
pkgs,
...
}: let
lock-false = {
Value = false;
Status = "locked";
};
lock-true = {
Value = true;
Status = "locked";
};
in {
programs = {
firefox = {
enable = true;
languagePacks = ["en-US"];
/*
---- POLICIES ----
*/
# Check about:policies#documentation for options.
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
DisableFirefoxAccounts = true;
DisableAccounts = true;
DisableFirefoxScreenshots = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DontCheckDefaultBrowser = true;
DisplayBookmarksToolbar = "never"; # alternatives: "always" or "newtab"
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
SearchBar = "unified"; # alternative: "separate"
/*
---- EXTENSIONS ----
*/
# Check about:support for extension/add-on ID strings.
# Valid strings for installation_mode are "allowed", "blocked",
# "force_installed" and "normal_installed".
ExtensionSettings = {
"*".installation_mode = "blocked"; # blocks all addons except the ones specified below
# uBlock Origin:
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
};
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4493940/bitwarden_password_manager-2025.5.0.xpi";
installation_mode = "force_installed";
};
"tridactyl.vim@cmcaine.co.uk" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4405615/tridactyl_vim-1.24.2.xpi";
installation_mode = "force_installed";
};
# Privacy Badger:
# "jid1-MnnxcxisBPnSXQ@jetpack" = {
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
# installation_mode = "force_installed";
# };
# 1Password:
# "{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
# installation_mode = "force_installed";
};
};
/*
---- PREFERENCES ----
*/
# Check about:config for options.
preferences = {
# "browser.contentblocking.category" = {
# Value = "strict";
# Status = "locked";
# };
"browser.contentblocking.category" = "strict";
"extensions.pocket.enabled" = false;
"extensions.screenshots.disabled" = true;
"browser.topsites.contile.enabled" = false;
"browser.formfill.enable" = false;
"browser.search.suggest.enabled" = false;
"browser.search.suggest.enabled.private" = false;
"browser.urlbar.suggest.searches" = false;
"browser.urlbar.showSearchSuggestionsFirst" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.feeds.snippets" = false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.system.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
};
};
};
}
@@ -1,5 +1,5 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
git
busybox
];
}
+8
View File
@@ -0,0 +1,8 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
python3Full
python3Packages.build
python3Packages.pip
python3Packages.installer
];
}
+12
View File
@@ -0,0 +1,12 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
git
p7zip
tldr
jq
btop
rar
cloudflared
];
}
+9
View File
@@ -0,0 +1,9 @@
{...}: {
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
}
+13
View File
@@ -0,0 +1,13 @@
{
pkgs,
inputs,
...
}: let
unlisted-fonts = inputs.unlisted-fonts.packages.${pkgs.system};
in {
fonts.packages = with pkgs; [
unlisted-fonts.rubik
nerd-fonts.jetbrains-mono
material-symbols
];
}
-6
View File
@@ -1,6 +0,0 @@
{pkgs, ...}: {
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.jetbrains-mono
];
}
+16
View File
@@ -0,0 +1,16 @@
{
pkgs,
inputs,
...
}: {
programs.steam = {
enable = true;
gamescopeSession.enable = true;
};
environment.systemPackages = [
# inputs.nix-gaming.packages.${pkgs.system}.default
pkgs.protonup-qt
pkgs.geekbench
];
# programs.steam.platformOptimizations.enable = true;
}
+6
View File
@@ -0,0 +1,6 @@
{pkgs, ...}: {
hardware.graphics = {
enable = true;
enable32Bit = true; # Crucial for 32-bit games
};
}
+13 -9
View File
@@ -1,16 +1,20 @@
{pkgs, ...}: {
{
myConfig,
pkgs,
lib,
...
}: {
hardware = {
logitech.wireless.enable = myConfig.linux.logitech-hardware.enable;
bluetooth = {
enable = true;
powerOnBoot = true;
};
};
networking = {
networkmanager.enable = true;
firewall = {
enable = true;
allowedTCPPorts = [22 80];
allowedUDPPorts = [53];
};
};
environment.systemPackages = with pkgs;
[
]
++ lib.optionals (myConfig.linux.logitech-hardware.enable == true) [
solaar
];
}
-16
View File
@@ -1,16 +0,0 @@
{
specialArgs,
myConfig,
...
}: {
home-manager = {
backupFileExtension = "backup";
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = specialArgs;
users.${myConfig.nixos.username} = import ../home/hakase.nix;
};
imports = [
];
}
+4
View File
@@ -0,0 +1,4 @@
{myConfig, ...}: {
i18n.defaultLocale = "en_US.UTF-8";
time.timeZone = "${myConfig.general.Timezone}";
}
+4
View File
@@ -0,0 +1,4 @@
{myConfig, ...}: {
networking.hostName = "${myConfig.general.Hostname}";
networking.networkmanager.enable = true;
}
+9 -9
View File
@@ -1,16 +1,16 @@
{
pkgs,
myConfig,
...
}: {
programs = {
ssh.extraConfig = myConfig.ssh.extraConfig;
bash.interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]; then
{pkgs, ...}: {
programs.bash = {
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
programs = {
zsh.enable = true;
fish.enable = true;
};
}
+11 -2
View File
@@ -1,3 +1,12 @@
{
security.pam.services.greetd.enableGnomeKeyring = true;
{...}: {
security.polkit.enable = true;
security.polkit.extraConfig = ''
polkit.addRule(function(action, subject) {
if ((action.id == "org.corectrl.helper.gpu.set" ||
action.id == "org.corectrl.helper.gpu.apply") &&
subject.isInGroup("wheel")) {
return polkit.Result.YES;
}
});
'';
}
+4 -36
View File
@@ -1,41 +1,9 @@
{
pkgs,
myConfig,
...
}: {
{...}: {
services = {
greetd = {
enable = true;
settings = {
initial_session = {
command = "${pkgs.hyprland}/bin/Hyprland";
user = "${myConfig.nixos.username}";
};
default_session = {
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland";
};
};
};
# essentials
openssh.enable = true; # FIXME: remove when done
openssh.enable = true;
libinput.enable = true;
blueman.enable = true;
# for encryption support for unfree apps
gnome.gnome-keyring.enable = true;
# Complements printer support
printing.enable = true;
avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
pipewire = {
enable = true;
alsa = {
enable = true;
};
};
# sensors.enable = true;
};
}
+22
View File
@@ -0,0 +1,22 @@
{pkgs, ...}: {
environment.systemPackages = [
pkgs.pavucontrol
];
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
lowLatency = {
# enable this module
enable = true;
# defaults (no need to be set unless modified)
quantum = 64;
rate = 48000;
};
};
# make pipewire realtime-capable
security.rtkit.enable = true;
}
+11
View File
@@ -0,0 +1,11 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
sunshine
];
services.sunshine = {
enable = true;
autoStart = true;
capSysAdmin = true;
openFirewall = true;
};
}
+6
View File
@@ -0,0 +1,6 @@
{...}: {
console = {
font = "Lat2-Terminus16";
useXkbConfig = true;
};
}
-15
View File
@@ -1,15 +0,0 @@
{
pkgs,
myConfig,
...
}: {
users = {
users = {
${myConfig.nixos.username} = {
isNormalUser = true;
extraGroups = ["wheel" "networkmanager" "input" "video"];
useDefaultShell = true;
};
};
};
}
+19
View File
@@ -0,0 +1,19 @@
{
pkgs,
myConfig,
...
}: {
users = {
defaultUserShell = pkgs.${myConfig.general.terminal.Shell};
users = {
${myConfig.general.Username} = {
isNormalUser = true;
extraGroups = ["wheel" "networkmanager" "input" "corectrl" "video"];
initialHashedPassword = "$y$j9T$NHFtSwF4NJtEmgMjy4Xdg.$9WQltjEx3eEfZ7GbpGLW8lBhJtiXPOeIawrxdmx0.vB";
useDefaultShell = true;
packages = [
];
};
};
};
}
-11
View File
@@ -1,11 +0,0 @@
{pkgs, ...}: {
system.stateVersion = "25.05";
nixpkgs.config.allowUnfree = true;
nix = {
distributedBuilds = true;
settings = {
builders-use-substitutes = true;
experimental-features = ["nix-command" "flakes"];
};
};
}
+24
View File
@@ -0,0 +1,24 @@
{
pkgs,
inputs,
...
}: {
environment.systemPackages = with pkgs; [
wl-clipboard
hypridle
hyprlock
brightnessctl
];
programs.hyprland = {
enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
hardware = {
graphics.enable = true;
};
services = {
# displayManager.sddm.wayland = true;
displayManager.gdm.enable = true;
};
}