Compare commits
81 Commits
master
..
f9ab7268d2
| Author | SHA1 | Date | |
|---|---|---|---|
| f9ab7268d2 | |||
| 9e49f7f433 | |||
| 6621b7aa7b | |||
| bd5f8eec2b | |||
| 11b4f2410d | |||
| 4c0fe82453 | |||
| 830165aab8 | |||
| 93e5181cb6 | |||
| 7d5a24c7f8 | |||
| 882063c6c6 | |||
| 7fe00a1375 | |||
| 6d0963827b | |||
| 74bef0c5cd | |||
| 684ee6f23d | |||
| 3135e1cec4 | |||
| be4b66fdd2 | |||
| 8b66ff719b | |||
| edfa915586 | |||
| 3980c8ae88 | |||
| 348d2b46e6 | |||
| a4f41a0371 | |||
| 7cd5b88c45 | |||
| bf3e18d17c | |||
| 7af0cfd06d | |||
| 6628c4d589 | |||
| 260ca708a8 | |||
| ef7c3d23a3 | |||
| c2cb932c66 | |||
| 21b805741f | |||
| 44fa744312 | |||
| 445f70a5ec | |||
| eb9d3f2d16 | |||
| 66f6ae06d7 | |||
| 08868fc241 | |||
| 811011d6d6 | |||
| 7df49ad646 | |||
| 2caa21482f | |||
| 573231b99a | |||
| 04190ab15c | |||
| 63832528f2 | |||
| 18a687f114 | |||
| e0edcb77e1 | |||
| 9795d54dd4 | |||
| fd28c24d7a | |||
| e05f9d387e | |||
| 0ad80cf7a1 | |||
| c4639d88c5 | |||
| e4e90059e3 | |||
| 07879586b4 | |||
| 2d3ec51eb1 | |||
| 88eaa7a242 | |||
| 5faef18601 | |||
| c9d7932bda | |||
| 7ebc2f366b | |||
| 69b3d42f9a | |||
| 587266c904 | |||
| ded05e23fc | |||
| 07d33b60dc | |||
| cd647e7d7b | |||
| facce75d9f | |||
| ab6eb6db5b | |||
| a036da9b76 | |||
| b796260c7e | |||
| 4a23455792 | |||
| bbe6ef38b7 | |||
| 3b7ed586c6 | |||
| f9c11e0dc0 | |||
| 5e093d351b | |||
| 2c88a52d5a | |||
| b55c662a1b | |||
| 73b5b2c9f6 | |||
| f155563ca0 | |||
| 9b615f3825 | |||
| 56a829cdb3 | |||
| d7c275f6e9 | |||
| 420d4f173c | |||
| ec424cd6d8 | |||
| fc765ee94f | |||
| b86646816b | |||
| 12dbe7536f | |||
| 1bbac664e7 |
@@ -0,0 +1,7 @@
|
|||||||
|
keys:
|
||||||
|
- &user_kenji age1dhmt5tdyxd9zam542zkr9hq4tku7lzmf6j057sjtepk80deky5fqemczs5
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
key_groups:
|
||||||
|
- age:
|
||||||
|
- *user_kenji
|
||||||
@@ -1,63 +1,58 @@
|
|||||||
# Nix Sakamoto
|
# HakaseOS
|
||||||
A rewrite of the original Sakamoto NixOS configuration.
|
HakaseOS is an opinionated NixOS configuration heavily inspired by OmarchyOS.
|
||||||
|
|
||||||
## Installation
|
## Features
|
||||||
Installing Sakamoto Nix configuration may vary on your current operating system.
|
* Vim keybindings
|
||||||
|
* TUI applications
|
||||||
|
* Simple Setup
|
||||||
|
* Pre-configured Firefox
|
||||||
|
|
||||||
| Hosts | Description |
|
## How to Use SOPS
|
||||||
|----------|--------------|
|
SOPS is an important aspect of this operating system. Learning to use it is important for security and modularity. It is impertinent that you do not lose the `private key`, as it is irrecoverable.
|
||||||
| hakase | gaming desktop (linux) |
|
|
||||||
| sakamoto | \[unavailable] server that uses containers (linux) |
|
|
||||||
| nano | \[unavailable] windows configuration |
|
|
||||||
| macos | macos configuration |
|
|
||||||
|
|
||||||
**Note: Replace `${Hosts}` with one of the options from the table above.**
|
To get started, follow the instructions below.
|
||||||
|
1. Create a folder.
|
||||||
|
```sh
|
||||||
|
mkdir -p ~/.config/sops/age
|
||||||
|
```
|
||||||
|
2. Generate a private key using `age`
|
||||||
|
```sh
|
||||||
|
nix-shell -p age --run "age-keygen -o ~/.config/sops/age/keys.txt"
|
||||||
|
```
|
||||||
|
**OR**
|
||||||
|
Use `ssh-to-age` to convert `id_ed22519` to `age`.
|
||||||
|
```sh
|
||||||
|
nix-shell -p ssh-to-age --run "ssh-to-age -private-key -i ~/.ssh/id_ed25519 > ~/.config/sops/age/keys.txt"
|
||||||
|
```
|
||||||
|
There are other ways of generating a private key. Refer to [sops-nix](https://github.com/Mic92/sops-nix).
|
||||||
|
3. Get a **public key**.
|
||||||
|
```sh
|
||||||
|
nix-shell -p age --run "age-keygen -y ~/.config/sops/age/keys.txt"
|
||||||
|
```
|
||||||
|
4. On the same directory as `flake.nix`, create `.sops.yaml` and paste the following below.
|
||||||
|
```yaml
|
||||||
|
# This example uses YAML anchors which allows reuse of multiple keys
|
||||||
|
# without having to repeat yourself.
|
||||||
|
# Also see https://github.com/Mic92/dotfiles/blob/d6114726d859df36ccaa32891c4963ae5717ef7f/nixos/.sops.yaml
|
||||||
|
# for a more complex example.
|
||||||
|
keys:
|
||||||
|
- &admin_alice 2504791468b153b8a3963cc97ba53d1919c5dfd4
|
||||||
|
- &admin_bob age12zlz6lvcdk6eqaewfylg35w0syh58sm7gh53q5vvn7hd7c6nngyseftjxl
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
key_groups:
|
||||||
|
- pgp:
|
||||||
|
- *admin_alice
|
||||||
|
age:
|
||||||
|
- *admin_bob
|
||||||
|
|
||||||
### Linux Installation
|
```
|
||||||
|
Replace as according to your needs.
|
||||||
1. Install [Nix](https://nixos.org).
|
5. Create a sops `.yaml` file.
|
||||||
2. Clone this directory.
|
```sh
|
||||||
```sh
|
nix-shell -p sops --run "sops secrets/example.yaml"
|
||||||
$ git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos
|
```
|
||||||
```
|
NOTE: If you add a new host to your `.sops.yaml`, you will need to update the keys for all secrets.
|
||||||
3. Create a hardware-configuration.conf
|
```sh
|
||||||
```sh
|
nix-shell -p sops --run "sops updatekeys secrets/example.yaml"
|
||||||
$ sudo nixos-generate-config --dir ~/.config/nixos/hosts/${Hosts}/
|
```
|
||||||
```
|
|
||||||
4. ⚠️ Modify `config.nix` that suits your configuration. **Be sure to edit `config.nix`! Most especially `myConfig.essentials.Username`. Otherwise, your OS could break!!!**
|
|
||||||
5. Rebuild.
|
|
||||||
```sh
|
|
||||||
$ sudo nixos-rebuild switch --flake ~/.config/nixos/hosts/#${Hosts}
|
|
||||||
```
|
|
||||||
6. Install unstable channel (fixes `pkgs.fish` misconfiguration).
|
|
||||||
```sh
|
|
||||||
$ nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update
|
|
||||||
```
|
|
||||||
7. (Optional) You can install `proton-ge` by running the following command:
|
|
||||||
```sh
|
|
||||||
protonup
|
|
||||||
```
|
|
||||||
8. (Optional) Add Decky Loader for Steam via this command:
|
|
||||||
```sh
|
|
||||||
touch ~/.steam/steam/.cef-enable-remote-debugging
|
|
||||||
|
|
||||||
```
|
|
||||||
### MacOS (Darwin) Installation
|
|
||||||
1. Install [Nix](https://nixos.org).
|
|
||||||
2. Clone this directory.
|
|
||||||
```sh
|
|
||||||
$ git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos
|
|
||||||
```
|
|
||||||
3. ⚠️ Modify `config.nix` that suits your configuration. **Be sure to edit `config.nix`! Most especially `myConfig.essentials.Username`. Otherwise, configuration would not work!!!**
|
|
||||||
4. Rebuild.
|
|
||||||
```sh
|
|
||||||
$ sudo nix run nix-darwin --extra-experimental-features "nix-command flakes" -- switch --flake ~/.config/nixos#macos
|
|
||||||
```
|
|
||||||
|
|
||||||
## Problems:
|
|
||||||
* XDG defaults (file manager default is terminal)
|
|
||||||
* File Manager must be TUI
|
|
||||||
* Bluetooth and WiFi should open at TUI
|
|
||||||
* Steam and Heroic incompatible
|
|
||||||
* Broken switchwall.sh
|
|
||||||
* Box fonts
|
|
||||||
|
|||||||
@@ -1,16 +1,47 @@
|
|||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = true;
|
enable = true;
|
||||||
languagePacks = [
|
languagePacks = ["en-US"];
|
||||||
"en-US"
|
|
||||||
];
|
|
||||||
profiles = {
|
profiles = {
|
||||||
hakase = {
|
hakase = {
|
||||||
search.force = true;
|
search.force = true;
|
||||||
isDefault = true;
|
isDefault = true;
|
||||||
search.default = "ddg";
|
search.default = "ddg";
|
||||||
|
|
||||||
|
# Full declarative mode enabled.
|
||||||
|
# Note: Manual bookmarks added in the UI will be overwritten on next rebuild.
|
||||||
|
bookmarks = {
|
||||||
|
force = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
name = "Toolbar Bookmarks";
|
||||||
|
toolbar = true;
|
||||||
|
bookmarks = myConfig.firefox.bookmarks;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
# --- Privacy & Hardening ---
|
||||||
"browser.contentblocking.category" = "strict";
|
"browser.contentblocking.category" = "strict";
|
||||||
|
"privacy.trackingprotection.enabled" = true;
|
||||||
|
"privacy.resistFingerprinting" = true; # Note: Spoofs timezone and caps FPS to 60
|
||||||
|
"geo.enabled" = false;
|
||||||
|
"media.peerconnection.enabled" = false; # Prevents WebRTC IP leaks
|
||||||
|
"network.dns.disablePrefetch" = true;
|
||||||
|
"network.prefetch-next" = false;
|
||||||
|
|
||||||
|
# --- NixOS / Hyprland Integration ---
|
||||||
|
"widget.use-xdg-desktop-portal.file-picker" = 1; # Use native file picker
|
||||||
|
|
||||||
|
# --- UI & Behavior ---
|
||||||
|
"browser.compactmode.show" = true;
|
||||||
|
"browser.tabs.closeWindowWithLastTab" = false;
|
||||||
"extensions.pocket.enabled" = false;
|
"extensions.pocket.enabled" = false;
|
||||||
"extensions.screenshots.disabled" = true;
|
"extensions.screenshots.disabled" = true;
|
||||||
"browser.topsites.contile.enabled" = false;
|
"browser.topsites.contile.enabled" = false;
|
||||||
@@ -28,31 +59,14 @@
|
|||||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||||
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
|
|
||||||
|
# --- Homepage & Navigation ---
|
||||||
"browser.startup.homepage" = "https://dash.sakamoto.dev";
|
"browser.startup.homepage" = "https://dash.sakamoto.dev";
|
||||||
"browser.newtabpage.pinned" = [
|
"browser.newtabpage.pinned" = myConfig.firefox.newtabpage;
|
||||||
{
|
|
||||||
title = "Dashboard";
|
# --- DNS over HTTPS (Quad9) ---
|
||||||
url = "https://dash.sakamoto.dev";
|
"network.trr.mode" = 2; # Use DoH with system fallback
|
||||||
}
|
"network.trr.uri" = "https://dns.quad9.net/dns-query";
|
||||||
];
|
|
||||||
};
|
|
||||||
bookmarks = {
|
|
||||||
force = true;
|
|
||||||
settings = [
|
|
||||||
{
|
|
||||||
toolbar = true;
|
|
||||||
bookmarks = [
|
|
||||||
{
|
|
||||||
name = "Home Manager";
|
|
||||||
url = "https://mynixos.com/home-manager/options/programs";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "YouTube";
|
|
||||||
url = "https://youtube.com";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -62,7 +76,7 @@
|
|||||||
DisableFirefoxStudies = true;
|
DisableFirefoxStudies = true;
|
||||||
EnableTrackingProtection = {
|
EnableTrackingProtection = {
|
||||||
Value = true;
|
Value = true;
|
||||||
Locked = true;
|
Locked = false;
|
||||||
Cryptomining = true;
|
Cryptomining = true;
|
||||||
Fingerprinting = true;
|
Fingerprinting = true;
|
||||||
};
|
};
|
||||||
@@ -73,40 +87,31 @@
|
|||||||
OverrideFirstRunPage = "";
|
OverrideFirstRunPage = "";
|
||||||
OverridePostUpdatePage = "";
|
OverridePostUpdatePage = "";
|
||||||
DontCheckDefaultBrowser = true;
|
DontCheckDefaultBrowser = true;
|
||||||
DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab"
|
DisplayBookmarksToolbar = "always";
|
||||||
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
|
SearchBar = "unified";
|
||||||
SearchBar = "unified"; # alternative: "separate"
|
|
||||||
|
# Power User Messaging
|
||||||
|
UserMessaging = {
|
||||||
|
ExtensionRecommendations = false;
|
||||||
|
SkipOnboarding = true;
|
||||||
|
FeatureRecommendations = false;
|
||||||
|
UrlbarInterventions = false;
|
||||||
|
WhatsNew = false;
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
---- EXTENSIONS ----
|
|
||||||
*/
|
|
||||||
# Check about:support for extension/add-on ID strings.
|
|
||||||
# Valid strings for installation_mode are "allowed", "blocked",
|
|
||||||
# "force_installed" and "normal_installed".
|
|
||||||
ExtensionSettings = {
|
ExtensionSettings = {
|
||||||
"*".installation_mode = "allowed";
|
|
||||||
"uBlock0@raymondhill.net" = {
|
"uBlock0@raymondhill.net" = {
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||||
installation_mode = "force_installed";
|
installation_mode = "force_installed";
|
||||||
};
|
};
|
||||||
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/file/4493940/bitwarden_password_manager-2025.5.0.xpi";
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi";
|
||||||
installation_mode = "force_installed";
|
installation_mode = "force_installed";
|
||||||
};
|
};
|
||||||
"tridactyl.vim@cmcaine.co.uk" = {
|
"tridactyl.vim@cmcaine.co.uk" = {
|
||||||
install_url = "https://addons.mozilla.org/firefox/downloads/file/4405615/tridactyl_vim-1.24.2.xpi";
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/tridactyl-vim/latest.xpi";
|
||||||
installation_mode = "force_installed";
|
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";
|
|
||||||
# };
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
set fish_greeting
|
set fish_greeting
|
||||||
fish_vi_key_bindings
|
fish_vi_key_bindings
|
||||||
zoxide init fish | source
|
zoxide init fish | source
|
||||||
|
zoxide init fish --cmd cd | source
|
||||||
'';
|
'';
|
||||||
shellAliases = myConfig.general.Terminal.aliases;
|
shellAliases = myConfig.terminal.aliases;
|
||||||
|
|
||||||
plugins = with pkgs.fishPlugins; [
|
plugins = with pkgs.fishPlugins; [
|
||||||
];
|
];
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
gemini-cli
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
python313Full
|
git
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
user.name = "${myConfig.git.username}";
|
||||||
|
user.email = "${myConfig.git.email}";
|
||||||
|
init.defaultBranch = "${myConfig.git.defaultBranch}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
myConfig,
|
||||||
|
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;
|
||||||
|
withUWSM = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.hyprpicker
|
||||||
|
pkgs.hyprlock
|
||||||
|
pkgs.hypridle
|
||||||
|
pkgs.hyprpaper
|
||||||
|
pkgs.hyprsunset
|
||||||
|
pkgs.hyprpolkitagent
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.terminal-exec = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default = myConfig.terminal.default;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# systemd.user.services.hyprpolkitagent = {
|
||||||
|
# description = "Hyprland Polkit Agent";
|
||||||
|
# wantedBy = ["graphical-session.target"];
|
||||||
|
# serviceConfig = {
|
||||||
|
# ExecStart = "${pkgs.hyprpolkitagent}/libexec/hyprpolkitagent";
|
||||||
|
# Restart = "on-failure";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hypr/binds.nix
|
||||||
|
./hypr/general.nix
|
||||||
|
./hypr/exec.nix
|
||||||
|
];
|
||||||
|
wayland.windowManager.hyprland.enable = true;
|
||||||
|
wayland.windowManager.hyprland.systemd.enable = false; # for UWSM support...
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
bindd =
|
||||||
|
[
|
||||||
|
# essential
|
||||||
|
"SUPER, Return, Open Terminal, exec, uwsm app -- xdg-terminal-exec"
|
||||||
|
"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, uwsm app -- firefox" # FIXME: must be xdg-open
|
||||||
|
"SUPER, SPACE, App Launcher, exec, uwsm app -- walker"
|
||||||
|
|
||||||
|
# [Workspaces] Toggle between most recent workspaces
|
||||||
|
"SUPER, Tab, Cycle workspaces, workspace, previous"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# Generate binds for Super + [1-10] to switch workspaces
|
||||||
|
# and Super + Shift + [1-10] to move window to workspace
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
i: let
|
||||||
|
ws = i + 1;
|
||||||
|
key = toString (
|
||||||
|
if ws == 10
|
||||||
|
then 0
|
||||||
|
else ws
|
||||||
|
);
|
||||||
|
in [
|
||||||
|
"SUPER, ${key}, Switch to workspace ${toString ws}, workspace, ${toString ws}"
|
||||||
|
"SUPER SHIFT, ${key}, Move window to workspace ${toString ws}, movetoworkspace, ${toString ws}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
10)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
exec-once = [
|
||||||
|
"uwsm app -- waybar"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 15;
|
||||||
|
};
|
||||||
|
monitor = myConfig.hyprland.monitors;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
services.hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
preload = ["/home/${myConfig.nixos.username}/Pictures/Wallpapers/nord-1.png"];
|
||||||
|
wallpaper = [
|
||||||
|
"HDMI-A-1,/home/${myConfig.nixos.username}/Pictures/Wallpapers/nord-1.png"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
cloudflared
|
jellyfin-tui
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
|
||||||
inputs,
|
inputs,
|
||||||
system,
|
system,
|
||||||
...
|
...
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
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)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{inputs, ...}: {
|
||||||
|
imports = [
|
||||||
|
inputs.stylix.homeModules.stylix
|
||||||
|
];
|
||||||
|
stylix = {
|
||||||
|
enable = true;
|
||||||
|
autoEnable = false;
|
||||||
|
image = ../../assets/Wallpapers/nord-1.png;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
services.walker = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
app_launch_prefix = "";
|
||||||
|
as_window = false;
|
||||||
|
close_when_open = false;
|
||||||
|
disable_click_to_close = false;
|
||||||
|
force_keyboard_focus = false;
|
||||||
|
hotreload_theme = false;
|
||||||
|
locale = "";
|
||||||
|
monitor = "";
|
||||||
|
terminal_title_flag = "";
|
||||||
|
theme = "default";
|
||||||
|
timeout = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
bibata-cursors
|
pamixer
|
||||||
|
wiremix
|
||||||
|
impala
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,170 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./style.nix
|
||||||
|
];
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
reload_style_on_change = true;
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
spacing = 0;
|
||||||
|
height = 26;
|
||||||
|
|
||||||
|
modules-left = ["custom/omarchy" "hyprland/workspaces"];
|
||||||
|
modules-center = ["clock" "custom/update" "custom/screenrecording-indicator"];
|
||||||
|
modules-right = [
|
||||||
|
"group/tray-expander"
|
||||||
|
"bluetooth"
|
||||||
|
"network"
|
||||||
|
"pulseaudio"
|
||||||
|
"cpu"
|
||||||
|
"battery"
|
||||||
|
];
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
on-click = "activate";
|
||||||
|
format = "{icon}";
|
||||||
|
format-icons = {
|
||||||
|
"default" = "";
|
||||||
|
"1" = "1";
|
||||||
|
"2" = "2";
|
||||||
|
"3" = "3";
|
||||||
|
"4" = "4";
|
||||||
|
"5" = "5";
|
||||||
|
"6" = "6";
|
||||||
|
"7" = "7";
|
||||||
|
"8" = "8";
|
||||||
|
"9" = "9";
|
||||||
|
"10" = "0";
|
||||||
|
"active" = "";
|
||||||
|
};
|
||||||
|
persistent-workspaces = {
|
||||||
|
"1" = [];
|
||||||
|
"2" = [];
|
||||||
|
"3" = [];
|
||||||
|
"4" = [];
|
||||||
|
"5" = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/omarchy" = {
|
||||||
|
format = "<span font='omarchy'>\ue900</span>";
|
||||||
|
on-click = "omarchy-menu";
|
||||||
|
on-click-right = "xdg-terminal-exec";
|
||||||
|
tooltip-format = "Omarchy Menu\n\nSuper + Alt + Space";
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/update" = {
|
||||||
|
format = "";
|
||||||
|
exec = "omarchy-update-available";
|
||||||
|
on-click = "omarchy-launch-floating-terminal-with-presentation omarchy-update";
|
||||||
|
tooltip-format = "Omarchy update available";
|
||||||
|
signal = 7;
|
||||||
|
interval = 21600;
|
||||||
|
};
|
||||||
|
|
||||||
|
"cpu" = {
|
||||||
|
interval = 5;
|
||||||
|
format = "";
|
||||||
|
on-click = "omarchy-launch-or-focus-tui btop";
|
||||||
|
on-click-right = "alacritty";
|
||||||
|
};
|
||||||
|
|
||||||
|
"clock" = {
|
||||||
|
format = "{:%H:%M %a %b %d}";
|
||||||
|
format-alt = "{:L%d %B W%V %Y}";
|
||||||
|
tooltip = false;
|
||||||
|
on-click-right = "omarchy-launch-floating-terminal-with-presentation omarchy-tz-select";
|
||||||
|
};
|
||||||
|
|
||||||
|
"network" = {
|
||||||
|
format-icons = ["" "" "" "" ""];
|
||||||
|
format = "{icon}";
|
||||||
|
format-wifi = "{icon}";
|
||||||
|
format-ethernet = "";
|
||||||
|
format-disconnected = "";
|
||||||
|
tooltip-format-wifi = "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}";
|
||||||
|
tooltip-format-ethernet = "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}";
|
||||||
|
tooltip-format-disconnected = "Disconnected";
|
||||||
|
interval = 3;
|
||||||
|
spacing = 1;
|
||||||
|
on-click = "omarchy-launch-wifi";
|
||||||
|
};
|
||||||
|
|
||||||
|
"battery" = {
|
||||||
|
format = "{capacity}% {icon}";
|
||||||
|
format-discharging = "{icon}";
|
||||||
|
format-charging = "{icon}";
|
||||||
|
format-plugged = "";
|
||||||
|
format-icons = {
|
||||||
|
charging = ["" "" "" "" "" "" "" "" "" ""];
|
||||||
|
default = ["" "" "" "" "" "" "" "" "" ""];
|
||||||
|
};
|
||||||
|
format-full = "";
|
||||||
|
tooltip-format-discharging = "{power:>1.0f}W↓ {capacity}%";
|
||||||
|
tooltip-format-charging = "{power:>1.0f}W↑ {capacity}%";
|
||||||
|
interval = 5;
|
||||||
|
on-click = "omarchy-menu power";
|
||||||
|
states = {
|
||||||
|
warning = 20;
|
||||||
|
critical = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"bluetooth" = {
|
||||||
|
format = "";
|
||||||
|
format-disabled = "";
|
||||||
|
format-connected = "";
|
||||||
|
format-no-controller = "";
|
||||||
|
tooltip-format = "Devices connected: {num_connections}";
|
||||||
|
on-click = "omarchy-launch-bluetooth";
|
||||||
|
};
|
||||||
|
|
||||||
|
"pulseaudio" = {
|
||||||
|
format = "{icon}";
|
||||||
|
on-click = "omarchy-launch-or-focus-tui wiremix";
|
||||||
|
on-click-right = "pamixer -t";
|
||||||
|
tooltip-format = "Playing at {volume}%";
|
||||||
|
scroll-step = 5;
|
||||||
|
format-muted = "";
|
||||||
|
format-icons = {
|
||||||
|
default = ["" "" ""];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"group/tray-expander" = {
|
||||||
|
orientation = "inherit";
|
||||||
|
drawer = {
|
||||||
|
transition-duration = 600;
|
||||||
|
children-class = "tray-group-item";
|
||||||
|
};
|
||||||
|
modules = ["custom/expand-icon" "tray"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/expand-icon" = {
|
||||||
|
format = "";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"custom/screenrecording-indicator" = {
|
||||||
|
on-click = "omarchy-cmd-screenrecord";
|
||||||
|
# Note: $OMARCHY_PATH must be defined in your environment
|
||||||
|
exec = "$OMARCHY_PATH/default/waybar/indicators/screen-recording.sh";
|
||||||
|
signal = 8;
|
||||||
|
return-type = "json";
|
||||||
|
};
|
||||||
|
|
||||||
|
"tray" = {
|
||||||
|
icon-size = 12;
|
||||||
|
spacing = 17;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
programs.waybar = {
|
||||||
|
style = ''
|
||||||
|
|
||||||
|
* {
|
||||||
|
background-color: #cdd6f4;
|
||||||
|
color: #181824;
|
||||||
|
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
min-height: 0;
|
||||||
|
font-family: 'JetBrainsMono Nerd Font';
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-right {
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
all: initial;
|
||||||
|
padding: 0 6px;
|
||||||
|
margin: 0 1.5px;
|
||||||
|
min-width: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.empty {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
#cpu,
|
||||||
|
#battery,
|
||||||
|
#pulseaudio,
|
||||||
|
#custom-omarchy,
|
||||||
|
#custom-screenrecording-indicator,
|
||||||
|
#custom-update {
|
||||||
|
min-width: 12px;
|
||||||
|
margin: 0 7.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray {
|
||||||
|
margin-right: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#bluetooth {
|
||||||
|
margin-right: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#network {
|
||||||
|
margin-right: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-expand-icon {
|
||||||
|
margin-right: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tooltip {
|
||||||
|
padding: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-update {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
margin-left: 8.75px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-screenrecording-indicator {
|
||||||
|
min-width: 12px;
|
||||||
|
margin-left: 8.75px;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-screenrecording-indicator.active {
|
||||||
|
color: #a55555;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.yazi = {
|
||||||
|
enable = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
settings = {
|
||||||
|
manager = {
|
||||||
|
show_hidden = true;
|
||||||
|
sort_by = "natural";
|
||||||
|
sort_dir_first = true;
|
||||||
|
linemode = "size";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -2,7 +2,8 @@
|
|||||||
programs.zoxide = {
|
programs.zoxide = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
enableZshIntegration = true;
|
options = [
|
||||||
enableBashIntegration = true;
|
"--cmd cd"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/1-Pawel-Czerwinski-Abstract-Purple-Blue.jpg
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/1-everforest.jpg
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/gruvbox-1.jpg
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/kanagawa-1.png
|
||||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 3.8 KiB |
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/nix/store/yckzy9k5i7pvmlk6xjkdj4wwbfms1zpl-home-manager-files/Pictures/Wallpapers/nord-1.png
|
||||||
+46
-79
@@ -1,88 +1,55 @@
|
|||||||
{
|
{
|
||||||
myConfig = {
|
myConfig = {
|
||||||
macos = {
|
|
||||||
Username = "lsoriano";
|
|
||||||
};
|
|
||||||
essentials = {
|
|
||||||
# !!! replace it with your own, else system might malfunction.
|
|
||||||
Username = "kenji";
|
|
||||||
};
|
|
||||||
general = {
|
|
||||||
Terminal = {
|
|
||||||
font = "JetBrainsMono Nerd Font";
|
|
||||||
size = "18";
|
|
||||||
shell = "fish"; # or zsh
|
|
||||||
aliases = {};
|
|
||||||
};
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
nixos = {
|
nixos = {
|
||||||
Hostname = "hakase";
|
username = "kenji";
|
||||||
Timezone = "America/Chicago";
|
hostname = "hakase";
|
||||||
enableSteamOS = false;
|
timezone = "America/Chicago";
|
||||||
|
shell = "fish"; # FIXME: unassigned variable
|
||||||
|
};
|
||||||
|
git = {
|
||||||
|
username = "kenji";
|
||||||
|
email = "kenji@hakase";
|
||||||
|
defaultBranch = "master";
|
||||||
|
};
|
||||||
|
ssh = {
|
||||||
|
# FIXME: anonymize
|
||||||
|
extraConfig = ''
|
||||||
|
Host macair
|
||||||
|
User biscuit
|
||||||
|
HostName 192.168.68.81
|
||||||
|
|
||||||
Boot = {
|
Host gitea.sakamoto.dev
|
||||||
mode = "systemd"; # systemd or grub
|
User kenji
|
||||||
};
|
ProxyCommand cloudflared access ssh --hostname %h
|
||||||
Apps = {
|
HostName gitea.sakamoto.dev
|
||||||
packages = pkgs:
|
'';
|
||||||
with pkgs; [
|
};
|
||||||
adwaita-icon-theme
|
terminal = {
|
||||||
jellyfin-media-player
|
default = ["ghostty.desktop"];
|
||||||
delfin
|
aliases = {
|
||||||
goverlay
|
update = "sudo nixos-rebuild switch --flake ~/.config/nixos-new/#hakase";
|
||||||
geekbench_6
|
|
||||||
gparted
|
|
||||||
ntfs3g
|
|
||||||
feishin
|
|
||||||
discord
|
|
||||||
xfce.thunar
|
|
||||||
];
|
|
||||||
};
|
|
||||||
Hyprland = {
|
|
||||||
monitors = [
|
|
||||||
# "DP-2, highres@165,0x1080,1,vrr,1"
|
|
||||||
# "DP-2, highres@180,0x1080,1,cm,hdr, sdrbrightness, 1.5, sdrsaturation, 0.98"
|
|
||||||
"DP-2, highres@180,0x1080,1,bitdepth,10,cm,hdr,sdrbrightness,1.4,sdrsaturation,0.98"
|
|
||||||
"DP-1, highres@highrr,760x0,1"
|
|
||||||
"HDMI-A-1, 1920x1080@120, 20000x20000,1"
|
|
||||||
# "HDMI-A-1, disabled"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
Git = {
|
|
||||||
user = "kenji";
|
|
||||||
email = "kenji@hakase";
|
|
||||||
defaultBranch = "master";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
optionals = {
|
hyprland = {
|
||||||
Builds = {
|
monitors = ["HDMI-A-1, 1920x1080@120, auto, 1"];
|
||||||
trustedUsers = [
|
};
|
||||||
"@groups"
|
firefox = {
|
||||||
];
|
bookmarks = [
|
||||||
buildMachines = [
|
{
|
||||||
{
|
name = "Home Manager";
|
||||||
hostName = "";
|
url = "https://mynixos.com/home-manager/options/programs";
|
||||||
sshUser = "";
|
}
|
||||||
sshKey = "";
|
{
|
||||||
system = "";
|
name = "YouTube";
|
||||||
supportedFeatures = ["apple-virt" "big-parallel" "kvm" "nixos-test"];
|
url = "https://youtube.com";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
newtabpage = [
|
||||||
Ssh = {
|
{
|
||||||
extraConfig = ''
|
title = "Dashboard";
|
||||||
Host macair
|
url = "https://dash.sakamoto.dev";
|
||||||
User biscuit
|
}
|
||||||
HostName 192.168.68.81
|
];
|
||||||
|
|
||||||
Host gitea.sakamoto.dev
|
|
||||||
User kenji
|
|
||||||
ProxyCommand cloudflared access ssh --hostname %h
|
|
||||||
HostName gitea.sakamoto.dev
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+391
-1697
File diff suppressed because it is too large
Load Diff
@@ -1,56 +1,28 @@
|
|||||||
{
|
{
|
||||||
description = "A rewrite of the original Sakamoto NixOS config.";
|
description = "Hakase Configuration";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
|
||||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
|
||||||
|
|
||||||
jovian = {
|
|
||||||
url = "github:Jovian-Experiments/Jovian-NixOS";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
matugen = {
|
|
||||||
url = "github:/InioX/Matugen";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
# ref = "refs/tags/matugen-v0.10.0";
|
|
||||||
};
|
|
||||||
|
|
||||||
erosanix = {
|
|
||||||
url = "github:emmanuelrosa/erosanix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
hyprland = {
|
|
||||||
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
hyprland = {
|
||||||
darwin = {
|
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
url = "github:lnl7/nix-darwin";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
nixovim = {
|
nixovim = {
|
||||||
|
# FIXME: treesitter does not install automatically (disabled due to read-only problems)
|
||||||
url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
|
url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
sops-nix = {
|
||||||
illogical-impulse = {
|
url = "github:Mic92/sops-nix";
|
||||||
url = "git+https://git.sakamoto.dev/kenji/illogical-impulse.git";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
stylix = {
|
||||||
omarchy-nix = {
|
url = "github:nix-community/stylix";
|
||||||
url = "git+https://git.sakamoto.dev/kenji/omarchy-nix.git";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.home-manager.follows = "home-manager";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -58,13 +30,9 @@
|
|||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
home-manager,
|
home-manager,
|
||||||
darwin,
|
stylix,
|
||||||
chaotic,
|
nixovim, # FIXME: should be inside of modules
|
||||||
jovian,
|
sops-nix,
|
||||||
nixovim,
|
|
||||||
illogical-impulse,
|
|
||||||
erosanix,
|
|
||||||
omarchy-nix,
|
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs: let
|
||||||
config = import ./config.nix;
|
config = import ./config.nix;
|
||||||
@@ -79,67 +47,11 @@
|
|||||||
hakase = nixpkgs.lib.nixosSystem {
|
hakase = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = args;
|
specialArgs = args;
|
||||||
modules = [
|
modules = [
|
||||||
chaotic.nixosModules.default
|
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
jovian.nixosModules.default
|
sops-nix.nixosModules.sops
|
||||||
erosanix.nixosModules.protonvpn
|
|
||||||
./hosts/hakase/configuration.nix
|
./hosts/hakase/configuration.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
hakase-omarchy = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = args;
|
|
||||||
modules = [
|
|
||||||
chaotic.nixosModules.default
|
|
||||||
omarchy-nix.nixosModules.default
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
./hosts/hakase-omarchy/configuration.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
vanilla = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = args;
|
|
||||||
modules = [
|
|
||||||
./hosts/vanilla/configuration.nix
|
|
||||||
# nixovim.packages.${system}.full
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
homeConfigurations = {
|
|
||||||
hakase = home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
config.allowUnfree = true;
|
|
||||||
extraSpecialArgs = args;
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
./home/hakase.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
hakase-omarchy = home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
config.allowUnfree = true;
|
|
||||||
extraSpecialArgs = args;
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
./home/hakase-omarchy.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
darwinConfigurations = {
|
|
||||||
macos = darwin.lib.darwinSystem {
|
|
||||||
system = "aarch64-darwin";
|
|
||||||
specialArgs =
|
|
||||||
{
|
|
||||||
inherit inputs;
|
|
||||||
system = "aarch64-darwin";
|
|
||||||
}
|
|
||||||
// config;
|
|
||||||
modules = [
|
|
||||||
home-manager.darwinModules.home-manager
|
|
||||||
./hosts/macos/darwin.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
../modules/home/terminal.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
home.packages = [];
|
|
||||||
home.stateVersion = "25.11";
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
# ... your other imports
|
|
||||||
inputs.omarchy-nix.homeManagerModules.default # Assuming you have a system module too
|
|
||||||
];
|
|
||||||
|
|
||||||
# ADD THIS BLOCK
|
|
||||||
|
|
||||||
home.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
+6
-11
@@ -1,17 +1,12 @@
|
|||||||
{
|
{pkgs, ...}: {
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
info = import ../config.nix;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
# inputs.chaotic.homeManagerModules.default
|
|
||||||
../modules/home/desktop.nix
|
|
||||||
../modules/home/terminal.nix
|
../modules/home/terminal.nix
|
||||||
../modules/home/apps.nix
|
../modules/home/apps.nix
|
||||||
|
../modules/home/apps-optional.nix
|
||||||
|
../modules/home/hyprland.nix
|
||||||
|
../modules/home/waybar.nix
|
||||||
|
../modules/home/theme.nix
|
||||||
];
|
];
|
||||||
# nix.package = pkgs.nix;
|
|
||||||
home.packages = info.myConfig.nixos.Apps.packages pkgs;
|
|
||||||
home.stateVersion = "25.05";
|
home.stateVersion = "25.05";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,156 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
specialArgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
../../modules/default/boot.nix
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
time.timeZone = "${myConfig.nixos.Timezone}";
|
|
||||||
nixpkgs.config.allowUnfree = myConfig.general.allowUnfree;
|
|
||||||
|
|
||||||
console = {
|
|
||||||
earlySetup = false;
|
|
||||||
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
|
||||||
packages = with pkgs; [terminus_font];
|
|
||||||
useXkbConfig = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
users = {
|
|
||||||
# defaultUserShell = pkgs.${myConfig.general.Terminal.shell};
|
|
||||||
users = {
|
|
||||||
${myConfig.essentials.Username} = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = ["wheel" "networkmanager" "input" "video"];
|
|
||||||
initialHashedPassword = "$y$j9T$NHFtSwF4NJtEmgMjy4Xdg.$9WQltjEx3eEfZ7GbpGLW8lBhJtiXPOeIawrxdmx0.vB";
|
|
||||||
useDefaultShell = true;
|
|
||||||
packages = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
omarchy = {
|
|
||||||
full_name = "${myConfig.essentials.Username}"; # Or variable
|
|
||||||
email_address = "${myConfig.nixos.Git.email}";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
backupFileExtension = "backup";
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
extraSpecialArgs = specialArgs;
|
|
||||||
users.${myConfig.essentials.Username} = import ../../home/hakase-omarchy.nix;
|
|
||||||
};
|
|
||||||
networking = {
|
|
||||||
useDHCP = false;
|
|
||||||
wireless = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
networkmanager.enable = true;
|
|
||||||
firewall = {
|
|
||||||
enable = true;
|
|
||||||
allowedTCPPorts = [22 80 531];
|
|
||||||
allowedUDPPorts = [53 531 5353];
|
|
||||||
};
|
|
||||||
proxy = {
|
|
||||||
default = null;
|
|
||||||
noProxy = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
# network.enable = true;
|
|
||||||
# extraConfig = "DefaultTimeoutStopSec=5s";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
settings = {
|
|
||||||
experimental-features = ["nix-command" "flakes"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
#
|
|
||||||
# hardware = {
|
|
||||||
# enableAllFirmware = true;
|
|
||||||
# logitech.wireless.enable = true;
|
|
||||||
#
|
|
||||||
# bluetooth = {
|
|
||||||
# enable = true;
|
|
||||||
# powerOnBoot = true;
|
|
||||||
# settings = {
|
|
||||||
# General = {
|
|
||||||
# # AutoEnable = true;
|
|
||||||
# Experimental = true;
|
|
||||||
# MultiProfile = "multiple";
|
|
||||||
# FastConnectable = true;
|
|
||||||
# # ControllerMode = "bredr";
|
|
||||||
# };
|
|
||||||
# Policy = {
|
|
||||||
# AutoEnable = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
#
|
|
||||||
# graphics = {
|
|
||||||
# enable = true;
|
|
||||||
# enable32Bit = true;
|
|
||||||
# };
|
|
||||||
#
|
|
||||||
# xone.enable = true;
|
|
||||||
# };
|
|
||||||
#
|
|
||||||
|
|
||||||
# security.rtkit.enable = true;
|
|
||||||
|
|
||||||
# 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
|
|
||||||
# '';
|
|
||||||
# zsh.enable = true;
|
|
||||||
# fish.enable = true;
|
|
||||||
#
|
|
||||||
# appimage = {
|
|
||||||
# enable = true;
|
|
||||||
# binfmt = true;
|
|
||||||
# };
|
|
||||||
#
|
|
||||||
# ssh.extraConfig = myConfig.optionals.Ssh.extraConfig;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# jovian.steamos.enableMesaPatches = true;
|
|
||||||
#
|
|
||||||
# services = {
|
|
||||||
# displayManager.sessionPackages = [
|
|
||||||
# inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
|
|
||||||
# ];
|
|
||||||
#
|
|
||||||
# getty.autologinUser = lib.mkOverride 10 "${myConfig.essentials.Username}";
|
|
||||||
#
|
|
||||||
# flatpak.enable = true;
|
|
||||||
# seatd.enable = true;
|
|
||||||
# upower.enable = true;
|
|
||||||
# scx.enable = true;
|
|
||||||
# libinput.enable = true;
|
|
||||||
# blueman.enable = true;
|
|
||||||
# printing.enable = true;
|
|
||||||
# openssh.enable = true;
|
|
||||||
#
|
|
||||||
# pipewire = {
|
|
||||||
# enable = true;
|
|
||||||
# alsa = {
|
|
||||||
# enable = true;
|
|
||||||
# support32Bit = true;
|
|
||||||
# };
|
|
||||||
# pulse.enable = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
@@ -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" "usb_storage" "sd_mod" ];
|
|
||||||
boot.initrd.kernelModules = [ ];
|
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" =
|
|
||||||
{ device = "/dev/mapper/luks-9091013c-0763-40a6-8316-d44d52df3530";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.initrd.luks.devices."luks-9091013c-0763-40a6-8316-d44d52df3530".device = "/dev/disk/by-uuid/9091013c-0763-40a6-8316-d44d52df3530";
|
|
||||||
|
|
||||||
fileSystems."/boot" =
|
|
||||||
{ device = "/dev/disk/by-uuid/B332-BF84";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [ "fmask=0077" "dmask=0077" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [ ];
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,174 +1,11 @@
|
|||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
myConfig,
|
myConfig,
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
specialArgs,
|
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports =
|
imports = [
|
||||||
[
|
./hardware-configuration.nix
|
||||||
./hardware-configuration.nix
|
../../modules/system/default.nix
|
||||||
../../modules/default/apps.nix
|
../../modules/system/hyprland.nix
|
||||||
../../modules/default/desktop.nix
|
];
|
||||||
../../modules/default/remote.nix
|
|
||||||
../../modules/default/gaming.nix
|
|
||||||
../../modules/default/udev.nix
|
|
||||||
../../modules/default/boot.nix
|
|
||||||
../../modules/default/dev.nix
|
|
||||||
../../modules/default/security.nix
|
|
||||||
]
|
|
||||||
++ lib.optionals (myConfig.nixos.enableSteamOS == false) [
|
|
||||||
../../modules/default/login.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
time.timeZone = "${myConfig.nixos.Timezone}";
|
|
||||||
|
|
||||||
console = {
|
|
||||||
earlySetup = false;
|
|
||||||
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
|
||||||
packages = with pkgs; [terminus_font];
|
|
||||||
useXkbConfig = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
users = {
|
|
||||||
defaultUserShell = pkgs.${myConfig.general.Terminal.shell};
|
|
||||||
users = {
|
|
||||||
${myConfig.essentials.Username} = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = ["wheel" "networkmanager" "input" "video"];
|
|
||||||
initialHashedPassword = "$y$j9T$NHFtSwF4NJtEmgMjy4Xdg.$9WQltjEx3eEfZ7GbpGLW8lBhJtiXPOeIawrxdmx0.vB";
|
|
||||||
useDefaultShell = true;
|
|
||||||
packages = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager = {
|
|
||||||
backupFileExtension = "backup";
|
|
||||||
useGlobalPkgs = true;
|
|
||||||
useUserPackages = true;
|
|
||||||
extraSpecialArgs = specialArgs;
|
|
||||||
users.${myConfig.essentials.Username} = import ../../home/hakase.nix;
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = myConfig.general.allowUnfree;
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
distributedBuilds = true;
|
|
||||||
settings = {
|
|
||||||
builders-use-substitutes = true;
|
|
||||||
trusted-users = myConfig.optionals.Builds.trustedUsers;
|
|
||||||
experimental-features = ["nix-command" "flakes"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware = {
|
|
||||||
enableAllFirmware = true;
|
|
||||||
logitech.wireless.enable = true;
|
|
||||||
|
|
||||||
bluetooth = {
|
|
||||||
enable = true;
|
|
||||||
powerOnBoot = true;
|
|
||||||
settings = {
|
|
||||||
General = {
|
|
||||||
Enable = "Source,Sink,Media,Socket";
|
|
||||||
# AutoEnable = true;
|
|
||||||
Experimental = true;
|
|
||||||
MultiProfile = "multiple";
|
|
||||||
FastConnectable = true;
|
|
||||||
# ControllerMode = "bredr";
|
|
||||||
};
|
|
||||||
Policy = {
|
|
||||||
AutoEnable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xone.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
useDHCP = false;
|
|
||||||
wireless = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
networkmanager.enable = true;
|
|
||||||
firewall = {
|
|
||||||
enable = true;
|
|
||||||
allowedTCPPorts = [22 80];
|
|
||||||
allowedUDPPorts = [53];
|
|
||||||
};
|
|
||||||
proxy = {
|
|
||||||
default = null;
|
|
||||||
noProxy = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
# network.enable = true;
|
|
||||||
# extraConfig = "DefaultTimeoutStopSec=5s";
|
|
||||||
};
|
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
|
|
||||||
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
|
|
||||||
'';
|
|
||||||
zsh.enable = true;
|
|
||||||
fish.enable = true;
|
|
||||||
|
|
||||||
appimage = {
|
|
||||||
enable = true;
|
|
||||||
binfmt = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
ssh.extraConfig = myConfig.optionals.Ssh.extraConfig;
|
|
||||||
};
|
|
||||||
|
|
||||||
# jovian.steamos.enableMesaPatches = true;
|
|
||||||
|
|
||||||
services = {
|
|
||||||
displayManager.sessionPackages = [
|
|
||||||
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
|
|
||||||
];
|
|
||||||
|
|
||||||
getty.autologinUser = lib.mkOverride 10 "${myConfig.essentials.Username}";
|
|
||||||
|
|
||||||
flatpak.enable = true;
|
|
||||||
seatd.enable = true;
|
|
||||||
upower.enable = true;
|
|
||||||
scx.enable = true;
|
|
||||||
libinput.enable = true;
|
|
||||||
blueman.enable = true;
|
|
||||||
printing.enable = true;
|
|
||||||
openssh.enable = true;
|
|
||||||
|
|
||||||
pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa = {
|
|
||||||
enable = true;
|
|
||||||
support32Bit = true;
|
|
||||||
};
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
specialArgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
../../modules/default/darwin.nix
|
|
||||||
];
|
|
||||||
environment.systemPackages = [];
|
|
||||||
|
|
||||||
nix.settings.experimental-features = "nix-command flakes";
|
|
||||||
# nix.settings.trusted-users = myConfig.optionals.Builds.trustedUsers;
|
|
||||||
|
|
||||||
programs.zsh.enable = true; # default shell on catalina
|
|
||||||
programs.fish.enable = true;
|
|
||||||
|
|
||||||
system.stateVersion = 5;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
|
||||||
security.pam.services.sudo_local.touchIdAuth = true;
|
|
||||||
|
|
||||||
users.users.${myConfig.macos.Username} = {
|
|
||||||
name = "${myConfig.macos.Username}";
|
|
||||||
home = "/Users/${myConfig.macos.Username}";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.extraSpecialArgs = specialArgs;
|
|
||||||
home-manager.users.${myConfig.macos.Username} = import ../../home/darwin.nix;
|
|
||||||
}
|
|
||||||
@@ -1,133 +0,0 @@
|
|||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# your system. Help is available in the configuration.nix(5) man page, on
|
|
||||||
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
# Include the results of the hardware scan.
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Use the systemd-boot EFI boot loader.
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
# networking.hostName = "nixos"; # Define your hostname.
|
|
||||||
# Pick only one of the below networking options.
|
|
||||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
||||||
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "${myConfig.nixos.Timezone}";
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
console = {
|
|
||||||
earlySetup = false;
|
|
||||||
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
|
||||||
packages = with pkgs; [terminus_font];
|
|
||||||
useXkbConfig = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
# services.xserver.enable = true;
|
|
||||||
|
|
||||||
# Configure keymap in X11
|
|
||||||
# services.xserver.xkb.layout = "us";
|
|
||||||
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
# services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound.
|
|
||||||
# services.pulseaudio.enable = true;
|
|
||||||
# OR
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
services = {
|
|
||||||
blueman.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.libinput.enable = true;
|
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.${myConfig.essentials.Username} = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = ["wheel"]; # Enable ‘sudo’ for the user.
|
|
||||||
packages = with pkgs; [
|
|
||||||
tree
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs.firefox.enable = true;
|
|
||||||
|
|
||||||
# List packages installed in system profile.
|
|
||||||
# You can use https://search.nixos.org/ to find more packages (and options).
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
inputs.nixovim.packages.${system}.full
|
|
||||||
# linux-firmware
|
|
||||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
wget
|
|
||||||
];
|
|
||||||
|
|
||||||
hardware.firmware = [
|
|
||||||
pkgs.linux-firmware
|
|
||||||
];
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
|
||||||
# started in user sessions.
|
|
||||||
# programs.mtr.enable = true;
|
|
||||||
# programs.gnupg.agent = {
|
|
||||||
# enable = true;
|
|
||||||
# enableSSHSupport = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
|
||||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
|
|
||||||
# Copy the NixOS configuration file and link it from the resulting system
|
|
||||||
# (/run/current-system/configuration.nix). This is useful in case you
|
|
||||||
# accidentally delete configuration.nix.
|
|
||||||
# system.copySystemConfiguration = true;
|
|
||||||
|
|
||||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
|
||||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
|
||||||
#
|
|
||||||
# Most users should NEVER change this value after the initial install, for any reason,
|
|
||||||
# even if you've upgraded your system to a new NixOS release.
|
|
||||||
#
|
|
||||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
|
||||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
|
||||||
# to actually do that.
|
|
||||||
#
|
|
||||||
# This value being lower than the current NixOS release does NOT mean your system is
|
|
||||||
# out of date, out of support, or vulnerable.
|
|
||||||
#
|
|
||||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
|
||||||
# and migrated your data accordingly.
|
|
||||||
#
|
|
||||||
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
|
||||||
system.stateVersion = "25.11"; # Did you read the comment?
|
|
||||||
}
|
|
||||||
@@ -1,47 +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/disk/by-uuid/9f701bae-3392-4927-b27d-a905dd67edab";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [ "subvol=@" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" =
|
|
||||||
{ device = "/dev/disk/by-uuid/894C-F998";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [ "fmask=0077" "dmask=0077" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/home" =
|
|
||||||
{ device = "/dev/disk/by-uuid/780aa81f-c4d6-478b-9c51-2d60362fdb07";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices =
|
|
||||||
[ { device = "/dev/disk/by-uuid/b02ef55c-4caf-4a24-a6a2-fb8001eafe22"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp11s0.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlp10s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
usbutils
|
|
||||||
pciutils
|
|
||||||
pavucontrol
|
|
||||||
wget
|
|
||||||
dualsensectl
|
|
||||||
protontricks
|
|
||||||
wl-clipboard
|
|
||||||
tldr
|
|
||||||
anki
|
|
||||||
lact
|
|
||||||
lm_sensors
|
|
||||||
grim
|
|
||||||
];
|
|
||||||
imports = [
|
|
||||||
../../packages/virtualbox/default.nix
|
|
||||||
# ../../packages/lact/default.nix
|
|
||||||
];
|
|
||||||
hardware.amdgpu.overdrive.enable = true;
|
|
||||||
services.lact.enable = true;
|
|
||||||
# services = {
|
|
||||||
# protonvpn = {
|
|
||||||
# enable = true;
|
|
||||||
# autostart = true;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
{
|
|
||||||
myConfig,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
boot = {
|
|
||||||
loader = {
|
|
||||||
timeout = 0;
|
|
||||||
efi = {
|
|
||||||
canTouchEfiVariables = true;
|
|
||||||
efiSysMountPoint = "/boot";
|
|
||||||
};
|
|
||||||
|
|
||||||
limine = lib.mkIf (myConfig.nixos.Boot.mode == "limine") {
|
|
||||||
enable = true;
|
|
||||||
maxGenerations = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd-boot = lib.mkIf (myConfig.nixos.Boot.mode == "systemd") {
|
|
||||||
enable = true;
|
|
||||||
# xbootldrMountPoint = "/boot";
|
|
||||||
|
|
||||||
edk2-uefi-shell.enable = true;
|
|
||||||
edk2-uefi-shell.sortKey = "z_edk2";
|
|
||||||
};
|
|
||||||
|
|
||||||
# grub ain't that great for advanced setups such as using a secure boot.
|
|
||||||
grub = lib.mkIf (myConfig.nixos.Boot.mode == "grub") {
|
|
||||||
enable = true;
|
|
||||||
efiSupport = true;
|
|
||||||
device = "nodev";
|
|
||||||
useOSProber = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
plymouth = {
|
|
||||||
enable = false;
|
|
||||||
theme = "seal";
|
|
||||||
themePackages = with pkgs; [
|
|
||||||
(adi1090x-plymouth-themes.override {
|
|
||||||
selected_themes = ["seal"];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# blacklistedKernelModules = ["tpm_crb" "tpm_tis" "tpm"];
|
|
||||||
|
|
||||||
kernelPackages = pkgs.linuxPackages_cachyos;
|
|
||||||
kernelParams = [
|
|
||||||
# "quiet"
|
|
||||||
# "splash"
|
|
||||||
"boot.shell_on_fail"
|
|
||||||
"udev.log_priority=3"
|
|
||||||
"rd.systemd.show_status=auto"
|
|
||||||
"kvm.enable_virt_at_load=0"
|
|
||||||
];
|
|
||||||
|
|
||||||
initrd = {
|
|
||||||
systemd.enable = true;
|
|
||||||
kernelModules = [];
|
|
||||||
verbose = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
consoleLogLevel = 0;
|
|
||||||
};
|
|
||||||
hardware.amdgpu.initrd.enable = true;
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
../../packages/python/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
myConfig,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
# ../../packages/quickshell/default.nix
|
|
||||||
../../packages/hyprland/default.nix
|
|
||||||
../../packages/sunshine/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
imports = [
|
|
||||||
../../packages/python/default.nix
|
|
||||||
];
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
p7zip
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../../packages/steam/default.nix
|
|
||||||
]
|
|
||||||
++ lib.optionals (myConfig.nixos.enableSteamOS == true)
|
|
||||||
[
|
|
||||||
../../packages/steam/jovian.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# file: configuration.nix
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
sources = import ./nix/sources.nix;
|
|
||||||
lanzaboote = import sources.lanzaboote;
|
|
||||||
in {
|
|
||||||
imports = [lanzaboote.nixosModules.lanzaboote];
|
|
||||||
|
|
||||||
environment.systemPackages = [
|
|
||||||
# For debugging and troubleshooting Secure Boot.
|
|
||||||
pkgs.sbctl
|
|
||||||
];
|
|
||||||
|
|
||||||
# Lanzaboote currently replaces the systemd-boot module.
|
|
||||||
# This setting is usually set to true in configuration.nix
|
|
||||||
# generated at installation time. So we force it to false
|
|
||||||
# for now.
|
|
||||||
boot.loader.systemd-boot.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
boot.lanzaboote = {
|
|
||||||
enable = true;
|
|
||||||
pkiBundle = "/var/lib/sbctl";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings.default_session = {
|
|
||||||
user = lib.mkOverride 10 "${myConfig.essentials.Username}";
|
|
||||||
command = lib.mkOverride 10 "Hyprland";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
# ../../packages/moondeck-buddy/appimage.nix
|
|
||||||
../../packages/sunshine/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
imports = [
|
|
||||||
# ./lanzaboote.nix
|
|
||||||
];
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
niv
|
|
||||||
sbctl
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
# services.udev.extraRules = ''
|
|
||||||
# SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="0616", ATTR{power/wakeup}="enabled"
|
|
||||||
#
|
|
||||||
# '';
|
|
||||||
services.udev.packages = with pkgs; [
|
|
||||||
game-devices-udev-rules
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/jellyfin-tui/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
+5
-16
@@ -1,19 +1,8 @@
|
|||||||
{pkgs, ...}: {
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../packages/firefox/home.nix
|
../../apps/yazi/home.nix
|
||||||
|
../../apps/gemini/home.nix
|
||||||
|
../../apps/firefox/home.nix
|
||||||
|
../../apps/starship/home.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
heroic
|
|
||||||
# fcitx5
|
|
||||||
# fcitx5-mozc-ut
|
|
||||||
# kdePackages.fcitx5-configtool
|
|
||||||
solaar
|
|
||||||
parted
|
|
||||||
edk2-uefi-shell
|
|
||||||
libreoffice
|
|
||||||
];
|
|
||||||
services.easyeffects = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
inputs.illogical-impulse.homeManagerModules.default
|
|
||||||
../../packages/fonts/home.nix
|
|
||||||
];
|
|
||||||
programs.illogical-impulse.enable = true;
|
|
||||||
programs.illogical-impulse.settings = {
|
|
||||||
hyprland.useNixForConf = false;
|
|
||||||
simpleStarship.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# wayland.windowManager.hyprland = {
|
|
||||||
# settings = {
|
|
||||||
# monitor = lib.mkForce [
|
|
||||||
# "DP-1, highres@180,0x1080,1,bitdepth,10,cm,hdr,sdrbrightness,1.4,sdrsaturation,0.98"
|
|
||||||
# "DP-2, highres@highrr,760x0,1"
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# programs.illogical-impulse.settings.simpleStarship.enable = true;
|
|
||||||
home.packages = [
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/hyprland/home.nix
|
||||||
|
../../apps/walker/home.nix
|
||||||
|
../../apps/hyprpaper/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
# ../../packages/moondeck-buddy/appimage.nix
|
|
||||||
../../packages/sunshine/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,19 +1,9 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../../packages/fish/home.nix
|
../../apps/neovim/neovim.nix
|
||||||
../../packages/kitty/home.nix
|
../../apps/git/home.nix
|
||||||
../../packages/neovim/home.nix
|
../../apps/zoxide/home.nix
|
||||||
# ../../packages/starship/home.nix
|
../../apps/fish/home.nix
|
||||||
../../packages/fastfetch/home.nix
|
../../apps/ghostty/home.nix
|
||||||
../../packages/zsh/home.nix
|
|
||||||
../../packages/zoxide/home.nix
|
|
||||||
../../packages/fonts/home.nix
|
|
||||||
|
|
||||||
../../packages/git/home.nix
|
|
||||||
|
|
||||||
../../packages/btop/home.nix
|
|
||||||
../../packages/eza/home.nix
|
|
||||||
|
|
||||||
../../packages/cloudflared/home.nix
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/stylix/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/waybar/home.nix
|
||||||
|
../../apps/waybar/deps.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
../../system/time.nix
|
||||||
|
../../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
|
||||||
|
../../system/variables.nix
|
||||||
|
];
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# FIXME: must be on their own app
|
||||||
|
git
|
||||||
|
cloudflared
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../apps/hyprland/default.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
"lanzaboote": {
|
|
||||||
"branch": "master",
|
|
||||||
"description": "Secure Boot for NixOS [maintainers=@blitz @raitobezarius @nikstur]",
|
|
||||||
"homepage": "",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "lanzaboote",
|
|
||||||
"rev": "v0.4.2",
|
|
||||||
"sha256": "0xc1wawnb0297h5khxblmf9pd1fry950xkcm7mwlck19s2906h80",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://github.com/nix-community/lanzaboote/archive/v0.4.2.tar.gz",
|
|
||||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz",
|
|
||||||
"version": "0.4.2"
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"branch": "nixos-unstable",
|
|
||||||
"description": "Nix Packages collection",
|
|
||||||
"homepage": null,
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "6c43a3495a11e261e5f41e5d7eda2d71dae1b2fe",
|
|
||||||
"sha256": "16f329z831bq7l3wn1dfvbkh95l2gcggdwn6rk3cisdmv2aa3189",
|
|
||||||
"type": "tarball",
|
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/6c43a3495a11e261e5f41e5d7eda2d71dae1b2fe.tar.gz",
|
|
||||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-198
@@ -1,198 +0,0 @@
|
|||||||
# This file has been generated by Niv.
|
|
||||||
|
|
||||||
let
|
|
||||||
|
|
||||||
#
|
|
||||||
# The fetchers. fetch_<type> fetches specs of type <type>.
|
|
||||||
#
|
|
||||||
|
|
||||||
fetch_file = pkgs: name: spec:
|
|
||||||
let
|
|
||||||
name' = sanitizeName name + "-src";
|
|
||||||
in
|
|
||||||
if spec.builtin or true then
|
|
||||||
builtins_fetchurl { inherit (spec) url sha256; name = name'; }
|
|
||||||
else
|
|
||||||
pkgs.fetchurl { inherit (spec) url sha256; name = name'; };
|
|
||||||
|
|
||||||
fetch_tarball = pkgs: name: spec:
|
|
||||||
let
|
|
||||||
name' = sanitizeName name + "-src";
|
|
||||||
in
|
|
||||||
if spec.builtin or true then
|
|
||||||
builtins_fetchTarball { name = name'; inherit (spec) url sha256; }
|
|
||||||
else
|
|
||||||
pkgs.fetchzip { name = name'; inherit (spec) url sha256; };
|
|
||||||
|
|
||||||
fetch_git = name: spec:
|
|
||||||
let
|
|
||||||
ref =
|
|
||||||
spec.ref or (
|
|
||||||
if spec ? branch then "refs/heads/${spec.branch}" else
|
|
||||||
if spec ? tag then "refs/tags/${spec.tag}" else
|
|
||||||
abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"
|
|
||||||
);
|
|
||||||
submodules = spec.submodules or false;
|
|
||||||
submoduleArg =
|
|
||||||
let
|
|
||||||
nixSupportsSubmodules = builtins.compareVersions builtins.nixVersion "2.4" >= 0;
|
|
||||||
emptyArgWithWarning =
|
|
||||||
if submodules
|
|
||||||
then
|
|
||||||
builtins.trace
|
|
||||||
(
|
|
||||||
"The niv input \"${name}\" uses submodules "
|
|
||||||
+ "but your nix's (${builtins.nixVersion}) builtins.fetchGit "
|
|
||||||
+ "does not support them"
|
|
||||||
)
|
|
||||||
{ }
|
|
||||||
else { };
|
|
||||||
in
|
|
||||||
if nixSupportsSubmodules
|
|
||||||
then { inherit submodules; }
|
|
||||||
else emptyArgWithWarning;
|
|
||||||
in
|
|
||||||
builtins.fetchGit
|
|
||||||
({ url = spec.repo; inherit (spec) rev; inherit ref; } // submoduleArg);
|
|
||||||
|
|
||||||
fetch_local = spec: spec.path;
|
|
||||||
|
|
||||||
fetch_builtin-tarball = name: throw
|
|
||||||
''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`.
|
|
||||||
$ niv modify ${name} -a type=tarball -a builtin=true'';
|
|
||||||
|
|
||||||
fetch_builtin-url = name: throw
|
|
||||||
''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
|
|
||||||
$ niv modify ${name} -a type=file -a builtin=true'';
|
|
||||||
|
|
||||||
#
|
|
||||||
# Various helpers
|
|
||||||
#
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695
|
|
||||||
sanitizeName = name:
|
|
||||||
(
|
|
||||||
concatMapStrings (s: if builtins.isList s then "-" else s)
|
|
||||||
(
|
|
||||||
builtins.split "[^[:alnum:]+._?=-]+"
|
|
||||||
((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
# The set of packages used when specs are fetched using non-builtins.
|
|
||||||
mkPkgs = sources: system:
|
|
||||||
let
|
|
||||||
sourcesNixpkgs =
|
|
||||||
import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; };
|
|
||||||
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
|
|
||||||
hasThisAsNixpkgsPath = <nixpkgs> == ./.;
|
|
||||||
in
|
|
||||||
if builtins.hasAttr "nixpkgs" sources
|
|
||||||
then sourcesNixpkgs
|
|
||||||
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
|
|
||||||
import <nixpkgs> { }
|
|
||||||
else
|
|
||||||
abort
|
|
||||||
''
|
|
||||||
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
|
|
||||||
add a package called "nixpkgs" to your sources.json.
|
|
||||||
'';
|
|
||||||
|
|
||||||
# The actual fetching function.
|
|
||||||
fetch = pkgs: name: spec:
|
|
||||||
|
|
||||||
if ! builtins.hasAttr "type" spec then
|
|
||||||
abort "ERROR: niv spec ${name} does not have a 'type' attribute"
|
|
||||||
else if spec.type == "file" then fetch_file pkgs name spec
|
|
||||||
else if spec.type == "tarball" then fetch_tarball pkgs name spec
|
|
||||||
else if spec.type == "git" then fetch_git name spec
|
|
||||||
else if spec.type == "local" then fetch_local spec
|
|
||||||
else if spec.type == "builtin-tarball" then fetch_builtin-tarball name
|
|
||||||
else if spec.type == "builtin-url" then fetch_builtin-url name
|
|
||||||
else
|
|
||||||
abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
|
|
||||||
|
|
||||||
# If the environment variable NIV_OVERRIDE_${name} is set, then use
|
|
||||||
# the path directly as opposed to the fetched source.
|
|
||||||
replace = name: drv:
|
|
||||||
let
|
|
||||||
saneName = stringAsChars (c: if (builtins.match "[a-zA-Z0-9]" c) == null then "_" else c) name;
|
|
||||||
ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}";
|
|
||||||
in
|
|
||||||
if ersatz == "" then drv else
|
|
||||||
# this turns the string into an actual Nix path (for both absolute and
|
|
||||||
# relative paths)
|
|
||||||
if builtins.substring 0 1 ersatz == "/" then /. + ersatz else /. + builtins.getEnv "PWD" + "/${ersatz}";
|
|
||||||
|
|
||||||
# Ports of functions for older nix versions
|
|
||||||
|
|
||||||
# a Nix version of mapAttrs if the built-in doesn't exist
|
|
||||||
mapAttrs = builtins.mapAttrs or (
|
|
||||||
f: set: with builtins;
|
|
||||||
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
|
|
||||||
);
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
|
|
||||||
range = first: last: if first > last then [ ] else builtins.genList (n: first + n) (last - first + 1);
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
|
|
||||||
stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1));
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
|
|
||||||
stringAsChars = f: s: concatStrings (map f (stringToCharacters s));
|
|
||||||
concatMapStrings = f: list: concatStrings (map f list);
|
|
||||||
concatStrings = builtins.concatStringsSep "";
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/blob/8a9f58a375c401b96da862d969f66429def1d118/lib/attrsets.nix#L331
|
|
||||||
optionalAttrs = cond: as: if cond then as else { };
|
|
||||||
|
|
||||||
# fetchTarball version that is compatible between all the versions of Nix
|
|
||||||
builtins_fetchTarball = { url, name ? null, sha256 }@attrs:
|
|
||||||
let
|
|
||||||
inherit (builtins) lessThan nixVersion fetchTarball;
|
|
||||||
in
|
|
||||||
if lessThan nixVersion "1.12" then
|
|
||||||
fetchTarball ({ inherit url; } // (optionalAttrs (name != null) { inherit name; }))
|
|
||||||
else
|
|
||||||
fetchTarball attrs;
|
|
||||||
|
|
||||||
# fetchurl version that is compatible between all the versions of Nix
|
|
||||||
builtins_fetchurl = { url, name ? null, sha256 }@attrs:
|
|
||||||
let
|
|
||||||
inherit (builtins) lessThan nixVersion fetchurl;
|
|
||||||
in
|
|
||||||
if lessThan nixVersion "1.12" then
|
|
||||||
fetchurl ({ inherit url; } // (optionalAttrs (name != null) { inherit name; }))
|
|
||||||
else
|
|
||||||
fetchurl attrs;
|
|
||||||
|
|
||||||
# Create the final "sources" from the config
|
|
||||||
mkSources = config:
|
|
||||||
mapAttrs
|
|
||||||
(
|
|
||||||
name: spec:
|
|
||||||
if builtins.hasAttr "outPath" spec
|
|
||||||
then
|
|
||||||
abort
|
|
||||||
"The values in sources.json should not have an 'outPath' attribute"
|
|
||||||
else
|
|
||||||
spec // { outPath = replace name (fetch config.pkgs name spec); }
|
|
||||||
)
|
|
||||||
config.sources;
|
|
||||||
|
|
||||||
# The "config" used by the fetchers
|
|
||||||
mkConfig =
|
|
||||||
{ sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null
|
|
||||||
, sources ? if sourcesFile == null then { } else builtins.fromJSON (builtins.readFile sourcesFile)
|
|
||||||
, system ? builtins.currentSystem
|
|
||||||
, pkgs ? mkPkgs sources system
|
|
||||||
}: rec {
|
|
||||||
# The sources, i.e. the attribute set of spec name to spec
|
|
||||||
inherit sources;
|
|
||||||
|
|
||||||
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
|
|
||||||
inherit pkgs;
|
|
||||||
};
|
|
||||||
|
|
||||||
in
|
|
||||||
mkSources (mkConfig { }) // { __functor = _: settings: mkSources (mkConfig settings); }
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
programs.btop = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
vim_keys = true;
|
|
||||||
theme_background = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
programs.eza = {
|
|
||||||
enable = true;
|
|
||||||
git = true;
|
|
||||||
colors = "auto";
|
|
||||||
icons = "auto";
|
|
||||||
|
|
||||||
enableZshIntegration = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,131 +0,0 @@
|
|||||||
{
|
|
||||||
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}╰───────────────────────────────╯";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
fonts = {
|
|
||||||
fontconfig.enable = true;
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nerd-fonts.jetbrains-mono
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{myConfig, ...}: {
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = {
|
|
||||||
user.name = "${myConfig.nixos.Git.user}";
|
|
||||||
user.email = "${myConfig.nixos.Git.email}";
|
|
||||||
init.defaultBranch = "${myConfig.nixos.Git.defaultBranch}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
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.
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
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"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,300 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
exec = [
|
|
||||||
"hyprctl dispatch submap global"
|
|
||||||
];
|
|
||||||
|
|
||||||
submap = [
|
|
||||||
"global"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Shell keybinds
|
|
||||||
bindi = [
|
|
||||||
"$mod, Super_L, global, caelestia:launcher" # bind to `bind` because `bindi` maps to it
|
|
||||||
# Launcher
|
|
||||||
];
|
|
||||||
bindin =
|
|
||||||
[
|
|
||||||
"$mod, catchall, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:272, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:273, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:274, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:275, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:276, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse:277, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse_up, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, mouse_down, global, caelestia:launcherInterrupt"
|
|
||||||
|
|
||||||
"$mod, K, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, H, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, J, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, L, global, caelestia:launcherInterrupt"
|
|
||||||
|
|
||||||
"$mod, S, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, G, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, T, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, D, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, Escape, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, PERIOD, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, SPACE, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, E, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, V, global, caelestia:launcherInterrupt"
|
|
||||||
|
|
||||||
"$mod, W, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, Q, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, C, global, caelestia:launcherInterrupt"
|
|
||||||
"$mod, Return, global, caelestia:launcherInterrupt"
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
# Go to workspace group #
|
|
||||||
builtins.concatLists (builtins.genList (
|
|
||||||
i: let
|
|
||||||
ws = i + 1;
|
|
||||||
in [
|
|
||||||
"$mod, ${toString ws}, global, caelestia:launcherInterrupt"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
9)
|
|
||||||
)
|
|
||||||
++ [
|
|
||||||
"$mod, 0, global, caelestia:launcherInterrupt"
|
|
||||||
];
|
|
||||||
bind =
|
|
||||||
[
|
|
||||||
# Misc
|
|
||||||
"Control+Alt, Delete, exec, caelestia:session"
|
|
||||||
"$mod ALT, A, global, caelestia:showall"
|
|
||||||
"$mod ALT, L, global, caelestia:lock"
|
|
||||||
|
|
||||||
"$mod, SPACE, exec, rofi -show drun"
|
|
||||||
|
|
||||||
# Restore lock - these are `bindl` in your original, but `exec` should be fine here.
|
|
||||||
# However, `bindl` is typically for a *release* event. If `caelestia shell -d` is a daemon,
|
|
||||||
# and `caelestia:lock` is a quickshell internal, you might need to reconsider.
|
|
||||||
# For direct translation, they go into `bindl` list.
|
|
||||||
|
|
||||||
# Media - handled by bindl below
|
|
||||||
|
|
||||||
# Apps
|
|
||||||
"$mod, Return, exec, app2unit -- kitty"
|
|
||||||
"$mod, W, exec, app2unit -- firefox"
|
|
||||||
"$mod, E, exec, app2unit -- thunar"
|
|
||||||
"$mod, Q, killactive"
|
|
||||||
"$mod ALT, E, exec, app2unit -- nemo"
|
|
||||||
"Control+Alt, Escape, exec, app2unit -- qps"
|
|
||||||
"Control+Alt, V, exec, app2unit -- pavucontrol"
|
|
||||||
|
|
||||||
# Utilities
|
|
||||||
"$mod SHIFT, S, global, caelestia:screenshotFreeze"
|
|
||||||
"$mod SHIFT ALT, S, global, caelestia:screenshot"
|
|
||||||
"$mod ALT, R, exec, caelestia record -s"
|
|
||||||
"Control+Alt, R, exec, caelestia record"
|
|
||||||
"$mod SHIFT ALT, R, exec, caelestia record -r"
|
|
||||||
"$mod SHIFT, C, exec, hyprpicker -a" # Colour picker
|
|
||||||
|
|
||||||
# Sleep
|
|
||||||
"$mod SHIFT, PRINT, exec, systemctl suspend-then-hibernate"
|
|
||||||
|
|
||||||
# Clipboard and emoji picker
|
|
||||||
"$mod, V, exec, pkill fuzzel || caelestia clipboard"
|
|
||||||
"$mod ALT, V, exec, pkill fuzzel || caelestia clipboard -d"
|
|
||||||
"$mod, Period, exec, pkill fuzzel || caelestia emoji -p"
|
|
||||||
|
|
||||||
# Testing
|
|
||||||
# This is a `bindl` (key release), so move it to `bindl` list below.
|
|
||||||
|
|
||||||
# Window actions
|
|
||||||
"$mod, H, movefocus, l"
|
|
||||||
"$mod, L, movefocus, r"
|
|
||||||
"$mod, K, movefocus, u"
|
|
||||||
"$mod, J, movefocus, d"
|
|
||||||
"$mod SHIFT, H, movewindow, l"
|
|
||||||
"$mod SHIFT, L, movewindow, r"
|
|
||||||
"$mod SHIFT, K, movewindow, u"
|
|
||||||
"$mod SHIFT, J, movewindow, d"
|
|
||||||
"$mod CTRL, Backslash, centerwindow, 1"
|
|
||||||
"$mod CTRL ALT, Backslash, resizeactive, exact 55% 70%"
|
|
||||||
"$mod CTRL ALT, Backslash, centerwindow, 1"
|
|
||||||
"$mod ALT, Backslash, exec, caelestia pip"
|
|
||||||
"$mod, P, pin"
|
|
||||||
"$mod, F, fullscreen, 0"
|
|
||||||
"$mod ALT, F, fullscreen, 1"
|
|
||||||
|
|
||||||
# Special workspace toggles
|
|
||||||
"Control+Shift, Escape, exec, caelestia toggle sysmon"
|
|
||||||
"$mod, Escape, exec, caelestia toggle sysmon"
|
|
||||||
"$mod, M, exec, caelestia toggle music"
|
|
||||||
"$mod, D, exec, caelestia toggle communication"
|
|
||||||
"$mod, R, exec, caelestia toggle todo"
|
|
||||||
|
|
||||||
"$mod, G, togglespecialworkspace, gaming"
|
|
||||||
"$mod SHIFT, G, movetoworkspace, special:gaming"
|
|
||||||
|
|
||||||
"$mod, T, exec, caelestia toggle steam"
|
|
||||||
|
|
||||||
# "$mod, T, togglespecialworkspace, special:steam"
|
|
||||||
# "$mod SHIFT, T, movetoworkspace, special:steam"
|
|
||||||
|
|
||||||
# Toggle special workspace
|
|
||||||
"$mod, S, exec, caelestia toggle specialws"
|
|
||||||
|
|
||||||
# Window groups
|
|
||||||
"$mod, Comma, togglegroup"
|
|
||||||
"$mod SHIFT, Comma, lockactivegroup, toggle"
|
|
||||||
|
|
||||||
# Go to workspace -1/+1 (mouse binds are `bind` for mouse-wheel)
|
|
||||||
"$mod, mouse_down, workspace, -1"
|
|
||||||
"$mod, mouse_up, workspace, +1"
|
|
||||||
|
|
||||||
# Move window to workspace -1/+1
|
|
||||||
"$mod ALT, mouse_down, movetoworkspace, -1"
|
|
||||||
"$mod ALT, mouse_up, movetoworkspace, +1"
|
|
||||||
|
|
||||||
# Move window to/from special workspace
|
|
||||||
"$mod CTRL SHIFT, up, movetoworkspace, special:special"
|
|
||||||
"$mod CTRL SHIFT, down, movetoworkspace, e+0"
|
|
||||||
"$mod ALT, S, movetoworkspace, special:special"
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
# Go to workspace #
|
|
||||||
let
|
|
||||||
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
|
||||||
in
|
|
||||||
builtins.concatLists (builtins.genList (
|
|
||||||
i: let
|
|
||||||
ws = i + 1;
|
|
||||||
in [
|
|
||||||
"$mod, ${toString ws}, exec, ${wsaction} workspace ${toString ws}"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
9) # For workspaces 1-9
|
|
||||||
)
|
|
||||||
++ [
|
|
||||||
# "$mod, 0, exec, ${config.wayland.windowManager.hyprland.settings.workspaceRule."0".exec} workspace 10" # Workaround for workspace 0
|
|
||||||
# Re-adding `wsaction` since it's used here.
|
|
||||||
"$mod, 0, exec, ~/.config/hypr/scripts/wsaction.fish workspace 10"
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
# Go to workspace group #
|
|
||||||
let
|
|
||||||
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
|
||||||
in
|
|
||||||
builtins.concatLists (builtins.genList (
|
|
||||||
i: let
|
|
||||||
ws = i + 1;
|
|
||||||
in [
|
|
||||||
"Control+$mod, ${toString ws}, exec, ${wsaction} -g workspace ${toString ws}"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
9)
|
|
||||||
)
|
|
||||||
++ [
|
|
||||||
"Control+$mod, 0, exec, ~/.config/hypr/scripts/wsaction.fish -g workspace 10"
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
# Move window to workspace #
|
|
||||||
let
|
|
||||||
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
|
||||||
in
|
|
||||||
builtins.concatLists (builtins.genList (
|
|
||||||
i: let
|
|
||||||
ws = i + 1;
|
|
||||||
in [
|
|
||||||
"$mod SHIFT, ${toString ws}, exec, ${wsaction} movetoworkspace ${toString ws}"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
9)
|
|
||||||
)
|
|
||||||
++ [
|
|
||||||
"$mod SHIFT, 0, exec, ~/.config/hypr/scripts/wsaction.fish movetoworkspace 10"
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
# Move window to workspace group #
|
|
||||||
let
|
|
||||||
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
|
||||||
in
|
|
||||||
builtins.concatLists (builtins.genList (
|
|
||||||
i: let
|
|
||||||
ws = i + 1;
|
|
||||||
in [
|
|
||||||
"Control+$mod ALT, ${toString ws}, exec, ${wsaction} -g movetoworkspace ${toString ws}"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
9)
|
|
||||||
)
|
|
||||||
++ [
|
|
||||||
"Control+$mod ALT, 0, exec, ~/.config/hypr/scripts/wsaction.fish -g movetoworkspace 10"
|
|
||||||
];
|
|
||||||
|
|
||||||
binde = [
|
|
||||||
"$mod, Minus, splitratio, -0.1"
|
|
||||||
"$mod, Equal, splitratio, 0.1"
|
|
||||||
"Control+$mod, left, workspace, -1"
|
|
||||||
"$mod, Page_Up, workspace, -1"
|
|
||||||
"Control+$mod, right, workspace, +1"
|
|
||||||
"$mod, Page_Down, workspace, +1"
|
|
||||||
"$mod ALT, Page_Up, movetoworkspace, -1"
|
|
||||||
"$mod ALT, Page_Down, movetoworkspace, +1"
|
|
||||||
"Control+$mod SHIFT, right, movetoworkspace, +1"
|
|
||||||
"Control+$mod SHIFT, left, movetoworkspace, -1"
|
|
||||||
"Alt, Tab, cyclenext, activewindow" # `binde` for cycle next
|
|
||||||
"Control+Alt, Tab, changegroupactive, f" # `binde` for change group active
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
"$mod, mouse:272, movewindow"
|
|
||||||
"$mod, Z, movewindow"
|
|
||||||
"$mod, mouse:273, resizewindow"
|
|
||||||
"$mod, X, resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindl = [
|
|
||||||
# Restore lock
|
|
||||||
"$mod ALT, L, exec, caelestia shell -d"
|
|
||||||
"$mod ALT, L, global, caelestia:lock" # This is a Hyprland `global` command, not an `exec`
|
|
||||||
|
|
||||||
# Brightness
|
|
||||||
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
|
|
||||||
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
|
|
||||||
|
|
||||||
# Media
|
|
||||||
"Control+$mod, Space, global, caelestia:mediaToggle"
|
|
||||||
", XF86AudioPlay, global, caelestia:mediaToggle"
|
|
||||||
", XF86AudioPause, global, caelestia:mediaToggle"
|
|
||||||
"Control+$mod, Equal, global, caelestia:mediaNext"
|
|
||||||
", XF86AudioNext, global, caelestia:mediaNext"
|
|
||||||
"Control+$mod, Minus, global, caelestia:mediaPrev"
|
|
||||||
", XF86AudioPrev, global, caelestia:mediaPrev"
|
|
||||||
", XF86AudioStop, global, caelestia:mediaStop"
|
|
||||||
|
|
||||||
# Utilities (screenshot is `bindl` in your original)
|
|
||||||
", Print, exec, caelestia screenshot" # Full screen capture > clipboard
|
|
||||||
|
|
||||||
# Volume
|
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
"$mod SHIFT, M, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
|
|
||||||
# Clipboard and emoji picker (alternate paste is `bindl`)
|
|
||||||
"Control+Shift+Alt, V, exec, sleep 0.5s && ydotool type -d 1 \"$(cliphist list | head -1 | cliphist decode)\""
|
|
||||||
|
|
||||||
# Testing
|
|
||||||
"$mod ALT, f12, exec, notify-send -u low -i dialog-information-symbolic 'Test notification' \"Here's a really long message to test truncation and wrapping\\nYou can middle click or flick this notification to dismiss it!\" -a 'Shell' -A \"Test1=I got it!\" -A \"Test2=Another action\""
|
|
||||||
];
|
|
||||||
|
|
||||||
bindel = [
|
|
||||||
# Volume
|
|
||||||
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 10%+"
|
|
||||||
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindr = [
|
|
||||||
# Kill/restart
|
|
||||||
"Control+$mod SHIFT, R, exec, qs -c caelestia kill"
|
|
||||||
"Control+$mod ALT, R, exec, qs -c caelestia kill; caelestia shell -d"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
exec = [
|
|
||||||
"cp -L --no-preserve=mode --update=none ~/.config/hypr/scheme/default.conf ~/.config/hypr/scheme/current.conf"
|
|
||||||
];
|
|
||||||
source = [
|
|
||||||
"~/.config/hypr/scheme/current.conf"
|
|
||||||
];
|
|
||||||
group = {
|
|
||||||
groupbar = {
|
|
||||||
"text_color" = "rgb($onPrimary)";
|
|
||||||
"col.active" = "rgba($primaryd4)";
|
|
||||||
"col.inactive" = "rgba($outlined4)";
|
|
||||||
"col.locked_active" = "rgba($primaryd4)";
|
|
||||||
"col.locked_inactive" = "rgba($secondaryd4)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
misc = {
|
|
||||||
background_color = "rgb($surfaceVariant)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
decoration = {
|
|
||||||
rounding = 10;
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
env = [
|
|
||||||
"HYPRCURSOR_THEME, Bibata-Original-Classic"
|
|
||||||
"HYPRCURSOR_SIZE, 24"
|
|
||||||
|
|
||||||
"QT_QPA_PLATFORMTHEME, qt5ct"
|
|
||||||
"QT_WAYLAND_DISABLE_WINDOWDECORATION, 1"
|
|
||||||
"QT_AUTO_SCREEN_SCALE_FACTOR, 1"
|
|
||||||
"XCURSOR_THEME, sweet-rainbow"
|
|
||||||
"XCURSOR_SIZE, 24"
|
|
||||||
|
|
||||||
"GDK_BACKEND, wayland,x11"
|
|
||||||
"QT_QPA_PLATFORM, wayland;xcb"
|
|
||||||
"SDL_VIDEODRIVER, wayland,x11"
|
|
||||||
"CLUTTER_BACKEND, wayland"
|
|
||||||
"ELECTRON_OZONE_PLATFORM_HINT, auto"
|
|
||||||
|
|
||||||
"XDG_CURRENT_DESKTOP, Hyprland"
|
|
||||||
"XDG_SESSION_TYPE, wayland"
|
|
||||||
"XDG_SESSION_DESKTOP, Hyprland"
|
|
||||||
|
|
||||||
"_JAVA_AWT_WM_NONREPARENTING, 1"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
exec-once = [
|
|
||||||
# "[workspace special:communication silent] discord"
|
|
||||||
"[workspace special:steam silent] steam"
|
|
||||||
"[workspace special:preload silent] kitty --single-instance --hold fastfetch"
|
|
||||||
"[workspace special:preload silent] firefox"
|
|
||||||
"[workspace 1] kitty --single-instance --hold -e fish -C fastfetch"
|
|
||||||
|
|
||||||
"hyprctl setcursor Bibata-Modern-Ice 24"
|
|
||||||
|
|
||||||
"solaar -w hide"
|
|
||||||
# "sunshine"
|
|
||||||
# "moondeck-buddy"
|
|
||||||
|
|
||||||
"wl-paste --type text --watch cliphist store"
|
|
||||||
"wl-paste --type image --watch cliphist store"
|
|
||||||
|
|
||||||
"sleep 3 && caelestia shell"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,128 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
wayland.windowManager.hyprland.settings = {
|
|
||||||
# ######## Window rules ########
|
|
||||||
windowrule = [
|
|
||||||
"opaque, class:foot|equibop"
|
|
||||||
"center 1, floating:1, xwayland:0"
|
|
||||||
|
|
||||||
# Float
|
|
||||||
"float, class:guifetch"
|
|
||||||
"float, class:yad"
|
|
||||||
"float, class:zenity"
|
|
||||||
"float, class:wev"
|
|
||||||
"float, class:org\\.gnome\\.FileRoller" # Escaped backslash
|
|
||||||
"float, class:file-roller"
|
|
||||||
"float, class:blueman-manager"
|
|
||||||
"float, class:com\\.github\\.GradienceTeam\\.Gradience" # Escaped backslash
|
|
||||||
"float, class:feh"
|
|
||||||
"float, class:imv"
|
|
||||||
"float, class:system-config-printer"
|
|
||||||
"float, class:quickshell"
|
|
||||||
|
|
||||||
# Float, resize and center
|
|
||||||
"float, class:foot, title:nmtui"
|
|
||||||
"size 60% 70%, class:foot, title:nmtui"
|
|
||||||
"center 1, class:foot, title:nmtui"
|
|
||||||
"float, class:org\\.gnome\\.Settings"
|
|
||||||
"size 70% 80%, class:org\\.gnome\\.Settings"
|
|
||||||
"center 1, class:org\\.gnome\\.Settings"
|
|
||||||
"float, class:org\\.pulseaudio\\.pavucontrol|yad-icon-browser"
|
|
||||||
"size 60% 70%, class:org\\.pulseaudio\\.pavucontrol|yad-icon-browser"
|
|
||||||
"center 1, class:org\\.pulseaudio\\.pavucontrol|yad-icon-browser"
|
|
||||||
"float, class:nwg-look"
|
|
||||||
"size 50% 60%, class:nwg-look"
|
|
||||||
"center 1, class:nwg-look"
|
|
||||||
|
|
||||||
# Special workspaces
|
|
||||||
"workspace special:sysmon, class:btop"
|
|
||||||
"workspace special:music, class:feishin|Spotify|Supersonic"
|
|
||||||
"workspace special:music, initialTitle:Spotify( Free)?"
|
|
||||||
"workspace special:communication, class:discord|equibop|vesktop|whatsapp"
|
|
||||||
"workspace special:todo, class:Todoist"
|
|
||||||
|
|
||||||
"noinitialfocus, class:discord"
|
|
||||||
"focusonactivate 0, class:discord"
|
|
||||||
|
|
||||||
# Always full screen
|
|
||||||
# "fullscreen, title:^(Steam Big Picture Mode)$"
|
|
||||||
# "fullscreen, title:^(steam_app_.*)$"
|
|
||||||
|
|
||||||
# Dialogs
|
|
||||||
"float, title:(Select|Open)( a)? (File|Folder)(s)?"
|
|
||||||
"float, title:File (Operation|Upload)( Progress)?"
|
|
||||||
"float, title:.* Properties"
|
|
||||||
"float, title:Export Image as PNG"
|
|
||||||
"float, title:GIMP Crash Debug"
|
|
||||||
"float, title:Save As"
|
|
||||||
"float, title:Library"
|
|
||||||
|
|
||||||
# Picture in picture (resize and move done via script)
|
|
||||||
"move 100%-w-2% 100%-w-3%, title:Picture(-| )in(-| )[Pp]icture"
|
|
||||||
"keepaspectratio, title:Picture(-| )in(-| )[Pp]icture"
|
|
||||||
"float, title:Picture(-| )in(-| )[Pp]icture"
|
|
||||||
"pin, title:Picture(-| )in(-| )[Pp]icture"
|
|
||||||
|
|
||||||
# Steam
|
|
||||||
"workspace special:steam, class:steam"
|
|
||||||
"workspace special:gaming, class:^(steam_app_.*)$"
|
|
||||||
"rounding 10, title:, class:steam"
|
|
||||||
"float, title:Friends List, class:steam"
|
|
||||||
"immediate, class:steam_app_[0-9]+"
|
|
||||||
"idleinhibit always, class:steam_app_[0-9]+"
|
|
||||||
|
|
||||||
# ATLauncher console
|
|
||||||
"float, class:com-atlauncher-App, title:ATLauncher Console"
|
|
||||||
|
|
||||||
# Autodesk Fusion 360
|
|
||||||
"noblur, title:Fusion360|(Marking Menu), class:fusion360\\.exe" # Escaped backslash
|
|
||||||
|
|
||||||
# Ugh xwayland popups
|
|
||||||
"nodim, xwayland:1, title:win[0-9]+"
|
|
||||||
"noshadow, xwayland:1, title:win[0-9]+"
|
|
||||||
"rounding 10, xwayland:1, title:win[0-9]+"
|
|
||||||
];
|
|
||||||
|
|
||||||
# ######## Workspace rules ########
|
|
||||||
workspace = [
|
|
||||||
"w[tv1]s[false], gapsout:20, gapsin:20"
|
|
||||||
"f[1]s[false], gapsout:20, gapsin:20"
|
|
||||||
"1, monitor:DP-2, default:true"
|
|
||||||
"2, monitor:DP-2"
|
|
||||||
"3, monitor:DP-2"
|
|
||||||
"4, monitor:DP-1"
|
|
||||||
"5, monitor:DP-1"
|
|
||||||
"6, monitor:DP-1"
|
|
||||||
|
|
||||||
"special:gaming, monitor:DP-2, persistent:true"
|
|
||||||
"special:steam, monitor:DP-2, persistent:true, on-created-empty:steam"
|
|
||||||
];
|
|
||||||
|
|
||||||
# ######## Layer rules ########
|
|
||||||
layerrule = [
|
|
||||||
"animation fade, hyprpicker"
|
|
||||||
"animation fade, logout_dialog"
|
|
||||||
"animation fade, selection"
|
|
||||||
"animation fade, wayfreeze"
|
|
||||||
|
|
||||||
# Fuzzel
|
|
||||||
"animation popin 80%, launcher"
|
|
||||||
"blur, launcher"
|
|
||||||
|
|
||||||
# Shell
|
|
||||||
"noanim, caelestia-(launcher|osd|notifications|border-exclusion|area-picker)"
|
|
||||||
"animation fade, caelestia-(drawers|background)"
|
|
||||||
"order 1, caelestia-border-exclusion"
|
|
||||||
"order 2, caelestia-bar"
|
|
||||||
# The commented out lines below need to remain commented if you don't want them active
|
|
||||||
#"xray 1, caelestia-(border|launcher|bar|sidebar|navbar|mediadisplay|screencorners)"
|
|
||||||
#"blur, caelestia-.*"
|
|
||||||
#"blurpopups, caelestia-.*"
|
|
||||||
#"ignorealpha 0.57, caelestia-.*"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
myConfig,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
{
|
|
||||||
myConfig,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
./config/binds.nix
|
|
||||||
./config/execs.nix
|
|
||||||
./config/rules.nix
|
|
||||||
./config/animation.nix
|
|
||||||
./config/decoration.nix
|
|
||||||
./config/env.nix
|
|
||||||
./config/colours.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file.".config/hypr/scripts/wsaction.fish" = {
|
|
||||||
source = builtins.toPath ./scripts/wsaction.fish;
|
|
||||||
executable = true;
|
|
||||||
};
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
settings = {
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
"$term" = "kitty --single-instance";
|
|
||||||
"$browser" = "firefox";
|
|
||||||
"$wsaction" = "fish -c ./scripts/wsaction.fish";
|
|
||||||
"$widget" = "qs -c caelestia";
|
|
||||||
|
|
||||||
monitor = myConfig.nixos.Hyprland.monitors;
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/usr/bin/env fish
|
|
||||||
|
|
||||||
if test "$argv[1]" = '-g'
|
|
||||||
set group
|
|
||||||
set -e $argv[1]
|
|
||||||
end
|
|
||||||
|
|
||||||
if test (count $argv) -ne 2
|
|
||||||
echo 'Wrong number of arguments. Usage: ./wsaction.fish [-g] <dispatcher> <workspace>'
|
|
||||||
exit 1
|
|
||||||
end
|
|
||||||
|
|
||||||
set -l active_ws (hyprctl activeworkspace -j | jq -r '.id')
|
|
||||||
|
|
||||||
if set -q group
|
|
||||||
# Move to group
|
|
||||||
hyprctl dispatch $argv[1] (math "($argv[2] - 1) * 10 + $active_ws % 10")
|
|
||||||
else
|
|
||||||
# Move to ws in group
|
|
||||||
hyprctl dispatch $argv[1] (math "floor(($active_ws - 1) / 10) * 10 + $argv[2]")
|
|
||||||
end
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
programs.hyprlock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
# home.packages = with pkgs; [
|
|
||||||
# hyprsunset
|
|
||||||
# ];
|
|
||||||
services.hyprsunset = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
{
|
|
||||||
myConfig,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
# themeFile = "kanagawa";
|
|
||||||
themeFile = "Catppuccin-Mocha";
|
|
||||||
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";
|
|
||||||
shell = "${pkgs.${myConfig.general.Terminal.shell}}/bin/${myConfig.general.Terminal.shell}";
|
|
||||||
|
|
||||||
# optimization
|
|
||||||
input_delay = 0;
|
|
||||||
repaint_delay = 2;
|
|
||||||
sync_to_monitor = false;
|
|
||||||
wayland_enable_ime = false;
|
|
||||||
allow_remote_control = true;
|
|
||||||
};
|
|
||||||
# extraConfig = "include colors.conf";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkEnableOption mkOption mkIf;
|
|
||||||
this = config.custom.lact;
|
|
||||||
|
|
||||||
configFile =
|
|
||||||
pkgs.runCommand "lact-config.yaml" {
|
|
||||||
json = pkgs.writers.writeJSON "lact-config.json" this.settings;
|
|
||||||
} ''
|
|
||||||
# Merge with the defaults
|
|
||||||
${lib.getExe pkgs.yq} -s '.[0] * .[1]' $json ${./lact-default-config.yaml} > config.json
|
|
||||||
# Convert keys to numeric values where possible. It depends on this for some reason.
|
|
||||||
${lib.getExe pkgs.yj} -jy -k < config.json > $out
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
options.custom.lact = {
|
|
||||||
enable = mkEnableOption "my LACT module";
|
|
||||||
settings = mkOption {
|
|
||||||
default = {};
|
|
||||||
type = lib.types.submodule {
|
|
||||||
freeformType = (pkgs.formats.yaml {}).type;
|
|
||||||
};
|
|
||||||
description = ''
|
|
||||||
Settings for LACT. Settings are merged with the defaults.
|
|
||||||
|
|
||||||
The easiest method of acquiring the settings is to delete
|
|
||||||
`/etc/lact/config.yaml`, enter your settings and look at the file.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf this.enable {
|
|
||||||
systemd.packages = with pkgs; [
|
|
||||||
lact
|
|
||||||
];
|
|
||||||
systemd.services.lactd.wantedBy = ["multi-user.target"];
|
|
||||||
|
|
||||||
environment.etc."lact/config.yaml" = mkIf (this.settings != {}) {
|
|
||||||
source = configFile;
|
|
||||||
};
|
|
||||||
systemd.services.lactd = {
|
|
||||||
# Restart if config changed
|
|
||||||
restartTriggers = mkIf (this.settings != {}) [configFile];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
daemon:
|
|
||||||
log_level: info
|
|
||||||
admin_groups:
|
|
||||||
- wheel
|
|
||||||
- sudo
|
|
||||||
disable_clocks_cleanup: false
|
|
||||||
apply_settings_timer: 5
|
|
||||||
gpus: {}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
lutris
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
{myConfig, ...}: {
|
|
||||||
programs.mangohud = {
|
|
||||||
enable = true;
|
|
||||||
enableSessionWide = true;
|
|
||||||
settings = {
|
|
||||||
legacy_layout = false;
|
|
||||||
horizontal = true;
|
|
||||||
background_alpha = 0.6;
|
|
||||||
round_corners = 10;
|
|
||||||
background_color = "000000";
|
|
||||||
font_size = 24;
|
|
||||||
text_color = "FFFFFF";
|
|
||||||
position = "top-left";
|
|
||||||
toggle_hud = "Shift_R+F12";
|
|
||||||
no_display = true;
|
|
||||||
pci_dev = "0:03:00.0";
|
|
||||||
table_columns = 3;
|
|
||||||
|
|
||||||
gpu_text = "GPU";
|
|
||||||
gpu_stats = true;
|
|
||||||
gpu_load_change = true;
|
|
||||||
gpu_load_value = [50 90];
|
|
||||||
gpu_load_color = ["FFFFFF" "FFAA7F" "CC0000"];
|
|
||||||
gpu_temp = true;
|
|
||||||
gpu_power = true;
|
|
||||||
gpu_color = "2E9762";
|
|
||||||
|
|
||||||
cpu_text = "CPU";
|
|
||||||
cpu_stats = true;
|
|
||||||
cpu_load_change = true;
|
|
||||||
cpu_load_value = [50 90];
|
|
||||||
cpu_load_color = ["FFFFFF" "FFAA7F" "CC0000"];
|
|
||||||
cpu_temp = true;
|
|
||||||
cpu_power = true;
|
|
||||||
cpu_color = "2E97CB";
|
|
||||||
|
|
||||||
vram = true;
|
|
||||||
vram_color = "AD64C1";
|
|
||||||
ram = true;
|
|
||||||
ram_color = "C26693";
|
|
||||||
battery = true;
|
|
||||||
battery_color = "00FF00";
|
|
||||||
|
|
||||||
fps = true;
|
|
||||||
fps_metrics = ["avg" "0.01"];
|
|
||||||
engine_version = true;
|
|
||||||
engine_color = "EB5B5B";
|
|
||||||
arch = true;
|
|
||||||
frame_timing = true;
|
|
||||||
frametime_color = "FA8000";
|
|
||||||
fps_limit_method = "late";
|
|
||||||
toggle_fps_limit = "Shift_L+F1";
|
|
||||||
fps_limit = 0;
|
|
||||||
resolution = true;
|
|
||||||
refresh_rate = true;
|
|
||||||
|
|
||||||
# custom_text = [
|
|
||||||
# "-"
|
|
||||||
# "$(cat /home/kenji/.config/goverlay/distro)"
|
|
||||||
# "-"
|
|
||||||
# "$(uname -r)"
|
|
||||||
# "Session:"
|
|
||||||
# "$(echo $XDG_SESSION_TYPE)"
|
|
||||||
# ];
|
|
||||||
|
|
||||||
fps_color_change = true;
|
|
||||||
fps_color = ["B22222" "FDFD09" "39F900"];
|
|
||||||
fps_value = [30 60];
|
|
||||||
|
|
||||||
time = true;
|
|
||||||
|
|
||||||
output_folder = "/home/${myConfig.essentials.Username}/.mangohud/";
|
|
||||||
log_duration = 30;
|
|
||||||
autostart_log = false;
|
|
||||||
log_interval = 100;
|
|
||||||
toggle_logging = "Shift_L+F2";
|
|
||||||
|
|
||||||
blacklist = [
|
|
||||||
"pamac-manager"
|
|
||||||
"lact"
|
|
||||||
"ghb"
|
|
||||||
"bitwig-studio"
|
|
||||||
"ptyxis"
|
|
||||||
"yumex"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
# /etc/nixos/configuration.nix
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
fetchurl,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
moondeckBuddyWrapped = pkgs.appimageTools.wrapType2 {
|
|
||||||
pname = "moondeck-buddy";
|
|
||||||
version = "1.8.2";
|
|
||||||
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://github.com/FrogTheFrog/moondeck-buddy/releases/download/v1.8.2/MoonDeckBuddy-1.8.2-x86_64.AppImage";
|
|
||||||
hash = "sha256-D+9XIi3pIwaAq22DGHWAUqKub778qHQSjCU0aIjXmYY="; # Don't forget to update this!
|
|
||||||
};
|
|
||||||
|
|
||||||
extraPkgs = pkgs:
|
|
||||||
with pkgs; [
|
|
||||||
steam
|
|
||||||
libappindicator-gtk3
|
|
||||||
];
|
|
||||||
|
|
||||||
desktopItems = [
|
|
||||||
(pkgs.makeDesktopItem {
|
|
||||||
name = "Moondeck Buddy";
|
|
||||||
exec = "moondeck-buddy";
|
|
||||||
icon = "applications-other";
|
|
||||||
comment = "A Sunshine/Moondeck Buddy.";
|
|
||||||
categories = ["Utility" "Productivity"];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Moondeck Buddy is an companion app for NVIDIA Sunshine/Moonlight.";
|
|
||||||
homepage = "https://github.com/FrogTheFrog/moondeck-buddy";
|
|
||||||
license = licenses.gpl3Only;
|
|
||||||
platforms = platforms.linux;
|
|
||||||
mainProgram = "moondeck-buddy";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
moondeckBuddyWrapped
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.appimage.enable = true;
|
|
||||||
programs.appimage.binfmt = true;
|
|
||||||
|
|
||||||
# --- Firewall Configuration ---
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
59999 # Allow Moondeck Buddy to listen on this port
|
|
||||||
];
|
|
||||||
# If Moondeck Buddy also needs UDP, uncomment and add it here:
|
|
||||||
networking.firewall.allowedUDPPorts = [
|
|
||||||
59999
|
|
||||||
];
|
|
||||||
|
|
||||||
systemd.services.moondeck-buddy = {
|
|
||||||
description = "Moondeck Buddy service for Sunshine/Moonlight integration";
|
|
||||||
after = ["network-online.target" "display-manager.service"]; # Ensure display manager is up
|
|
||||||
wantedBy = ["multi-user.target"]; # Still autostart with multi-user target
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "simple";
|
|
||||||
User = "${myConfig.essentials.Username}"; # <--- IMPORTANT: User *must* have access to the display
|
|
||||||
Group = "users";
|
|
||||||
|
|
||||||
ExecStart = "${moondeckBuddyWrapped}/bin/moondeck-buddy";
|
|
||||||
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = 5;
|
|
||||||
|
|
||||||
# Crucial for GUI applications running as system services:
|
|
||||||
Environment = [
|
|
||||||
"DISPLAY=:0" # Assuming your main display is :0. This can vary.
|
|
||||||
# "XAUTHORITY=/home/your-username/.Xauthority" # Needed if using Xauthority
|
|
||||||
# If using Wayland, you might need XDG_RUNTIME_DIR and WAYLAND_DISPLAY
|
|
||||||
# "XDG_RUNTIME_DIR=/run/user/$(id -u your-username)"
|
|
||||||
# "WAYLAND_DISPLAY=wayland-0" # Or specific to your compositor
|
|
||||||
];
|
|
||||||
|
|
||||||
# You might also need to explicitly grant access, e.g., with xhost +
|
|
||||||
# but that's a security hole. Best is to rely on user authentication.
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
environment.systemPackages = [
|
|
||||||
inputs.caelestia-shell.packages.${system}.caelestia-shell
|
|
||||||
inputs.caelestia-shell.packages.${system}.caelestia-cli
|
|
||||||
inputs.caelestia-shell.packages.${system}.beat-detector
|
|
||||||
];
|
|
||||||
environment.sessionVariables = {
|
|
||||||
# Set CAELESTIA_BD_PATH to the store path of beat-detector
|
|
||||||
CAELESTIA_BD_PATH = "${inputs.caelestia-shell.packages.${system}.beat-detector}/bin/beat_detector";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
caelestia-shell = pkgs.fetchFromGitea {
|
|
||||||
domain = "git.sakamoto.dev";
|
|
||||||
owner = "caelestia-dots";
|
|
||||||
repo = "shell";
|
|
||||||
rev = "main";
|
|
||||||
sha256 = "sha256-y9Wkh+9ND8GcUYhybXdEPTVY6gUb0jclnbbVi70l70Y=";
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
imports = [
|
|
||||||
];
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
inputs.quickshell.packages.${system}.default
|
|
||||||
wl-screenrec
|
|
||||||
libnotify
|
|
||||||
grim
|
|
||||||
foot
|
|
||||||
hyprpicker
|
|
||||||
qalculate-qt
|
|
||||||
fuzzel
|
|
||||||
inotify-tools
|
|
||||||
app2unit
|
|
||||||
fish
|
|
||||||
jq
|
|
||||||
fd
|
|
||||||
cliphist
|
|
||||||
(pkgs.python3.withPackages (python-pkgs:
|
|
||||||
with python-pkgs; [
|
|
||||||
aubio
|
|
||||||
pyaudio
|
|
||||||
numpy
|
|
||||||
]))
|
|
||||||
cava
|
|
||||||
bluez
|
|
||||||
ddcutil
|
|
||||||
brightnessctl
|
|
||||||
curl
|
|
||||||
material-symbols
|
|
||||||
];
|
|
||||||
home.file.".config/quickshell/caelestia" = {
|
|
||||||
source = caelestia-shell;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
programs.rofi = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs; [
|
|
||||||
rofi-calc
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
{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;
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
remotePlay.openFirewall = true;
|
|
||||||
gamescopeSession.enable = true;
|
|
||||||
extraCompatPackages = with pkgs; [proton-ge-bin];
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
mangohud
|
|
||||||
gamescope-wsi
|
|
||||||
];
|
|
||||||
};
|
|
||||||
programs.gamemode.enable = true;
|
|
||||||
}
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
{pkgs, ...}: {
|
|
||||||
xdg.desktopEntries = {
|
|
||||||
steam = {
|
|
||||||
name = "Steam";
|
|
||||||
genericName = "Game Platform";
|
|
||||||
comment = "Play and discuss games.";
|
|
||||||
# exec = "${pkgs.mangohud}/bin/mangohud ${pkgs.steam}/bin/steam %U"; # The standard command to launch Steam
|
|
||||||
exec = "${pkgs.steam}/bin/steam %U"; # The standard command to launch Steam
|
|
||||||
terminal = false;
|
|
||||||
icon = "steam"; # Assumes the 'steam' icon is available in your icon theme
|
|
||||||
type = "Application";
|
|
||||||
categories = ["Game" "Network"];
|
|
||||||
mimeType = [
|
|
||||||
"x-scheme-handler/steam" # For handling steam:// links
|
|
||||||
];
|
|
||||||
actions = {
|
|
||||||
BigPicture = {
|
|
||||||
name = "Big Picture Mode";
|
|
||||||
# exec = "${pkgs.mangohud}/bin/mangohud ${pkgs.steam}/bin/steam steam://open/bigpicture";
|
|
||||||
exec = "${pkgs.steam}/bin/steam steam://open/bigpicture";
|
|
||||||
};
|
|
||||||
Store = {
|
|
||||||
name = "Store";
|
|
||||||
# exec = "${pkgs.mangohud}/bin/mangohud ${pkgs.steam}/bin/steam steam://store";
|
|
||||||
exec = "${pkgs.steam}/bin/steam steam://open/bigpicture";
|
|
||||||
};
|
|
||||||
Library = {
|
|
||||||
name = "Library";
|
|
||||||
# exec = "${pkgs.mangohud}/bin/mangohud ${pkgs.steam}/bin/steam steam://library";
|
|
||||||
exec = "${pkgs.steam}/bin/steam steam://open/bigpicture";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
];
|
|
||||||
environment.sessionVariables = {
|
|
||||||
DECKY_HOME = "/home/${myConfig.essentials.Username}/homebrew";
|
|
||||||
DECKY_USER_HOME = "/home/${myConfig.essentials.Username}";
|
|
||||||
};
|
|
||||||
|
|
||||||
# environment.systemPackages = with pkgs; [inputs.jovian.packages.${system}.default];
|
|
||||||
jovian.steam = {
|
|
||||||
enable = true;
|
|
||||||
autoStart = true;
|
|
||||||
desktopSession = "hyprland";
|
|
||||||
user = "${myConfig.essentials.Username}";
|
|
||||||
environment = {
|
|
||||||
OUTPUT_CONNECTOR = "DP-1"; # Keep this
|
|
||||||
STEAM_GAMESCOPE_CMD_OPTIONS = "-O DP-1"; # Force override flag
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
jovian.decky-loader = {
|
|
||||||
enable = true;
|
|
||||||
stateDir = "/home/${myConfig.essentials.Username}/Games/Decky";
|
|
||||||
user = "${myConfig.essentials.Username}";
|
|
||||||
};
|
|
||||||
|
|
||||||
jovian.devices.steamdeck = {
|
|
||||||
enableControllerUdevRules = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs.gamescope = {
|
|
||||||
# enable = true;
|
|
||||||
# args = ["--output-name" "DP-1"];
|
|
||||||
# };
|
|
||||||
|
|
||||||
jovian.hardware.has.amd.gpu = true;
|
|
||||||
jovian.steamos.enableBluetoothConfig = true;
|
|
||||||
# jovian.steamos.useSteamOSConfig = true;
|
|
||||||
# jovian.devices.steamdeck.enableControllerUdevRules = true;
|
|
||||||
}
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
{pkgs, ...}: let
|
|
||||||
mangoConfigList = ["cpu_temp" "gpu_temp" "ram" "vram"];
|
|
||||||
mangoConfigStr = builtins.concatStringsSep "," mangoConfigList;
|
|
||||||
|
|
||||||
gamescopeArgsList = [
|
|
||||||
"--adaptive-sync"
|
|
||||||
"--hdr-enabled"
|
|
||||||
"--mangoapp"
|
|
||||||
"--rt"
|
|
||||||
"--steam"
|
|
||||||
];
|
|
||||||
gamescopeArgsStr = builtins.concatStringsSep " " gamescopeArgsList;
|
|
||||||
|
|
||||||
steamArgsList = [
|
|
||||||
"-pipewire-dmabuf"
|
|
||||||
"-tenfoot"
|
|
||||||
];
|
|
||||||
steamArgsStr = builtins.concatStringsSep " " steamArgsList;
|
|
||||||
|
|
||||||
myGamescopeSteamScript = pkgs.writeShellApplication {
|
|
||||||
name = "start-gamescope-steam";
|
|
||||||
runtimeInputs = [
|
|
||||||
pkgs.gamescope
|
|
||||||
pkgs.steam
|
|
||||||
pkgs.mangohud
|
|
||||||
];
|
|
||||||
text = ''
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -xeuo pipefail
|
|
||||||
|
|
||||||
export MANGOHUD=1
|
|
||||||
export MANGOHUD_CONFIG="${mangoConfigStr}"
|
|
||||||
|
|
||||||
exec ${pkgs.gamescope}/bin/gamescope ${gamescopeArgsStr} -- ${pkgs.steam}/bin/steam ${steamArgsStr}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
programs = {
|
|
||||||
gamescope = {
|
|
||||||
enable = true;
|
|
||||||
capSysNice = true;
|
|
||||||
};
|
|
||||||
steam = {
|
|
||||||
enable = true;
|
|
||||||
remotePlay.openFirewall = true;
|
|
||||||
dedicatedServer.openFirewall = true;
|
|
||||||
localNetworkGameTransfers.openFirewall = true;
|
|
||||||
gamescopeSession.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.xone.enable = true;
|
|
||||||
|
|
||||||
environment.loginShellInit = ''
|
|
||||||
[[ "$(tty)" = "/dev/tty1" ]] && ${myGamescopeSteamScript}/bin/start-gamescope-steam
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.programs.sunshine;
|
|
||||||
in {
|
|
||||||
options.programs.sunshine = with lib; {
|
|
||||||
enable = mkEnableOption "sunshine";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
networking.firewall.allowedTCPPortRanges = [
|
|
||||||
{
|
|
||||||
from = 47984;
|
|
||||||
to = 48010;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
networking.firewall.allowedUDPPortRanges = [
|
|
||||||
{
|
|
||||||
from = 47998;
|
|
||||||
to = 48010;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
security.wrappers.sunshine = {
|
|
||||||
owner = "root";
|
|
||||||
group = "root";
|
|
||||||
capabilities = "cap_sys_admin+p";
|
|
||||||
source = "${pkgs.sunshine}/bin/sunshine";
|
|
||||||
};
|
|
||||||
systemd.user.services.sunshine = {
|
|
||||||
description = "Sunshine self-hosted game stream host for Moonlight";
|
|
||||||
startLimitBurst = 5;
|
|
||||||
startLimitIntervalSec = 500;
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${config.security.wrapperDir}/sunshine";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = "5s";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user