Compare commits
207 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a1c4841580 | |||
| 62d8d36ed8 | |||
| d8657c7eeb | |||
| 3c4ed456cf | |||
| 551302a00e | |||
| 9aaffe2677 | |||
| 11cee2638a | |||
| e35dc3d28e | |||
| b686cf7751 | |||
| 7fd7cfac70 | |||
| 2023828364 | |||
| 2d8ba9f7ea | |||
| bc70242a99 | |||
| 0eabcc4fc1 | |||
| 1e301b958e | |||
| 4a4f66c08e | |||
| e33dbea82e | |||
| 50813851cb | |||
| b3c502fdf3 | |||
| 3587a7042d | |||
| cfc2f01e57 | |||
| ebef97f84b | |||
| 3740928c70 | |||
| 435742f29c | |||
| 0ebe999f92 | |||
| 005c744cb6 | |||
| a2b4b0d8ea | |||
| e8c6cb073f | |||
| 17b01cbf1c | |||
| 6d5cd6d78e | |||
| c48d1543a4 | |||
| ac41162a6e | |||
| 74f26f5997 | |||
| 0a1acae08a | |||
| 54f2f1e8f9 | |||
| a25d41100a | |||
| 381830a767 | |||
| d1c11014de | |||
| b41a820dcc | |||
| 38ba3a2fdb | |||
| 998f4905b0 | |||
| 9cc45e426d | |||
| 7053adc718 | |||
| 8d6af2f936 | |||
| f4788f863e | |||
| 2ba8639dfd | |||
| a609216012 | |||
| b6911bc045 | |||
| 09fbbec45e | |||
| b697c89aae | |||
| 0e0b8a40c7 | |||
| 555fea04b4 | |||
| fee08ad3d2 | |||
| b3e0e3e76f | |||
| 4dee2bf44f | |||
| f23d023551 | |||
| 61ac2f71d5 | |||
| ca9e487111 | |||
| f8e327d46d | |||
| 835a7fdad3 | |||
| 6034a9797c | |||
| c204eed76e | |||
| 0abf1447af | |||
| 73ece504c9 | |||
| 30f2178b6f | |||
| 5b0a8b3c49 | |||
| da0db9551c | |||
| f1b1dcdd9e | |||
| b3bcc0f058 | |||
| 2b1bc85514 | |||
| 6517af5889 | |||
| 43f8d827f6 | |||
| f7d3c7a7c4 | |||
| 7f7cbe74f7 | |||
| e3c5d8c166 | |||
| 8957622879 | |||
| 657fde7545 | |||
| f757369821 | |||
| e623b83d68 | |||
| 2b8d4a1dce | |||
| e6103c3153 | |||
| 6b0a342cdd | |||
| 280a2da2db | |||
| 363d470386 | |||
| f715f08831 | |||
| c4e0681c33 | |||
| a3121c0ce0 | |||
| 6af25e5453 | |||
| fd8da098ed | |||
| e83c8ded35 | |||
| 229b0041a6 | |||
| 128e6a04c2 | |||
| a92159168c | |||
| 1fb2d40aa8 | |||
| 7ec496be3d | |||
| 35a794a648 | |||
| b8dfddd2e8 | |||
| 4a49aba2ba | |||
| d1bffc3952 | |||
| 8b2e901680 | |||
| a5db5cc54d | |||
| efede58a6d | |||
| 7df80623d5 | |||
| 028df1fd35 | |||
| 12e64d34e6 | |||
| ba7174224c | |||
| c794974b20 | |||
| d9fdab315c | |||
| b3d37d7b20 | |||
| 88076292de | |||
| 25c0a328e6 | |||
| ab855f18ea | |||
| b7659157fa | |||
| 608df0bd38 | |||
| 1871ca6ef6 | |||
| d7eed2ecf6 | |||
| 789e6786cc | |||
| 8e9bfe9522 | |||
| 0c99dfefbb | |||
| c16cedf981 | |||
| 4f0c6d3e46 | |||
| 752a6ad1de | |||
| 802c2aa6bf | |||
| 2a6b5bc2c7 | |||
| e986b99ce7 | |||
| c17dabdbd8 | |||
| 0ab12aabff | |||
| 30ecca57ba | |||
| cd734937c0 | |||
| 477b592b06 | |||
| fda9681b84 | |||
| 694042f027 | |||
| 7e77b1acd4 | |||
| 6b765f1b54 | |||
| 97d65f2f7e | |||
| 9186f2cc28 | |||
| 6ae2221007 | |||
| e862ce8f9b | |||
| 6dbe009076 | |||
| 598abbf308 | |||
| 17ccf2ba8c | |||
| ca5b15b377 | |||
| a11926ee85 | |||
| f19b7ab674 | |||
| 306e540a67 | |||
| 5185edce48 | |||
| b3f9882c7e | |||
| ee7b59c521 | |||
| 113a15cd69 | |||
| 2ea4f6631c | |||
| e21cf63216 | |||
| f31387ab12 | |||
| 4ec339c53b | |||
| eb70a6dd52 | |||
| a9aef32984 | |||
| 58d575ebeb | |||
| be57946347 | |||
| 63c2f887db | |||
| 36222bdb63 | |||
| de69800662 | |||
| f2a1604009 | |||
| dfec0bc5da | |||
| 45ce1678d1 | |||
| 5022c31815 | |||
| 2534d83bdd | |||
| 3e7917aee3 | |||
| 530a7c9777 | |||
| a3b195da1f | |||
| fa1a376d85 | |||
| 25d034d7dc | |||
| a0572f8a95 | |||
| 6e32ac5ceb | |||
| 5278908420 | |||
| 6044c4e063 | |||
| d0532495e0 | |||
| 3339960062 | |||
| 77854b1c69 | |||
| b1ca82da64 | |||
| 72bc56a934 | |||
| aac77be6ec | |||
| 6404fbd36d | |||
| f442452a2e | |||
| 35f515e828 | |||
| 3215644a87 | |||
| 05198ddeab | |||
| 67402c3e54 | |||
| 78abaed26f | |||
| 64a56ea346 | |||
| 453bc1f249 | |||
| 7fc61d7d27 | |||
| d9edf3f389 | |||
| 4a29a676b5 | |||
| 6a61e05ae7 | |||
| ce1301af38 | |||
| dd3caf07d2 | |||
| c62421cfb6 | |||
| d4026e1559 | |||
| 53346c17ea | |||
| 52356a4a87 | |||
| c603389ebc | |||
| 2d8e528b6f | |||
| 87dea595d3 | |||
| 9629dd0ba0 | |||
| 9a722c915a | |||
| 65e7e86739 | |||
| 1b0dcd2863 | |||
| c1e4ef47f3 |
@@ -1,6 +1,58 @@
|
||||
# Getting Started
|
||||
# Sakamoto NixOS
|
||||
|
||||
`nixos-rebuild switch --flake LOCATION#HOST_NAME`
|
||||
`home-manager switch --flake LOCATION#HOST_NAME`
|
||||
Sakamoto NixOS is built with various profiles intended for reproducibility.
|
||||
|
||||
Change `LOCATION` and `HOST_NAME`.
|
||||
## Available Hosts
|
||||
|
||||
- MacBook M series
|
||||
- Linux
|
||||
|
||||
## Installation
|
||||
|
||||
1. Install [Nix](https://nixos.org/download/).
|
||||
|
||||
2. Ensure Nix is installed properly by running the following (this also gives you `nano` for editing later):
|
||||
|
||||
```sh
|
||||
nix-shell -p nano
|
||||
```
|
||||
|
||||
3. Clone the git repository:
|
||||
|
||||
```sh
|
||||
git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos && cd ~/.config/nixos/
|
||||
```
|
||||
|
||||
4. Copy `info.default.nix` and rename it to `info.local.nix`:
|
||||
|
||||
```sh
|
||||
cp ~/.config/nixos/info.default.nix ~/.config/nixos/info.local.nix
|
||||
```
|
||||
|
||||
🚨 **CRITICAL STEP:** Edit `info.local.nix`:
|
||||
|
||||
```sh
|
||||
nano ~/.config/nixos/info.local.nix
|
||||
```
|
||||
|
||||
Modify it to fit your system — especially your **username**.
|
||||
If you accidentally leave the default `biscuit`, that user will be created.
|
||||
**Login password for `biscuit` is `<PLACEHOLDER>`.**
|
||||
|
||||
5. Execute the following command based on your host:
|
||||
|
||||
- **MacBook M series:**
|
||||
|
||||
```sh
|
||||
sudo nix run nix-darwin --extra-experimental-features "nix-command flakes" -- switch --flake ~/.config/nixos#macos
|
||||
```
|
||||
|
||||
- **Linux:**
|
||||
|
||||
```sh
|
||||
sudo nixos-rebuild --flake ~/.config/nixos#desktop --impure
|
||||
sudo nix run home-manager -- init --switch
|
||||
home-manager switch --flake ~/.config/nixos#desktop --impure
|
||||
nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update
|
||||
reboot
|
||||
```
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.6 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 246 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 14 MiB |
+82
@@ -0,0 +1,82 @@
|
||||
{
|
||||
hostname = "hakase";
|
||||
username = "kenji";
|
||||
timezone = "America/Chicago";
|
||||
|
||||
vpn = {
|
||||
vpnEnable = false;
|
||||
vpnSecretFile = "/home/kenji/Wireguard/secret";
|
||||
};
|
||||
|
||||
gitProfile = {
|
||||
user = "biscuit";
|
||||
email = "biscuit@sakamoto.dev";
|
||||
defaultBranch = "master";
|
||||
};
|
||||
|
||||
terminal = {
|
||||
termFont = "JetBrainsMono Nerd Font"; # e.g., JetBrainsMono Nerd Font
|
||||
termSize = "20";
|
||||
termShell = "fish";
|
||||
shellAliases = {
|
||||
ls = "ls --color=auto";
|
||||
update = ''
|
||||
sh -c '
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
sudo darwin-rebuild switch --flake ~/.config/nixos#macos
|
||||
else
|
||||
sudo nixos-rebuild switch --flake ~/.config/nixos#desktop && home-manager switch --flake ~/.config/nixos#desktop
|
||||
fi
|
||||
'
|
||||
'';
|
||||
agu = "pkill gjs & ags run ~/.config/nixos/pkgs/ags/biscuit/app.ts & disown (jobs -p) &";
|
||||
};
|
||||
};
|
||||
|
||||
allowUnfree = true; # allows installation of commercial apps.
|
||||
touchpadSupport = false;
|
||||
|
||||
logitech-hardware = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# Custom Applications
|
||||
linux-apps = {
|
||||
gamingDesktop = true; # adds steam
|
||||
my-apps = pkgs:
|
||||
with pkgs; [
|
||||
jellyfin-media-player
|
||||
mangohud
|
||||
];
|
||||
};
|
||||
|
||||
hyprconf = {
|
||||
monitor = [
|
||||
"DP-1,highres@165,0x1080,auto"
|
||||
"DP-2,highres@highrr,0x0,auto"
|
||||
];
|
||||
};
|
||||
|
||||
sshExtraConfig = ''
|
||||
Host macair
|
||||
User biscuit
|
||||
HostName 192.168.68.81
|
||||
'';
|
||||
|
||||
# BUILD (optional), you can remove these blocks.
|
||||
builder = {
|
||||
trustedUsers = [
|
||||
"@groups"
|
||||
"biscuit"
|
||||
];
|
||||
buildMachines = [
|
||||
{
|
||||
hostName = "192.168.68.81";
|
||||
sshUser = "biscuit";
|
||||
sshKey = "/home/biscuit/.ssh/id_rsa.pub";
|
||||
system = "x86_64-linux";
|
||||
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
Generated
+658
-246
File diff suppressed because it is too large
Load Diff
@@ -4,98 +4,93 @@
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs"; # ensures version follows nixpkgs
|
||||
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
hyprland.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
astal.url = "github:aylur/astal";
|
||||
astal.inputs.nixpkgs.follows = "nixpkgs";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs"; # `follows` ensure it follows nixpkgs versiona. Avoids breaking updates.
|
||||
darwin.url = "github:lnl7/nix-darwin";
|
||||
darwin.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
ags.url = "github:aylur/ags";
|
||||
ags.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
hyprpanel.url = "github:Jas-SinghFSU/Hyprpanel";
|
||||
hyprpanel.inputs.nixpkgs.follows = "nixpkgs";
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
hyprland.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
unlisted-fonts.url = "git+https://git.sakamoto.dev/kenji/nix-fonts.git";
|
||||
unlisted-fonts.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
nixvim.url = "github:nix-community/nixvim";
|
||||
nixvim.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
nix-neovim.url = "git+https://git.sakamoto.dev/kenji/nix-neovim.git";
|
||||
nix-neovim.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
# kitty-catppuccin.url = "git+https://git.sakamoto.dev/kenji/nix-kitty-catppuccin.git";
|
||||
# kitty-catppuccin.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
matugen.url = "github:/InioX/Matugen";
|
||||
matugen.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
darwin,
|
||||
ags,
|
||||
astal,
|
||||
hyprpanel,
|
||||
hyprland,
|
||||
unlisted-fonts,
|
||||
nix-neovim,
|
||||
...
|
||||
} @ inputs: let
|
||||
config = import ./config.nix;
|
||||
lib = nixpkgs.lib;
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
# pkgs = nixpkgs.legacyPackages.${system}; # alternative, without overlays. Unused.
|
||||
args =
|
||||
{
|
||||
inherit inputs system;
|
||||
}
|
||||
// config;
|
||||
in {
|
||||
# TODO: migrate to another nix file.
|
||||
# packages.${system}.default = pkgs.stdenv.mkDerivation {
|
||||
# pname = "marble";
|
||||
# src = ./marble;
|
||||
# dontUnpack = true;
|
||||
#
|
||||
# nativeBuildInputs = with pkgs; [
|
||||
# wrapGAppsHook
|
||||
# gobject-introspection
|
||||
# ];
|
||||
#
|
||||
# buildInputs =
|
||||
# (with astal.packages.${system}; [
|
||||
# astal3
|
||||
# io
|
||||
# apps
|
||||
# battery
|
||||
# bluetooth
|
||||
# hyprland
|
||||
# mpris
|
||||
# network
|
||||
# notifd
|
||||
# powerprofiles
|
||||
# tray
|
||||
# wireplumber
|
||||
# ])
|
||||
# ++ (with pkgs; [
|
||||
# gjs
|
||||
# ]);
|
||||
#
|
||||
# preFixup = ''
|
||||
# gappsWrapperArgs+=(
|
||||
# --prefix PATH : ${with pkgs;
|
||||
# lib.makeBinPath [
|
||||
# dart-sass
|
||||
# fzf
|
||||
# ]}
|
||||
# )
|
||||
# '';
|
||||
#
|
||||
# installPhase = ''
|
||||
# mkdir -p $out/bin
|
||||
# install $src $out/bin/marble
|
||||
# '';
|
||||
# }; # END TODO
|
||||
|
||||
# linux only
|
||||
nixosConfigurations = {
|
||||
biscuit = lib.nixosSystem {
|
||||
specialArgs = {inherit inputs system;};
|
||||
desktop = lib.nixosSystem {
|
||||
inherit system;
|
||||
specialArgs = args;
|
||||
modules = [
|
||||
./nixos/configuration.nix
|
||||
./nixos/desktop/configuration.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
homeConfigurations = {
|
||||
biscuit = home-manager.lib.homeManagerConfiguration {
|
||||
desktop = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [inputs.hyprpanel.overlay];
|
||||
overlays = [
|
||||
# (final: prev: {
|
||||
# ags_1 = prev.ags_1.overrideAttrs (old: {
|
||||
# buildInputs = old.buildInputs ++ [pkgs.libdbusmenu-gtk3];
|
||||
# });
|
||||
# })
|
||||
];
|
||||
};
|
||||
# inherit pkgs;
|
||||
extraSpecialArgs = {inherit inputs system;};
|
||||
modules = [./home-manager/home.nix];
|
||||
extraSpecialArgs = args;
|
||||
modules = [./home/desktop/home.nix];
|
||||
};
|
||||
};
|
||||
# exclusive to macos M series
|
||||
darwinConfigurations = {
|
||||
macos = darwin.lib.darwinSystem {
|
||||
system = "aarch64-darwin";
|
||||
specialArgs = args;
|
||||
modules = [
|
||||
./nixos/macos/darwin.nix
|
||||
home-manager.darwinModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.extraSpecialArgs = args;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
{
|
||||
inputs, outputs, lib, config, pkgs, ...
|
||||
}: {
|
||||
imports = [
|
||||
../modules/editor.nix
|
||||
../modules/terminal.nix
|
||||
../modules/wayland.nix
|
||||
];
|
||||
|
||||
home = {
|
||||
username = "biscuit";
|
||||
homeDirectory = "/home/biscuit";
|
||||
};
|
||||
|
||||
home.packages = [];
|
||||
home.sessionVariables = {};
|
||||
|
||||
programs.git.enable = true;
|
||||
programs.neovim.enable = true;
|
||||
|
||||
systemd.user.startServices = "sd-switch";
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
home.stateVersion = "23.05";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
{username, ...}: {
|
||||
imports = [
|
||||
../../modules/editor.nix
|
||||
../../modules/desktop/display-manager.nix
|
||||
../../modules/desktop/misc.nix
|
||||
../../modules/desktop/app.nix
|
||||
];
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
home = {
|
||||
username = "${username}";
|
||||
homeDirectory = "/home/${username}";
|
||||
packages = [];
|
||||
sessionVariables = {};
|
||||
};
|
||||
|
||||
systemd.user.startServices = "sd-switch";
|
||||
home.stateVersion = "23.05";
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
../../modules/editor.nix
|
||||
];
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
home.packages = [];
|
||||
home.stateVersion = "23.05";
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
linux-apps,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports =
|
||||
[
|
||||
]
|
||||
++ lib.optionals (linux-apps.gamingDesktop == true) [
|
||||
../pkgs/steam/default.nix
|
||||
../pkgs/heroic/default.nix
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{pkgs, ...}: let
|
||||
info = import ../../config.nix;
|
||||
in {
|
||||
home.packages = info.linux-apps.my-apps pkgs;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
../../pkgs/hyprland/default.nix
|
||||
../../pkgs/ags/default.nix
|
||||
../../pkgs/swww/default.nix
|
||||
../../pkgs/waybar/default.nix
|
||||
../../pkgs/rofi/default.nix
|
||||
../../pkgs/hypridle/default.nix
|
||||
../../pkgs/hyprlock/default.nix
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
../../pkgs/btop/default.nix
|
||||
../../pkgs/matugen/default.nix
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{...}: {
|
||||
imports = [
|
||||
../system/desktop/wayland.nix
|
||||
../system/desktop/sound.nix
|
||||
../system/desktop/misc.nix
|
||||
../system/desktop/browser.nix
|
||||
../system/desktop/font.nix
|
||||
../system/desktop/theme.nix
|
||||
../system/desktop/cursor.nix
|
||||
];
|
||||
}
|
||||
+8
-3
@@ -1,6 +1,11 @@
|
||||
|
||||
{ ... }: {
|
||||
{...}: {
|
||||
imports = [
|
||||
../packages/nvim/default.nix
|
||||
../pkgs/fastfetch/default.nix
|
||||
../pkgs/git/default.nix
|
||||
../pkgs/kitty/default.nix
|
||||
../pkgs/neovim/default.nix
|
||||
../pkgs/fish/default.nix
|
||||
../pkgs/starship/default.nix
|
||||
../pkgs/zsh/default.nix
|
||||
];
|
||||
}
|
||||
|
||||
+13
-10
@@ -1,11 +1,14 @@
|
||||
{ ... }: {
|
||||
imports = [
|
||||
../system/firefox/default.nix
|
||||
../system/astal/default.nix
|
||||
../system/hyprland/default.nix
|
||||
../system/fonts/default.nix
|
||||
../system/cursor/default.nix
|
||||
../system/development/default.nix
|
||||
../system/theme/default.nix
|
||||
];
|
||||
{
|
||||
vpn,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports =
|
||||
[
|
||||
../system/default.nix
|
||||
../system/users.nix
|
||||
]
|
||||
++ lib.optionals (vpn.vpnEnable == true) [
|
||||
../system/vpn.nix
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
imports = [
|
||||
../packages/zsh/default.nix
|
||||
../packages/kitty/default.nix
|
||||
../packages/fastfetch/default.nix
|
||||
];
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
|
||||
{ ... }: {
|
||||
imports = [
|
||||
../packages/hyprland/default.nix
|
||||
../packages/waybar/default.nix
|
||||
../packages/ags/default.nix
|
||||
];
|
||||
}
|
||||
@@ -1,105 +0,0 @@
|
||||
{ config, pkgs, inputs, ... }: {
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
../modules/system.nix
|
||||
];
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
|
||||
networking.hostName = "nixos"; # Define your hostname.
|
||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
# Enable bluetooth
|
||||
hardware.bluetooth.enable = true;
|
||||
services.blueman.enable = true;
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "America/Chicago";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
|
||||
i18n.extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_US.UTF-8";
|
||||
LC_IDENTIFICATION = "en_US.UTF-8";
|
||||
LC_MEASUREMENT = "en_US.UTF-8";
|
||||
LC_MONETARY = "en_US.UTF-8";
|
||||
LC_NAME = "en_US.UTF-8";
|
||||
LC_NUMERIC = "en_US.UTF-8";
|
||||
LC_PAPER = "en_US.UTF-8";
|
||||
LC_TELEPHONE = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver.xkb = {
|
||||
layout = "us";
|
||||
variant = "";
|
||||
};
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users = {
|
||||
defaultUserShell = pkgs.bash;
|
||||
users.biscuit = {
|
||||
isNormalUser = true;
|
||||
description = "Biscuit";
|
||||
extraGroups = [ "networkmanager" "wheel" ];
|
||||
shell = pkgs.zsh;
|
||||
packages = with pkgs; [];
|
||||
};
|
||||
};
|
||||
|
||||
# List packages installed in system profile.
|
||||
environment.systemPackages = with pkgs; [
|
||||
wl-clipboard
|
||||
vim # Default editor
|
||||
wget
|
||||
git
|
||||
home-manager
|
||||
zsh
|
||||
p7zip
|
||||
btop
|
||||
libnotify
|
||||
astal.apps
|
||||
];
|
||||
|
||||
environment.sessionVariables = {
|
||||
|
||||
};
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
services.openssh.enable = true;
|
||||
|
||||
# Enable non-bash shell
|
||||
programs.zsh.enable = true;
|
||||
|
||||
### ----------------------------------------
|
||||
### DESKTOP START
|
||||
services.xserver.displayManager.gdm.enable = true;
|
||||
hardware = {
|
||||
# pulseaudio.enable = true;
|
||||
graphics.enable = true;
|
||||
nvidia.modesetting.enable = false;
|
||||
};
|
||||
|
||||
### DESKTOP END
|
||||
### ----------------------------------------
|
||||
|
||||
# Enable experimental features
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
#nixpkgs = {
|
||||
# overlays = [
|
||||
# (final: prev: {
|
||||
# nvchad = inputs.nvchad4nix.packages.${pkgs.system}.nvchad;
|
||||
#})
|
||||
#];
|
||||
#};
|
||||
# System state version
|
||||
system.stateVersion = "24.11"; # Ensure this matches your NixOS version
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
pkgs,
|
||||
allowUnfree,
|
||||
builder,
|
||||
sshExtraConfig,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
# Include the results of the hardware scan.
|
||||
/etc/nixos/hardware-configuration.nix
|
||||
../../modules/system.nix
|
||||
../../modules/display-manager.nix
|
||||
../../modules/app.nix
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim
|
||||
wget
|
||||
];
|
||||
|
||||
nixpkgs.config.allowUnfree = allowUnfree;
|
||||
|
||||
nix.settings = {
|
||||
trusted-users = builder.trustedUsers;
|
||||
experimental-features = ["nix-command" "flakes"];
|
||||
};
|
||||
|
||||
programs.ssh.extraConfig = sshExtraConfig;
|
||||
|
||||
nix.distributedBuilds = true;
|
||||
nix.settings.builders-use-substitutes = true;
|
||||
|
||||
# nix.buildMachines = builder.buildMachines;
|
||||
system.stateVersion = "25.05";
|
||||
}
|
||||
@@ -8,24 +8,30 @@
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/8552e23a-af9f-4af8-947f-9ea6ff1e7195";
|
||||
fsType = "ext4";
|
||||
{ device = "/dev/disk/by-uuid/3f2c4a5a-3124-462a-9fb9-cccc933bac63";
|
||||
fsType = "btrfs";
|
||||
options = [ "subvol=@" ];
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/00BB-80E9";
|
||||
{ device = "/dev/disk/by-uuid/18F8-7DC1";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
fileSystems."/mnt/CRUCIAL" =
|
||||
{ device = "/dev/disk/by-uuid/394f67b9-e75b-40cc-9b15-28bbda40fff4";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/2a916b88-8039-481b-9c30-4edd0f329eb3"; }
|
||||
[ { device = "/dev/disk/by-uuid/bbe1e281-4b1d-4d85-ba6a-6f5265f0e3a3"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
@@ -33,9 +39,10 @@
|
||||
# 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.eno1.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.biscuit-default.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.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
pkgs,
|
||||
builder,
|
||||
terminal,
|
||||
username,
|
||||
...
|
||||
}: {
|
||||
# List packages installed in system profile. To search by name, run:
|
||||
# $ nix-env -qaP | grep wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
python313
|
||||
];
|
||||
|
||||
# Auto upgrade nix package and the daemon service.
|
||||
# services.nix-daemon.enable = true;
|
||||
# services.karabiner-elements.enable = true;
|
||||
# nix.package = pkgs.nix;
|
||||
|
||||
# Necessary for using flakes on this system.
|
||||
nix.settings.experimental-features = "nix-command flakes";
|
||||
nix.settings.trusted-users = builder.trustedUsers;
|
||||
|
||||
# Create /etc/zshrc that loads the nix-darwin environment.
|
||||
programs.zsh.enable = true; # default shell on catalina
|
||||
programs.fish.enable = true;
|
||||
|
||||
# $ darwin-rebuild changelog
|
||||
system.stateVersion = 5;
|
||||
|
||||
# The platform the configuration will be used on.
|
||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||
|
||||
users.users.${username} = {
|
||||
name = "${username}";
|
||||
home = "/Users/${username}";
|
||||
shell = pkgs.${terminal.termShell};
|
||||
};
|
||||
|
||||
home-manager.users.${username} = import ../../home/macos/home.nix;
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
# add the home manager module
|
||||
imports = [
|
||||
inputs.ags.homeManagerModules.default
|
||||
# inputs.astal.homeManagerModules.default
|
||||
];
|
||||
|
||||
home.packages = [
|
||||
# inputs.astal.packages.${system}.default
|
||||
];
|
||||
|
||||
programs.ags = {
|
||||
enable = true;
|
||||
|
||||
# symlink to ~/.config/ags
|
||||
configDir = ./custom;
|
||||
|
||||
# additional packages to add to gjs's runtime
|
||||
extraPackages = with inputs.ags.packages.${pkgs.system}; [
|
||||
apps
|
||||
auth
|
||||
battery
|
||||
bluetooth
|
||||
hyprland
|
||||
mpris
|
||||
network
|
||||
notifd
|
||||
powerprofiles
|
||||
tray
|
||||
wireplumber
|
||||
|
||||
pkgs.fzf
|
||||
pkgs.dart-sass
|
||||
pkgs.esbuild
|
||||
];
|
||||
};
|
||||
# programs.astal = {
|
||||
# enable = true;
|
||||
# };
|
||||
}
|
||||
Submodule packages/ags/epik-shell deleted from 9002206c8b
@@ -1,3 +0,0 @@
|
||||
{ ... }: {
|
||||
programs.fastfetch.enable = true;
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
$terminal = kitty
|
||||
$bar = ags run
|
||||
$cursor = Bibata-Modern-Ice
|
||||
|
||||
exec-once = hyprctl setcursor $cursor 24
|
||||
exec-once = $bar
|
||||
exec-once = [workspace 20 silent] kitty --single-instance --hold fastfetch
|
||||
exec-once = [workspace 20 silent] firefox
|
||||
exec-once = [workspace 1] kitty --single-instance --hold fastfetch
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
|
||||
|
||||
@@ -1,191 +0,0 @@
|
||||
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor=,highres@highrr,auto,auto
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 2
|
||||
gaps_out = 5
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 0
|
||||
rounding_power = 2
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
# animations {
|
||||
# enabled = yes, please :)
|
||||
#
|
||||
# # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
#
|
||||
# bezier = easeOutQuint,0.23,1,0.32,1
|
||||
# bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
# bezier = linear,0,0,1,1
|
||||
# bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
# bezier = quick,0.15,0,0.1,1
|
||||
#
|
||||
# animation = global, 1, 10, default
|
||||
# animation = border, 1, 5.39, easeOutQuint
|
||||
# animation = windows, 1, 4.79, easeOutQuint
|
||||
# animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
# animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
# animation = fadeIn, 1, 1.73, almostLinear
|
||||
# animation = fadeOut, 1, 1.46, almostLinear
|
||||
# animation = fade, 1, 3.03, quick
|
||||
# animation = layers, 1, 3.81, easeOutQuint
|
||||
# animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
# animation = layersOut, 1, 1.5, linear, fade
|
||||
# animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
# animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
# animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
# animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
# animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
# }
|
||||
|
||||
animations {
|
||||
enabled = true
|
||||
# Animation curves
|
||||
|
||||
bezier = linear, 0, 0, 1, 1
|
||||
bezier = md3_standard, 0.2, 0, 0, 1
|
||||
bezier = md3_decel, 0.05, 0.7, 0.1, 1
|
||||
bezier = md3_accel, 0.3, 0, 0.8, 0.15
|
||||
bezier = overshot, 0.05, 0.9, 0.1, 1.1
|
||||
bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
|
||||
bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
|
||||
bezier = menu_decel, 0.1, 1, 0, 1
|
||||
bezier = menu_accel, 0.38, 0.04, 1, 0.07
|
||||
bezier = easeInOutCirc, 0.85, 0, 0.15, 1
|
||||
bezier = easeOutCirc, 0, 0.55, 0.45, 1
|
||||
bezier = easeOutExpo, 0.16, 1, 0.3, 1
|
||||
bezier = softAcDecel, 0.26, 0.26, 0.15, 1
|
||||
bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration
|
||||
# Animation configs
|
||||
animation = windows, 1, 3, md3_decel, popin 60%
|
||||
animation = windowsIn, 1, 3, md3_decel, popin 60%
|
||||
animation = windowsOut, 1, 3, md3_accel, popin 60%
|
||||
animation = border, 1, 10, default
|
||||
animation = fade, 1, 3, md3_decel
|
||||
# animation = layers, 1, 2, md3_decel, slide
|
||||
animation = layersIn, 1, 3, menu_decel, slide
|
||||
animation = layersOut, 1, 1.6, menu_accel
|
||||
animation = fadeLayersIn, 1, 2, menu_decel
|
||||
animation = fadeLayersOut, 1, 0.5, menu_accel
|
||||
animation = workspaces, 1, 7, menu_decel, slide
|
||||
# animation = workspaces, 1, 2.5, softAcDecel, slide
|
||||
# animation = workspaces, 1, 7, menu_decel, slidefade 15%
|
||||
# animation = specialWorkspace, 1, 3, md3_decel, slidefadevert 15%
|
||||
animation = specialWorkspace, 1, 3, md3_decel, slidevert
|
||||
}
|
||||
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrule = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
|
||||
numlock_by_default = true
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = false
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
device {
|
||||
name = epic-mouse-v1
|
||||
sensitivity = -0.5
|
||||
}
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
$mainMod = SUPER # Sets "Windows" key as main modifier
|
||||
$terminal = kitty --single-instance
|
||||
$browser = firefox
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, Return, exec, $terminal
|
||||
bind = $mainMod, Q, killactive,
|
||||
bind = $mainMod, M, exit,
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, R, exec, $menu
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, B, togglesplit, # dwindle
|
||||
bind = $mainMod, W, exec, $browser
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, H, movefocus, l
|
||||
bind = $mainMod, L, movefocus, r
|
||||
bind = $mainMod, K, movefocus, u
|
||||
bind = $mainMod, J, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Laptop multimedia keys for volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule
|
||||
# windowrule = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
@@ -1,13 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
|
||||
home.file.".config/hypr/hyprland.conf" = {
|
||||
source = builtins.toPath ./hyprland.conf;
|
||||
force = true;
|
||||
};
|
||||
|
||||
home.file.".config/hypr/hyprland" = {
|
||||
source = builtins.toPath ./custom;
|
||||
recursive = true;
|
||||
force = true;
|
||||
};
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
source=./hyprland/keybinds.conf
|
||||
source=./hyprland/autostart.conf
|
||||
source=./hyprland/env.conf
|
||||
source=./hyprland/general.conf
|
||||
source=./hyprland/rules.conf
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
pkgs.kitty
|
||||
];
|
||||
|
||||
programs.kitty.enable = true;
|
||||
programs.kitty.settings = {
|
||||
confirm_os_window_close = 0;
|
||||
window_padding_width = 10;
|
||||
font_size = 12.0;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
nvimSource = pkgs.fetchFromGitea {
|
||||
domain = "git.sakamoto.dev";
|
||||
owner = "kenji";
|
||||
repo = "nvim";
|
||||
rev = "5fc3341ac43b35fd4032c07925927d7f1e82886c";
|
||||
sha256 = "sha256-YbP814fKOFuCWBRwlccd4nx/h8sdMgiJQu54thRLsK8=";
|
||||
};
|
||||
in {
|
||||
home.packages = [
|
||||
pkgs.lazygit
|
||||
pkgs.ripgrep
|
||||
];
|
||||
home.file.".config/nvim" = {
|
||||
# BUG requires --impure
|
||||
source = /home/biscuit/Nixos/packages/nvim/nvchad;
|
||||
# source = nvimSource;
|
||||
recursive = true;
|
||||
force = true;
|
||||
};
|
||||
# Example use: provide it as a source
|
||||
# You could pass `nvimSource` to a program, or maybe use it in home.file, etc.
|
||||
}
|
||||
|
||||
Submodule packages/nvim/nvchad deleted from 2b4293a4c1
@@ -1,152 +0,0 @@
|
||||
{
|
||||
"layer": "top",
|
||||
"position": "top",
|
||||
"height": 45,
|
||||
"spacing": 0,
|
||||
"modules-left": [
|
||||
"hyprland/workspaces",
|
||||
"tray",
|
||||
"custom/lock",
|
||||
"custom/reboot",
|
||||
"custom/power",
|
||||
"clock"
|
||||
],
|
||||
"modules-center": ["hyprland/window"],
|
||||
"modules-right": [
|
||||
"network",
|
||||
"battery",
|
||||
"bluetooth",
|
||||
"pulseaudio",
|
||||
"backlight",
|
||||
"custom/temperature",
|
||||
"memory",
|
||||
"cpu"
|
||||
],
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": false,
|
||||
"all-outputs": true,
|
||||
"format": "{icon}",
|
||||
"on-click": "activate",
|
||||
"persistent-workspaces": {
|
||||
"*":[1,2,3,4,5,6,7]
|
||||
},
|
||||
"format-icons":{
|
||||
"1": "",
|
||||
"2": "",
|
||||
"3": "",
|
||||
"4": "",
|
||||
"5": "",
|
||||
"6": "",
|
||||
"7": "",
|
||||
"active": ""
|
||||
}
|
||||
},
|
||||
"custom/lock": {
|
||||
"format": " ",
|
||||
"on-click": "hyprlock",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "锁屏"
|
||||
},
|
||||
"custom/reboot": {
|
||||
"format": " ",
|
||||
"on-click": "systemctl reboot",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "重启"
|
||||
},
|
||||
"custom/power": {
|
||||
"format": " ",
|
||||
"on-click": "systemctl poweroff",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "关机"
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": " {essid} ",
|
||||
"format-ethernet": " Wired ",
|
||||
"tooltip-format": "<span color='#FF1493'> </span>{bandwidthUpBytes} <span color='#00BFFF'> </span>{bandwidthDownBytes}",
|
||||
"format-linked": " {ifname} (No IP) ",
|
||||
"format-disconnected": " Disconnected ",
|
||||
"format-alt": " {signalStrength}% ",
|
||||
"interval": 1
|
||||
},
|
||||
"battery": {
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": " {icon} {capacity}% ",
|
||||
"format-charging": " {capacity}%",
|
||||
"interval": 1,
|
||||
"format-icons": ["", "", "", "", ""],
|
||||
"tooltip": true
|
||||
},
|
||||
"pulseaudio": {
|
||||
"format": "{icon}{volume}% ",
|
||||
"format-muted": " 0% ",
|
||||
"format-icons": {
|
||||
"headphone": " ",
|
||||
"hands-free": " ",
|
||||
"headset": " ",
|
||||
"phone": " ",
|
||||
"portable": " ",
|
||||
"car": " ",
|
||||
"default": [
|
||||
" ",
|
||||
" ",
|
||||
" "
|
||||
]
|
||||
},
|
||||
"on-click-right": "pavucontrol -t 3",
|
||||
"on-click": "pactl -- set-sink-mute 0 toggle",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "当前系统声音: {volume}%"
|
||||
},
|
||||
"custom/temperature": {
|
||||
"exec": "sensors | awk '/^Package id 0:/ {print int($4)}'",
|
||||
"format": " {}°C ",
|
||||
"interval": 5,
|
||||
"tooltip": true,
|
||||
"tooltip-format": "当前 CPU 温度: {}°C"
|
||||
},
|
||||
"memory": {
|
||||
"format": " {used:0.1f}G/{total:0.1f}G ",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "当前内存占比: {used:0.2f}G/{total:0.2f}G"
|
||||
},
|
||||
"cpu": {
|
||||
"format": " {usage}% ",
|
||||
"tooltip": true
|
||||
},
|
||||
"clock": {
|
||||
"interval": 1,
|
||||
"timezone": "Asia/Chengdu",
|
||||
"format": " {:%H:%M} ",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "{:L%Y 年 %m 月 %d 日, %A}"
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 17,
|
||||
"spacing": 6
|
||||
},
|
||||
"backlight": {
|
||||
"device": "intel_backlight",
|
||||
"format": "{icon}{percent}% ",
|
||||
"tooltip": true,
|
||||
"tooltip-format": "当前屏幕亮度: {percent}%",
|
||||
"format-icons": [
|
||||
" ", // 暗 - 深灰
|
||||
" ", // 中 - 灰
|
||||
" ", // 亮 - 柠檬黄
|
||||
" " // 最亮 - 金色
|
||||
]
|
||||
},
|
||||
"bluetooth": {
|
||||
"format": " {status} ",
|
||||
"format-connected": " {device_alias} ",
|
||||
"format-connected-battery": " {device_alias}{device_battery_percentage}% ",
|
||||
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
|
||||
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
|
||||
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
|
||||
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,131 +0,0 @@
|
||||
* {
|
||||
font-family: "CaskaydiaCove Nerd Font", "Font Awesome 6 Free", "Font Awesome 6 Free Solid";
|
||||
font-size: 16px;
|
||||
border-radius: 0;
|
||||
min-height: 0;
|
||||
border: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#workspaces{
|
||||
background-color: rgba(24,24,37,1.0);
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
#tray{
|
||||
margin: 6px 3px;
|
||||
background-color: rgba(36, 36, 52, 1.0);
|
||||
padding: 6px 12px; /* 保持内部间距 */
|
||||
border-radius: 6px;
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
#waybar {
|
||||
background-color: #181825;
|
||||
transition-property: background-color;
|
||||
transition-duration: 0.5s;
|
||||
}
|
||||
|
||||
#window,
|
||||
#clock,
|
||||
#custom-power,
|
||||
#custom-reboot,
|
||||
#bluetooth,
|
||||
#battery,
|
||||
#pulseaudio,
|
||||
#backlight,
|
||||
#custom-temperature,
|
||||
#memory,
|
||||
#cpu,
|
||||
#network,
|
||||
#custom-lock{
|
||||
border-radius: 4px;
|
||||
margin: 6px 3px;
|
||||
padding: 6px 12px;
|
||||
background-color: #1e1e2e;
|
||||
color: #181825;
|
||||
}
|
||||
|
||||
#clock {
|
||||
background-color: #89b4fa;
|
||||
}
|
||||
#custom-power{
|
||||
background-color: #f38ba8;
|
||||
}
|
||||
#custom-reboot{
|
||||
background-color: #a6e3a1;
|
||||
}
|
||||
#bluetooth{
|
||||
background-color: #f9e2af;
|
||||
}
|
||||
#battery{
|
||||
background-color: #cba6f7;
|
||||
}
|
||||
#pulseaudio{
|
||||
background-color: #89dceb;
|
||||
}
|
||||
#backlight{
|
||||
background-color: #a6a3a1;
|
||||
}
|
||||
#custom-temperature{
|
||||
background-color: #74c7ec;
|
||||
}
|
||||
#memory{
|
||||
background-color: #f7768e;
|
||||
}
|
||||
#cpu{
|
||||
background-color: #f38ba8;
|
||||
}
|
||||
#network{
|
||||
background-color: #fab387;
|
||||
}
|
||||
#custom-lock{
|
||||
background-color: #94e2d5;
|
||||
}
|
||||
#window{
|
||||
background-color: #74c7ec;
|
||||
}
|
||||
|
||||
#waybar.hidden {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
all: initial;
|
||||
/* Remove GTK theme values (waybar #1351) */
|
||||
min-width: 0;
|
||||
/* Fix weird spacing in materia (waybar #450) */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
padding: 6px 18px;
|
||||
margin: 6px 3px;
|
||||
border-radius: 4px;
|
||||
background-color: rgba(36, 36, 52, 1.0);
|
||||
color: #cdd6f4;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: #1e1e2e;
|
||||
background-color: #cdd6f4;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
box-shadow: inherit;
|
||||
text-shadow: inherit;
|
||||
color: #1e1e2e;
|
||||
background-color: #cdd6f4;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
border-radius: 8px;
|
||||
padding: 16px;
|
||||
background-color: #131822;
|
||||
color: #C0C0C0;
|
||||
}
|
||||
|
||||
tooltip label {
|
||||
padding: 5px;
|
||||
background-color: #131822;
|
||||
color: #C0C0C0;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{ ... }: {
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
home.file.".config/waybar" = {
|
||||
source = builtins.toPath ./custom;
|
||||
recursive = true;
|
||||
force = true;
|
||||
};
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
home.packages = [
|
||||
pkgs.zoxide
|
||||
pkgs.oh-my-posh
|
||||
];
|
||||
|
||||
programs.zoxide.enable = true;
|
||||
programs.oh-my-posh.enable = true;
|
||||
|
||||
home.file.".config/oh-my-posh/config.omp.json" = {
|
||||
source = ./custom/config.omp.json;
|
||||
force = true;
|
||||
};
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
plugins = [
|
||||
# {
|
||||
# name = "zsh-autocomplete"; # completes history, commands, etc.
|
||||
# src = pkgs.fetchFromGitHub {
|
||||
# owner = "marlonrichert";
|
||||
# repo = "zsh-autocomplete";
|
||||
# rev = "762afacbf227ecd173e899d10a28a478b4c84a3f";
|
||||
# sha256 = "1357hygrjwj5vd4cjdvxzrx967f1d2dbqm2rskbz5z1q6jri1hm3";
|
||||
# }; # e.g., nix-prefetch-url --unpack https://github.com/marlonrichert/zsh-autocomplete/archive/762afacbf227ecd173e899d10a28a478b4c84a3f.tar.gz
|
||||
# }
|
||||
{
|
||||
name = "vi-mode";
|
||||
src = pkgs.zsh-vi-mode;
|
||||
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
||||
}
|
||||
{
|
||||
name = "autosuggestion";
|
||||
src = pkgs.zsh-autosuggestions;
|
||||
file = "share/zsh-autosuggestions/zsh-autosuggestions.zsh";
|
||||
}
|
||||
];
|
||||
enableCompletion = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
shellAliases = {
|
||||
ll = "ls -l";
|
||||
upd = "sudo nixos-rebuild switch --flake ~/Nixos/#biscuit";
|
||||
hupd = "home-manager switch --flake ~/Nixos/#biscuit --impure";
|
||||
agu = "pkill gjs & ags run ~/Nixos/packages/ags/custom/app.ts &";
|
||||
};
|
||||
history.size = 10000;
|
||||
oh-my-zsh = {
|
||||
plugins = [ ];
|
||||
enable = true;
|
||||
theme = "robbyrussell";
|
||||
extraConfig = ''
|
||||
zstyle ':completion:*' completer _expand _complete _ignored _approximate _expand_alias
|
||||
zstyle ':autocomplete:*' default-context curcontext
|
||||
zstyle ':autocomplete:*' min-input 0
|
||||
|
||||
setopt HIST_FIND_NO_DUPS
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
|
||||
# setopt autocd # cd without writing 'cd'
|
||||
setopt globdots # show dotfiles in autocomplete list
|
||||
'';
|
||||
};
|
||||
initContent = ''
|
||||
# Oh-My-Posh initialization for Zsh
|
||||
eval "$(oh-my-posh init zsh --config ~/.config/oh-my-posh/config.omp.json)"
|
||||
|
||||
# zsh-autocomplete
|
||||
bindkey -M menuselect '^M' .accept-line # run code when selected completion
|
||||
'';
|
||||
|
||||
};
|
||||
}
|
||||
@@ -9,5 +9,9 @@ App.start({
|
||||
print(request)
|
||||
res("ok")
|
||||
},
|
||||
main: () => App.get_monitors().map(Bar),
|
||||
main: () => {
|
||||
const monitors = App.get_monitors()
|
||||
const primary = monitors.find(m => m.primary) || monitors[0]
|
||||
return Bar(primary)
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,3 @@
|
||||
$background: #131318;
|
||||
$foreground: #e4e1e9;
|
||||
$primary: #bec2ff;
|
||||
@@ -1,8 +1,27 @@
|
||||
@use "sass:color";
|
||||
@use "./colors" as *;
|
||||
|
||||
$bg: #212223;
|
||||
$fg: #f1f1f1;
|
||||
$accent: #378DF7;
|
||||
// default
|
||||
// $bg: #212223;
|
||||
// $fg: #f1f1f1;
|
||||
// $accent: #378DF7;
|
||||
// $radius: 7px;
|
||||
|
||||
// Kanagawa Theme
|
||||
// $bg: #1F1F28;
|
||||
// $fg: #DCD7BA;
|
||||
// $accent: #C0A36E;
|
||||
// $radius: 7px;
|
||||
|
||||
// mstcl
|
||||
// $bg: #121212;
|
||||
// $fg: #f1f1f1;
|
||||
// $accent: #C0A36E;
|
||||
// $radius: 7px;
|
||||
|
||||
$bg: $background;
|
||||
$fg: $foreground;
|
||||
$accent: $primary;
|
||||
$radius: 7px;
|
||||
|
||||
window.Bar {
|
||||
@@ -12,6 +31,7 @@ window.Bar {
|
||||
color: $fg;
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
font-family: "JetBrainsMono Nerd Font";
|
||||
|
||||
label {
|
||||
margin: 0 8px;
|
||||
@@ -54,8 +74,24 @@ window.Bar {
|
||||
}
|
||||
}
|
||||
|
||||
.Time {
|
||||
.TimeHM {
|
||||
font-weight: bold;
|
||||
color: $accent;
|
||||
}
|
||||
|
||||
.TimeDate {
|
||||
// color: color.adjust($fg, $lightness: -10%);
|
||||
color: $fg;
|
||||
opacity: 0.85;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.FocusedClient {
|
||||
color: $accent;
|
||||
color: color.adjust($fg, $lightness: -30%);
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.Media .Cover {
|
||||
@@ -124,27 +124,42 @@ function Workspaces() {
|
||||
}
|
||||
|
||||
function FocusedClient() {
|
||||
const hypr = Hyprland.get_default()
|
||||
const focused = bind(hypr, "focusedClient")
|
||||
const hypr = Hyprland.get_default();
|
||||
const focused = bind(hypr, "focusedClient");
|
||||
|
||||
return <box
|
||||
className="Focused"
|
||||
visible={focused.as(Boolean)}>
|
||||
{focused.as(client => (
|
||||
client && <label label={bind(client, "title").as(String)} />
|
||||
))}
|
||||
</box>
|
||||
return (
|
||||
<box className="FocusedClient" visible={focused.as(Boolean)}>
|
||||
{focused.as(client => {
|
||||
if (!client) return null;
|
||||
|
||||
return (
|
||||
<label
|
||||
label={bind(client, "title").as(title => {
|
||||
return title.length > 40
|
||||
? title.slice(0, 37) + "..."
|
||||
: title;
|
||||
})}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</box>
|
||||
);
|
||||
}
|
||||
|
||||
function Time({ format = "%H:%M %a %b %e" }) {
|
||||
function Time({ format = "%H:%M|%a %b %d" }) {
|
||||
const time = Variable<string>("").poll(1000, () =>
|
||||
GLib.DateTime.new_now_local().format(format)!)
|
||||
GLib.DateTime.new_now_local().format(format)!
|
||||
);
|
||||
|
||||
return <label
|
||||
className="Time"
|
||||
onDestroy={() => time.drop()}
|
||||
label={time()}
|
||||
/>
|
||||
return bind(time).as(str => {
|
||||
const [hm, date] = str.split("|");
|
||||
|
||||
return (
|
||||
<box className="Time">
|
||||
<label className="TimeHM" label={hm} />
|
||||
<label className="TimeDate" label={date} />
|
||||
</box>
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
export default function Bar(monitor: Gdk.Monitor) {
|
||||
@@ -157,10 +172,11 @@ export default function Bar(monitor: Gdk.Monitor) {
|
||||
anchor={TOP | LEFT | RIGHT}>
|
||||
<centerbox>
|
||||
<box hexpand halign={Gtk.Align.START}>
|
||||
<Time />
|
||||
<Workspaces />
|
||||
<FocusedClient />
|
||||
</box>
|
||||
<box>
|
||||
<Workspaces />
|
||||
<Time />
|
||||
</box>
|
||||
<box hexpand halign={Gtk.Align.END} >
|
||||
<SysTray />
|
||||
@@ -0,0 +1,28 @@
|
||||
{
|
||||
inputs,
|
||||
pkgs,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
imports = [inputs.ags.homeManagerModules.default];
|
||||
|
||||
programs.ags = {
|
||||
enable = true;
|
||||
configDir = ./biscuit;
|
||||
|
||||
extraPackages = let
|
||||
agsPkgs = inputs.ags.packages.${system};
|
||||
in
|
||||
with pkgs; [
|
||||
agsPkgs.battery
|
||||
agsPkgs.hyprland
|
||||
agsPkgs.mpris
|
||||
agsPkgs.wireplumber
|
||||
agsPkgs.notifd
|
||||
agsPkgs.apps
|
||||
agsPkgs.network
|
||||
agsPkgs.tray
|
||||
fzf
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{...}: {
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
settings = {
|
||||
vim_keys = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
{
|
||||
programs.fastfetch = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
logo = {
|
||||
padding = {
|
||||
top = 2;
|
||||
left = 1;
|
||||
right = 2;
|
||||
};
|
||||
};
|
||||
|
||||
display = {
|
||||
separator = " ";
|
||||
};
|
||||
|
||||
modules = [
|
||||
# Title
|
||||
{
|
||||
type = "title";
|
||||
format = "{#1}╭───────────── {#}{user-name-colored}";
|
||||
}
|
||||
|
||||
# System Information Header
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│ {#}System Information";
|
||||
}
|
||||
{
|
||||
type = "os";
|
||||
key = "│ {#keys} OS";
|
||||
}
|
||||
{
|
||||
type = "kernel";
|
||||
key = "│ {#keys} Kernel";
|
||||
}
|
||||
{
|
||||
type = "uptime";
|
||||
key = "│ {#keys} Uptime";
|
||||
}
|
||||
{
|
||||
type = "packages";
|
||||
key = "│ {#keys} Packages";
|
||||
format = "{all}";
|
||||
}
|
||||
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│";
|
||||
}
|
||||
|
||||
# Desktop Environment
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│ {#}Desktop Environment";
|
||||
}
|
||||
{
|
||||
type = "de";
|
||||
key = "│ {#keys} DE";
|
||||
}
|
||||
{
|
||||
type = "wm";
|
||||
key = "│ {#keys} WM";
|
||||
}
|
||||
{
|
||||
type = "wmtheme";
|
||||
key = "│ {#keys} Theme";
|
||||
}
|
||||
{
|
||||
type = "display";
|
||||
key = "│ {#keys} Resolution";
|
||||
}
|
||||
{
|
||||
type = "shell";
|
||||
key = "│ {#keys} Shell";
|
||||
}
|
||||
{
|
||||
type = "terminalfont";
|
||||
key = "│ {#keys} Font";
|
||||
}
|
||||
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│";
|
||||
}
|
||||
|
||||
# Hardware Information
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│ {#}Hardware Information";
|
||||
}
|
||||
{
|
||||
type = "cpu";
|
||||
key = "│ {#keys} CPU";
|
||||
}
|
||||
{
|
||||
type = "gpu";
|
||||
key = "│ {#keys} GPU";
|
||||
}
|
||||
{
|
||||
type = "memory";
|
||||
key = "│ {#keys} Memory";
|
||||
}
|
||||
{
|
||||
type = "disk";
|
||||
key = "│ {#keys} Disk (/)";
|
||||
folders = "/";
|
||||
}
|
||||
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}│";
|
||||
}
|
||||
|
||||
# Colors
|
||||
{
|
||||
type = "colors";
|
||||
key = "│";
|
||||
symbol = "circle";
|
||||
}
|
||||
|
||||
# Footer
|
||||
{
|
||||
type = "custom";
|
||||
format = "{#1}╰───────────────────────────────╯";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
pkgs,
|
||||
terminal,
|
||||
...
|
||||
}: {
|
||||
programs.zoxide.enable = true;
|
||||
programs.fish = {
|
||||
enable = true;
|
||||
interactiveShellInit = ''
|
||||
set fish_greeting
|
||||
fish_vi_key_bindings
|
||||
zoxide init fish | source
|
||||
|
||||
'';
|
||||
shellAliases = terminal.shellAliases;
|
||||
|
||||
plugins = with pkgs.fishPlugins; [
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{gitProfile, ...}: {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
extraConfig = {
|
||||
user.name = "${gitProfile.user}";
|
||||
user.email = "${gitProfile.email}";
|
||||
init.defaultBranch = "${gitProfile.defaultBranch}";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,10 +1,5 @@
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
gcc
|
||||
rustc
|
||||
cargo
|
||||
nodejs
|
||||
python313
|
||||
busybox
|
||||
heroic
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{...}: {
|
||||
services.hypridle = {
|
||||
enable = true;
|
||||
settings = {
|
||||
general = {
|
||||
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on && agu"; # avoid needing to press a key twice to turn on the display.
|
||||
};
|
||||
|
||||
listener = [
|
||||
{
|
||||
timeout = 150;
|
||||
on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
on-resume = "brightnessctl -r"; # restore monitor backlight.
|
||||
}
|
||||
{
|
||||
timeout = 150;
|
||||
on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0"; # turn off keyboard backlight.
|
||||
on-resume = "brightnessctl -rd rgb:kbd_backlight"; # turn on keyboard backlight.
|
||||
}
|
||||
{
|
||||
timeout = 300;
|
||||
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed.
|
||||
}
|
||||
{
|
||||
timeout = 330;
|
||||
on-timeout = "hyprctl dispatch dpms off"; # screen off after 5.5min.
|
||||
on-resume = "hyprctl dispatch dpms on && brightnessctl -r"; # screen on and restore brightness on resume.
|
||||
}
|
||||
{
|
||||
timeout = 500;
|
||||
on-timeout = "systemctl suspend"; # suspend PC after 30min.
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
{
|
||||
hyprconf,
|
||||
username,
|
||||
terminal,
|
||||
...
|
||||
}: {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
settings = {
|
||||
"$mod" = "SUPER";
|
||||
"$term" = "kitty --single-instance";
|
||||
"$browser" = "firefox";
|
||||
|
||||
monitor = hyprconf.monitor;
|
||||
|
||||
exec-once = [
|
||||
"[workspace 20 silent] kitty --single-insance --hold fastfetch"
|
||||
"[workspace 20 silent] firefox"
|
||||
"[workspace 1] kitty --single-instance --hold fastfetch"
|
||||
"pkill gjs & ags run"
|
||||
# "matugen image /home/${username}/.config/nixos/assets/wallpapers/ultrawide-nixos-default.png"
|
||||
"hyprctl setcursor Bibata-Original-Classic 24"
|
||||
"solaar -w hide"
|
||||
];
|
||||
|
||||
general = {
|
||||
gaps_in = 2;
|
||||
gaps_out = 5;
|
||||
border_size = 2;
|
||||
# col.active_border = "#0DB7D4FF";
|
||||
# col.inactive_border = "#31313600";
|
||||
# col = {
|
||||
# "inactive_border" = "rgba(595959aa)";
|
||||
# "active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||
# };
|
||||
resize_on_border = false;
|
||||
allow_tearing = false;
|
||||
layout = "dwindle";
|
||||
};
|
||||
decoration = {
|
||||
rounding = 0;
|
||||
rounding_power = 2;
|
||||
active_opacity = 1.0;
|
||||
inactive_opacity = 1.0;
|
||||
|
||||
dim_inactive = true;
|
||||
dim_strength = 0.1;
|
||||
dim_special = 0.8;
|
||||
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
color = "rgba(1a1a1aee)";
|
||||
};
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 3;
|
||||
passes = 1;
|
||||
vibrancy = 0.1696;
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
bezier = [
|
||||
"linear, 0, 0, 1, 1"
|
||||
"md3_standard, 0.2, 0, 0, 1"
|
||||
"md3_decel, 0.05, 0.7, 0.1, 1"
|
||||
"md3_accel, 0.3, 0, 0.8, 0.15"
|
||||
"overshot, 0.05, 0.9, 0.1, 1.1"
|
||||
"crazyshot, 0.1, 1.5, 0.76, 0.92"
|
||||
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
|
||||
"menu_decel, 0.1, 1, 0, 1"
|
||||
"menu_accel, 0.38, 0.04, 1, 0.07"
|
||||
"easeInOutCirc, 0.85, 0, 0.15, 1"
|
||||
"easeOutCirc, 0, 0.55, 0.45, 1"
|
||||
"easeOutExpo, 0.16, 1, 0.3, 1"
|
||||
"softAcDecel, 0.26, 0.26, 0.15, 1"
|
||||
"md2, 0.4, 0, 0.2, 1"
|
||||
];
|
||||
|
||||
animation = [
|
||||
"windows, 1, 3, md3_decel, popin 60%"
|
||||
"windowsIn, 1, 3, md3_decel, popin 60%"
|
||||
"windowsOut, 1, 3, md3_accel, popin 60%"
|
||||
"border, 1, 10, default"
|
||||
"fade, 1, 3, md3_decel"
|
||||
"layersIn, 1, 3, menu_decel, slide"
|
||||
"layersOut, 1, 1.6, menu_accel"
|
||||
"fadeLayersIn, 1, 2, menu_decel"
|
||||
"fadeLayersOut, 1, 0.5, menu_accel"
|
||||
"workspaces, 1, 7, menu_decel, slide"
|
||||
"specialWorkspace, 1, 3, md3_decel, slidevert"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
preserve_split = true;
|
||||
};
|
||||
|
||||
master = {
|
||||
new_status = "master";
|
||||
};
|
||||
|
||||
misc = {
|
||||
force_default_wallpaper = -1;
|
||||
disable_hyprland_logo = true;
|
||||
};
|
||||
|
||||
input = {
|
||||
kb_layout = "us";
|
||||
follow_mouse = 1;
|
||||
sensitivity = 0;
|
||||
force_no_accel = true;
|
||||
repeat_delay = 250;
|
||||
repeat_rate = 35;
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
};
|
||||
|
||||
numlock_by_default = true;
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = false;
|
||||
};
|
||||
|
||||
binds = {
|
||||
workspace_back_and_forth = true;
|
||||
scroll_event_delay = 0;
|
||||
};
|
||||
|
||||
device = [
|
||||
{
|
||||
name = "epic-mouse-v1";
|
||||
sensitivity = -0.5;
|
||||
}
|
||||
];
|
||||
|
||||
bind =
|
||||
[
|
||||
"$mod, Return, exec, $term"
|
||||
"$mod, Q, killactive,"
|
||||
"$mod, M, exit,"
|
||||
"$mod, E, exec, $fileManager"
|
||||
"$mod, V, togglefloating,"
|
||||
"$mod, R, exec, $menu"
|
||||
"$mod, P, pseudo,"
|
||||
"$mod, B, togglesplit,"
|
||||
"$mod, W, exec, $browser"
|
||||
|
||||
"$mod, H, movefocus, l"
|
||||
"$mod, L, movefocus, r"
|
||||
"$mod, K, movefocus, u"
|
||||
"$mod, J, movefocus, d"
|
||||
|
||||
"$mod SHIFT, K, movewindow, u"
|
||||
"$mod SHIFT, J, movewindow, d"
|
||||
"$mod SHIFT, H, movewindow, l"
|
||||
"$mod SHIFT, L, movewindow, r"
|
||||
|
||||
"$mod CTRL, K, resizeactive, 0 -50"
|
||||
"$mod CTRL, J, resizeactive, 0 50"
|
||||
"$mod CTRL, H, resizeactive, -50 0"
|
||||
"$mod CTRL, L, resizeactive, 50 0"
|
||||
|
||||
"$mod, S, togglespecialworkspace, magic"
|
||||
"$mod SHIFT, S, movetoworkspace, special:magic"
|
||||
|
||||
"$mod, mouse_down, workspace, e+1"
|
||||
"$mod, mouse_up, workspace, e-1"
|
||||
|
||||
"$mod, F, fullscreen, 0"
|
||||
|
||||
"$mod, Space, exec, pkill rofi || rofi -show drun"
|
||||
"$mod, C, exec, pkill rofi || rofi -show calc -modi calc -no-show-match -no-sort"
|
||||
]
|
||||
++ (
|
||||
# workspaces
|
||||
builtins.concatLists (builtins.genList (
|
||||
i: let
|
||||
ws = i + 1;
|
||||
in [
|
||||
"$mod, ${toString ws}, workspace, ${toString ws}"
|
||||
"$mod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}"
|
||||
]
|
||||
)
|
||||
9)
|
||||
)
|
||||
++ [
|
||||
"$mod, 0, workspace, 10"
|
||||
"$mod, 0, movetoworkspace, 10"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
"$mod, mouse:272, movewindow"
|
||||
"$mod, mouse:273, resizewindow"
|
||||
];
|
||||
|
||||
bindel = [
|
||||
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
|
||||
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
||||
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
||||
",XF86MonBrightnessUp, exec, brightnessctl s 10%+"
|
||||
",XF86MonBrightnessDown, exec, brightnessctl s 10%-"
|
||||
];
|
||||
|
||||
bindl = [
|
||||
",XF86AudioNext, exec, playerctl next"
|
||||
",XF86AudioPause, exec, playerctl play-pause"
|
||||
",XF86AudioPlay, exec, playerctl play-pause"
|
||||
",XF86AudioPrev, exec, playerctl previous"
|
||||
];
|
||||
env = [
|
||||
"HYPRCURSOR_THEME, Bibata-Original-Classic"
|
||||
"HYPRCURSOR_SIZE, 24"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{...}: {
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
};
|
||||
};
|
||||
}
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
{terminal, ...}: {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
|
||||
themeFile = "kanagawa";
|
||||
settings = {
|
||||
confirm_os_window_close = 0;
|
||||
window_padding_width = 10;
|
||||
|
||||
font_size = terminal.termSize;
|
||||
font_family = terminal.termFont;
|
||||
bold_font = "auto";
|
||||
italic_font = "auto";
|
||||
bold_italic_font = "auto";
|
||||
# optimization
|
||||
input_delay = 0;
|
||||
repaint_delay = 2;
|
||||
sync_to_monitor = false;
|
||||
wayland_enable_ime = false;
|
||||
allow_remote_control = true;
|
||||
};
|
||||
extraConfig = "include colors.conf";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
[config]
|
||||
# If set to enabled, it will check for updates when you run the matugen command, notifying you that an update is avaiable.
|
||||
# WARNING: Matugen needs to be compiled with the `update-informer` feature for this to work.
|
||||
version_check = false
|
||||
|
||||
[config.wallpaper]
|
||||
# The base command to run for applying the wallpaper, shouldn't have spaces in it.
|
||||
command = "swww"
|
||||
|
||||
# The arguments that will be provided to the command.
|
||||
# Keywords like {{ mode }} or anything that works inside of hooks doesn't work here.
|
||||
# The last argument will be the image path.
|
||||
arguments = ["img", "--transition-type", "center", "--transition-fps", "120"]
|
||||
|
||||
# For example, killing the wallpaper daemon. Usage is like a normal hook.
|
||||
# pre_hook = ""
|
||||
|
||||
[config.custom_keywords]
|
||||
test = "aaaa"
|
||||
|
||||
[templates.name1]
|
||||
# Relative paths will be resolved from the path `config.toml` is in.
|
||||
input_path = "./colors.whatever-extension"
|
||||
output_path = "./a/colors-generated.whatever-extension"
|
||||
|
||||
# This will use a different input path depending on what mode you use.
|
||||
# input_path_modes = { dark = "./colors.whatever-extension", light = "./colors.whatever-extension" }
|
||||
|
||||
# This will compare all of the colors inside the array with the color you set as `compare_to`, and returns the closest color to it.
|
||||
# You can then use `{{closest_color}}` inside templates and hooks.
|
||||
colors_to_compare = [
|
||||
{ name = "black", color = "#000000" },
|
||||
{ name = "red", color = "#ff0000" },
|
||||
{ name = "maroon", color = "#800000" },
|
||||
{ name = "yellow", color = "#ffff00" },
|
||||
{ name = "olive", color = "#808000" },
|
||||
{ name = "lime", color = "#00ff00" },
|
||||
{ name = "green", color = "#008000" },
|
||||
{ name = "aqua", color = "#00ffff" },
|
||||
{ name = "teal", color = "#008080" },
|
||||
{ name = "blue", color = "#0000ff" },
|
||||
{ name = "navy", color = "#000080" },
|
||||
{ name = "fuchsia", color = "#ff00ff" },
|
||||
{ name = "purple", color = "#800080" },
|
||||
]
|
||||
compare_to = "{{colors.primary.default.hex}}"
|
||||
|
||||
# Runs before the template is exported. You can use keywords here,
|
||||
pre_hook = 'echo "source color {{colors.source_color.default.hex}}, source image {{image}}, closest color {{closest_color}}"'
|
||||
# Runs after the template is exported. You can use keywords here.
|
||||
post_hook = 'echo "after gen"'
|
||||
|
||||
# Only hex values
|
||||
# https://m3.material.io/styles/color/advanced/adjust-existing-colors#1cc12e43-237b-45b9-8fe0-9a3549c1f61e
|
||||
# Blend is set to true by default.
|
||||
[config.custom_colors]
|
||||
green = "#00ff00"
|
||||
red = "#ff0000"
|
||||
blue = { color = "#0000ff", blend = false }
|
||||
|
||||
### --- my config
|
||||
[templates.kitty]
|
||||
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/kitty.conf'
|
||||
output_path = '~/.config/kitty/colors.conf'
|
||||
post_hook = "kitty @ set-colors -a -c ~/.config/kitty/colors.conf"
|
||||
|
||||
[templates.ags]
|
||||
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/ags.scss'
|
||||
output_path = '~/.config/nixos/pkgs/ags/biscuit/colors.scss'
|
||||
post_hook = "pkill gjs & ags run ~/.config/nixos/pkgs/ags/biscuit/app.ts & disown (jobs -p) &"
|
||||
@@ -0,0 +1,3 @@
|
||||
$background: {{colors.surface.dark.hex}};
|
||||
$foreground: {{colors.on_surface.dark.hex}};
|
||||
$primary: {{colors.primary.dark.hex}};
|
||||
@@ -0,0 +1,41 @@
|
||||
cursor {{colors.on_surface.default.hex}}
|
||||
cursor_text_color {{colors.on_surface_variant.default.hex}}
|
||||
|
||||
foreground {{colors.on_surface.default.hex}}
|
||||
background {{colors.surface.default.hex}}
|
||||
selection_foreground {{colors.on_secondary.default.hex}}
|
||||
selection_background {{colors.secondary_fixed_dim.default.hex}}
|
||||
url_color {{colors.primary.default.hex}}
|
||||
|
||||
# black
|
||||
color8 #262626
|
||||
color0 #4c4c4c
|
||||
|
||||
# red
|
||||
color1 #ac8a8c
|
||||
color9 #c49ea0
|
||||
|
||||
# green
|
||||
color2 #8aac8b
|
||||
color10 #9ec49f
|
||||
|
||||
# yellow
|
||||
color3 #aca98a
|
||||
color11 #c4c19e
|
||||
|
||||
# blue
|
||||
/* color4 #8f8aac */
|
||||
color4 {{colors.primary.default.hex}}
|
||||
color12 #a39ec4
|
||||
|
||||
# magenta
|
||||
color5 #ac8aac
|
||||
color13 #c49ec4
|
||||
|
||||
# cyan
|
||||
color6 #8aacab
|
||||
color14 #9ec3c4
|
||||
|
||||
# white
|
||||
color15 #e7e7e7
|
||||
color7 #f0f0f0
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
imports = [inputs.matugen.nixosModules.default];
|
||||
home.file.".config/matugen/config.toml" = {
|
||||
source = builtins.toPath ./custom/config.toml;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
{
|
||||
plugins = {
|
||||
alpha = {
|
||||
enable = true;
|
||||
layout = [
|
||||
{
|
||||
type = "padding";
|
||||
val = 2;
|
||||
}
|
||||
{
|
||||
type = "text";
|
||||
val = [
|
||||
" █████ █ ██"
|
||||
" ██████ ██ ████ █ █"
|
||||
" ██ █ █ ██ ████ ██ ███"
|
||||
" █ █ █ ██ █ █ ██ █"
|
||||
" █ █ ██ █ ████ ██ ███"
|
||||
" ██ ██ ██ █ ███ █ ███ █ ██ ███ ███ ███ ████ ████"
|
||||
" ██ ██ ██ █ █ ███ █ ████ ██ ███ ███ ███ ████ ███ █"
|
||||
" ██ ██ ██ █ █ ███ ██ ██ ██ ██ ██ ██ ████ ████"
|
||||
" ██ ██ ██ █ ██ █████ ██ ██ ██ ██ ██ ██ ██"
|
||||
" ██ ██ ██ █ ████████ ██ ██ ██ ██ ██ ██ ██ ██"
|
||||
" █ ██ ███ ███████ ██ ██ ██ ██ ██ ██ ██ ██"
|
||||
" █ ███ ██ ██ ██ ██ █ ██ ██ ██ ██"
|
||||
" ████ ██ ████ █ ██████ ███████ ██ ██ ██ ██"
|
||||
" █ █████ ███████ ████ █████ ███ █ ███ ███ ███"
|
||||
" █ ██ █████ ███ ███ ███ ███"
|
||||
" █"
|
||||
" █"
|
||||
" ██"
|
||||
];
|
||||
opts = {
|
||||
position = "center";
|
||||
hl = "Type";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "padding";
|
||||
val = 4;
|
||||
}
|
||||
{
|
||||
type = "group";
|
||||
val = [
|
||||
{
|
||||
type = "button";
|
||||
val = " New File ";
|
||||
on_press.__raw = "function() vim.cmd[[ene]] end";
|
||||
opts = {
|
||||
shortcut = "n";
|
||||
keymap = [
|
||||
"n"
|
||||
"n"
|
||||
"<cmd>ene<CR>"
|
||||
{
|
||||
noremap = true;
|
||||
silent = true;
|
||||
nowait = true;
|
||||
}
|
||||
];
|
||||
position = "center";
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "padding";
|
||||
val = 2;
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " Find File ";
|
||||
opts = {
|
||||
shortcut = "f";
|
||||
keymap = [
|
||||
"n"
|
||||
"f"
|
||||
"<cmd>lua require('fzf-lua').files({ cwd = vim.loop.cwd() })<CR>"
|
||||
{
|
||||
noremap = true;
|
||||
silent = true;
|
||||
nowait = true;
|
||||
}
|
||||
];
|
||||
position = "center";
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "padding";
|
||||
val = 2;
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " Recent Files ";
|
||||
on_press.__raw = "function() require('telescope.builtin').oldfiles() end";
|
||||
opts = {
|
||||
shortcut = "r";
|
||||
keymap = [
|
||||
"n"
|
||||
"r"
|
||||
"<cmd>lua require('fzf-lua').oldfiles({ cwd = vim.loop.cwd() })<CR>"
|
||||
{
|
||||
noremap = true;
|
||||
silent = true;
|
||||
nowait = true;
|
||||
}
|
||||
];
|
||||
position = "center";
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "padding";
|
||||
val = 2;
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " Find Text ";
|
||||
on_press.__raw = "function() require('telescope.builtin').live_grep() end";
|
||||
opts = {
|
||||
shortcut = "g";
|
||||
keymap = [
|
||||
"n"
|
||||
"g"
|
||||
"<cmd>lua require('fzf-lua').live_grep()<CR>"
|
||||
{
|
||||
noremap = true;
|
||||
silent = true;
|
||||
nowait = true;
|
||||
}
|
||||
];
|
||||
position = "center";
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
{
|
||||
type = "padding";
|
||||
val = 2;
|
||||
}
|
||||
{
|
||||
type = "button";
|
||||
val = " Quit Neovim ";
|
||||
on_press.__raw = "function() vim.cmd[[qa]] end";
|
||||
opts = {
|
||||
shortcut = "q";
|
||||
keymap = [
|
||||
"n"
|
||||
"q"
|
||||
"<cmd>qa<CR>"
|
||||
{
|
||||
noremap = true;
|
||||
silent = true;
|
||||
nowait = true;
|
||||
}
|
||||
];
|
||||
position = "center";
|
||||
width = 50;
|
||||
align_shortcut = "right";
|
||||
hl_shortcut = "Keyword";
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
# `plugins.mini.enable` with `plugins.mini.modules.icons` and `plugins.mini.mockDevIcons`.
|
||||
# plugins.web-devicons.enable = true;
|
||||
plugins.mini = {
|
||||
enable = true;
|
||||
mockDevIcons = true;
|
||||
modules = [
|
||||
];
|
||||
};
|
||||
plugins.telescope = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
nix-neovim = inputs.nix-neovim.packages.${pkgs.system}.default;
|
||||
in {
|
||||
programs.neovim.enable = false;
|
||||
home.packages = [
|
||||
nix-neovim
|
||||
pkgs.lazygit
|
||||
# ripgrep
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{pkgs, ...}: {
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
plugins = with pkgs; [
|
||||
rofi-calc
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
**/
|
||||
|
||||
* {
|
||||
background: #1E2127FF;
|
||||
background-alt: #282B31FF;
|
||||
foreground: #FFFFFFFF;
|
||||
selected: #61AFEFFF;
|
||||
active: #98C379FF;
|
||||
urgent: #E06C75FF;
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Rofi Theme File
|
||||
* Rofi Version: 1.7.3
|
||||
**/
|
||||
|
||||
/*****----- Configuration -----*****/
|
||||
configuration {
|
||||
modi: "drun";
|
||||
show-icons: true;
|
||||
display-drun: "";
|
||||
drun-display-format: "{name}";
|
||||
}
|
||||
|
||||
/*****----- Global Properties -----*****/
|
||||
@import "shared/colors.rasi"
|
||||
@import "shared/fonts.rasi"
|
||||
|
||||
/*****----- Main Window -----*****/
|
||||
window {
|
||||
transparency: "real";
|
||||
location: center;
|
||||
anchor: center;
|
||||
fullscreen: false;
|
||||
width: 400px;
|
||||
x-offset: 0px;
|
||||
y-offset: 0px;
|
||||
|
||||
enabled: true;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 0px solid;
|
||||
border-radius: 12px;
|
||||
border-color: @selected;
|
||||
background-color: @background;
|
||||
cursor: "default";
|
||||
}
|
||||
|
||||
/*****----- Main Box -----*****/
|
||||
mainbox {
|
||||
enabled: true;
|
||||
spacing: 0px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 0px solid;
|
||||
border-radius: 0px 0px 0px 0px;
|
||||
border-color: @selected;
|
||||
background-color: transparent;
|
||||
children: [ "inputbar", "listview" ];
|
||||
}
|
||||
|
||||
/*****----- Inputbar -----*****/
|
||||
inputbar {
|
||||
enabled: true;
|
||||
spacing: 10px;
|
||||
margin: 0px;
|
||||
padding: 15px;
|
||||
border: 0px solid;
|
||||
border-radius: 0px;
|
||||
border-color: @selected;
|
||||
background-color: @selected;
|
||||
text-color: @background;
|
||||
children: [ "prompt", "entry" ];
|
||||
}
|
||||
|
||||
prompt {
|
||||
enabled: true;
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
textbox-prompt-colon {
|
||||
enabled: true;
|
||||
expand: false;
|
||||
str: "::";
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
entry {
|
||||
enabled: true;
|
||||
background-color: inherit;
|
||||
text-color: inherit;
|
||||
cursor: text;
|
||||
placeholder: "Search...";
|
||||
placeholder-color: inherit;
|
||||
}
|
||||
|
||||
/*****----- Listview -----*****/
|
||||
listview {
|
||||
enabled: true;
|
||||
columns: 1;
|
||||
lines: 6;
|
||||
cycle: true;
|
||||
dynamic: true;
|
||||
scrollbar: false;
|
||||
layout: vertical;
|
||||
reverse: false;
|
||||
fixed-height: true;
|
||||
fixed-columns: true;
|
||||
|
||||
spacing: 5px;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 0px solid;
|
||||
border-radius: 0px;
|
||||
border-color: @selected;
|
||||
background-color: transparent;
|
||||
text-color: @foreground;
|
||||
cursor: "default";
|
||||
}
|
||||
scrollbar {
|
||||
handle-width: 5px ;
|
||||
handle-color: @selected;
|
||||
border-radius: 0px;
|
||||
background-color: @background-alt;
|
||||
}
|
||||
|
||||
/*****----- Elements -----*****/
|
||||
element {
|
||||
enabled: true;
|
||||
spacing: 10px;
|
||||
margin: 0px;
|
||||
padding: 8px;
|
||||
border: 0px solid;
|
||||
border-radius: 0px;
|
||||
border-color: @selected;
|
||||
background-color: transparent;
|
||||
text-color: @foreground;
|
||||
cursor: pointer;
|
||||
}
|
||||
element normal.normal {
|
||||
background-color: @background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: @background-alt;
|
||||
text-color: @foreground;
|
||||
}
|
||||
element-icon {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
size: 32px;
|
||||
cursor: inherit;
|
||||
}
|
||||
element-text {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
highlight: inherit;
|
||||
cursor: inherit;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.0;
|
||||
}
|
||||
|
||||
/*****----- Message -----*****/
|
||||
error-message {
|
||||
padding: 15px;
|
||||
border: 2px solid;
|
||||
border-radius: 12px;
|
||||
border-color: @selected;
|
||||
background-color: @background;
|
||||
text-color: @foreground;
|
||||
}
|
||||
textbox {
|
||||
background-color: @background;
|
||||
text-color: @foreground;
|
||||
vertical-align: 0.5;
|
||||
horizontal-align: 0.0;
|
||||
highlight: none;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
## Author : Aditya Shakya (adi1090x)
|
||||
## Github : @adi1090x
|
||||
#
|
||||
## Rofi : Launcher (Modi Drun, Run, File Browser, Window)
|
||||
#
|
||||
## Available Styles
|
||||
#
|
||||
## style-1 style-2 style-3 style-4 style-5
|
||||
## style-6 style-7 style-8 style-9 style-10
|
||||
## style-11 style-12 style-13 style-14 style-15
|
||||
|
||||
dir="$HOME/.config/wofi/launcher/config.rasi"
|
||||
theme='style-1'
|
||||
|
||||
## Run
|
||||
wofi \
|
||||
-show drun \
|
||||
-theme ${dir}/${theme}.rasi
|
||||
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Colors
|
||||
*
|
||||
* Available Colors Schemes
|
||||
*
|
||||
* adapta catppuccin everforest navy paper
|
||||
* arc cyberpunk gruvbox nord solarized
|
||||
* black dracula lovelace onedark yousai
|
||||
*
|
||||
**/
|
||||
|
||||
/* Import color-scheme from `colors` directory */
|
||||
|
||||
@import "~/.config/wofi/colors/onedark.rasi"
|
||||
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
*
|
||||
* Author : Aditya Shakya (adi1090x)
|
||||
* Github : @adi1090x
|
||||
*
|
||||
* Fonts
|
||||
*
|
||||
**/
|
||||
|
||||
* {
|
||||
font: "Iosevka Nerd Font 10";
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{lib, ...}: {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
settings = {
|
||||
format = lib.concatStrings [
|
||||
"$username"
|
||||
"$hostname"
|
||||
"$directory"
|
||||
"$git_branch"
|
||||
"$git_state"
|
||||
"$git_status"
|
||||
"$cmd_duration"
|
||||
"$line_break"
|
||||
"$python"
|
||||
"$character"
|
||||
];
|
||||
|
||||
directory = {
|
||||
style = "blue";
|
||||
};
|
||||
|
||||
character = {
|
||||
success_symbol = "[→](purple)";
|
||||
error_symbol = "[→](red)";
|
||||
vimcmd_symbol = "[←](green)";
|
||||
};
|
||||
|
||||
git_branch = {
|
||||
format = "[$branch]($style)";
|
||||
style = "bright-black";
|
||||
};
|
||||
git_status = {
|
||||
format = "[(*$conflicted$untracked$modified$staged$renamed$deleted) $ahead_behind$stashed]($style)";
|
||||
style = "cyan";
|
||||
conflicted = "";
|
||||
untracked = "";
|
||||
modified = "";
|
||||
staged = "";
|
||||
renamed = "";
|
||||
deleted = "";
|
||||
stashed = "≡";
|
||||
};
|
||||
git_state = {
|
||||
format = "([$state( $progress_current/$progress_total)]($style)) ";
|
||||
style = "bright-black";
|
||||
};
|
||||
|
||||
cmd_duration = {
|
||||
format = "[$duration]($style) ";
|
||||
style = "yellow";
|
||||
};
|
||||
|
||||
python = {
|
||||
format = "[$virtualenv]($style) ";
|
||||
style = "bright-black";
|
||||
};
|
||||
};
|
||||
};
|
||||
# home.file.".config/starship.toml" = {
|
||||
# source = builtins.toPath ./pure.toml;
|
||||
# };
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{...}: {
|
||||
services.swww.enable = true;
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
@@ -0,0 +1,229 @@
|
||||
{ username, hostname, ... }: {
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
settings = [
|
||||
{
|
||||
margin-top = 10;
|
||||
margin-left = 10;
|
||||
margin-right = 10;
|
||||
layer = "top";
|
||||
position = "top";
|
||||
|
||||
modules-left = [
|
||||
"custom/start"
|
||||
"hyprland/submap"
|
||||
"hyprland/workspaces"
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-right = [
|
||||
"tray"
|
||||
"temperature"
|
||||
"cpu"
|
||||
"memory"
|
||||
"disk"
|
||||
"network"
|
||||
"pulseaudio"
|
||||
"battery"
|
||||
"power-profiles-daemon"
|
||||
"clock"
|
||||
];
|
||||
"cpu" = {
|
||||
states = {
|
||||
critical = 85;
|
||||
};
|
||||
interval = 1;
|
||||
format = " {usage:2}%";
|
||||
on-click = "kitty btop";
|
||||
};
|
||||
"memory" = {
|
||||
states = {
|
||||
critical = 85;
|
||||
};
|
||||
interval = 1;
|
||||
format = " {percentage}%";
|
||||
on-click = "kitty btop";
|
||||
};
|
||||
"disk" = {
|
||||
states = {
|
||||
critical = 85;
|
||||
};
|
||||
interval = 5;
|
||||
format = " {percentage_used}%";
|
||||
on-click = "kitty btop";
|
||||
};
|
||||
"network" = {
|
||||
format-ethernet = " {bandwidthDownOctets}";
|
||||
format-wifi = " {signalStrength}%";
|
||||
format-disconnected = "";
|
||||
format-disabled = "";
|
||||
tooltip = false;
|
||||
on-click = "rofi-network-manager";
|
||||
};
|
||||
"temperature" = {
|
||||
critical-threshold = 80;
|
||||
format = " {temperatureC}°C";
|
||||
interval = 1;
|
||||
on-click = "kitty btop";
|
||||
};
|
||||
"power-profiles-daemon" = {
|
||||
format = "{icon} {profile}";
|
||||
format-icons = {
|
||||
performance = "";
|
||||
power-saver = "";
|
||||
balanced = "";
|
||||
};
|
||||
};
|
||||
"hyprland/workspaces" = {
|
||||
format = "{name}";
|
||||
format-icons = {
|
||||
default = " ";
|
||||
active = " ";
|
||||
urgent = " ";
|
||||
};
|
||||
on-scroll-down = "hyprctl dispatch workspace e+1";
|
||||
on-scroll-up = "hyprctl dispatch workspace e-1";
|
||||
};
|
||||
"hyprland/window" = {
|
||||
icon = true;
|
||||
max-length = 45;
|
||||
separate-outputs = false;
|
||||
rewrite = {
|
||||
"" = "${username}@${hostname}";
|
||||
"~" = "${username}@${hostname}";
|
||||
};
|
||||
on-click-right = "hyprctl dispatch fullscreen 0";
|
||||
on-click-middle = "hyprctl dispatch killactive";
|
||||
on-click = "hyprctl dispatch fullscreen 1";
|
||||
};
|
||||
"hyprland/submap" = {
|
||||
format = " {}";
|
||||
on-click = "hyprctl dispatch submap reset";
|
||||
};
|
||||
"clock" = {
|
||||
format = "{:%b %d, %I:%M %p}";
|
||||
};
|
||||
"tray" = {
|
||||
spacing = 12;
|
||||
};
|
||||
"taskbar" = {
|
||||
icon-size = 10;
|
||||
icon-theme = "Papirus-Dark";
|
||||
on-click = "activate";
|
||||
on-click-right = "fullscreen";
|
||||
on-click-middle = "close";
|
||||
on-scroll-up = "maximize";
|
||||
on-scroll-down = "minimize";
|
||||
};
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}% {format_source}";
|
||||
format-bluetooth = "{volume}% {icon} {format_source}";
|
||||
format-bluetooth-muted = " {icon} {volume}% {format_source_muted}";
|
||||
format-muted = " {volume}% {format_source_muted}";
|
||||
format-source = "";
|
||||
format-source-muted = "";
|
||||
format-icons = {
|
||||
headphone = "";
|
||||
hands-free = "";
|
||||
headset = "";
|
||||
phone = "";
|
||||
portable = "";
|
||||
car = "";
|
||||
default = [
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
on-click = "pavucontrol";
|
||||
on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
||||
};
|
||||
"battery" = {
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{icon} {capacity}%";
|
||||
format-charging = " {capacity}%";
|
||||
format-plugged = " {capacity}%";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
interval = 1;
|
||||
on-click = "";
|
||||
};
|
||||
"custom/start" = {
|
||||
format = "";
|
||||
on-click-right = "rofi -show power-menu -modi power-menu:rofi-power-menu";
|
||||
on-click = "rofi -show drun";
|
||||
};
|
||||
}
|
||||
];
|
||||
style = ''
|
||||
* {
|
||||
font-size: 12px;
|
||||
font-family: Font Awesome, monospace;
|
||||
font-weight: bold;
|
||||
color: @text;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: rgba(0,0,0,0);
|
||||
border: none;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
border-radius: 0px;
|
||||
margin: 0px;
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
#workspaces button:hover, #custom-start:hover, #window:hover {
|
||||
border: none;
|
||||
outline: none;
|
||||
background: none;
|
||||
color: @text;
|
||||
background-size: 300% 300%;
|
||||
background: @surface0;
|
||||
}
|
||||
|
||||
#workspaces button.active, #submap {
|
||||
background: @surface1;
|
||||
}
|
||||
|
||||
#custom-start {
|
||||
padding: 0px 5px;
|
||||
color: @sky;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#window, #submap {
|
||||
padding: 0px 5px;
|
||||
}
|
||||
|
||||
.modules-left, .modules-right {
|
||||
background-color: @crust;
|
||||
border: 2px solid @surface1;
|
||||
border-radius: 10px;
|
||||
padding: 0 5px;
|
||||
}
|
||||
#submap, #workspaces, #cpu, #memory, #disk, #clock, #window, #tray, #pulseaudio, #battery, #network, #temperature, #power-profiles-daemon, #custom-exit, #custom-start {
|
||||
margin: 0 5px;
|
||||
}
|
||||
.critical, .muted, .performance {
|
||||
color: @red;
|
||||
}
|
||||
.warning, .urgent {
|
||||
color: @yellow;
|
||||
}
|
||||
.charging, .plugged, .power-saver {
|
||||
color: @green;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
pkgs,
|
||||
terminal,
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [
|
||||
zoxide
|
||||
];
|
||||
|
||||
programs.zsh.enable = true;
|
||||
programs.zoxide.enable = true;
|
||||
|
||||
programs.zsh = {
|
||||
enableCompletion = false;
|
||||
syntaxHighlighting.enable = false;
|
||||
shellAliases = terminal.shellAliases;
|
||||
history.size = 10000;
|
||||
antidote = {
|
||||
enable = true;
|
||||
plugins = [
|
||||
"MichaelAquilina/zsh-autoswitch-virtualenv"
|
||||
"jeffreytse/zsh-vi-mode"
|
||||
"zdharma-continuum/fast-syntax-highlighting kind:defer"
|
||||
"zsh-users/zsh-autosuggestions kind:defer"
|
||||
"zsh-users/zsh-history-substring-search kind:defer"
|
||||
];
|
||||
};
|
||||
initContent = ''
|
||||
# zsh-autocomplete
|
||||
# bindkey -M menuselect '^M' .accept-line # run code when selected completion
|
||||
|
||||
autoload -Uz compinit
|
||||
if [ "$(date +'%j')" != "$(stat -f '%Sm' -t '%j' ~/.zcompdump 2>/dev/null)" ]; then
|
||||
compinit
|
||||
else
|
||||
compinit -C
|
||||
fi
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
astal.io
|
||||
astal.gjs
|
||||
astal.hyprland
|
||||
astal.apps
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
{
|
||||
pkgs,
|
||||
hostname,
|
||||
timezone,
|
||||
touchpadSupport,
|
||||
inputs,
|
||||
logitech-hardware,
|
||||
...
|
||||
}: {
|
||||
environment.systemPackages = with pkgs;
|
||||
[
|
||||
python313Full
|
||||
|
||||
gobject-introspection
|
||||
gtk3
|
||||
libxml2
|
||||
|
||||
git
|
||||
|
||||
cargo
|
||||
gcc
|
||||
rustc
|
||||
nodejs
|
||||
yarn
|
||||
|
||||
busybox
|
||||
|
||||
p7zip
|
||||
|
||||
btop
|
||||
tldr
|
||||
|
||||
jq
|
||||
lm_sensors
|
||||
gparted
|
||||
|
||||
notify
|
||||
|
||||
mangohud
|
||||
]
|
||||
++ [
|
||||
inputs.matugen.packages.${pkgs.system}.default
|
||||
]
|
||||
++ lib.optionals (logitech-hardware.enable == true) [
|
||||
solaar
|
||||
];
|
||||
boot.loader = {
|
||||
systemd-boot = {
|
||||
enable = false;
|
||||
};
|
||||
efi = {
|
||||
canTouchEfiVariables = true;
|
||||
};
|
||||
grub = {
|
||||
enable = true;
|
||||
device = "nodev";
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
logitech.wireless.enable = logitech-hardware.enable;
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
};
|
||||
};
|
||||
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
useXkbConfig = true; # use xkb.options in tty.
|
||||
};
|
||||
|
||||
networking.hostName = "${hostname}";
|
||||
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||
|
||||
time.timeZone = "${timezone}";
|
||||
|
||||
services = {
|
||||
openssh = {
|
||||
enable = true;
|
||||
ports = [22];
|
||||
settings = {
|
||||
PasswordAuthentication = true;
|
||||
};
|
||||
};
|
||||
libinput.enable = touchpadSupport;
|
||||
blueman.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
|
||||
'';
|
||||
};
|
||||
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
fish.enable = true;
|
||||
};
|
||||
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# 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.
|
||||
# ONLY WORKS non-flake
|
||||
# system.copySystemConfiguration = true;
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
lock-false = {
|
||||
Value = false;
|
||||
Status = "locked";
|
||||
};
|
||||
lock-true = {
|
||||
Value = true;
|
||||
Status = "locked";
|
||||
};
|
||||
in {
|
||||
programs = {
|
||||
firefox = {
|
||||
enable = true;
|
||||
languagePacks = ["en-US"];
|
||||
|
||||
/*
|
||||
---- POLICIES ----
|
||||
*/
|
||||
# Check about:policies#documentation for options.
|
||||
policies = {
|
||||
DisableTelemetry = true;
|
||||
DisableFirefoxStudies = true;
|
||||
EnableTrackingProtection = {
|
||||
Value = true;
|
||||
Locked = true;
|
||||
Cryptomining = true;
|
||||
Fingerprinting = true;
|
||||
};
|
||||
DisablePocket = true;
|
||||
DisableFirefoxAccounts = true;
|
||||
DisableAccounts = true;
|
||||
DisableFirefoxScreenshots = true;
|
||||
OverrideFirstRunPage = "";
|
||||
OverridePostUpdatePage = "";
|
||||
DontCheckDefaultBrowser = true;
|
||||
DisplayBookmarksToolbar = "never"; # alternatives: "always" or "newtab"
|
||||
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
|
||||
SearchBar = "unified"; # alternative: "separate"
|
||||
|
||||
/*
|
||||
---- EXTENSIONS ----
|
||||
*/
|
||||
# Check about:support for extension/add-on ID strings.
|
||||
# Valid strings for installation_mode are "allowed", "blocked",
|
||||
# "force_installed" and "normal_installed".
|
||||
ExtensionSettings = {
|
||||
"*".installation_mode = "blocked"; # blocks all addons except the ones specified below
|
||||
# uBlock Origin:
|
||||
"uBlock0@raymondhill.net" = {
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/file/4493940/bitwarden_password_manager-2025.5.0.xpi";
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
"tridactyl.vim@cmcaine.co.uk" = {
|
||||
install_url = "https://addons.mozilla.org/firefox/downloads/file/4405615/tridactyl_vim-1.24.2.xpi";
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
# Privacy Badger:
|
||||
# "jid1-MnnxcxisBPnSXQ@jetpack" = {
|
||||
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
|
||||
# installation_mode = "force_installed";
|
||||
# };
|
||||
# 1Password:
|
||||
# "{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
|
||||
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
|
||||
# installation_mode = "force_installed";
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
---- PREFERENCES ----
|
||||
*/
|
||||
# Check about:config for options.
|
||||
preferences = {
|
||||
# "browser.contentblocking.category" = {
|
||||
# Value = "strict";
|
||||
# Status = "locked";
|
||||
# };
|
||||
"browser.contentblocking.category" = "strict";
|
||||
"extensions.pocket.enabled" = false;
|
||||
"extensions.screenshots.disabled" = true;
|
||||
"browser.topsites.contile.enabled" = false;
|
||||
"browser.formfill.enable" = false;
|
||||
"browser.search.suggest.enabled" = false;
|
||||
"browser.search.suggest.enabled.private" = false;
|
||||
"browser.urlbar.suggest.searches" = false;
|
||||
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
||||
"browser.newtabpage.activity-stream.feeds.snippets" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
|
||||
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{ pkgs, ... }: {
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
hyprcursor
|
||||
bibata-cursors
|
||||
hyprcursor
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}: let
|
||||
unlisted-fonts = inputs.unlisted-fonts.packages.${pkgs.system};
|
||||
in {
|
||||
fonts.packages = with pkgs; [
|
||||
unlisted-fonts.monolisa
|
||||
unlisted-fonts.rubik
|
||||
nerd-fonts.fira-code
|
||||
nerd-fonts.jetbrains-mono
|
||||
nerd-fonts.iosevka
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{pkgs, ...}: {
|
||||
services.printing.enable = true;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{ pkgs, ... }: {
|
||||
# Enable sound.
|
||||
# services.pulseaudio.enable = true;
|
||||
# OR
|
||||
environment.systemPackages = with pkgs; [
|
||||
pavucontrol
|
||||
];
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{pkgs, ...}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
wl-clipboard
|
||||
hypridle
|
||||
hyprlock
|
||||
brightnessctl
|
||||
];
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
# package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
# portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
hardware = {
|
||||
graphics.enable = true;
|
||||
};
|
||||
services = {
|
||||
# displayManager.sddm.wayland = true;
|
||||
displayManager.gdm.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
environment.systemPackages = with pkgs; [
|
||||
firefox
|
||||
];
|
||||
|
||||
programs.firefox.enable = true;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
fonts.packages = with pkgs; [
|
||||
nerd-fonts.fira-code
|
||||
];
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{ ... }: {
|
||||
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;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
|
||||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
system,
|
||||
...
|
||||
}: {
|
||||
environment.systemPackages = [
|
||||
pkgs.adw-gtk3
|
||||
pkgs.colloid-icon-theme
|
||||
pkgs.colloid-gtk-theme
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
pkgs,
|
||||
username,
|
||||
terminal,
|
||||
...
|
||||
}: {
|
||||
users = {
|
||||
defaultUserShell = pkgs.${terminal.termShell};
|
||||
users = {
|
||||
${username} = {
|
||||
isNormalUser = true;
|
||||
extraGroups = ["wheel" "networkmanager" "input"];
|
||||
initialHashedPassword = "$6$Qab6SSvEJM2YRtVA$7Oyl7E3pp/FKtCC.2Tb2tyzp3yp7BFHFAKngUYJssQJ.v1Q2mqsgW9m7njpaKNcka2vyCwrnmw1R.YPlFqR0p1";
|
||||
useDefaultShell = true;
|
||||
packages = [
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
vpn,
|
||||
username,
|
||||
...
|
||||
}: {
|
||||
networking.wg-quick.interfaces = {
|
||||
biscuit-default = {
|
||||
address = ["10.2.0.2/32"];
|
||||
# listenPort = 51820;
|
||||
# FIXME change privateKey to variable and add env (make sure it is inaccessible!)
|
||||
privateKeyFile = vpn.vpnSecretFile;
|
||||
dns = ["10.2.0.1"];
|
||||
peers = [
|
||||
{
|
||||
publicKey = "GbuOJ8Dho0iXlS0+ma2teQ4RxhBALWK6RB94qA1GZDA=";
|
||||
allowedIPs = ["0.0.0.0/0"];
|
||||
endpoint = "79.127.147.2:51820";
|
||||
# persistentKeepAlive = 25;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user