Compare commits
38
Commits
master
..
879ea3474a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
879ea3474a | ||
|
|
41cf1a5894 | ||
|
|
b294b8c8ee | ||
|
|
e677754de3 | ||
|
|
4f11c8139f | ||
|
|
e46c205fe3 | ||
|
|
290b694877 | ||
|
|
8ad47d16eb | ||
|
|
e3f8430193 | ||
|
|
46d4249637 | ||
|
|
8c1f94d05a | ||
|
|
bac068cf69 | ||
|
|
6cbc8b393d | ||
|
|
ac3eee4bb0 | ||
|
|
045f44e2d2 | ||
|
|
a198789a17 | ||
|
|
7fa285f0cc | ||
|
|
bebf7e8b6d | ||
|
|
6f2c1bed14 | ||
|
|
dfa96985d6 | ||
|
|
2a6196cc70 | ||
|
|
23a0e060ef | ||
|
|
040923c626 | ||
|
|
2c3de69e72 | ||
|
|
8ea1207bb9 | ||
|
|
21fe030dc7 | ||
|
|
f6950c7e78 | ||
|
|
f76b88cf4b | ||
|
|
6e5568e330 | ||
|
|
1308aae228 | ||
|
|
ded07cb14a | ||
|
|
81ab925d88 | ||
|
|
e909e76c9e | ||
|
|
3fc9f416f9 | ||
|
|
c3672ea118 | ||
|
|
1dee7a5769 | ||
|
|
e0a0721dea | ||
|
|
5cad49555e |
No files matched your search
+1
-1
@@ -5,7 +5,7 @@ creation_rules:
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
- path_regex: host/(Rias|Senko|Inaho|Eclipse)/secrets/.+$
|
||||
- path_regex: nixos/hosts/(Rias|Senko|Eclipse)/secrets/.+$
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
@@ -1,47 +1,12 @@
|
||||
# ❄️ My NixOS Config
|
||||
|
||||
This configuration is based on [&'s config](https://github.com/Andrey0189/nixos-config)
|
||||
|
||||
## Users
|
||||
- [Sweetbread](./user/sweetbread)
|
||||
- [Chest](./user/chest)
|
||||
|
||||
## Hosts
|
||||
- [Rias](./host/Rias)
|
||||
- [Senko](./host/Senko)
|
||||
- [Eclipse](./host/Eclipse)
|
||||
- [Impreza](./host/Impreza)
|
||||
|
||||
## How does this work?
|
||||
The [flake](./flake.nix) file is the starting point. While installing/rebuilding
|
||||
the correct `host` is chosen, which includes `./host/${host}/configuration.nix`.
|
||||
|
||||
It includes 2 (actually, more, but hey!) files:
|
||||
- [`./host/modules/common.nix`](./host/modules/common.nix): Common setting
|
||||
for all hosts (I don't say)
|
||||
- [`./user/common.nix`](./user/common.nix): Common settings for all users (you
|
||||
got the idea) and setup of [home-manager](https://github.com/nix-community/home-manager)
|
||||
|
||||
It allows me to remove duplications and add multiple users to one host
|
||||
|
||||
Example with Rias:
|
||||
```bash
|
||||
git clone https://github.com/Andrey0189/nixos-config
|
||||
mv nixos-config $HOME/nix # Config is supposed to be in the ~/nix directory
|
||||
cd $HOME/nix
|
||||
sudo nixos-rebuild switch --flake .
|
||||
home-manager switch --flake .
|
||||
```
|
||||
./host/Rias/configuration.nix
|
||||
./host/Rias/modules/*
|
||||
./host/modules/gpu/nvidia.nix
|
||||
./host/modules/common.nix
|
||||
./host/Rias/hardware-configuration.nix
|
||||
./modules/host.nix
|
||||
./modules/host/*
|
||||
./host/modules/packages.nix
|
||||
./user/common.nix
|
||||
./user/sweetbread/home.nix
|
||||
./user/sweetbread/modules/*
|
||||
./modules/user.nix
|
||||
./modules/user/*
|
||||
```
|
||||
|
||||
## Programs
|
||||
Most of programs are defined in [user modules](./modules/user)
|
||||
Enjoy!
|
||||
|
||||

|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
my-disk = {
|
||||
device = "/dev/sdb";
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
type = "EF00";
|
||||
size = "256M";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
};
|
||||
};
|
||||
|
||||
swap = {
|
||||
size = "8G";
|
||||
content = {
|
||||
type = "swap";
|
||||
resumeDevice = true;
|
||||
};
|
||||
};
|
||||
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "ext4";
|
||||
mountpoint = "/";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
{ lib
|
||||
, pkgs
|
||||
, mumble ? pkgs.mumble
|
||||
}:
|
||||
|
||||
let
|
||||
# PipeWire 1.4.0 removed client-rt.conf, changing how clients negotiate
|
||||
# realtime scheduling. Mumble never adapted, so its PipeWire data-loop
|
||||
# thread stalls mid-negotiation and its own RT watchdog SIGKILLs the
|
||||
# whole process almost immediately on every launch (confirmed via
|
||||
# bpftrace: signal_generate shows Mumble's own "data-loop.0" thread
|
||||
# sending itself SIGKILL). Reproduced identically on both the packaged
|
||||
# 1.5.915 (Qt5) and a from-source 1.6.870 RC (Qt6) build, so it's the
|
||||
# shared PipeWire client integration at fault, not Mumble's UI stack.
|
||||
#
|
||||
# Upstream: https://github.com/mumble-voip/mumble/issues/6780
|
||||
# Bisected there to PipeWire 1.2.7 (last known-good) vs 1.4.1+ (broken).
|
||||
#
|
||||
# Fix: give Mumble an old, compatible libpipewire-0.3.so to dlopen at
|
||||
# runtime. The system's actual PipeWire daemon is untouched (still
|
||||
# whatever version NixOS ships) - only the client library Mumble talks
|
||||
# through is pinned back.
|
||||
pipewireGoodPkgs = import (fetchTarball {
|
||||
url = "https://channels.nixos.org/nixos-24.11/nixexprs.tar.xz";
|
||||
sha256 = "189lwv8l10bm9fnksfkzy05pm86gmziy9z3bdn13zc8d636ylchj"; # nix-prefetch-url --unpack https://channels.nixos.org/nixos-24.11/nixexprs.tar.xz
|
||||
}) { inherit (pkgs) system; };
|
||||
pipewireGood = pipewireGoodPkgs.pipewire;
|
||||
|
||||
# Mumble's own build is Qt5-based; QT_PLUGIN_PATH isn't set by its
|
||||
# wrapper for the platform/sql plugins mumble actually needs when we
|
||||
# bypass that wrapper below, so it has to be supplied explicitly.
|
||||
qt5PluginPath = lib.makeSearchPath "lib/qt-${pkgs.qt5.qtbase.version}/plugins" [
|
||||
pkgs.qt5.qtbase.bin
|
||||
pkgs.qt5.qtsvg.bin
|
||||
pkgs.qt5.qtwayland.bin
|
||||
];
|
||||
in
|
||||
pkgs.symlinkJoin {
|
||||
name = "mumble-pipewire-fixed-${mumble.version}";
|
||||
|
||||
paths = [ mumble ];
|
||||
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
|
||||
# mumble's own wrapper always prepends its own (broken, too-new)
|
||||
# PipeWire path in front of anything we set, so wrapping it a second
|
||||
# time can't win that ordering fight. Instead we skip straight to the
|
||||
# real unwrapped binary and set env ourselves.
|
||||
postBuild = ''
|
||||
rm -f $out/bin/mumble
|
||||
makeWrapper ${mumble}/bin/.mumble-wrapped $out/bin/mumble \
|
||||
--prefix LD_LIBRARY_PATH : "${pipewireGood}/lib" \
|
||||
--set QT_PLUGIN_PATH "${qt5PluginPath}"
|
||||
'';
|
||||
|
||||
meta = mumble.meta // {
|
||||
description = mumble.meta.description
|
||||
+ " (patched: pinned PipeWire client lib to 1.2.7 to work around SIGKILL-on-launch with PipeWire >=1.4.0, see mumble#6780)";
|
||||
};
|
||||
}
|
||||
Generated
+461
-466
File diff suppressed because it is too large.
Load diff
@@ -3,108 +3,135 @@
|
||||
|
||||
nixConfig = {
|
||||
extra-substituters = [
|
||||
"https://nix.lair.moe/main"
|
||||
"https://nix-community.cachix.org"
|
||||
"https://cache.garnix.io"
|
||||
"https://hyprland.cachix.org"
|
||||
"https://ezkea.cachix.org"
|
||||
"https://yazi.cachix.org"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"main:tR2gNhCBJHKAlVgohPNHBhGnWL55tB8SxXmMWJe5lo8="
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
|
||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||
"ezkea.cachix.org-1:ioBmUbJTZIKsHmWWXPe1FSFbeVe+afhfgqgTSNd34eI="
|
||||
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||
];
|
||||
};
|
||||
|
||||
inputs = {
|
||||
aagl = {
|
||||
url = "github:ezKEa/aagl-gtk-on-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
aagl.url = "github:ezKEa/aagl-gtk-on-nix";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
sops-nix.url = "github:Mic92/sops-nix";
|
||||
stylix.url = "github:danth/stylix";
|
||||
ags.url = "github:Aylur/ags";
|
||||
ayugram-desktop.url = "github:/ayugram-port/ayugram-desktop/release?submodules=1";
|
||||
tlock.url = "git+https://github.com/eklairs/tlock?submodules=1";
|
||||
|
||||
ags = {
|
||||
url = "github:Aylur/ags/3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
disko = {
|
||||
url = "github:nix-community/disko";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
helix-steel = {
|
||||
url = "github:mattwparas/helix/steel-event-system";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
hyprland.url = "github:hyprwm/Hyprland";
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hyprland = {
|
||||
url = "github:hyprwm/Hyprland/v0.56.1";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs = {
|
||||
hyprland.follows = "hyprland";
|
||||
# nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs-pinned.url = "github:nixos/nixpkgs/ec942ba042dad5ef097e2ef3a3effc034241f011";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
stylix = {
|
||||
url = "github:danth/stylix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
waybar = {
|
||||
url = "github:Alexays/Waybar";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
yazi = {
|
||||
url = "github:sxyazi/yazi";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
yazi-plugins = {
|
||||
url = "github:yazi-rs/plugins";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, nixpkgs-stable, nixpkgs-pinned, home-manager, ... }@inputs: let
|
||||
system = "x86_64-linux";
|
||||
config = { allowUnfree = true; };
|
||||
mkHost = hostname: nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs;
|
||||
pkgs-stable = import nixpkgs-stable { inherit system config; };
|
||||
pkgs-pinned = import nixpkgs-pinned { inherit system config; };
|
||||
};
|
||||
modules = [ ./host/${hostname}/configuration.nix ];
|
||||
};
|
||||
in {
|
||||
outputs = { self, nixpkgs, nixpkgs-stable, home-manager, ... }@inputs:
|
||||
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
in {
|
||||
|
||||
nixosConfigurations = {
|
||||
Rias = mkHost "Rias";
|
||||
Senko = mkHost "Senko";
|
||||
Eclipse = mkHost "Eclipse";
|
||||
Impreza = mkHost "Impreza";
|
||||
Inaho = mkHost "Inaho";
|
||||
Rias = nixpkgs-stable.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
pkgs-unstable = import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
inherit inputs system;
|
||||
};
|
||||
modules = [
|
||||
./nixos/hosts/Rias/configuration.nix
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
};
|
||||
|
||||
Senko = nixpkgs-stable.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
pkgs-unstable = import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
inherit inputs system;
|
||||
};
|
||||
modules = [
|
||||
./nixos/hosts/Senko/configuration.nix
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
};
|
||||
|
||||
Eclipse = nixpkgs-stable.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
pkgs-unstable = import nixpkgs {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
inherit inputs system;
|
||||
};
|
||||
modules = [
|
||||
./nixos/hosts/Eclipse/configuration.nix
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
homeConfigurations = {
|
||||
sweetbread = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
pkgs-stable = import nixpkgs-stable {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
};
|
||||
modules = [
|
||||
./home-manager/users/sweetbread/home.nix
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
inputs.stylix.homeManagerModules.stylix
|
||||
];
|
||||
};
|
||||
|
||||
chest = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
extraSpecialArgs = {
|
||||
inherit inputs;
|
||||
pkgs-stable = import nixpkgs-stable {
|
||||
inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
};
|
||||
modules = [
|
||||
./home-manager/users/chest/home.nix
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
inputs.stylix.homeManagerModules.stylix
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
devShells."${system}".default = let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in pkgs.mkShell {
|
||||
shellHook = "zsh";
|
||||
packages = with pkgs; [
|
||||
cargo
|
||||
rustc
|
||||
rust-analyzer
|
||||
lldb
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{ config, inputs, pkgs, ... }: {
|
||||
imports = [ inputs.ags.homeManagerModules.default ];
|
||||
|
||||
programs.ags = {
|
||||
enable = true;
|
||||
|
||||
configDir = null;
|
||||
|
||||
extraPackages = with inputs.ags.packages.${pkgs.system}; [
|
||||
battery
|
||||
mpris
|
||||
hyprland
|
||||
network
|
||||
tray
|
||||
wireplumber
|
||||
];
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.exec-once = [ "ags run" ];
|
||||
|
||||
xdg.configFile."ags".source = (pkgs.callPackage ../packages/drvs/ags.nix { colors = config.lib.stylix.colors; });
|
||||
}
|
||||
File renamed without changes.
@@ -0,0 +1,16 @@
|
||||
{
|
||||
imports = [
|
||||
./kitty.nix
|
||||
./qt.nix
|
||||
./sops.nix
|
||||
./neofetch.nix
|
||||
./yazi.nix
|
||||
./ags.nix
|
||||
./zsh.nix
|
||||
./helix.nix
|
||||
./btop.nix
|
||||
|
||||
./wms/wofi.nix
|
||||
./wms/mako.nix
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
|
||||
settings = {
|
||||
# theme = "catppuccin-mocha";
|
||||
editor = {
|
||||
whitespace.render = {
|
||||
space = "all";
|
||||
tab = "all";
|
||||
nbsp = "none";
|
||||
nnbsp = "none";
|
||||
newline = "none";
|
||||
};
|
||||
|
||||
indent-guides.render = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,11 +1,5 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
hyprLua = import ./hyprland/lua.nix { inherit lib; };
|
||||
in
|
||||
lib.mkIf config.programs.hyprlock.enable {
|
||||
wayland.windowManager.hyprland.settings.on = [
|
||||
(hyprLua.onStart [ "hyprlock" ])
|
||||
];
|
||||
{ pkgs, lib, ... }: {
|
||||
wayland.windowManager.hyprland.settings.exec-once = [ "hyprlock" ];
|
||||
|
||||
programs.hyprlock = let
|
||||
image = pkgs.fetchurl {
|
||||
@@ -14,9 +8,12 @@ lib.mkIf config.programs.hyprlock.enable {
|
||||
hash = "sha256-wRFs/Inw1wEzF5UKFn/o6e/xH5ZJ3SVNxxno+mDx2Fs=";
|
||||
};
|
||||
in {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
background = {
|
||||
path = lib.mkForce "${image}";
|
||||
color = "rgba(25, 20, 20, 1.0)";
|
||||
blur_passes = 0;
|
||||
blur_size = 7;
|
||||
noise = 0.0117;
|
||||
@@ -61,12 +58,17 @@ lib.mkIf config.programs.hyprlock.enable {
|
||||
dots_center = false;
|
||||
dots_rounding = -1;
|
||||
dots_fade_time = 200;
|
||||
# outer_color = "rgb(151515)";
|
||||
# inner_color = "rgb(200, 200, 200)";
|
||||
# font_color = "rgb(10, 10, 10)";
|
||||
font_family = "Noto Sans";
|
||||
fade_on_empty = true;
|
||||
fade_timeout = 1000;
|
||||
placeholder_text = "<i>Input Password...</i>";
|
||||
hide_input = false;
|
||||
rounding = -1;
|
||||
# check_color = "rgb(204, 136, 34)";
|
||||
# fail_color = "rgb(204, 34, 34)";
|
||||
fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>";
|
||||
fail_timeout = 2000;
|
||||
fail_transition = 300;
|
||||
@@ -0,0 +1,14 @@
|
||||
{ lib, pkgs, ... }: {
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
settings = lib.mkDefault {
|
||||
dynamic_background_opacity = "yes";
|
||||
background_opacity = 0.5;
|
||||
background_blur = true;
|
||||
background = "#1d2021";
|
||||
font_size = 13.0;
|
||||
cursor_blink_interval = "0.5 ease-in-out";
|
||||
};
|
||||
};
|
||||
programs.zsh.envExtra = "TERM=xterm-256color";
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
{ config, pkgs, ... }: let
|
||||
icon = pkgs.fetchurl {
|
||||
url = "https://cloud.lair.moe/pub/nixos-chan.webp?raw";
|
||||
name = "nixos-chan.webp";
|
||||
sha256 = "sha256-0majB9ljjMdZwvOijEgWdFKxWLje5tHgXHBJUWZfHfY=";
|
||||
url = "https://preview.redd.it/a2nga4jvjy291.png?width=640&crop=smart&auto=webp&s=7d1458b41101c960bc13c28a6b92c5a6ddc20210";
|
||||
name = "nixos-chan.png";
|
||||
sha256 = "sha256-9pleL+PiiylT8/aWw0iGve1iY3h0XohSQ7MVILzabHY=";
|
||||
};
|
||||
in {
|
||||
home.packages = [ pkgs.fastfetch ];
|
||||
home.packages = [ pkgs.neofetch ];
|
||||
xdg.configFile."neofetch/config.conf".text = ''
|
||||
print_info() {
|
||||
info title
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme.name = "qtct";
|
||||
style.name = "kvantum";
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{ config, ... }: {
|
||||
sops = {
|
||||
defaultSopsFile = ../../user/${config.home.username}/secrets.yaml;
|
||||
defaultSopsFile = ../users/${config.home.username}/secrets.yaml;
|
||||
age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt";
|
||||
|
||||
secrets."tokens/apis/wallhaven" = {};
|
||||
@@ -0,0 +1,21 @@
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
colors = config.lib.stylix.colors;
|
||||
in {
|
||||
home.packages = [ pkgs.mako ];
|
||||
xdg.configFile."mako/config".text = ''
|
||||
background-color=#${colors.base00}
|
||||
text-color=#${colors.base05}
|
||||
border-color=#${colors.base0B}
|
||||
border-radius=10
|
||||
margin=16
|
||||
progress-color=over #${colors.base0A}
|
||||
default-timeout=5000
|
||||
|
||||
[urgency=high]
|
||||
border-color=#${colors.base09}
|
||||
|
||||
[urgency=low]
|
||||
border-color=#${colors.base04}
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }: {
|
||||
xdg.configFile."wofi/style.css".source = pkgs.fetchurl {
|
||||
name = "style.css";
|
||||
url = "https://github.com/joao-vitor-sr/wofi-themes-collection/raw/main/themes/nord.css";
|
||||
sha256 = "sha256-rMDtE7Q0hmqd9LD+Ur/QR6cMan9ev6e9IyzpwY367c0=";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{ pkgs, lib, ... }: let
|
||||
yazi-plugins = pkgs.fetchFromGitHub {
|
||||
owner = "yazi-rs";
|
||||
repo = "plugins";
|
||||
rev = "7afba3a73cdd69f346408b77ea5aac26fe09e551";
|
||||
hash = "sha256-w9dSXW0NpgMOTnBlL/tzlNSCyRpZNT4XIcWZW5NlIUQ=";
|
||||
};
|
||||
in {
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
shellWrapperName = "y";
|
||||
|
||||
settings = {
|
||||
manager = {
|
||||
show_hidden = true;
|
||||
};
|
||||
preview = {
|
||||
max_width = 1000;
|
||||
max_height = 1000;
|
||||
};
|
||||
};
|
||||
|
||||
plugins = {
|
||||
chmod = "${yazi-plugins}/chmod.yazi";
|
||||
full-border = "${yazi-plugins}/full-border.yazi";
|
||||
max-preview = "${yazi-plugins}/max-preview.yazi";
|
||||
starship = pkgs.fetchFromGitHub {
|
||||
owner = "Rolv-Apneseth";
|
||||
repo = "starship.yazi";
|
||||
rev = "247f49da1c408235202848c0897289ed51b69343";
|
||||
sha256 = "sha256-0J6hxcdDX9b63adVlNVWysRR5htwAtP5WhIJ2AK2+Gs=";
|
||||
};
|
||||
};
|
||||
|
||||
initLua = ''
|
||||
require("full-border"):setup()
|
||||
require("starship"):setup()
|
||||
'';
|
||||
|
||||
keymap = {
|
||||
manager.prepend_keymap = [
|
||||
{
|
||||
on = "T";
|
||||
run = "plugin --sync max-preview";
|
||||
desc = "Maximize or restore the preview pane";
|
||||
}
|
||||
{
|
||||
on = ["c" "m"];
|
||||
run = "plugin chmod";
|
||||
desc = "Chmod on selected files";
|
||||
}
|
||||
{
|
||||
on = [ "<C-n>" ];
|
||||
run = ''shell '${lib.getExe pkgs.xdragon} -x -i -T "$@"' --confirm'';
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
{ config, osConfig, pkgs, lib, ... }: {
|
||||
{ config, pkgs, ... }: {
|
||||
home.packages = [ pkgs.nh ];
|
||||
|
||||
programs = {
|
||||
zoxide.enable = true;
|
||||
fzf.enable = true;
|
||||
@@ -37,10 +36,7 @@
|
||||
read_only = " RO";
|
||||
};
|
||||
nix_shell.format = "[nix-shell]($style) ";
|
||||
os = {
|
||||
disabled = false;
|
||||
style = "white";
|
||||
};
|
||||
os.disabled = false;
|
||||
python = {
|
||||
symbol = "py ";
|
||||
python_binary = ["python3" "python"];
|
||||
@@ -49,44 +45,45 @@
|
||||
};
|
||||
};
|
||||
|
||||
zellij.enable = true;
|
||||
|
||||
zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestion.enable = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
|
||||
shellAliases = let
|
||||
flakeDir = "~/nix";
|
||||
in {
|
||||
shellAliases =
|
||||
let
|
||||
flakeDir = "~/nix";
|
||||
in {
|
||||
rb = "nh os switch ${flakeDir}";
|
||||
trb = "nh os test ${flakeDir}";
|
||||
upd = "nix flake update --flake ${flakeDir}";
|
||||
upg = "sudo nixos-rebuild switch --upgrade --flake ${flakeDir}";
|
||||
|
||||
hms = "nh home switch ${flakeDir}";
|
||||
rhms = ''${pkgs.bash} $(home-manager generations | fzf | awk -F '-> ' '{print $2 "/activate"}')''; #https://github.com/nix-community/home-manager/issues/1114#issuecomment-2067785129
|
||||
|
||||
conf = "$EDITOR ${flakeDir}/nixos/hosts/$(hostname)/configuration.nix";
|
||||
pkgs = "$EDITOR ${flakeDir}/nixos/packages.nix";
|
||||
|
||||
ll = "ls -l";
|
||||
se = "sudoedit";
|
||||
ff = "fastfetch";
|
||||
cat = "${pkgs.lib.getExe pkgs.bat}";
|
||||
cd = "z";
|
||||
lg = "lazygit";
|
||||
s = "nix-shell . --run zsh";
|
||||
} // lib.optionalAttrs osConfig.boot.loader.grub.useOSProber {
|
||||
win = "sudo grub-reboot 2; sudo reboot";
|
||||
};
|
||||
|
||||
initContent = /*bash*/ ''
|
||||
initExtra = ''
|
||||
eval "$(zoxide init zsh)"
|
||||
eval "$(nh completions --shell zsh)"
|
||||
source "$(fzf-share)/key-bindings.zsh"
|
||||
source "$(fzf-share)/completion.zsh"
|
||||
nr() { nix run "nixpkgs#$1" -- "''${@:2}" }
|
||||
'';
|
||||
|
||||
envExtra = ''
|
||||
TERM=xterm-256color
|
||||
'';
|
||||
|
||||
history = {
|
||||
size = 10000;
|
||||
path = "${config.xdg.dataHome}/zsh/history";
|
||||
expireDuplicatesFirst = true;
|
||||
ignoreDups = true;
|
||||
};
|
||||
history.size = 10000;
|
||||
history.path = "${config.xdg.dataHome}/zsh/history";
|
||||
|
||||
oh-my-zsh.enable = true;
|
||||
};
|
||||
@@ -0,0 +1,6 @@
|
||||
{ pkgs-stable, ... }: {
|
||||
home.packages = with pkgs-stable; [
|
||||
(blender.override { cudaSupport = true; })
|
||||
aseprite
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{ pkgs, pkgs-stable, ... }: {
|
||||
home.packages = with pkgs-stable; [
|
||||
vscode
|
||||
jetbrains.pycharm-community
|
||||
jetbrains.idea-community
|
||||
android-studio
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{ pkgs, pkgs-stable, inputs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
pkgs-stable.google-chrome
|
||||
inputs.ayugram-desktop.packages.${pkgs.system}.ayugram-desktop
|
||||
vesktop
|
||||
obs-studio
|
||||
mpv
|
||||
obsidian
|
||||
thunderbird
|
||||
libreoffice
|
||||
];
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, colors, accent ? colors.base0B, ... }:
|
||||
{ stdenv, lib, config, colors, ... }:
|
||||
stdenv.mkDerivation {
|
||||
name = "AGS theme";
|
||||
|
||||
@@ -9,9 +9,7 @@
|
||||
echo \$bg: \#${colors.base00}\; > colors.scss
|
||||
echo \$surface0: \#${colors.base02}\; >> colors.scss
|
||||
echo \$fg: \#${colors.base05}\; >> colors.scss
|
||||
echo \$accent: \#${accent}\; >> colors.scss
|
||||
|
||||
echo \#${accent} > accent.css
|
||||
echo \$accent: \#${colors.base0B}\; >> colors.scss
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
@@ -19,6 +17,5 @@
|
||||
mkdir $out
|
||||
cp $src/* $out -r
|
||||
mv colors.scss $out
|
||||
mv accent.css $out
|
||||
'';
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
+18
-26
@@ -3,23 +3,17 @@
|
||||
|
||||
$radius: 10px;
|
||||
|
||||
* {
|
||||
all: unset;
|
||||
}
|
||||
|
||||
%item {
|
||||
all: unset;
|
||||
background: $bg;
|
||||
border-radius: $radius;
|
||||
padding: 6px 8px;
|
||||
padding: 4px;
|
||||
|
||||
& + &, .item + &, & + .item { margin-left: 4px; }
|
||||
& + &, .item + & { margin-left: 4px; }
|
||||
|
||||
icon + label { margin-left: 4px; }
|
||||
label { margin: 0 8px; }
|
||||
}
|
||||
|
||||
.item + .item { margin-left: 4px; }
|
||||
|
||||
|
||||
window.Bar {
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
@@ -33,10 +27,9 @@ window.Bar {
|
||||
}
|
||||
|
||||
.Workspaces {
|
||||
padding: 0;
|
||||
|
||||
button {
|
||||
margin: 0;
|
||||
all: unset;
|
||||
|
||||
&:hover label {
|
||||
background: $surface0;
|
||||
color: $accent;
|
||||
@@ -51,7 +44,7 @@ window.Bar {
|
||||
label {
|
||||
transition: 200ms;
|
||||
padding: 0 6px;
|
||||
margin: 0px;
|
||||
margin: 2px;
|
||||
border-radius: $radius;
|
||||
border: 1pt solid transparent;
|
||||
}
|
||||
@@ -66,12 +59,12 @@ window.Bar {
|
||||
.Layout.en { color: $accent; }
|
||||
|
||||
.SysTray button {
|
||||
padding: 4px;
|
||||
all: unset;
|
||||
padding: 8px;
|
||||
border-radius: inherit;
|
||||
|
||||
&:hover {
|
||||
background: $surface0;
|
||||
border-radius: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,17 +82,16 @@ window.Bar {
|
||||
}
|
||||
}
|
||||
|
||||
.Workspaces, .Wifi, .Layout, .Media, .SysTray, .AudioSlider, .Battery, .Time {
|
||||
@extend %item;
|
||||
.Battery label {
|
||||
padding-left: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.Wifi, .AudioSlider {
|
||||
&, button {
|
||||
&:hover { background-color: $surface0; }
|
||||
&:active {
|
||||
background-color: $accent;
|
||||
color: $bg;
|
||||
}
|
||||
}
|
||||
.Time { padding: 0 8px; }
|
||||
|
||||
.AudioSlider icon { margin-left: 8px; }
|
||||
|
||||
.Workspaces, .Layout, .Media, .SysTray, .AudioSlider, .Time {
|
||||
@extend %item;
|
||||
}
|
||||
}
|
||||
File renamed without changes.
@@ -0,0 +1,11 @@
|
||||
import { bind } from "astal"
|
||||
import Wp from "gi://AstalWp"
|
||||
|
||||
export default function Audio() {
|
||||
const speaker = Wp.get_default()?.audio.defaultSpeaker!
|
||||
|
||||
return <box className="AudioSlider">
|
||||
<icon icon={bind(speaker, "volumeIcon")} />
|
||||
<label label={bind(speaker, "volume").as(v => `${Math.floor(v*100)}%`)} />
|
||||
</box>
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { bind } from "astal"
|
||||
import Battery from "gi://AstalBattery"
|
||||
|
||||
export default function BatteryLevel() {
|
||||
const bat = Battery.get_default()
|
||||
|
||||
return <box className="Battery"
|
||||
visible={bind(bat, "isPresent")}>
|
||||
<icon icon={bind(bat, "batteryIconName")} />
|
||||
<label label={bind(bat, "percentage").as(p =>
|
||||
`${Math.floor(p * 100)} %`
|
||||
)} />
|
||||
</box>
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,17 @@
|
||||
import { bind } from "astal"
|
||||
import Network from "gi://AstalNetwork"
|
||||
|
||||
export default function Wifi() {
|
||||
const network = Network.get_default()
|
||||
const wifi = bind(network, "wifi")
|
||||
|
||||
return <box visible={wifi.as(Boolean)}>
|
||||
{wifi.as(wifi => wifi && (
|
||||
<icon
|
||||
tooltipText={bind(wifi, "ssid").as(String)}
|
||||
className="Wifi"
|
||||
icon={bind(wifi, "iconName")}
|
||||
/>
|
||||
))}
|
||||
</box>
|
||||
}
|
||||
File renamed without changes.
@@ -0,0 +1,21 @@
|
||||
{ pkgs, inputs, ... }: {
|
||||
home.packages = with pkgs; [
|
||||
scrot
|
||||
ffmpeg
|
||||
yt-dlp
|
||||
bat
|
||||
fd
|
||||
feh
|
||||
imv
|
||||
gromit-mpx
|
||||
notify-desktop
|
||||
rtorrent
|
||||
gparted
|
||||
git-lfs
|
||||
unrar
|
||||
inputs.tlock.packages.${system}.default
|
||||
hexyl
|
||||
jq
|
||||
litecli
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,229 @@
|
||||
{ pkgs, lib, config, collection, swww_flags, inputs }: {
|
||||
home.packages = with pkgs; [
|
||||
kitty
|
||||
pamixer
|
||||
wofi
|
||||
clipse
|
||||
grimblast
|
||||
wl-clipboard
|
||||
cliphist
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland =
|
||||
let
|
||||
colors = config.lib.stylix.colors;
|
||||
|
||||
wallpaper_changer = pkgs.writers.writePython3Bin "wallpaper_changer" {
|
||||
libraries = [ pkgs.python3Packages.requests ];
|
||||
flakeIgnore = [ "E501" "E111" "E701" "E241" "E731" ];
|
||||
} /*py*/ ''
|
||||
import requests as requests
|
||||
from random import choice
|
||||
from os import system, mkdir, listdir
|
||||
from os.path import exists
|
||||
|
||||
notify = lambda s: system(f"notify-desktop Wallpaper '{s}'")
|
||||
folder = "${config.home.homeDirectory}/Wallpapers"
|
||||
url = "https://wallhaven.cc/api/v1/collections/${collection}"
|
||||
with open("${config.sops.secrets."tokens/apis/wallhaven".path}") as f:
|
||||
token = f.read()
|
||||
|
||||
notify("Updating wallpaper!")
|
||||
|
||||
try:
|
||||
json = requests.get(url, params={'apikey': token}).json()
|
||||
|
||||
wallpaper = choice(json['data'])
|
||||
link = wallpaper['path']
|
||||
format = wallpaper['file_type']
|
||||
id = wallpaper['id']
|
||||
|
||||
if format == "image/jpeg": ext = "jpg"
|
||||
else: ext = "png"
|
||||
|
||||
filename = f"{id}.{ext}"
|
||||
|
||||
if not exists(f"{folder}/{filename}"):
|
||||
if not exists(folder):
|
||||
mkdir(f"{folder}")
|
||||
|
||||
notify("Downloading...")
|
||||
with open(f"{folder}/{filename}", 'wb') as f:
|
||||
r = requests.get(link)
|
||||
f.write(r.content)
|
||||
|
||||
except requests.exceptions.ConnectionError:
|
||||
notify("Offline mode")
|
||||
filename = choice(listdir(folder))
|
||||
|
||||
finally:
|
||||
system(f"${lib.getExe pkgs.swww} img {folder}/{filename} ${swww_flags}")
|
||||
'';
|
||||
|
||||
clipsync = pkgs.writers.writeBash "clipsync" ''
|
||||
while ${lib.getExe pkgs.clipnotify}; do
|
||||
${lib.getExe pkgs.xclip} -q -sel clip -t image/png -o > /dev/null && \
|
||||
${lib.getExe pkgs.xclip} -sel clip -t image/png -o | wl-copy
|
||||
${lib.getExe pkgs.xclip} -q -sel clip -o > /dev/null && \
|
||||
${lib.getExe pkgs.xclip} -sel clip -o | wl-copy
|
||||
done
|
||||
'';
|
||||
in {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
|
||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
plugins = with inputs.hyprland-plugins.packages.${pkgs.system}; [
|
||||
hyprbars
|
||||
];
|
||||
|
||||
settings = {
|
||||
"$mainMod" = "SUPER";
|
||||
|
||||
env = [
|
||||
"LIBVA_DRIVER_NAME,nvidia"
|
||||
"XDG_SESSION_TYPE,wayland"
|
||||
"GBM_BACKEND,nvidia"
|
||||
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
|
||||
"WLR_NO_HARDWARE_CURSORS,1"
|
||||
"XDG_CURRENT_DESKTOP,Hyprland"
|
||||
"XDG_SESSION_TYPE,wayland"
|
||||
"XDG_SESSION_DESKTOP,Hyprland"
|
||||
"XCURSOR_SIZE,36"
|
||||
"QT_QPA_PLATFORM,wayland"
|
||||
"XDG_SCREENSHOTS_DIR,~/screens"
|
||||
];
|
||||
|
||||
cursor.no_hardware_cursors = true;
|
||||
|
||||
debug = {
|
||||
disable_logs = false;
|
||||
enable_stdout_logs = true;
|
||||
};
|
||||
|
||||
input = {
|
||||
kb_layout = "us,ru";
|
||||
kb_variant = "lang";
|
||||
kb_options = "grp:caps_toggle";
|
||||
|
||||
follow_mouse = 1;
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
};
|
||||
|
||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||
};
|
||||
|
||||
windowrule = [
|
||||
"float, ^(imv)$"
|
||||
"float, ^(feh)$"
|
||||
"float, ^(mpv)$"
|
||||
"float, ^(nmtui)$"
|
||||
"float, title:^(Список друзей)"
|
||||
"move onscreen cursor -50% -50%, ^(xdragon)$"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
"float, class:(clipse)"
|
||||
"size 622 652, class:(clipse)"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
"systemctl --user start plasma-polkit-agent"
|
||||
"${lib.getExe' pkgs.swww "swww-daemon"}"
|
||||
"${lib.getExe wallpaper_changer}"
|
||||
"${clipsync}"
|
||||
"clipse -listen"
|
||||
"${lib.getExe' pkgs.udiskie "udiskie"}"
|
||||
];
|
||||
|
||||
bind = [
|
||||
"$mainMod, V, exec, kitty --class clipse -e clipse"
|
||||
|
||||
"$mainMod, Return, exec, kitty"
|
||||
"$mainMod, Q, killactive,"
|
||||
"$mainMod, M, exit,"
|
||||
"$mainMod, E, exec, kitty -e sh -c yazi"
|
||||
"$mainMod, F, togglefloating,"
|
||||
"$mainMod, D, exec, wofi --show drun"
|
||||
"$mainMod, P, pseudo, # dwindle"
|
||||
"$mainMod, J, togglesplit, # dwindle"
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
"$mainMod, left, movefocus, l"
|
||||
"$mainMod, right, movefocus, r"
|
||||
"$mainMod, up, movefocus, u"
|
||||
"$mainMod, down, movefocus, d"
|
||||
|
||||
# Moving windows
|
||||
"$mainMod SHIFT, left, swapwindow, l"
|
||||
"$mainMod SHIFT, right, swapwindow, r"
|
||||
"$mainMod SHIFT, up, swapwindow, u"
|
||||
"$mainMod SHIFT, down, swapwindow, d"
|
||||
|
||||
# Window resizing X Y
|
||||
"$mainMod CTRL, left, resizeactive, -60 0"
|
||||
"$mainMod CTRL, right, resizeactive, 60 0"
|
||||
"$mainMod CTRL, up, resizeactive, 0 -60"
|
||||
"$mainMod CTRL, down, resizeactive, 0 60"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"$mainMod, 1, workspace, 1"
|
||||
"$mainMod, 2, workspace, 2"
|
||||
"$mainMod, 3, workspace, 3"
|
||||
"$mainMod, 4, workspace, 4"
|
||||
"$mainMod, 5, workspace, 5"
|
||||
"$mainMod, 6, workspace, 6"
|
||||
"$mainMod, 7, workspace, 7"
|
||||
"$mainMod, 8, workspace, 8"
|
||||
"$mainMod, 9, workspace, 9"
|
||||
"$mainMod, 0, workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$mainMod SHIFT, 1, movetoworkspacesilent, 1"
|
||||
"$mainMod SHIFT, 2, movetoworkspacesilent, 2"
|
||||
"$mainMod SHIFT, 3, movetoworkspacesilent, 3"
|
||||
"$mainMod SHIFT, 4, movetoworkspacesilent, 4"
|
||||
"$mainMod SHIFT, 5, movetoworkspacesilent, 5"
|
||||
"$mainMod SHIFT, 6, movetoworkspacesilent, 6"
|
||||
"$mainMod SHIFT, 7, movetoworkspacesilent, 7"
|
||||
"$mainMod SHIFT, 8, movetoworkspacesilent, 8"
|
||||
"$mainMod SHIFT, 9, movetoworkspacesilent, 9"
|
||||
"$mainMod SHIFT, 0, movetoworkspacesilent, 10"
|
||||
|
||||
"$mainMod SHIFT, F, fullscreen"
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"$mainMod, mouse_down, workspace, e+1"
|
||||
"$mainMod, mouse_up, workspace, e-1"
|
||||
|
||||
# Keyboard backlight
|
||||
"$mainMod, F3, exec, brightnessctl -d *::kbd_backlight set +33%"
|
||||
"$mainMod, F2, exec, brightnessctl -d *::kbd_backlight set 33%-"
|
||||
|
||||
# Volume and Media Control
|
||||
", XF86AudioRaiseVolume, exec, pamixer -i 5 "
|
||||
", XF86AudioLowerVolume, exec, pamixer -d 5 "
|
||||
", XF86AudioMute, exec, pamixer -t"
|
||||
", XF86AudioMicMute, exec, pamixer --default-source -m"
|
||||
|
||||
# Brightness control
|
||||
", XF86MonBrightnessDown, exec, brightnessctl set 5%- "
|
||||
", XF86MonBrightnessUp, exec, brightnessctl set +5% "
|
||||
|
||||
# Waybar
|
||||
"$mainMod, B, exec, pkill -SIGUSR1 waybar"
|
||||
#"$mainMod, W, exec, pkill -SIGUSR2 waybar"
|
||||
|
||||
"$mainMod, W, exec, ${lib.getExe wallpaper_changer}"
|
||||
];
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = [
|
||||
"$mainMod, mouse:272, movewindow"
|
||||
"$mainMod, mouse:273, resizewindow"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{ pkgs, pkgs-stable, ... }: {
|
||||
imports = [
|
||||
../../modules/bundle.nix
|
||||
|
||||
../../packages/art.nix
|
||||
../../packages/desktop.nix
|
||||
|
||||
./modules/git.nix
|
||||
./modules/hyprland.nix
|
||||
./modules/style.nix
|
||||
];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
home = {
|
||||
username = "chest";
|
||||
homeDirectory = "/home/chest";
|
||||
stateVersion = "23.11";
|
||||
|
||||
packages = with pkgs; [
|
||||
nautilus
|
||||
] ++ (with pkgs-stable; [
|
||||
jetbrains.pycharm-community
|
||||
]);
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "cheeest";
|
||||
userEmail = "a.e.sunduk@gmail.com";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{ pkgs, lib, config, inputs, ... }: {
|
||||
imports = [(
|
||||
import ../../../patterns/hyprland.nix {
|
||||
inherit lib;
|
||||
inherit pkgs;
|
||||
inherit config;
|
||||
inherit inputs;
|
||||
collection = "cheeeest/1767552";
|
||||
swww_flags = "";
|
||||
}
|
||||
)];
|
||||
|
||||
wayland.windowManager.hyprland = let
|
||||
colors = config.lib.stylix.colors;
|
||||
in {
|
||||
settings = {
|
||||
monitor = ",preferred,auto,1";
|
||||
exec-once =["${lib.getExe pkgs.linux-wallpaperengine} /mnt/D/SteamLibrary/steamapps/workshop/content/431960/816353979 --assets-dir /mnt/D/SteamLibrary/steamapps/common/wallpaper_engine/assets --screen-root DP-1 --noautomute"];
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 5;
|
||||
border_size = 2;
|
||||
"col.active_border" = "rgba(${colors.base0C}ee) rgba(${colors.base0B}ee) 45deg";
|
||||
"col.inactive_border" = "rgba(${colors.base05}aa)";
|
||||
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 16;
|
||||
passes = 2;
|
||||
new_optimizations = true;
|
||||
};
|
||||
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
color = "rgba(1a1a1aee)";
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
|
||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
|
||||
animation = [
|
||||
"windows, 1, 7, myBezier"
|
||||
"windowsOut, 1, 7, default, popin 80%"
|
||||
"border, 1, 10, default"
|
||||
"borderangle, 1, 8, default"
|
||||
"fade, 1, 7, default"
|
||||
"workspaces, 1, 6, default"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
smart_split = true;
|
||||
};
|
||||
|
||||
master.new_status = "master";
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_fingers = 3;
|
||||
workspace_swipe_invert = true;
|
||||
workspace_swipe_distance = 200;
|
||||
workspace_swipe_forever = true;
|
||||
};
|
||||
|
||||
misc = {
|
||||
animate_manual_resizes = true;
|
||||
animate_mouse_windowdragging = true;
|
||||
enable_swallow = true;
|
||||
render_ahead_of_time = false;
|
||||
disable_hyprland_logo = false;
|
||||
};
|
||||
|
||||
bind = [
|
||||
''$mainMod Shift, S, exec, ${lib.getExe pkgs.grim} -g "$(${lib.getExe pkgs.slurp})" - | ${lib.getExe pkgs.swappy} -f -''
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{ pkgs, config, lib, ... }: {
|
||||
stylix = {
|
||||
enable = true;
|
||||
targets = {
|
||||
hyprland.enable = false;
|
||||
waybar.enable = false;
|
||||
kitty.variant256Colors = true;
|
||||
};
|
||||
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/eris.yaml";
|
||||
polarity = "dark";
|
||||
|
||||
image = pkgs.fetchurl {
|
||||
url = "https://w.wallhaven.cc/full/kx/wallhaven-kxedr7.jpg";
|
||||
sha256 = "0ypqnq7bsr2giq7nq1c3xrw2m0gkii9j5zhfp512r93wc96zvm50";
|
||||
};
|
||||
|
||||
iconTheme = {
|
||||
enable = true;
|
||||
package = pkgs.pop-icon-theme;
|
||||
dark = "Pop-Dark";
|
||||
};
|
||||
|
||||
fonts = {
|
||||
monospace = {
|
||||
name = "JetBrains Mono";
|
||||
package = pkgs.jetbrains-mono;
|
||||
};
|
||||
|
||||
sizes = {
|
||||
applications = 13;
|
||||
desktop = 12;
|
||||
};
|
||||
};
|
||||
|
||||
opacity = {
|
||||
popups = .8;
|
||||
terminal = .5;
|
||||
};
|
||||
};
|
||||
}
|
||||
File renamed without changes.
@@ -0,0 +1,23 @@
|
||||
{ pkgs, ... }: {
|
||||
imports = [
|
||||
../../modules/bundle.nix
|
||||
../../modules/hyprlock.nix
|
||||
|
||||
../../packages/coding.nix
|
||||
../../packages/desktop.nix
|
||||
../../packages/utils.nix
|
||||
../../packages/art.nix
|
||||
|
||||
./modules/git.nix
|
||||
./modules/hyprland.nix
|
||||
./modules/style.nix
|
||||
];
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
home = {
|
||||
username = "sweetbread";
|
||||
homeDirectory = "/home/sweetbread";
|
||||
stateVersion = "23.11";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "Sweetbread";
|
||||
userEmail = "sweetbread@coders-squad.com";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
{ pkgs, lib, config, inputs, ... }: {
|
||||
imports = [(
|
||||
import ../../../patterns/hyprland.nix {
|
||||
inherit lib;
|
||||
inherit pkgs;
|
||||
inherit config;
|
||||
inherit inputs;
|
||||
collection = "sweetbread/1764377";
|
||||
swww_flags = "--transition-type center";
|
||||
}
|
||||
)];
|
||||
|
||||
wayland.windowManager.hyprland = let
|
||||
colors = config.lib.stylix.colors;
|
||||
in {
|
||||
settings = {
|
||||
monitor = [
|
||||
"DP-3, 3440x1440@165.00Hz, auto-right, 1"
|
||||
# "HDMI-A-1, 3840x2160@60.00Hz, auto-left, 2"
|
||||
"HDMI-A-1, disabled"
|
||||
",preferred,auto,1"
|
||||
];
|
||||
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 20;
|
||||
border_size = 3;
|
||||
"col.active_border" = "rgba(${colors.base0C}ee) rgba(${colors.base0B}ee) 45deg";
|
||||
"col.inactive_border" = "rgba(${colors.base05}aa)";
|
||||
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 16;
|
||||
passes = 2;
|
||||
new_optimizations = true;
|
||||
};
|
||||
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
color = "rgba(1a1a1aee)";
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = true;
|
||||
|
||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
|
||||
animation = [
|
||||
"windows, 1, 7, myBezier"
|
||||
"windowsOut, 1, 7, default, popin 80%"
|
||||
"border, 1, 10, default"
|
||||
"borderangle, 1, 8, default"
|
||||
"fade, 1, 7, default"
|
||||
"workspaces, 1, 6, default"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
smart_split = true;
|
||||
};
|
||||
|
||||
master.new_status = "master";
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = true;
|
||||
workspace_swipe_fingers = 3;
|
||||
workspace_swipe_invert = true;
|
||||
workspace_swipe_distance = 200;
|
||||
workspace_swipe_forever = true;
|
||||
};
|
||||
|
||||
misc = {
|
||||
animate_manual_resizes = true;
|
||||
animate_mouse_windowdragging = true;
|
||||
enable_swallow = true;
|
||||
render_ahead_of_time = false;
|
||||
disable_hyprland_logo = false;
|
||||
};
|
||||
|
||||
bind = [
|
||||
" , Print, exec, grimblast --notify --freeze copy output"
|
||||
"CTRL, Print, exec, grimblast --notify --freeze copy area"
|
||||
"ALT , Print, exec, grimblast --notify --freeze copy active"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{ pkgs, config, lib, ... }: {
|
||||
stylix = {
|
||||
enable = true;
|
||||
targets = {
|
||||
hyprland.enable = false;
|
||||
waybar.enable = false;
|
||||
kitty.variant256Colors = true;
|
||||
};
|
||||
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
|
||||
polarity = "dark";
|
||||
|
||||
image = pkgs.fetchurl {
|
||||
url = "https://w.wallhaven.cc/full/kx/wallhaven-kxedr7.jpg";
|
||||
sha256 = "0ypqnq7bsr2giq7nq1c3xrw2m0gkii9j5zhfp512r93wc96zvm50";
|
||||
};
|
||||
|
||||
iconTheme = {
|
||||
enable = true;
|
||||
package = pkgs.pop-icon-theme;
|
||||
dark = "Pop-Dark";
|
||||
};
|
||||
|
||||
fonts = {
|
||||
monospace = {
|
||||
name = "JetBrains Mono";
|
||||
package = pkgs.jetbrains-mono;
|
||||
};
|
||||
|
||||
serif = {
|
||||
name = "Gabriela";
|
||||
package = (pkgs.google-fonts.override { fonts = [ "Gabriela" ]; });
|
||||
};
|
||||
|
||||
sizes = {
|
||||
applications = 13;
|
||||
desktop = 12;
|
||||
};
|
||||
};
|
||||
|
||||
opacity = {
|
||||
popups = .8;
|
||||
terminal = .75;
|
||||
};
|
||||
};
|
||||
}
|
||||
File renamed without changes.
@@ -1,31 +0,0 @@
|
||||
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||
imports = [
|
||||
./secrets/secrets.nix
|
||||
./modules/aagl.nix
|
||||
./modules/grub.nix
|
||||
./modules/zram.nix
|
||||
../modules/gpu/nvidia.nix
|
||||
|
||||
(import ../modules/common.nix {
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
hostname = "Eclipse";
|
||||
})
|
||||
|
||||
(import ../../user/common.nix {
|
||||
inherit config;
|
||||
inherit pkgs;
|
||||
inherit pkgs-stable;
|
||||
inherit pkgs-pinned;
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
name = "chest";
|
||||
})
|
||||
];
|
||||
|
||||
nixpkgs.config.allowBroken = true;
|
||||
programs.gamemode.enable = true;
|
||||
services.printing.enable = true;
|
||||
virtualisation.virtualbox.host.enable = true;
|
||||
users.extraGroups.vboxusers.members = [ "chest" ];
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
{ inputs, ... }: {
|
||||
imports = [ inputs.aagl.nixosModules.default ];
|
||||
nix.settings = inputs.aagl.nixConfig; # Set up Cachix
|
||||
programs.honkers-railway-launcher.enable = true;
|
||||
programs.sleepy-launcher.enable = true;
|
||||
programs.anime-game-launcher.enable = true;
|
||||
networking.hosts."0.0.0.0" = [
|
||||
"overseauspider.yuanshen.com"
|
||||
"log-upload-os.hoyoverse.com"
|
||||
"log-upload-os.mihoyo.com"
|
||||
"dump.gamesafe.qq.com"
|
||||
|
||||
"apm-log-upload-os.hoyoverse.com"
|
||||
"zzz-log-upload-os.hoyoverse.com"
|
||||
|
||||
"log-upload.mihoyo.com"
|
||||
"devlog-upload.mihoyo.com"
|
||||
"uspider.yuanshen.com"
|
||||
"sg-public-data-api.hoyoverse.com"
|
||||
"hkrpg-log-upload-os.hoyoverse.com"
|
||||
"public-data-api.mihoyo.com"
|
||||
|
||||
"prd-lender.cdp.internal.unity3d.com"
|
||||
"thind-prd-knob.data.ie.unity3d.com"
|
||||
"thind-gke-usc.prd.data.corp.unity3d.com"
|
||||
"cdp.cloud.unity3d.com"
|
||||
"remote-config-proxy-prd.uca.cloud.unity3d.com"
|
||||
|
||||
"pc.crashsight.wetest.net"
|
||||
];
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
hyprLua = import ../../../modules/user/hyprland/lua.nix { inherit lib; };
|
||||
wallpaper = pkgs.fetchurl {
|
||||
name = "miku_wallpaper.jpg";
|
||||
url = "https://c.lair.moe/pub/miku_wallpaper.jpeg?raw";
|
||||
hash = "sha256-inK4X5KzQk5FHwDw2DYy43nm7XtXlC6I0S1PkYUv+3w=";
|
||||
};
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
monitor = [
|
||||
{
|
||||
output = "DP-3";
|
||||
mode = "1920x1080@165";
|
||||
position = "0x0";
|
||||
scale = 1;
|
||||
}
|
||||
{
|
||||
output = "HDMI-A-1";
|
||||
mode = "preferred";
|
||||
position = "-1080x0";
|
||||
scale = 1;
|
||||
transform = 1;
|
||||
}
|
||||
];
|
||||
|
||||
workspace_rule = [
|
||||
{ workspace = "1"; monitor = "DP-3"; default = true; }
|
||||
{ workspace = "10"; monitor = "HDMI-A-1"; default = true; }
|
||||
];
|
||||
|
||||
on = [
|
||||
(hyprLua.onStart [
|
||||
"hyprctl dispatch 'hl.dsp.focus({ workspace = 1 })'"
|
||||
"${lib.getExe pkgs.swww} img -o HDMI-A-1 ${wallpaper}"
|
||||
"${lib.getExe pkgs.linux-wallpaperengine} ~/.local/share/wpe/wallpaper --assets-dir ~/.local/share/wpe/assets --screen-root DP-3 --noautomute"
|
||||
])
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data: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 truncated
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1j3uuyax673fvl5x4dveupq3dylngnrq0e5uy7fmclsexkfd25vysk646wk",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPRUJmYnplYlphSVJHUm96\nckhJa2xmeVB4UE5oK3UyRU40dm1vNkV5L0hBCm1LVGt5SEQxVXhlOURvbTN2c1JZ\nMU1TYXBuVmNMc2lMRlBqODg2ZklRb2sKLS0tIDltSkgxeGZBUko4UFhBdFZJUTgv\nUUZmdXUySFVqTGdnY29UcGN3d1VaZFEKLeVk/iuQeblOLY49QU8nILR+Uzchwd4z\nChqX+lGaVjMZnnNztrMT8DjFTkSUZ7pyYR6EYDQ785kWOv5ibqM0iw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2026-05-14T20:20:05Z",
|
||||
"mac": "ENC[AES256_GCM,data:HWdhOY15VcrZY4LLKgOLpU4YyQxSvzI5BAXSI9qRCSBa5V4aQOJueu5FjVoBCdATyvo4sE44WzBawYelEDHSx1v9STqZ7jUBdTOp9JsJN4mAtOjgFbLdNeYvP0enXEXC2fJtmspIbCsTE1CWOGvu33jwOhlsTfusrMJSZaFE54I=,iv:5l7/8Ma7d/Ou8URsXsjfi+i1QEq8EiVrsJaV1jJD3Tg=,tag:F7v4z5vmsQ6L1uQgHKAjIw==,type:str]",
|
||||
"version": "3.12.2"
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||
imports = [
|
||||
./secrets/secrets.nix
|
||||
./modules/grub.nix
|
||||
../modules/gpu/intel.nix
|
||||
|
||||
(import ../modules/common.nix {
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
hostname = "Impreza";
|
||||
})
|
||||
|
||||
(import ../../user/common.nix {
|
||||
inherit config;
|
||||
inherit pkgs;
|
||||
inherit pkgs-stable;
|
||||
inherit pkgs-pinned;
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
name = "chest";
|
||||
})
|
||||
];
|
||||
|
||||
nix.settings.cores = 3;
|
||||
nixpkgs.config.allowBroken = true;
|
||||
programs.gamemode.enable = true;
|
||||
hardware.bluetooth.enable = true;
|
||||
host.laptop = true;
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/NixOS";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-label/EFI";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" "nofail" ];
|
||||
};
|
||||
|
||||
fileSystems."/mnt/Windows" = {
|
||||
device = "/dev/disk/by-label/Windows";
|
||||
fsType = "ntfs";
|
||||
options = [ "umask=0022" "gid=100" "uid=1000" "nofail" ];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
|
||||
boot.loader.grub.useOSProber = true;
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{ pkgs, ... }: let
|
||||
theme = pkgs.fetchFromGitHub {
|
||||
owner = "OliveThePuffin";
|
||||
repo = "yorha-grub-theme";
|
||||
rev = "4d9cd37baf56c4f5510cc4ff61be278f11077c81";
|
||||
hash = "sha256-XVzYDwJM7Q9DvdF4ZOqayjiYpasUeMhAWWcXtnhJ0WQ=";
|
||||
};
|
||||
in {
|
||||
boot.loader.grub = {
|
||||
gfxmodeEfi = "1920x1080";
|
||||
theme = "${theme}/yorha-1920x1080";
|
||||
};
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
hyprLua = import ../../../modules/user/hyprland/lua.nix { inherit lib; };
|
||||
wallpaper = pkgs.fetchurl {
|
||||
name = "miku_wallpaper.jpg";
|
||||
url = "https://c.lair.moe/pub/miku_wallpaper.jpeg?raw";
|
||||
hash = "sha256-inK4X5KzQk5FHwDw2DYy43nm7XtXlC6I0S1PkYUv+3w=";
|
||||
};
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings.on = [
|
||||
(hyprLua.onStart [
|
||||
"${lib.getExe pkgs.swww} img -o eDP-1 ${wallpaper}"
|
||||
])
|
||||
];
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
../Eclipse/secrets
|
||||
@@ -1,49 +0,0 @@
|
||||
ThinkPad T480
|
||||
|
||||
CPU: Intel i5-8350U
|
||||
RAM: 16GB planned (8GB stock + 8GB SO-DIMM)
|
||||
SSD: 256GB NVMe stock; disko assumes `/dev/nvme0n1`
|
||||
|
||||
## Installation notes
|
||||
|
||||
This host uses `disko` with GPT + unencrypted EFI System Partition + LUKS + Btrfs subvolumes.
|
||||
|
||||
Before formatting, verify the target disk:
|
||||
|
||||
```bash
|
||||
lsblk
|
||||
```
|
||||
|
||||
If the internal drive is not `/dev/nvme0n1`, edit `host/Inaho/disko.nix` first.
|
||||
For a 2.5" SATA SSD/HDD it will usually be `/dev/sda`.
|
||||
|
||||
Then partition, format and mount:
|
||||
|
||||
```bash
|
||||
sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- \
|
||||
--mode destroy,format,mount ./host/Inaho/disko.nix
|
||||
```
|
||||
|
||||
This destroys the selected disk.
|
||||
|
||||
After that install the host:
|
||||
|
||||
```bash
|
||||
sudo nixos-install --flake .#Inaho
|
||||
```
|
||||
|
||||
The flake contains a new `disko` input. If `flake.lock` has not been updated yet, run:
|
||||
|
||||
```bash
|
||||
nix flake lock --update-input disko
|
||||
```
|
||||
|
||||
## After first boot
|
||||
|
||||
Update firmware, especially BIOS/UEFI and Thunderbolt, when batteries are installed and charged:
|
||||
|
||||
```bash
|
||||
sudo fwupdmgr refresh
|
||||
sudo fwupdmgr get-updates
|
||||
sudo fwupdmgr update
|
||||
```
|
||||
@@ -1,42 +0,0 @@
|
||||
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||
imports = [
|
||||
inputs.disko.nixosModules.disko
|
||||
./disko.nix
|
||||
./secrets/secrets.nix
|
||||
./modules/grub.nix
|
||||
./modules/syncthing.nix
|
||||
../modules/thinkpad.nix
|
||||
../modules/gpu/intel.nix
|
||||
|
||||
(import ../modules/common.nix {
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
hostname = "Inaho";
|
||||
})
|
||||
|
||||
(import ../../user/common.nix {
|
||||
inherit config;
|
||||
inherit pkgs;
|
||||
inherit pkgs-stable;
|
||||
inherit pkgs-pinned;
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
name = "sweetbread";
|
||||
fullname = "Sweet Bread";
|
||||
})
|
||||
];
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
host.laptop = true;
|
||||
|
||||
hardware.usb-modeswitch.enable = true;
|
||||
networking.modemmanager.enable = true;
|
||||
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
pkgs-stable.bottles
|
||||
];
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
{ lib, ... }:
|
||||
|
||||
let
|
||||
# Verify with `lsblk` before running disko. For the stock T480 NVMe setup
|
||||
# this is usually correct; for a 2.5" SATA SSD/HDD change it to /dev/sda.
|
||||
disk = "/dev/sda";
|
||||
|
||||
btrfsMountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
"ssd"
|
||||
"discard=async"
|
||||
];
|
||||
in {
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
type = "disk";
|
||||
device = disk;
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
priority = 1;
|
||||
name = "ESP";
|
||||
start = "1M";
|
||||
size = "512M";
|
||||
type = "EF00";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
mountOptions = [ "umask=0077" ];
|
||||
};
|
||||
};
|
||||
|
||||
luks = {
|
||||
priority = 2;
|
||||
name = "cryptsystem";
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "luks";
|
||||
name = "crypted";
|
||||
settings = {
|
||||
# Allows fstrim/discard through LUKS for SSDs.
|
||||
allowDiscards = true;
|
||||
};
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = [ "-f" "-L" "NixOS" ];
|
||||
subvolumes = {
|
||||
"/root" = {
|
||||
mountpoint = "/";
|
||||
mountOptions = btrfsMountOptions;
|
||||
};
|
||||
|
||||
"/home" = {
|
||||
mountpoint = "/home";
|
||||
mountOptions = btrfsMountOptions;
|
||||
};
|
||||
|
||||
"/nix" = {
|
||||
mountpoint = "/nix";
|
||||
mountOptions = btrfsMountOptions;
|
||||
};
|
||||
|
||||
"/log" = {
|
||||
mountpoint = "/var/log";
|
||||
mountOptions = btrfsMountOptions;
|
||||
};
|
||||
|
||||
"/swap" = {
|
||||
mountpoint = "/.swapvol";
|
||||
swap.swapfile.size = "16G";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
# File systems and swap are declared in ./disko.nix.
|
||||
# If you regenerate this file after installation, use:
|
||||
# nixos-generate-config --no-filesystems --root /mnt
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" "thinkpad_acpi" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
wayland.windowManager.hyprland.settings.monitor = [
|
||||
{
|
||||
output = "eDP-1";
|
||||
mode = "1920x1080@60";
|
||||
position = "0x0";
|
||||
scale = 1;
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
{ config, ... }: {
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
openDefaultPorts = true;
|
||||
|
||||
user = "sweetbread";
|
||||
dataDir = "/home/sweetbread/.config/syncthing";
|
||||
|
||||
key = config.sops.secrets.syncthing_key.path;
|
||||
cert = config.sops.secrets.syncthing_cert.path;
|
||||
|
||||
settings = {
|
||||
devices = {
|
||||
Rias.id = "EC5AGVN-2RKJDHN-NOSB7PQ-IRYCEEW-NPPDUGX-6QGSLUU-YIT5ZZZ-RVPTHQ6";
|
||||
Akeno.id = "QDW3WJX-J7ETS4R-32CUAIY-EGNM2RD-ZEHOUW2-CHOEOUG-USZOWTR-HHQS2QX";
|
||||
Koneko.id = "PJFWQRY-ZFUBGDR-NV7KVBL-UBDQ4HT-KPTYP34-MUDFPJU-4EZUHTT-ZLYRMAB";
|
||||
};
|
||||
|
||||
folders = {
|
||||
"Music" = {
|
||||
path = "/home/sweetbread/Music";
|
||||
devices = [ "Rias" "Akeno" "Koneko" ];
|
||||
};
|
||||
|
||||
"Obsidian" = {
|
||||
path = "/home/sweetbread/Documents/Obsidian";
|
||||
devices = [ "Rias" "Akeno" "Koneko" ];
|
||||
};
|
||||
|
||||
"Documents" = {
|
||||
path = "/home/sweetbread/Documents";
|
||||
devices = [ "Rias" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.syncthing.environment.STNODEFAULTFOLDER = "true";
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
sops = {
|
||||
age.keyFile = "/root/age.key";
|
||||
secrets = {
|
||||
vpn_bolt = {
|
||||
format = "binary";
|
||||
sopsFile = ../../Rias/secrets/vpn_bolt.db;
|
||||
};
|
||||
|
||||
syncthing_cert = {
|
||||
format = "binary";
|
||||
sopsFile = ./syncthing_cert.pem;
|
||||
};
|
||||
syncthing_key = {
|
||||
format = "binary";
|
||||
sopsFile = ./syncthing_key.pem;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data:rMr83F9VyGV5dp2XqXGAh3X2sCczUb0chH/2Hn9N9tijfRsOLGqHuy/zy29aOHR0PJ4euTU3bhmxWrBV/7oTnnEfI7DFF0vX4eBDaK8BzwAzrzXHYJOAgcwuYSqEEyWiLvTGABuLhTEto9kIMLxVIssa679s7zQSRwemVJSA3fEdtYD0BLAiO/ZtiAEmitgEt4EBRp9DhJPqlh2YfMmP6DpkDSy0hk+S+0NZg7eyrp7fivldiLzjsYDwCsugFcZQtWOqLMHY0kYhou8c2CKXu8UyqVVx24DyWfBfD1TH2pOk1ZsXFsxhFFKp5wcsfi0xDF1BG4hANcHVa6pR6y5JxNzh53xaH3NuvNJFEQSGJw5fNMuCrDnkYLDpU3xezzjvvxI01y7i2A00zsLli1fc9HA67ZlP1OBzsI7FyMgZlnOXQpbqnkj+kZdYAdOTjjMzQvrPusVS3RvqvcWj1qZtnHa1ZGmWh7xG0J10lQB4uDmTSxWoUUi7VmLXTC16HQNMySd8GbFmD/4Nj+/SxDShgsiug7L4hICjPC8Isosy99tE2wRXpjmMYUdlD7zu/vyEMxVPhkWnJyZZPXG+DjGBc/Diaw4ufYNxUs4yIRDceMArirubt/sN/eUoGOBGVWxvGm0/olTott7Yr+YKRSrDyWo9SWCz1qgz/ydpXm+xE7bPtbj9eAObZwneB/0tZTyo8o1WKd9yUST89m91EMQ31R97yCBwDW19VftWVCZH2w+QHNunih4ZUNiALQS745T2petbvc63iNiZswu0l3qoVM8x3y1RhAPLbsZpwQWSca307iDfBTB6uVW4HwLtL30=,iv:ajC3mjCYKUqS7XGIN64NiJoG6wHMvGdcHhazSO860ms=,tag:31fWG7m2neW2Pft9TjmBGg==,type:str]",
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuQUNTSDVIeDRuMmtTWXZD\nU0x4OVJrUStFeW5QV0pOZ2hEZnJZQ09UbW5RCmwxbjhuWis1Q3BCTGtOdS8zNE0w\nL0pDK3dBY1hxZ2dCNG96RlA0dkNWVWMKLS0tIHFld2hUdm11dk5hT2ZtRXpId0VG\nRDM0L05jS0lGcnJBYWVNWElIazdlaUEKugvBGcCzYTZL6aC6mI6GCzhiPFYql75z\nSBfalDmqSVU2k1IBqsNHIYSxzOXwUiGS3MSHJUCf7M2y9X3dHJGeyw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||
"recipient": "age1j3uuyax673fvl5x4dveupq3dylngnrq0e5uy7fmclsexkfd25vysk646wk"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2026-07-21T20:27:59Z",
|
||||
"mac": "ENC[AES256_GCM,data:lYZH1f3TyvcgqWI9hVOP3l2xImRh+LL0volXVUYSdGBnQTsAJfzMdsol/SsETwNNn+KrANC3ucO0/MXOWDK7ZPJ5Oq9R+OQnM8LK9/5mNfbzgodTw0RaH8FsrrtBCtHn3H2rlrBoPFEArblWKOh0G9iyrmufT09OREGt/G0tE5o=,iv:vmB1CY3sVajvLS8zAS/0I+NgnAOStbUkzQdw6XY45y4=,tag:mZP/eZVn+DJq+OT1ghtOkQ==,type:str]",
|
||||
"version": "3.13.2"
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data:2nMwCxU1y0zE5VtnmEf3lT4XyI9e8dokPkipo3TXpxuRJZ9OXCOb0n4pHb4Xx9OlDgAeW2UX70cR1Wtj7QPQx9h/HYZTmUeIP4rvlTPhaxs/2F33ud1lPKceV2DK2q8G/EvPLnlCcLWMvy6BVsqBlNmjAzNonWI=,iv:7H0o0i3zp7K2demt1O2Pw4BNt+2q4PhHBw1K/jC7OH4=,tag:Bx82eo5kQqwlb6egYmopgQ==,type:str]",
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2Vzl3M3pFblY5SmRQRUtI\nNWFCbWZJQTJTOWFHdTd1YkJEbXFGOFhBTUNNClBKdWhGdmh3Q2dUNkpMUUU3Zmdq\nUFd1M2twNW1KRGErRHUvc1BLY2pMT3MKLS0tIElVZ0RVVFQrb1FuYnJ0OU44RWZK\nbnpJZnFLR3kzV3VRaytQRDMrYkg5S2sKkr97EwJmtcIsRYH4di+tadTWnWzuCDa9\ngY+CKCVEPUgD1AXSgCwCP2AVd/zaKUbm6d6UA2QzZyqGsRim56WFsQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||
"recipient": "age1j3uuyax673fvl5x4dveupq3dylngnrq0e5uy7fmclsexkfd25vysk646wk"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2026-07-21T20:28:23Z",
|
||||
"mac": "ENC[AES256_GCM,data:ohYjzIYDilW7lsmZFZXpF629yevO2p8laA7Zl0+NCvZ8dB4nthLUePsnLTYCrEo5ADbboM5Cka11FiYbmB1IMR4mEdRwTN37EsQtyYLZbZ+j4XPsuXO0UT0NmWWiFNJlQEWfTVbhaZRDQXcPpVvm+6qQfRub018/0C59oWpmbyA=,iv:SX1QDDUWZyxE0zODAImcGGHJI7KGKYx9/6Q9F+9SVCQ=,tag:AExTZIfAKTCeU9c3Qj+IUw==,type:str]",
|
||||
"version": "3.13.2"
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
My desktop
|
||||
|
||||
- **CPU:** Intel i5-10600KF
|
||||
- **GPU:** NVidia GeForce RTX 3060 Ti
|
||||
- **RAM:** 32GB
|
||||
- **SSD:** 512GB
|
||||
- **HDD:** 1TB
|
||||
@@ -1,33 +0,0 @@
|
||||
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||
imports = [
|
||||
./secrets/secrets.nix
|
||||
./modules/grub.nix
|
||||
./modules/syncthing.nix
|
||||
./modules/rgb.nix
|
||||
../modules/gpu/nvidia.nix
|
||||
|
||||
(import ../modules/common.nix {
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
hostname = "Rias";
|
||||
})
|
||||
|
||||
(import ../../user/common.nix {
|
||||
inherit config;
|
||||
inherit pkgs;
|
||||
inherit pkgs-stable;
|
||||
inherit pkgs-pinned;
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
name = "sweetbread";
|
||||
fullname = "Sweet Bread";
|
||||
})
|
||||
];
|
||||
|
||||
programs.gamemode.enable = true;
|
||||
services.printing.enable = true;
|
||||
hardware.opentabletdriver.enable = true;
|
||||
|
||||
environment.systemPackages = [ pkgs.android-tools ];
|
||||
users.users.sweetbread.extraGroups = [ "kvm" ];
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
hyprLua = import ../../../modules/user/hyprland/lua.nix { inherit lib; };
|
||||
|
||||
monitor-switcher = pkgs.writers.writeBashBin "monitor_switcher" /*bash*/ ''
|
||||
MODE=$1
|
||||
|
||||
case $MODE in
|
||||
"tv")
|
||||
hyprctl eval 'hl.monitor({ output = "DP-3", mode = "1920x1080@60", position = "3840x0", scale = 1 })'
|
||||
hyprctl eval 'hl.monitor({ output = "HDMI-A-1", mode = "3840x2160@60", position = "0x0", scale = 1 })'
|
||||
notify-send "TV mode"
|
||||
;;
|
||||
|
||||
"mirror")
|
||||
hyprctl eval 'hl.monitor({ output = "HDMI-A-1", mode = "3840x2160@60", position = "0x0", scale = 1 })'
|
||||
hyprctl eval 'hl.monitor({ output = "DP-3", mode = "preferred", position = "auto", scale = 1, mirror = "HDMI-A-1" })'
|
||||
notify-send "TV-only mode"
|
||||
;;
|
||||
|
||||
"display"|*)
|
||||
hyprctl eval 'hl.monitor({ output = "HDMI-A-1", disabled = true })'
|
||||
hyprctl eval 'hl.monitor({ output = "DP-3", mode = "3440x1440@165", position = "0x0", scale = 1 })'
|
||||
notify-send "Display mode"
|
||||
;;
|
||||
esac
|
||||
'';
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
monitor = [
|
||||
{
|
||||
output = "DP-3";
|
||||
mode = "3440x1440@165";
|
||||
position = "auto-right";
|
||||
scale = 1;
|
||||
}
|
||||
{
|
||||
output = "HDMI-A-1";
|
||||
disabled = true;
|
||||
}
|
||||
];
|
||||
|
||||
bind = [
|
||||
(hyprLua.bind "XF86Calculator" (hyprLua.exec "ghostty --title=pulsemixer -e pulsemixer"))
|
||||
(hyprLua.bind "SUPER + F1" (hyprLua.exec "${lib.getExe monitor-switcher} tv"))
|
||||
(hyprLua.bind "SUPER + F2" (hyprLua.exec "${lib.getExe monitor-switcher} mirror"))
|
||||
(hyprLua.bind "SUPER + F3" (hyprLua.exec "${lib.getExe monitor-switcher}"))
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{ pkgs, ... }:{
|
||||
services.hardware.openrgb = {
|
||||
enable = true;
|
||||
package = pkgs.openrgb-with-all-plugins;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
openrgb-with-all-plugins
|
||||
i2c-tools
|
||||
pciutils
|
||||
];
|
||||
|
||||
hardware.i2c.enable = true;
|
||||
boot.kernelModules = [ "i2c-dev" ];
|
||||
|
||||
users.groups.i2c.members = [ "sweetbread" ];
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"data": "ENC[AES256_GCM,data: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 truncated
|
||||
"sops": {
|
||||
"age": [
|
||||
{
|
||||
"recipient": "age1j3uuyax673fvl5x4dveupq3dylngnrq0e5uy7fmclsexkfd25vysk646wk",
|
||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPbnBXd2Z6OTVaNm1qWEt6\nOXFVMlhDVDhOcVRYUXZWSWFGdUI2bVRucGo4CnMxQ2F5T05naFU4WVR6UUc0M21a\nYTNrTU1PV3RuNnIrVW4vZWNoMEVVQTgKLS0tICt0cGZXRk9xKzNQVG9OQTVZWkFR\ndHFqQmt4MG1rWDZRVkxmSHB4RmNnVFUKM1VqUSRY985F38tfQQvpKF4MvpBBsE3t\n9VAPz0y7Dstla47gyfihpN1KhAsyi1dv3CcsM21xgmKaAMyD0IUWGw==\n-----END AGE ENCRYPTED FILE-----\n"
|
||||
}
|
||||
],
|
||||
"lastmodified": "2026-04-08T13:22:56Z",
|
||||
"mac": "ENC[AES256_GCM,data:netm/xUuZIRD1KbxO2ob7PQvAzaH310myeNeY31+QQvBzhk+gwEtCkAkYxnXeS1nNAJjMxNafEZi58ewW0EOg8NO/ZgpDLnQySLxPszLC8Is2nVEwvpFCxoHbI8YSKgBwQxG9z9d+vFY6dClN1Jhc/32HCMNIjXWu0+nJ/uinCA=,iv:lP7vZPcqsHhLiKYhB+oCzyl2OcqDhaZy2/c78TQHmNA=,tag:BKWmaCGbZ6UP9xD2NzYsBA==,type:str]",
|
||||
"version": "3.12.2"
|
||||
}
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
My laptop `HP Pavilion 15-cb012ur`
|
||||
@@ -1,30 +0,0 @@
|
||||
{ config, pkgs, pkgs-stable, pkgs-pinned, lib, inputs, ... }: {
|
||||
imports = [
|
||||
./secrets/secrets.nix
|
||||
./modules/grub.nix
|
||||
../modules/gpu/nvidia.nix
|
||||
|
||||
(import ../modules/common.nix {
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
hostname = "Senko";
|
||||
})
|
||||
|
||||
(import ../../user/common.nix {
|
||||
inherit config;
|
||||
inherit pkgs;
|
||||
inherit pkgs-stable;
|
||||
inherit pkgs-pinned;
|
||||
inherit lib;
|
||||
inherit inputs;
|
||||
name = "sweetbread";
|
||||
fullname = "Sweet Bread";
|
||||
})
|
||||
];
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
host.laptop = true;
|
||||
host.nvidia.prime.enable = true;
|
||||
|
||||
environment.systemPackages = [ pkgs.dbgate ];
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{ pkgs, ... }: let
|
||||
theme = pkgs.fetchFromGitHub {
|
||||
owner = "Patato777";
|
||||
repo = "dotfiles";
|
||||
rev = "cc363921707807d7ad3e36b462f0df793a0fe18a";
|
||||
hash = "sha256-fpXGFNrzbV6K9hoZRX4tGieTLzhpPeGm6wn8CF4OGow=";
|
||||
};
|
||||
in {
|
||||
boot.loader.grub = {
|
||||
gfxmodeEfi = "1920x1080";
|
||||
theme = "${theme}/grub/themes/virtuaverse";
|
||||
};
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{
|
||||
wayland.windowManager.hyprland.settings.monitor = [
|
||||
{
|
||||
output = "eDP-1";
|
||||
mode = "1920x1080@60";
|
||||
position = "0x0";
|
||||
scale = 1;
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
sops = {
|
||||
age.keyFile = "/root/age.key";
|
||||
secrets = {
|
||||
vpn_bolt = {
|
||||
format = "binary";
|
||||
sopsFile = ../../Rias/secrets/vpn_bolt.db;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
{ lib, inputs, hostname }: {
|
||||
imports = [
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
../${hostname}/hardware-configuration.nix
|
||||
../../modules/host.nix
|
||||
./packages.nix
|
||||
];
|
||||
|
||||
options = {
|
||||
host = {
|
||||
laptop = lib.mkEnableOption "laptop mode";
|
||||
|
||||
nvidia.prime = {
|
||||
enable = lib.mkEnableOption "NVIDIA PRIME offload for hybrid graphics";
|
||||
intelBusId = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "PCI:0:2:0";
|
||||
description = "Intel/iGPU Bus ID used by NVIDIA PRIME.";
|
||||
};
|
||||
nvidiaBusId = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "PCI:1:0:0";
|
||||
description = "NVIDIA dGPU Bus ID used by NVIDIA PRIME.";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
nix.settings = {
|
||||
keep-going = true;
|
||||
extra-substituters = [ "https://nix.lair.moe/main" ];
|
||||
extra-trusted-public-keys = [ "main:tR2gNhCBJHKAlVgohPNHBhGnWL55tB8SxXmMWJe5lo8=" ];
|
||||
experimental-features = [ "nix-command" "flakes" ];
|
||||
};
|
||||
networking.hostName = hostname;
|
||||
time.timeZone = lib.mkDefault "Europe/Moscow";
|
||||
i18n.defaultLocale = lib.mkDefault "ru_RU.UTF-8";
|
||||
system.stateVersion = "23.05";
|
||||
};
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
{ config, pkgs-stable, ... }:
|
||||
{
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs-stable; [
|
||||
intel-media-driver
|
||||
intel-compute-runtime
|
||||
libvdpau-va-gl
|
||||
];
|
||||
extraPackages32 = with pkgs-stable.pkgsi686Linux; [
|
||||
intel-media-driver
|
||||
];
|
||||
};
|
||||
|
||||
nixpkgs.config.packageOverrides = pkgs-stable: {
|
||||
vaapiIntel = pkgs-stable.vaapiIntel.override { enableHybridCodec = true; };
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs-stable; [
|
||||
intel-gpu-tools
|
||||
libva-utils
|
||||
clinfo
|
||||
];
|
||||
|
||||
boot.kernelParams = [ "i915.force_probe=*" ];
|
||||
}
|
||||
@@ -1,61 +0,0 @@
|
||||
{ config, pkgs-stable, lib, ... }: let
|
||||
primeCfg = config.host.nvidia.prime;
|
||||
isPrimeOffload = primeCfg.enable;
|
||||
in {
|
||||
boot = {
|
||||
kernelParams = [ "nvidia-drm.modeset=1" ];
|
||||
initrd.kernelModules = lib.optionals isPrimeOffload [ "i915" ];
|
||||
};
|
||||
|
||||
services.xserver.videoDrivers =
|
||||
if isPrimeOffload
|
||||
then [ "modesetting" "nvidia" ]
|
||||
else [ "nvidia" ];
|
||||
|
||||
hardware = {
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
extraPackages = with pkgs-stable; [
|
||||
# nvidia-vaapi-driver
|
||||
intel-media-driver
|
||||
libvdpau-va-gl
|
||||
];
|
||||
extraPackages32 = with pkgs-stable.pkgsi686Linux; [ nvidia-vaapi-driver intel-media-driver ];
|
||||
};
|
||||
|
||||
nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement = {
|
||||
enable = true;
|
||||
finegrained = false;
|
||||
};
|
||||
open = false;
|
||||
nvidiaSettings = true;
|
||||
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
|
||||
prime = lib.optionalAttrs isPrimeOffload {
|
||||
offload = {
|
||||
enable = true;
|
||||
enableOffloadCmd = true;
|
||||
};
|
||||
intelBusId = primeCfg.intelBusId;
|
||||
nvidiaBusId = primeCfg.nvidiaBusId;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
environment.sessionVariables = {
|
||||
__GL_VRR_ALLOWED = 1;
|
||||
ELECTRON_OZONE_PLATFORM_HINT = "auto";
|
||||
NIXOS_OZONE_WL = 1;
|
||||
} // lib.optionalAttrs isPrimeOffload {
|
||||
LIBVA_DRIVER_NAME = "iHD";
|
||||
} // lib.optionalAttrs (!isPrimeOffload) {
|
||||
WLR_NO_HARDWARE_CURSORS = 1;
|
||||
WLR_DRM_NO_ATOMIC = 1;
|
||||
GBM_BACKEND = "nvidia-drm";
|
||||
LIBVA_DRIVER_NAME = "nvidia";
|
||||
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
|
||||
};
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
{ pkgs, inputs, ... }: {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
file
|
||||
tree
|
||||
wget
|
||||
git
|
||||
(btop.override { cudaSupport = true; })
|
||||
unzip
|
||||
yazi
|
||||
zip
|
||||
lazygit
|
||||
httpie
|
||||
ncdu
|
||||
tldr
|
||||
helix
|
||||
pinentry-gnome3
|
||||
];
|
||||
|
||||
fonts = {
|
||||
enableDefaultPackages = false;
|
||||
packages = with pkgs; [
|
||||
jetbrains-mono # Best mono font
|
||||
noto-fonts-cjk-sans # Japanese
|
||||
powerline-symbols # Console decoration
|
||||
unifont # Other
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,83 +0,0 @@
|
||||
{ config, lib, pkgs, ... }: {
|
||||
# T480-specific hardware defaults.
|
||||
hardware = {
|
||||
enableRedistributableFirmware = true;
|
||||
|
||||
trackpoint = {
|
||||
enable = true;
|
||||
emulateWheel = true;
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
supportedFilesystems = [ "btrfs" ];
|
||||
|
||||
initrd.availableKernelModules = [
|
||||
"nvme"
|
||||
"ahci"
|
||||
"xhci_pci"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
"rtsx_pci_sdmmc"
|
||||
];
|
||||
|
||||
kernelModules = [ "kvm-intel" "thinkpad_acpi" ];
|
||||
|
||||
kernelParams = [
|
||||
# Prefer S3/deep sleep when BIOS exposes it. If suspend behaves worse,
|
||||
# remove this and use the BIOS sleep setting instead.
|
||||
"mem_sleep_default=deep"
|
||||
];
|
||||
};
|
||||
|
||||
powerManagement.enable = true;
|
||||
services = {
|
||||
# Firmware updates for BIOS/UEFI, Thunderbolt, SSDs where LVFS supports it.
|
||||
fwupd.enable = true;
|
||||
|
||||
# Helps Intel laptops keep sane thermal behaviour under load.
|
||||
thermald.enable = true;
|
||||
|
||||
# Fingerprint reader support. If fprintd does not detect the reader,
|
||||
# leaving this enabled is harmless; login can still use a password.
|
||||
fprintd.enable = true;
|
||||
|
||||
logind.settings.Login = {
|
||||
HandleLidSwitch = "suspend-then-hibernate";
|
||||
HandleLidSwitchExternalPower = "suspend-then-hibernate";
|
||||
HandlePowerKey = "poweroff";
|
||||
};
|
||||
|
||||
tlp.settings = {
|
||||
# Preserve batteries when the laptop is usually on AC.
|
||||
# Raise STOP_* to 100 if maximum autonomy matters more than battery wear.
|
||||
START_CHARGE_THRESH_BAT0 = 70;
|
||||
STOP_CHARGE_THRESH_BAT0 = 95;
|
||||
START_CHARGE_THRESH_BAT1 = 70;
|
||||
STOP_CHARGE_THRESH_BAT1 = 85;
|
||||
RESTORE_THRESHOLDS_ON_BAT = 1;
|
||||
|
||||
# NVMe/SATA SSD power saving without making the system too sluggish.
|
||||
AHCI_RUNTIME_PM_ON_AC = "on";
|
||||
AHCI_RUNTIME_PM_ON_BAT = "auto";
|
||||
SATA_LINKPWR_ON_AC = "med_power_with_dipm";
|
||||
SATA_LINKPWR_ON_BAT = "med_power_with_dipm";
|
||||
|
||||
# Usually safe on ThinkPads; disable if some USB device randomly disconnects.
|
||||
USB_AUTOSUSPEND = 1;
|
||||
};
|
||||
};
|
||||
|
||||
networking.networkmanager.wifi.powersave = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
acpi
|
||||
lm_sensors
|
||||
pciutils
|
||||
powertop
|
||||
smartmontools
|
||||
usbutils
|
||||
nvme-cli
|
||||
];
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
imports = [
|
||||
./host/bluetooth.nix
|
||||
./host/bootloader.nix
|
||||
./host/console.nix
|
||||
./host/db.nix
|
||||
./host/env.nix
|
||||
./host/gamemode.nix
|
||||
./host/gpg.nix
|
||||
./host/laptop.nix
|
||||
./host/network.nix
|
||||
./host/printing.nix
|
||||
./host/shutdown-on-lan.nix
|
||||
./host/sound.nix
|
||||
./host/virtmanager.nix
|
||||
./host/vpn.nix
|
||||
./host/yggdrasil.nix
|
||||
./host/mtp.nix
|
||||
];
|
||||
|
||||
programs = {
|
||||
dconf.enable = true;
|
||||
hyprland.enable = true;
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-hyprland
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-termfilechooser
|
||||
];
|
||||
|
||||
config = {
|
||||
common = {
|
||||
default = [ "hyprland" "gtk" ];
|
||||
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
|
||||
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
|
||||
};
|
||||
|
||||
hyprland = {
|
||||
default = [ "hyprland" "gtk" ];
|
||||
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
|
||||
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
fstrim.enable = true;
|
||||
upower.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{ lib, ... }:{
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
ensureDatabases = [ "mydatabase" ];
|
||||
authentication = lib.mkOverride 10 ''
|
||||
#type database DBuser auth-method
|
||||
local all all trust
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{ lib, ... }: {
|
||||
environment.variables = {
|
||||
EDITOR = "hx";
|
||||
RANGER_LOAD_DEFAULT_RC = "FALSE";
|
||||
# GTK/Electron apps do not consistently use the portal picker unless this
|
||||
# variable is present in the graphical session environment.
|
||||
GTK_USE_PORTAL = "1";
|
||||
|
||||
# Qt/Telegram-like apps otherwise keep using their own picker. This makes
|
||||
# them ask xdg-desktop-portal for file/folder selection.
|
||||
QT_QPA_PLATFORMTHEME = lib.mkForce "xdgdesktopportal";
|
||||
TDESKTOP_USE_GTK_FILE_DIALOG = "1";
|
||||
|
||||
};
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
{ config, pkgs, pkgs-stable, lib, ... }:
|
||||
|
||||
lib.mkIf config.programs.gamemode.enable {
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
mangohud
|
||||
protonup-ng
|
||||
bottles
|
||||
pkgs-stable.heroic
|
||||
prismlauncher
|
||||
];
|
||||
|
||||
environment.sessionVariables = {
|
||||
STEAM_EXTRA_COMPAT_TOOLS_PATHS =
|
||||
"\${HOME}/.steam/root/compatibilitytools.d";
|
||||
};
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
lib.mkIf config.host.laptop {
|
||||
services.tlp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
CPU_SCALING_GOVERNOR_ON_AC = "powersave";
|
||||
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
|
||||
|
||||
CPU_ENERGY_PERF_POLICY_ON_AC = "balance_performance";
|
||||
CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
|
||||
|
||||
CPU_MIN_PERF_ON_AC = 0;
|
||||
CPU_MAX_PERF_ON_AC = 100;
|
||||
CPU_MIN_PERF_ON_BAT = 0;
|
||||
CPU_MAX_PERF_ON_BAT = 75;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{ pkgs, ... }: {
|
||||
environment.systemPackages = [ pkgs.glib ];
|
||||
programs.fuse.enable = true;
|
||||
services.gvfs.enable = true;
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
{
|
||||
networking = {
|
||||
enableIPv6 = true;
|
||||
useDHCP = false;
|
||||
nameservers = [ "64.188.64.176" "1.1.1.1" ];
|
||||
|
||||
dhcpcd.extraConfig = "nohook resolv.conf";
|
||||
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
dns = "none";
|
||||
insertNameservers = [ "64.188.64.176" "1.1.1.1" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
lib.mkIf config.services.printing.enable {
|
||||
services = {
|
||||
printing.drivers = with pkgs; [
|
||||
brlaser
|
||||
];
|
||||
|
||||
avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
};
|
||||
|
||||
hardware.sane = {
|
||||
enable = true;
|
||||
extraBackends = with pkgs; [ sane-airscan ];
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
sane-frontends
|
||||
simple-scan
|
||||
];
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
security.rtkit.enable = true;
|
||||
|
||||
services = {
|
||||
pulseaudio.enable = false;
|
||||
|
||||
pipewire = {
|
||||
enable = true;
|
||||
|
||||
alsa = {
|
||||
enable = true;
|
||||
support32Bit = true;
|
||||
};
|
||||
|
||||
pulse.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
{
|
||||
virtualisation.libvirtd.enable = true;
|
||||
programs.virt-manager.enable = true;
|
||||
}
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
{ pkgs-pinned, lib, ... }: {
|
||||
programs.clash-verge = {
|
||||
enable = true;
|
||||
package = pkgs-pinned.clash-verge-rev;
|
||||
serviceMode = true;
|
||||
tunMode = true;
|
||||
autoStart = true;
|
||||
};
|
||||
|
||||
systemd.services.clash-verge.serviceConfig = {
|
||||
CapabilityBoundingSet = lib.mkForce [
|
||||
"CAP_NET_ADMIN"
|
||||
"CAP_NET_RAW"
|
||||
"CAP_SYS_ADMIN"
|
||||
"CAP_DAC_OVERRIDE"
|
||||
"CAP_DAC_READ_SEARCH"
|
||||
"CAP_SYS_PTRACE"
|
||||
"CAP_SETUID"
|
||||
"CAP_SETGID"
|
||||
"CAP_CHOWN"
|
||||
"CAP_MKNOD"
|
||||
];
|
||||
|
||||
AmbientCapabilities = [
|
||||
"CAP_DAC_READ_SEARCH"
|
||||
"CAP_SYS_PTRACE"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
services.yggdrasil = {
|
||||
enable = true;
|
||||
persistentKeys = true;
|
||||
settings = {
|
||||
Peers = [
|
||||
"tcp://box.paulll.cc:13337"
|
||||
"tcp://lair.moe:5001"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
{ config, lib, ... }: {
|
||||
imports = [
|
||||
./user/btop.nix
|
||||
./user/ghostty.nix
|
||||
./user/helix.nix
|
||||
./user/hyprland.nix
|
||||
./user/hyprlock.nix
|
||||
./user/mako.nix
|
||||
./user/neofetch.nix
|
||||
./user/qt.nix
|
||||
./user/quickshell.nix
|
||||
./user/stylix.nix
|
||||
./user/sops.nix
|
||||
./user/ssh.nix
|
||||
./user/walker.nix
|
||||
./user/wob.nix
|
||||
./user/yazi.nix
|
||||
./user/zsh.nix
|
||||
|
||||
./user/packages/art.nix
|
||||
./user/packages/desktop.nix
|
||||
./user/packages/utils.nix
|
||||
];
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
{ config, pkgs, ... }: let
|
||||
ghosttyWithGL = (config.lib.nixGL.wrap pkgs.ghostty);
|
||||
shaders = pkgs.fetchFromGitHub {
|
||||
owner = "sahaj-b";
|
||||
repo = "ghostty-cursor-shaders";
|
||||
rev = "06d4e90fb5410e9c4d0b3131584060adddf89406";
|
||||
hash = "sha256-G/UIr1bKnxn1AcHl/4FL/jou6b7M2VeREslYVELxdmw=";
|
||||
};
|
||||
in {
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
package = ghosttyWithGL;
|
||||
|
||||
settings = {
|
||||
confirm-close-surface = false;
|
||||
copy-on-select = false;
|
||||
title-report = true;
|
||||
|
||||
custom-shader = "${shaders}/cursor_warp.glsl";
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,202 +0,0 @@
|
||||
{ inputs, pkgs, lib, config, ... }: let
|
||||
helixSteel =
|
||||
inputs.helix-steel.packages.${pkgs.system}.default.overrideAttrs (old: {
|
||||
cargoBuildFlags = (old.cargoBuildFlags or []) ++ [
|
||||
"--features"
|
||||
"steel,git"
|
||||
];
|
||||
});
|
||||
|
||||
comment-headers = pkgs.fetchurl {
|
||||
url = "https://github.com/codingvivi/comment-dividers.hx/raw/refs/heads/main/comment_headers.scm";
|
||||
name = "comment_headers.scm";
|
||||
hash = "sha256-ohgn6DFJl0rdRJuri6Frs/uUlUsPxMvPHDuw4FS3qEE=";
|
||||
};
|
||||
|
||||
patched-comment-headers = pkgs.runCommand "comment_headers.scm" { } ''
|
||||
install -m 0644 ${comment-headers} "$out"
|
||||
|
||||
${pkgs.python3}/bin/python3 - <<'PY'
|
||||
from pathlib import Path
|
||||
import os
|
||||
import sys
|
||||
|
||||
p = Path(os.environ["out"])
|
||||
s = p.read_text()
|
||||
|
||||
start_marker = "(define (get-block-delims)"
|
||||
end_marker = "(define (delete_till_first_nonwhitespace!)"
|
||||
|
||||
try:
|
||||
start = s.index(start_marker)
|
||||
end = s.index(end_marker, start)
|
||||
except ValueError as e:
|
||||
sys.exit(f"failed to find function markers: {e}")
|
||||
|
||||
new_get_block_delims = """(define (get-block-delims)
|
||||
(helix.static.open_above)
|
||||
(helix.static.insert_string "test_string")
|
||||
(helix.static.normal_mode)
|
||||
(helix.static.extend_to_line_bounds)
|
||||
(helix.static.trim_selections)
|
||||
(helix.static.toggle_comments)
|
||||
(let* ([commented-test-string (helix.static.current-highlighted-text!)]
|
||||
[strings-without-whitespace (split-whitespace commented-test-string)])
|
||||
(delete-line-noyank!)
|
||||
(cond
|
||||
[(and (> (length strings-without-whitespace) 1)
|
||||
(equal? (last strings-without-whitespace) "test_string"))
|
||||
(list (first strings-without-whitespace) "")]
|
||||
[(> (length strings-without-whitespace) 2)
|
||||
(list (first strings-without-whitespace) (last strings-without-whitespace))]
|
||||
[else
|
||||
(list "" "")])))
|
||||
|
||||
"""
|
||||
|
||||
s = s[:start] + new_get_block_delims + s[end:]
|
||||
|
||||
old = "(make-line line-length fill-pattern #f padding-pattern)"
|
||||
new = "(make-line line-length \"\" fill-pattern padding-pattern)"
|
||||
|
||||
if old not in s:
|
||||
sys.exit("failed to find insert-divider make-line call")
|
||||
|
||||
s = s.replace(old, new)
|
||||
|
||||
p.write_text(s)
|
||||
PY
|
||||
'';
|
||||
in {
|
||||
home.packages = with pkgs; [
|
||||
asm-lsp
|
||||
fasm
|
||||
steel
|
||||
wakatime-cli
|
||||
];
|
||||
|
||||
home.activation.installWakatimeHx = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
export PATH="${pkgs.steel}/bin:$PATH"
|
||||
export STEEL_HOME="${config.xdg.dataHome}/steel"
|
||||
|
||||
if [ ! -f "$STEEL_HOME/cogs/wakatime/wakatime.scm" ]; then
|
||||
forge pkg install --git https://github.com/Xerxes-2/wakatime.hx.git
|
||||
fi
|
||||
'';
|
||||
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
package = helixSteel;
|
||||
defaultEditor = true;
|
||||
|
||||
languages = {
|
||||
language-server.asm-lsp.command = "asm-lsp";
|
||||
|
||||
language = [
|
||||
{
|
||||
name = "nasm";
|
||||
file-types = [ "asm" "inc" ];
|
||||
comment-token = ";";
|
||||
language-servers = [ "asm-lsp" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
settings = {
|
||||
# theme = "catppuccin-mocha";
|
||||
editor = {
|
||||
rulers = [ 81 ];
|
||||
insert-final-newline = false;
|
||||
indent-guides.render = true;
|
||||
|
||||
whitespace.render = {
|
||||
space = "all";
|
||||
tab = "all";
|
||||
nbsp = "none";
|
||||
nnbsp = "none";
|
||||
newline = "none";
|
||||
};
|
||||
|
||||
cursor-shape = {
|
||||
normal = "block";
|
||||
insert = "bar";
|
||||
select = "underline";
|
||||
};
|
||||
};
|
||||
|
||||
keys.normal = {
|
||||
space = {
|
||||
C-a = {
|
||||
b = ":fasm-build";
|
||||
r = ":fasm-run";
|
||||
c = ":fasm-clean";
|
||||
};
|
||||
|
||||
C-c = {
|
||||
h = ":comment-h1";
|
||||
j = ":comment-h2";
|
||||
k = ":comment-h3";
|
||||
d = ":comment-divider";
|
||||
};
|
||||
};
|
||||
|
||||
S-down = ["extend_to_line_bounds" "delete_selection" "paste_after"];
|
||||
S-up = ["extend_to_line_bounds" "delete_selection" "move_line_up" "paste_before"];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
xdg.configFile = {
|
||||
"asm-lsp/.asm-lsp.toml".text = ''
|
||||
[default_config]
|
||||
assembler = "fasm"
|
||||
instruction_set = "x86/x86-64"
|
||||
|
||||
[opts]
|
||||
compiler = "fasm"
|
||||
diagnostics = true
|
||||
default_diagnostics = true
|
||||
'';
|
||||
|
||||
"helix/cogs/comment_headers.scm".source = patched-comment-headers;
|
||||
"helix/helix.scm".text = ''
|
||||
(require (prefix-in div. "cogs/comment_headers.scm"))
|
||||
(require (prefix-in helix. "helix/commands.scm"))
|
||||
|
||||
(provide comment-h1
|
||||
comment-h2
|
||||
comment-h3
|
||||
comment-divider
|
||||
fasm-build
|
||||
fasm-run
|
||||
fasm-clean)
|
||||
|
||||
(define (comment-h1)
|
||||
(div.insert-h1!))
|
||||
|
||||
(define (comment-h2)
|
||||
(div.insert-h2!))
|
||||
|
||||
(define (comment-h3)
|
||||
(div.insert-h3!))
|
||||
|
||||
(define (comment-divider)
|
||||
(div.insert-divider! 80 "~"))
|
||||
|
||||
(define (fasm-build)
|
||||
(helix.write)
|
||||
(helix.run-shell-command "just" "build"))
|
||||
|
||||
(define (fasm-run)
|
||||
(helix.write)
|
||||
(helix.run-shell-command "just" "run"))
|
||||
|
||||
(define (fasm-clean)
|
||||
(helix.run-shell-command "just" "clean"))
|
||||
'';
|
||||
"helix/init.scm".text = ''
|
||||
;; Steel init file
|
||||
(require "wakatime/wakatime.scm")
|
||||
'';
|
||||
};
|
||||
}
|
||||
@@ -1,231 +0,0 @@
|
||||
{ pkgs, lib, config, osConfig, inputs, username, ... }:
|
||||
let
|
||||
optImport = path: lib.optional (builtins.pathExists path) path;
|
||||
hostname = osConfig.networking.hostName;
|
||||
hyprLua = import ./hyprland/lua.nix { inherit lib; };
|
||||
inherit (hyprLua) bind bindWithFlags exec onStart;
|
||||
|
||||
direction = {
|
||||
left = "l";
|
||||
right = "r";
|
||||
up = "u";
|
||||
down = "d";
|
||||
};
|
||||
|
||||
workspaceBinds = lib.concatMap (workspace:
|
||||
let
|
||||
key = if workspace == 10 then "0" else toString workspace;
|
||||
workspaceValue = toString workspace;
|
||||
in [
|
||||
(bind "SUPER + ${key}" "hl.dsp.focus({ workspace = ${workspaceValue} })")
|
||||
(bind "SUPER + SHIFT + ${key}" "hl.dsp.window.move({ workspace = ${workspaceValue}, follow = false })")
|
||||
]
|
||||
) (lib.range 1 10);
|
||||
in {
|
||||
imports = [
|
||||
./hyprland/zoom.nix
|
||||
] ++
|
||||
optImport ../../host/${hostname}/modules/hyprland.nix ++
|
||||
optImport ../../user/${username}/modules/hyprland.nix;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
ghostty
|
||||
pamixer
|
||||
clipse
|
||||
wl-clipboard
|
||||
wl-clip-persist
|
||||
xclip
|
||||
awww
|
||||
wifitui
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
configType = "lua";
|
||||
xwayland.enable = true;
|
||||
|
||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||
plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [
|
||||
# hyprbars # Version mismatch
|
||||
];
|
||||
|
||||
settings = {
|
||||
config = {
|
||||
ecosystem = {
|
||||
no_donation_nag = true;
|
||||
no_update_news = true;
|
||||
};
|
||||
|
||||
cursor.no_hardware_cursors = 1;
|
||||
|
||||
debug = {
|
||||
disable_logs = false;
|
||||
enable_stdout_logs = true;
|
||||
};
|
||||
|
||||
general."col.inactive_border" = lib.mkForce "rgba(00000000)";
|
||||
|
||||
decoration = {
|
||||
inactive_opacity = lib.mkDefault 0.95;
|
||||
border_part_of_window = false;
|
||||
};
|
||||
|
||||
misc.focus_on_activate = true;
|
||||
|
||||
input = {
|
||||
kb_layout = "us,ru";
|
||||
kb_options = "grp:caps_toggle";
|
||||
numlock_by_default = true;
|
||||
follow_mouse = 1;
|
||||
touchpad.natural_scroll = false;
|
||||
sensitivity = 0;
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe_invert = true;
|
||||
workspace_swipe_distance = 200;
|
||||
workspace_swipe_forever = true;
|
||||
};
|
||||
};
|
||||
|
||||
env = [
|
||||
{ _args = [ "XDG_SESSION_TYPE" "wayland" ]; }
|
||||
{ _args = [ "QT_QPA_PLATFORM" "wayland" ]; }
|
||||
{ _args = [ "QT_QPA_PLATFORMTHEME" "xdgdesktopportal" ]; }
|
||||
{ _args = [ "GTK_USE_PORTAL" "1" ]; }
|
||||
{ _args = [ "TDESKTOP_USE_GTK_FILE_DIALOG" "1" ]; }
|
||||
{ _args = [ "NIXOS_OZONE_WL" "1" ]; }
|
||||
{ _args = [ "ELECTRON_OZONE_PLATFORM_HINT" "auto" ]; }
|
||||
{ _args = [ "XDG_CURRENT_DESKTOP" "Hyprland" ]; }
|
||||
{ _args = [ "XDG_SESSION_DESKTOP" "Hyprland" ]; }
|
||||
{ _args = [ "XCURSOR_SIZE" (toString config.stylix.cursor.size) ]; }
|
||||
{ _args = [ "XCURSOR_THEME" config.stylix.cursor.name ]; }
|
||||
{ _args = [ "XDG_SCREENSHOTS_DIR" "~/screens" ]; }
|
||||
];
|
||||
|
||||
gesture = [
|
||||
{
|
||||
fingers = 3;
|
||||
direction = "horizontal";
|
||||
action = "workspace";
|
||||
}
|
||||
];
|
||||
|
||||
workspace_rule = [
|
||||
{
|
||||
workspace = "w[t1]";
|
||||
gaps_out = 0;
|
||||
}
|
||||
];
|
||||
|
||||
window_rule = [
|
||||
{ match.class = "imv"; float = true; }
|
||||
{ match.class = "feh"; float = true; }
|
||||
{ match.class = "mpv"; float = true; }
|
||||
{ match.title = "Список друзей"; float = true; }
|
||||
{ match.title = "wifitui"; float = true; }
|
||||
{ match.title = "pulsemixer"; float = true; }
|
||||
{ match.title = "clipse"; float = true; }
|
||||
{ match.title = "clipse"; size = [ 622 652 ]; }
|
||||
{ match.focus = true; rounding = 0; }
|
||||
{
|
||||
match = {
|
||||
float = false;
|
||||
workspace = "w[t1]";
|
||||
};
|
||||
border_size = 0;
|
||||
}
|
||||
];
|
||||
|
||||
on = lib.mkBefore [
|
||||
(onStart [
|
||||
"systemctl --user start plasma-polkit-agent"
|
||||
"${lib.getExe' pkgs.dbus "dbus-update-activation-environment"} --systemd --all"
|
||||
"systemctl --user import-environment XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE WAYLAND_DISPLAY DISPLAY GTK_USE_PORTAL QT_QPA_PLATFORMTHEME TDESKTOP_USE_GTK_FILE_DIALOG NIXOS_OZONE_WL ELECTRON_OZONE_PLATFORM_HINT"
|
||||
"awww-daemon"
|
||||
"wl-clip-persist --clipboard both"
|
||||
"clipse -listen"
|
||||
"${lib.getExe' pkgs.udiskie "udiskie"}"
|
||||
])
|
||||
];
|
||||
|
||||
bind = [
|
||||
(bind "SUPER + V" (exec "ghostty --title=clipse -e clipse"))
|
||||
(bind "SUPER + RETURN" (exec "ghostty"))
|
||||
(bind "SUPER + Q" "hl.dsp.window.close()")
|
||||
(bind "SUPER + M" "hl.dsp.exit()")
|
||||
(bind "SUPER + E" (exec "ghostty -e sh -c yazi"))
|
||||
(bind "SUPER + F" "hl.dsp.window.float({ action = \"toggle\" })")
|
||||
(bind "SUPER + P" "hl.dsp.window.pseudo({ action = \"toggle\" })")
|
||||
(bind "SUPER + J" "hl.dsp.layout(\"togglesplit\")")
|
||||
(bind "SUPER + K" "hl.dsp.layout(\"swapsplit\")")
|
||||
|
||||
(bind "SUPER + LEFT" "hl.dsp.focus({ direction = \"${direction.left}\" })")
|
||||
(bind "SUPER + RIGHT" "hl.dsp.focus({ direction = \"${direction.right}\" })")
|
||||
(bind "SUPER + UP" "hl.dsp.focus({ direction = \"${direction.up}\" })")
|
||||
(bind "SUPER + DOWN" "hl.dsp.focus({ direction = \"${direction.down}\" })")
|
||||
|
||||
(bind "SUPER + SHIFT + LEFT" "hl.dsp.window.swap({ direction = \"${direction.left}\" })")
|
||||
(bind "SUPER + SHIFT + RIGHT" "hl.dsp.window.swap({ direction = \"${direction.right}\" })")
|
||||
(bind "SUPER + SHIFT + UP" "hl.dsp.window.swap({ direction = \"${direction.up}\" })")
|
||||
(bind "SUPER + SHIFT + DOWN" "hl.dsp.window.swap({ direction = \"${direction.down}\" })")
|
||||
|
||||
(bind "SUPER + CTRL + LEFT" "hl.dsp.window.resize({ x = -60, y = 0, relative = true })")
|
||||
(bind "SUPER + CTRL + RIGHT" "hl.dsp.window.resize({ x = 60, y = 0, relative = true })")
|
||||
(bind "SUPER + CTRL + UP" "hl.dsp.window.resize({ x = 0, y = -60, relative = true })")
|
||||
(bind "SUPER + CTRL + DOWN" "hl.dsp.window.resize({ x = 0, y = 60, relative = true })")
|
||||
] ++ workspaceBinds ++ [
|
||||
(bind "SUPER + SHIFT + F" "hl.dsp.window.fullscreen({ action = \"toggle\", mode = \"fullscreen\" })")
|
||||
(bind "SUPER + mouse_down" "hl.dsp.focus({ workspace = \"e-1\" })")
|
||||
(bind "SUPER + mouse_up" "hl.dsp.focus({ workspace = \"e+1\" })")
|
||||
|
||||
(bind "SUPER + F3" (exec "${lib.getExe pkgs.brightnessctl} -d *::kbd_backlight set +33%"))
|
||||
(bind "SUPER + F2" (exec "${lib.getExe pkgs.brightnessctl} -d *::kbd_backlight set 33%-"))
|
||||
|
||||
(bind "XF86AudioMute" (exec "pamixer -t"))
|
||||
(bind "XF86AudioMicMute" (exec "pamixer --default-source -m"))
|
||||
(bind "XF86AudioPlay" (exec "${lib.getExe pkgs.playerctl} play-pause"))
|
||||
(bind "XF86Explorer" (exec "ghostty -e sh -c yazi"))
|
||||
(bind "XF86Mail" (exec "thunderbird"))
|
||||
(bind "XF86WWW" (exec "google-chrome-stable"))
|
||||
|
||||
(bind "XF86MonBrightnessDown" (exec "${lib.getExe pkgs.brightnessctl} set 5%-"))
|
||||
(bind "XF86MonBrightnessUp" (exec "${lib.getExe pkgs.brightnessctl} set +5%"))
|
||||
|
||||
(bindWithFlags "XF86AudioRaiseVolume" (exec "pamixer -i 5") { repeating = true; })
|
||||
(bindWithFlags "XF86AudioLowerVolume" (exec "pamixer -d 5") { repeating = true; })
|
||||
|
||||
(bindWithFlags "XF86AudioPrev" (exec "${lib.getExe pkgs.playerctl} position 5-") { click = true; })
|
||||
(bindWithFlags "XF86AudioNext" (exec "${lib.getExe pkgs.playerctl} position 5+") { click = true; })
|
||||
(bindWithFlags "XF86AudioPrev" (exec "${lib.getExe pkgs.playerctl} previous") { long_press = true; })
|
||||
(bindWithFlags "XF86AudioNext" (exec "${lib.getExe pkgs.playerctl} next") { long_press = true; })
|
||||
|
||||
(bindWithFlags "SUPER + mouse:272" "hl.dsp.window.drag()" { mouse = true; })
|
||||
(bindWithFlags "SUPER + mouse:273" "hl.dsp.window.resize()" { mouse = true; })
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
pkgs.xdg-desktop-portal-termfilechooser
|
||||
];
|
||||
|
||||
config = {
|
||||
common = {
|
||||
default = [ "hyprland" "gtk" ];
|
||||
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
|
||||
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
|
||||
};
|
||||
|
||||
hyprland = {
|
||||
default = [ "hyprland" "gtk" ];
|
||||
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
|
||||
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{ lib }:
|
||||
let
|
||||
inline = lib.generators.mkLuaInline;
|
||||
quote = builtins.toJSON;
|
||||
in rec {
|
||||
inherit inline;
|
||||
|
||||
exec = command: "hl.dsp.exec_cmd(${quote command})";
|
||||
|
||||
bind = keys: dispatcher: {
|
||||
_args = [
|
||||
keys
|
||||
(inline dispatcher)
|
||||
];
|
||||
};
|
||||
|
||||
bindWithFlags = keys: dispatcher: flags: {
|
||||
_args = [
|
||||
keys
|
||||
(inline dispatcher)
|
||||
flags
|
||||
];
|
||||
};
|
||||
|
||||
onStart = commands: {
|
||||
_args = [
|
||||
"hyprland.start"
|
||||
(inline (
|
||||
"function()\n"
|
||||
+ lib.concatMapStringsSep "\n" (command: " hl.exec_cmd(${quote command})") commands
|
||||
+ "\nend"
|
||||
))
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{ lib, ... }:
|
||||
let
|
||||
hyprLua = import ./lua.nix { inherit lib; };
|
||||
inherit (hyprLua) bind bindWithFlags;
|
||||
|
||||
resetZoom = ''function()
|
||||
hl.config({ cursor = { zoom_factor = 1 } })
|
||||
end'';
|
||||
|
||||
zoomIn = ''function()
|
||||
local current = hl.get_config("cursor.zoom_factor")
|
||||
hl.config({ cursor = { zoom_factor = current * 1.1 } })
|
||||
end'';
|
||||
|
||||
zoomOut = ''function()
|
||||
local current = hl.get_config("cursor.zoom_factor")
|
||||
hl.config({ cursor = { zoom_factor = math.max(1, current * 0.9) } })
|
||||
end'';
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings.bind = [
|
||||
(bind "SUPER + SHIFT + mouse_up" resetZoom)
|
||||
(bind "SUPER + SHIFT + mouse_down" resetZoom)
|
||||
(bind "SUPER + SHIFT + minus" resetZoom)
|
||||
(bind "SUPER + SHIFT + KP_SUBTRACT" resetZoom)
|
||||
(bind "SUPER + SHIFT + 0" resetZoom)
|
||||
|
||||
(bindWithFlags "SUPER + equal" zoomIn { repeating = true; })
|
||||
(bindWithFlags "SUPER + minus" zoomOut { repeating = true; })
|
||||
(bindWithFlags "SUPER + KP_ADD" zoomIn { repeating = true; })
|
||||
(bindWithFlags "SUPER + KP_SUBTRACT" zoomOut { repeating = true; })
|
||||
];
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{ config, lib, ... }: let
|
||||
colors = config.lib.stylix.colors.withHashtag;
|
||||
accent = colors.${config.stylix.accent};
|
||||
in {
|
||||
services.mako = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
border-color = lib.mkForce accent;
|
||||
default-timeout = 5000;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
{ pkgs-pinned, lib, osConfig, ... }:
|
||||
|
||||
lib.mkIf (!osConfig.host.laptop) {
|
||||
home.packages = with pkgs-pinned; [
|
||||
(blender.override { cudaSupport = true; })
|
||||
aseprite
|
||||
krita
|
||||
gimp
|
||||
];
|
||||
}
|
||||
Loaded 100 of 165 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user