This commit is contained in:
lsoriano-mcm
2025-07-03 15:30:58 -05:00
parent d8657c7eeb
commit 3dd4f2783e
68 changed files with 77 additions and 3628 deletions
-58
View File
@@ -1,58 +0,0 @@
# Sakamoto NixOS
Sakamoto NixOS is built with various profiles intended for reproducibility.
## Available Hosts
- MacBook M series
- Linux
## Installation
1. Install [Nix](https://nixos.org/download/).
2. Ensure Nix is installed properly by running the following (this also gives you `nano` for editing later):
```sh
nix-shell -p nano
```
3. Clone the git repository:
```sh
git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos && cd ~/.config/nixos/
```
4. Copy `info.default.nix` and rename it to `info.local.nix`:
```sh
cp ~/.config/nixos/info.default.nix ~/.config/nixos/info.local.nix
```
🚨 **CRITICAL STEP:** Edit `info.local.nix`:
```sh
nano ~/.config/nixos/info.local.nix
```
Modify it to fit your system — especially your **username**.
If you accidentally leave the default `biscuit`, that user will be created.
**Login password for `biscuit` is `<PLACEHOLDER>`.**
5. Execute the following command based on your host:
- **MacBook M series:**
```sh
sudo nix run nix-darwin --extra-experimental-features "nix-command flakes" -- switch --flake ~/.config/nixos#macos
```
- **Linux:**
```sh
sudo nixos-rebuild --flake ~/.config/nixos#desktop --impure
sudo nix run home-manager -- init --switch
home-manager switch --flake ~/.config/nixos#desktop --impure
nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update
reboot
```
Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 MiB

+58 -76
View File
@@ -1,81 +1,63 @@
{
hostname = "hakase";
username = "kenji";
timezone = "America/Chicago";
myConfig = {
general = {
Hostname = "nixos";
Timezone = "America/Chicago";
Username = "kenji";
vpn = {
vpnEnable = false;
vpnSecretFile = "/home/kenji/Wireguard/secret";
};
gitProfile = {
user = "biscuit";
email = "biscuit@sakamoto.dev";
defaultBranch = "master";
};
terminal = {
termFont = "JetBrainsMono Nerd Font"; # e.g., JetBrainsMono Nerd Font
termSize = "18";
termShell = "fish";
shellAliases = {
ls = "ls --color=auto";
update = ''
sh -c '
if [ "$(uname)" = "Darwin" ]; then
sudo darwin-rebuild switch --flake ~/.config/nixos#macos
else
sudo nixos-rebuild switch --flake ~/.config/nixos#desktop --impure && home-manager switch --flake ~/.config/nixos#desktop --impure
fi
'
'';
agu = "pkill gjs & ags run ~/.config/nixos/pkgs/ags/biscuit/app.ts & disown (jobs -p) &";
Terminal = {
font = "JetBrainsMono Nerd Font";
size = "12";
shell = "fish"; # or zsh
aliases = {
ls = "ls --color=auto";
};
};
Git = {
user = "";
email = "";
defaultBranch = "master";
};
};
linux = {
Boot = {
mode = "grub"; # systemd or grub
};
Gaming = {
enable = true;
};
Apps = {
packages = pkgs:
with pkgs; [
jellyfin-media-player
];
};
Hyprland = {
monitors = [];
};
};
optionals = {
Builds = {
trustedUsers = [
"@groups"
];
buildMachines = [
{
hostName = "";
sshUser = "";
sshKey = "";
system = "";
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
}
];
};
Ssh = {
extraConfig = ''
Host macair
User biscuit
HostName 192.168.68.81
'';
};
};
};
allowUnfree = true; # allows installation of commercial apps.
touchpadSupport = false;
logitech-hardware = {
enable = true;
};
# Custom Applications
linux-apps = {
gamingDesktop = true; # adds steam
my-apps = pkgs:
with pkgs; [
jellyfin-media-player
];
};
hyprconf = {
monitor = [
"DP-1,highres@165,0x1080,auto"
"HDMI-A-4,highres@highrr,0x0,auto"
];
};
sshExtraConfig = ''
Host macair
User biscuit
HostName 192.168.68.81
'';
# BUILD (optional), you can remove these blocks.
builder = {
trustedUsers = [
"@groups"
"biscuit"
];
buildMachines = [
{
hostName = "192.168.68.81";
sshUser = "biscuit";
sshKey = "/home/biscuit/.ssh/id_rsa.pub";
system = "x86_64-linux";
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
}
];
};
}
Generated
-1002
View File
File diff suppressed because it is too large Load Diff
+19 -85
View File
@@ -1,97 +1,31 @@
{
description = "A very basic flake";
description = "A rewrite of the original Sakamoto NixOS config.";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; # `follows` ensure it follows nixpkgs versiona. Avoids breaking updates.
darwin.url = "github:lnl7/nix-darwin";
darwin.inputs.nixpkgs.follows = "nixpkgs";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
ags.url = "github:aylur/ags";
ags.inputs.nixpkgs.follows = "nixpkgs";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland.url = "github:hyprwm/Hyprland";
hyprland.inputs.nixpkgs.follows = "nixpkgs";
unlisted-fonts.url = "git+https://git.sakamoto.dev/kenji/nix-fonts.git";
unlisted-fonts.inputs.nixpkgs.follows = "nixpkgs";
nixvim.url = "github:nix-community/nixvim";
nixvim.inputs.nixpkgs.follows = "nixpkgs";
nix-neovim.url = "git+https://git.sakamoto.dev/kenji/nix-neovim.git";
nix-neovim.inputs.nixpkgs.follows = "nixpkgs";
# kitty-catppuccin.url = "git+https://git.sakamoto.dev/kenji/nix-kitty-catppuccin.git";
# kitty-catppuccin.inputs.nixpkgs.follows = "nixpkgs";
matugen.url = "github:/InioX/Matugen";
matugen.inputs.nixpkgs.follows = "nixpkgs";
flake-utils = {
url = "github:numtide/flake-utils";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
home-manager,
darwin,
ags,
hyprland,
unlisted-fonts,
nix-neovim,
flake-utils,
...
} @ inputs: let
config = import ./config.nix;
lib = nixpkgs.lib;
system = "x86_64-linux";
# pkgs = nixpkgs.legacyPackages.${system}; # alternative, without overlays. Unused.
args =
{
inherit inputs system;
} @ inputs:
flake-utils.lib.eachDefaultSystem (
system: let
config = import ./config.nix;
pkgs = nixpkgs.legacyPackages.${system};
args = {inherit inputs system;} // config;
in {
}
// config;
in {
# linux only
nixosConfigurations = {
desktop = lib.nixosSystem {
inherit system;
specialArgs = args;
modules = [
./nixos/desktop/configuration.nix
];
};
};
homeConfigurations = {
desktop = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
overlays = [
# (final: prev: {
# ags_1 = prev.ags_1.overrideAttrs (old: {
# buildInputs = old.buildInputs ++ [pkgs.libdbusmenu-gtk3];
# });
# })
];
};
extraSpecialArgs = args;
modules = [./home/desktop/home.nix];
};
};
# exclusive to macos M series
darwinConfigurations = {
macos = darwin.lib.darwinSystem {
system = "aarch64-darwin";
specialArgs = args;
modules = [
./nixos/macos/darwin.nix
home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = args;
}
];
};
};
};
);
}
-20
View File
@@ -1,20 +0,0 @@
{username, ...}: {
imports = [
../../modules/editor.nix
../../modules/desktop/display-manager.nix
../../modules/desktop/misc.nix
../../modules/desktop/app.nix
];
programs.home-manager.enable = true;
home = {
username = "${username}";
homeDirectory = "/home/${username}";
packages = [];
sessionVariables = {};
};
systemd.user.startServices = "sd-switch";
home.stateVersion = "23.05";
}
-15
View File
@@ -1,15 +0,0 @@
{
config,
pkgs,
inputs,
...
}: {
imports = [
../../modules/editor.nix
];
programs.home-manager.enable = true;
home.packages = [];
home.stateVersion = "23.05";
}
-13
View File
@@ -1,13 +0,0 @@
{
linux-apps,
lib,
...
}: {
imports =
[
]
++ lib.optionals (linux-apps.gamingDesktop == true) [
../pkgs/steam/default.nix
../pkgs/heroic/default.nix
];
}
-5
View File
@@ -1,5 +0,0 @@
{pkgs, ...}: let
info = import ../../config.nix;
in {
home.packages = info.linux-apps.my-apps pkgs;
}
-11
View File
@@ -1,11 +0,0 @@
{...}: {
imports = [
../../pkgs/hyprland/default.nix
../../pkgs/ags/default.nix
../../pkgs/swww/default.nix
../../pkgs/waybar/default.nix
../../pkgs/rofi/default.nix
../../pkgs/hypridle/default.nix
../../pkgs/hyprlock/default.nix
];
}
-6
View File
@@ -1,6 +0,0 @@
{...}: {
imports = [
../../pkgs/btop/default.nix
../../pkgs/matugen/default.nix
];
}
-11
View File
@@ -1,11 +0,0 @@
{...}: {
imports = [
../system/desktop/wayland.nix
../system/desktop/sound.nix
../system/desktop/misc.nix
../system/desktop/browser.nix
../system/desktop/font.nix
../system/desktop/theme.nix
../system/desktop/cursor.nix
];
}
-11
View File
@@ -1,11 +0,0 @@
{...}: {
imports = [
../pkgs/fastfetch/default.nix
../pkgs/git/default.nix
../pkgs/kitty/default.nix
../pkgs/neovim/default.nix
../pkgs/fish/default.nix
../pkgs/starship/default.nix
../pkgs/zsh/default.nix
];
}
-14
View File
@@ -1,14 +0,0 @@
{
vpn,
lib,
...
}: {
imports =
[
../system/default.nix
../system/users.nix
]
++ lib.optionals (vpn.vpnEnable == true) [
../system/vpn.nix
];
}
-35
View File
@@ -1,35 +0,0 @@
{
pkgs,
allowUnfree,
builder,
sshExtraConfig,
...
}: {
imports = [
# Include the results of the hardware scan.
/etc/nixos/hardware-configuration.nix
../../modules/system.nix
../../modules/display-manager.nix
../../modules/app.nix
];
environment.systemPackages = with pkgs; [
vim
wget
];
nixpkgs.config.allowUnfree = allowUnfree;
nix.settings = {
trusted-users = builder.trustedUsers;
experimental-features = ["nix-command" "flakes"];
};
programs.ssh.extraConfig = sshExtraConfig;
nix.distributedBuilds = true;
nix.settings.builders-use-substitutes = true;
# nix.buildMachines = builder.buildMachines;
system.stateVersion = "25.05";
}
-48
View File
@@ -1,48 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/3f2c4a5a-3124-462a-9fb9-cccc933bac63";
fsType = "btrfs";
options = [ "subvol=@" ];
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/18F8-7DC1";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/mnt/CRUCIAL" =
{ device = "/dev/disk/by-uuid/394f67b9-e75b-40cc-9b15-28bbda40fff4";
fsType = "ext4";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/bbe1e281-4b1d-4d85-ba6a-6f5265f0e3a3"; }
];
# 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.biscuit-default.useDHCP = lib.mkDefault true;
# networking.interfaces.enp11s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp10s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
-40
View File
@@ -1,40 +0,0 @@
{
pkgs,
builder,
terminal,
username,
...
}: {
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages = with pkgs; [
python313
];
# Auto upgrade nix package and the daemon service.
# services.nix-daemon.enable = true;
# services.karabiner-elements.enable = true;
# nix.package = pkgs.nix;
# Necessary for using flakes on this system.
nix.settings.experimental-features = "nix-command flakes";
nix.settings.trusted-users = builder.trustedUsers;
# Create /etc/zshrc that loads the nix-darwin environment.
programs.zsh.enable = true; # default shell on catalina
programs.fish.enable = true;
# $ darwin-rebuild changelog
system.stateVersion = 5;
# The platform the configuration will be used on.
nixpkgs.hostPlatform = "aarch64-darwin";
users.users.${username} = {
name = "${username}";
home = "/Users/${username}";
shell = pkgs.${terminal.termShell};
};
home-manager.users.${username} = import ../../home/macos/home.nix;
}
-2
View File
@@ -1,2 +0,0 @@
node_modules/
@girs/
-17
View File
@@ -1,17 +0,0 @@
import { App } from "astal/gtk3"
import style from "./style.scss"
import Bar from "./widget/Bar"
App.start({
css: style,
instanceName: "js",
requestHandler(request, res) {
print(request)
res("ok")
},
main: () => {
const monitors = App.get_monitors()
const primary = monitors.find(m => m.primary) || monitors[0]
return Bar(primary)
}
})
-3
View File
@@ -1,3 +0,0 @@
$background: #131318;
$foreground: #e4e1e9;
$primary: #bec2ff;
-21
View File
@@ -1,21 +0,0 @@
declare const SRC: string
declare module "inline:*" {
const content: string
export default content
}
declare module "*.scss" {
const content: string
export default content
}
declare module "*.blp" {
const content: string
export default content
}
declare module "*.css" {
const content: string
export default content
}
-6
View File
@@ -1,6 +0,0 @@
{
"name": "astal-shell",
"dependencies": {
"astal": "/home/biscuit/.local/share/ags"
}
}
-143
View File
@@ -1,143 +0,0 @@
@use "sass:color";
@use "./colors" as *;
// default
// $bg: #212223;
// $fg: #f1f1f1;
// $accent: #378DF7;
// $radius: 7px;
// Kanagawa Theme
// $bg: #1F1F28;
// $fg: #DCD7BA;
// $accent: #C0A36E;
// $radius: 7px;
// mstcl
// $bg: #121212;
// $fg: #f1f1f1;
// $accent: #C0A36E;
// $radius: 7px;
$bg: $background;
$fg: $foreground;
$accent: $primary;
$radius: 7px;
window.Bar {
border: none;
box-shadow: none;
background-color: $bg;
color: $fg;
font-size: 1.1em;
font-weight: bold;
font-family: "JetBrainsMono Nerd Font";
label {
margin: 0 8px;
}
.Workspaces {
button {
all: unset;
background-color: transparent;
&:hover label {
background-color: color.adjust($fg, $alpha: -0.84);
border-color: color.adjust($accent, $alpha: -0.8);
}
&:active label {
background-color: color.adjust($fg, $alpha: -0.8)
}
}
label {
transition: 200ms;
padding: 0 8px;
margin: 2px;
border-radius: $radius;
border: 1pt solid transparent;
}
.focused label {
color: $accent;
border-color: $accent;
}
}
.SysTray {
margin-right: 8px;
button {
padding: 0 4px;
}
}
.Time {
.TimeHM {
font-weight: bold;
color: $accent;
}
.TimeDate {
// color: color.adjust($fg, $lightness: -10%);
color: $fg;
opacity: 0.85;
font-weight: normal;
}
}
.FocusedClient {
color: color.adjust($fg, $lightness: -30%);
opacity: 0.7;
}
.Media .Cover {
min-height: 1.2em;
min-width: 1.2em;
border-radius: $radius;
background-position: center;
background-size: contain;
}
.Battery label {
padding-left: 0;
margin-left: 0;
}
.AudioSlider {
* {
all: unset;
}
icon {
margin-right: .6em;
}
& {
margin: 0 1em;
}
trough {
background-color: color.adjust($fg, $alpha: -0.8);
border-radius: $radius;
}
highlight {
background-color: $accent;
min-height: .8em;
border-radius: $radius;
}
slider {
background-color: $fg;
border-radius: $radius;
min-height: 1em;
min-width: 1em;
margin: -.2em;
}
}
}
-14
View File
@@ -1,14 +0,0 @@
{
"$schema": "https://json.schemastore.org/tsconfig",
"compilerOptions": {
"experimentalDecorators": true,
"strict": true,
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "Bundler",
// "checkJs": true,
// "allowJs": true,
"jsx": "react-jsx",
"jsxImportSource": "astal/gtk3",
}
}
-189
View File
@@ -1,189 +0,0 @@
import { App } from "astal/gtk3"
import { Variable, GLib, bind } from "astal"
import { Astal, Gtk, Gdk } from "astal/gtk3"
import Hyprland from "gi://AstalHyprland"
import Mpris from "gi://AstalMpris"
import Battery from "gi://AstalBattery"
import Wp from "gi://AstalWp"
import Network from "gi://AstalNetwork"
import Tray from "gi://AstalTray"
function SysTray() {
const tray = Tray.get_default()
return <box className="SysTray">
{bind(tray, "items").as(items => items.map(item => (
<menubutton
tooltipMarkup={bind(item, "tooltipMarkup")}
usePopover={false}
actionGroup={bind(item, "actionGroup").as(ag => ["dbusmenu", ag])}
menuModel={bind(item, "menuModel")}>
<icon gicon={bind(item, "gicon")} />
</menubutton>
)))}
</box>
}
function Wifi() {
const network = Network.get_default()
const wifi = bind(network, "wifi")
return <box visible={wifi.as(Boolean)}>
{wifi.as(wifi => wifi && (
<icon
tooltipText={bind(wifi, "ssid").as(String)}
className="Wifi"
icon={bind(wifi, "iconName")}
/>
))}
</box>
}
function AudioSlider() {
const speaker = Wp.get_default()?.audio.defaultSpeaker!
return <box className="AudioSlider" css="min-width: 140px">
<icon icon={bind(speaker, "volumeIcon")} />
<slider
hexpand
onDragged={({ value }) => speaker.volume = value}
value={bind(speaker, "volume")}
/>
</box>
}
function BatteryLevel() {
const bat = Battery.get_default()
return <box className="Battery"
visible={bind(bat, "isPresent")}>
<icon icon={bind(bat, "batteryIconName")} />
<label label={bind(bat, "percentage").as(p =>
`${Math.floor(p * 100)} %`
)} />
</box>
}
function Media() {
const mpris = Mpris.get_default()
return <box className="Media">
{bind(mpris, "players").as(ps => ps[0] ? (
<box>
<box
className="Cover"
valign={Gtk.Align.CENTER}
css={bind(ps[0], "coverArt").as(cover =>
`background-image: url('${cover}');`
)}
/>
<label
label={bind(ps[0], "metadata").as(() =>
`${ps[0].title} - ${ps[0].artist}`
)}
/>
</box>
) : (
<label label="Biscuit" />
))}
</box>
}
function Workspaces() {
const hypr = Hyprland.get_default();
return (
<box className="Workspaces">
{bind(hypr, "focusedWorkspace").as((fw) => {
if (!fw) return null;
// Determine the current chunk of 5 visible workspace buttons
const currentChunkStart = Math.floor((fw.id - 1) / 5) * 5 + 1;
const visibleIds = Array.from({ length: 5 }, (_, i) => currentChunkStart + i);
return visibleIds.map((id) => {
// Try to get the real workspace, fall back to a dummy one if it doesn't exist
const ws =
hypr.workspaces.find((w) => w.id === id) ??
Hyprland.Workspace.dummy(id, null);
return (
<button
className={fw.id === id ? "focused" : ""}
onClick={() => ws.focus()}
>
{id}
</button>
);
});
})}
</box>
);
}
function FocusedClient() {
const hypr = Hyprland.get_default();
const focused = bind(hypr, "focusedClient");
return (
<box className="FocusedClient" visible={focused.as(Boolean)}>
{focused.as(client => {
if (!client) return null;
return (
<label
label={bind(client, "title").as(title => {
return title.length > 40
? title.slice(0, 37) + "..."
: title;
})}
/>
);
})}
</box>
);
}
function Time({ format = "%H:%M|%a %b %d" }) {
const time = Variable<string>("").poll(1000, () =>
GLib.DateTime.new_now_local().format(format)!
);
return bind(time).as(str => {
const [hm, date] = str.split("|");
return (
<box className="Time">
<label className="TimeHM" label={hm} />
<label className="TimeDate" label={date} />
</box>
);
});
}
export default function Bar(monitor: Gdk.Monitor) {
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
return <window
className="Bar"
gdkmonitor={monitor}
exclusivity={Astal.Exclusivity.EXCLUSIVE}
anchor={TOP | LEFT | RIGHT}>
<centerbox>
<box hexpand halign={Gtk.Align.START}>
<Workspaces />
<FocusedClient />
</box>
<box>
<Time />
</box>
<box hexpand halign={Gtk.Align.END} >
<SysTray />
<Wifi />
<AudioSlider />
<BatteryLevel />
</box>
</centerbox>
</window>
}
-28
View File
@@ -1,28 +0,0 @@
{
inputs,
pkgs,
system,
...
}: {
imports = [inputs.ags.homeManagerModules.default];
programs.ags = {
enable = true;
configDir = ./biscuit;
extraPackages = let
agsPkgs = inputs.ags.packages.${system};
in
with pkgs; [
agsPkgs.battery
agsPkgs.hyprland
agsPkgs.mpris
agsPkgs.wireplumber
agsPkgs.notifd
agsPkgs.apps
agsPkgs.network
agsPkgs.tray
fzf
];
};
}
-8
View File
@@ -1,8 +0,0 @@
{...}: {
programs.btop = {
enable = true;
settings = {
vim_keys = true;
};
};
}
-131
View File
@@ -1,131 +0,0 @@
{
programs.fastfetch = {
enable = true;
settings = {
logo = {
padding = {
top = 2;
left = 1;
right = 2;
};
};
display = {
separator = " ";
};
modules = [
# Title
{
type = "title";
format = "{#1} {#}{user-name-colored}";
}
# System Information Header
{
type = "custom";
format = "{#1} {#}System Information";
}
{
type = "os";
key = " {#keys}󰍹 OS";
}
{
type = "kernel";
key = " {#keys}󰒋 Kernel";
}
{
type = "uptime";
key = " {#keys}󰅐 Uptime";
}
{
type = "packages";
key = " {#keys}󰏖 Packages";
format = "{all}";
}
{
type = "custom";
format = "{#1}";
}
# Desktop Environment
{
type = "custom";
format = "{#1} {#}Desktop Environment";
}
{
type = "de";
key = " {#keys}󰧨 DE";
}
{
type = "wm";
key = " {#keys}󱂬 WM";
}
{
type = "wmtheme";
key = " {#keys}󰉼 Theme";
}
{
type = "display";
key = " {#keys}󰹑 Resolution";
}
{
type = "shell";
key = " {#keys}󰞷 Shell";
}
{
type = "terminalfont";
key = " {#keys}󰛖 Font";
}
{
type = "custom";
format = "{#1}";
}
# Hardware Information
{
type = "custom";
format = "{#1} {#}Hardware Information";
}
{
type = "cpu";
key = " {#keys}󰻠 CPU";
}
{
type = "gpu";
key = " {#keys}󰢮 GPU";
}
{
type = "memory";
key = " {#keys}󰍛 Memory";
}
{
type = "disk";
key = " {#keys}󰋊 Disk (/)";
folders = "/";
}
{
type = "custom";
format = "{#1}";
}
# Colors
{
type = "colors";
key = "";
symbol = "circle";
}
# Footer
{
type = "custom";
format = "{#1}";
}
];
};
};
}
-20
View File
@@ -1,20 +0,0 @@
{
pkgs,
terminal,
...
}: {
programs.zoxide.enable = true;
programs.fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting
fish_vi_key_bindings
zoxide init fish | source
'';
shellAliases = terminal.shellAliases;
plugins = with pkgs.fishPlugins; [
];
};
}
-10
View File
@@ -1,10 +0,0 @@
{gitProfile, ...}: {
programs.git = {
enable = true;
extraConfig = {
user.name = "${gitProfile.user}";
user.email = "${gitProfile.email}";
init.defaultBranch = "${gitProfile.defaultBranch}";
};
};
}
-5
View File
@@ -1,5 +0,0 @@
{pkgs, ...}: {
home.packages = [
pkgs.heroic
];
}
-38
View File
@@ -1,38 +0,0 @@
{...}: {
services.hypridle = {
enable = true;
settings = {
general = {
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
after_sleep_cmd = "hyprctl dispatch dpms on && agu"; # avoid needing to press a key twice to turn on the display.
};
listener = [
# {
# timeout = 150;
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
# on-resume = "brightnessctl -r"; # restore monitor backlight.
# }
# {
# timeout = 150;
# on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0"; # turn off keyboard backlight.
# on-resume = "brightnessctl -rd rgb:kbd_backlight"; # turn on keyboard backlight.
# }
# {
# timeout = 300;
# on-timeout = "loginctl lock-session"; # lock screen when timeout has passed.
# }
# {
# timeout = 330;
# on-timeout = "hyprctl dispatch dpms off"; # screen off after 5.5min.
# on-resume = "hyprctl dispatch dpms on && brightnessctl -r"; # screen on and restore brightness on resume.
# }
{
timeout = 300;
on-timeout = "systemctl suspend"; # suspend PC after 30min.
}
];
};
};
}
-225
View File
@@ -1,225 +0,0 @@
{
hyprconf,
username,
terminal,
...
}: {
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
settings = {
"$mod" = "SUPER";
"$term" = "kitty --single-instance";
"$browser" = "firefox";
monitor = hyprconf.monitor;
exec-once = [
"[workspace 20 silent] kitty --single-insance --hold fastfetch"
"[workspace 20 silent] firefox"
"[workspace 1] kitty --single-instance --hold fastfetch"
"pkill gjs & ags run"
# "matugen image /home/${username}/.config/nixos/assets/wallpapers/ultrawide-nixos-default.png"
"hyprctl setcursor Bibata-Original-Classic 24"
];
general = {
gaps_in = 2;
gaps_out = 5;
border_size = 2;
# col.active_border = "#0DB7D4FF";
# col.inactive_border = "#31313600";
# col = {
# "inactive_border" = "rgba(595959aa)";
# "active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
# };
resize_on_border = false;
allow_tearing = false;
layout = "dwindle";
};
decoration = {
rounding = 0;
rounding_power = 2;
active_opacity = 1.0;
inactive_opacity = 1.0;
dim_inactive = true;
dim_strength = 0.1;
dim_special = 0.8;
shadow = {
enabled = true;
range = 4;
render_power = 3;
color = "rgba(1a1a1aee)";
};
blur = {
enabled = true;
size = 3;
passes = 1;
vibrancy = 0.1696;
};
};
animations = {
enabled = true;
bezier = [
"linear, 0, 0, 1, 1"
"md3_standard, 0.2, 0, 0, 1"
"md3_decel, 0.05, 0.7, 0.1, 1"
"md3_accel, 0.3, 0, 0.8, 0.15"
"overshot, 0.05, 0.9, 0.1, 1.1"
"crazyshot, 0.1, 1.5, 0.76, 0.92"
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
"menu_decel, 0.1, 1, 0, 1"
"menu_accel, 0.38, 0.04, 1, 0.07"
"easeInOutCirc, 0.85, 0, 0.15, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutExpo, 0.16, 1, 0.3, 1"
"softAcDecel, 0.26, 0.26, 0.15, 1"
"md2, 0.4, 0, 0.2, 1"
];
animation = [
"windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 3, md3_accel, popin 60%"
"border, 1, 10, default"
"fade, 1, 3, md3_decel"
"layersIn, 1, 3, menu_decel, slide"
"layersOut, 1, 1.6, menu_accel"
"fadeLayersIn, 1, 2, menu_decel"
"fadeLayersOut, 1, 0.5, menu_accel"
"workspaces, 1, 7, menu_decel, slide"
"specialWorkspace, 1, 3, md3_decel, slidevert"
];
};
dwindle = {
pseudotile = true;
preserve_split = true;
};
master = {
new_status = "master";
};
misc = {
force_default_wallpaper = -1;
disable_hyprland_logo = true;
};
input = {
kb_layout = "us";
follow_mouse = 1;
sensitivity = -0.5;
force_no_accel = true;
repeat_delay = 250;
repeat_rate = 35;
touchpad = {
natural_scroll = false;
};
numlock_by_default = true;
};
gestures = {
workspace_swipe = false;
};
binds = {
workspace_back_and_forth = true;
scroll_event_delay = 0;
};
device = [
{
name = "epic-mouse-v1";
sensitivity = -0.5;
}
];
bind =
[
"$mod, Return, exec, $term"
"$mod, Q, killactive,"
"$mod, M, exit,"
"$mod, E, exec, $fileManager"
"$mod, V, togglefloating,"
"$mod, R, exec, $menu"
"$mod, P, pseudo,"
"$mod, B, togglesplit,"
"$mod, W, exec, $browser"
"$mod, H, movefocus, l"
"$mod, L, movefocus, r"
"$mod, K, movefocus, u"
"$mod, J, movefocus, d"
"$mod SHIFT, K, movewindow, u"
"$mod SHIFT, J, movewindow, d"
"$mod SHIFT, H, movewindow, l"
"$mod SHIFT, L, movewindow, r"
"$mod CTRL, K, resizeactive, 0 -50"
"$mod CTRL, J, resizeactive, 0 50"
"$mod CTRL, H, resizeactive, -50 0"
"$mod CTRL, L, resizeactive, 50 0"
"$mod, S, togglespecialworkspace, magic"
"$mod SHIFT, S, movetoworkspace, special:magic"
"$mod, mouse_down, workspace, e+1"
"$mod, mouse_up, workspace, e-1"
"$mod, F, fullscreen, 0"
"$mod, Space, exec, pkill rofi || rofi -show drun"
"$mod, C, exec, pkill rofi || rofi -show calc -modi calc -no-show-match -no-sort"
]
++ (
# workspaces
builtins.concatLists (builtins.genList (
i: let
ws = i + 1;
in [
"$mod, ${toString ws}, workspace, ${toString ws}"
"$mod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}"
]
)
9)
)
++ [
"$mod, 0, workspace, 10"
"$mod, 0, movetoworkspace, 10"
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
bindel = [
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
",XF86MonBrightnessUp, exec, brightnessctl s 10%+"
",XF86MonBrightnessDown, exec, brightnessctl s 10%-"
];
bindl = [
",XF86AudioNext, exec, playerctl next"
",XF86AudioPause, exec, playerctl play-pause"
",XF86AudioPlay, exec, playerctl play-pause"
",XF86AudioPrev, exec, playerctl previous"
];
env = [
"HYPRCURSOR_THEME, Bibata-Original-Classic"
"HYPRCURSOR_SIZE, 24"
];
};
};
}
-7
View File
@@ -1,7 +0,0 @@
{...}: {
programs.hyprlock = {
enable = true;
settings = {
};
};
}
-24
View File
@@ -1,24 +0,0 @@
{terminal, ...}: {
programs.kitty = {
enable = true;
themeFile = "kanagawa";
settings = {
confirm_os_window_close = 0;
window_padding_width = 10;
font_size = terminal.termSize;
font_family = terminal.termFont;
bold_font = "auto";
italic_font = "auto";
bold_italic_font = "auto";
# optimization
input_delay = 0;
repaint_delay = 2;
sync_to_monitor = false;
wayland_enable_ime = false;
allow_remote_control = true;
};
extraConfig = "include colors.conf";
};
}
-70
View File
@@ -1,70 +0,0 @@
[config]
# If set to enabled, it will check for updates when you run the matugen command, notifying you that an update is avaiable.
# WARNING: Matugen needs to be compiled with the `update-informer` feature for this to work.
version_check = false
[config.wallpaper]
# The base command to run for applying the wallpaper, shouldn't have spaces in it.
command = "swww"
# The arguments that will be provided to the command.
# Keywords like {{ mode }} or anything that works inside of hooks doesn't work here.
# The last argument will be the image path.
arguments = ["img", "--transition-type", "center", "--transition-fps", "120"]
# For example, killing the wallpaper daemon. Usage is like a normal hook.
# pre_hook = ""
[config.custom_keywords]
test = "aaaa"
[templates.name1]
# Relative paths will be resolved from the path `config.toml` is in.
input_path = "./colors.whatever-extension"
output_path = "./a/colors-generated.whatever-extension"
# This will use a different input path depending on what mode you use.
# input_path_modes = { dark = "./colors.whatever-extension", light = "./colors.whatever-extension" }
# This will compare all of the colors inside the array with the color you set as `compare_to`, and returns the closest color to it.
# You can then use `{{closest_color}}` inside templates and hooks.
colors_to_compare = [
{ name = "black", color = "#000000" },
{ name = "red", color = "#ff0000" },
{ name = "maroon", color = "#800000" },
{ name = "yellow", color = "#ffff00" },
{ name = "olive", color = "#808000" },
{ name = "lime", color = "#00ff00" },
{ name = "green", color = "#008000" },
{ name = "aqua", color = "#00ffff" },
{ name = "teal", color = "#008080" },
{ name = "blue", color = "#0000ff" },
{ name = "navy", color = "#000080" },
{ name = "fuchsia", color = "#ff00ff" },
{ name = "purple", color = "#800080" },
]
compare_to = "{{colors.primary.default.hex}}"
# Runs before the template is exported. You can use keywords here,
pre_hook = 'echo "source color {{colors.source_color.default.hex}}, source image {{image}}, closest color {{closest_color}}"'
# Runs after the template is exported. You can use keywords here.
post_hook = 'echo "after gen"'
# Only hex values
# https://m3.material.io/styles/color/advanced/adjust-existing-colors#1cc12e43-237b-45b9-8fe0-9a3549c1f61e
# Blend is set to true by default.
[config.custom_colors]
green = "#00ff00"
red = "#ff0000"
blue = { color = "#0000ff", blend = false }
### --- my config
[templates.kitty]
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/kitty.conf'
output_path = '~/.config/kitty/colors.conf'
post_hook = "kitty @ set-colors -a -c ~/.config/kitty/colors.conf"
[templates.ags]
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/ags.scss'
output_path = '~/.config/nixos/pkgs/ags/biscuit/colors.scss'
post_hook = "pkill gjs & ags run ~/.config/nixos/pkgs/ags/biscuit/app.ts & disown (jobs -p) &"
-3
View File
@@ -1,3 +0,0 @@
$background: {{colors.surface.dark.hex}};
$foreground: {{colors.on_surface.dark.hex}};
$primary: {{colors.primary.dark.hex}};
-41
View File
@@ -1,41 +0,0 @@
cursor {{colors.on_surface.default.hex}}
cursor_text_color {{colors.on_surface_variant.default.hex}}
foreground {{colors.on_surface.default.hex}}
background {{colors.surface.default.hex}}
selection_foreground {{colors.on_secondary.default.hex}}
selection_background {{colors.secondary_fixed_dim.default.hex}}
url_color {{colors.primary.default.hex}}
# black
color8 #262626
color0 #4c4c4c
# red
color1 #ac8a8c
color9 #c49ea0
# green
color2 #8aac8b
color10 #9ec49f
# yellow
color3 #aca98a
color11 #c4c19e
# blue
/* color4 #8f8aac */
color4 {{colors.primary.default.hex}}
color12 #a39ec4
# magenta
color5 #ac8aac
color13 #c49ec4
# cyan
color6 #8aacab
color14 #9ec3c4
# white
color15 #e7e7e7
color7 #f0f0f0
-11
View File
@@ -1,11 +0,0 @@
{
pkgs,
inputs,
system,
...
}: {
imports = [inputs.matugen.nixosModules.default];
home.file.".config/matugen/config.toml" = {
source = builtins.toPath ./custom/config.toml;
};
}
-174
View File
@@ -1,174 +0,0 @@
{
plugins = {
alpha = {
enable = true;
layout = [
{
type = "padding";
val = 2;
}
{
type = "text";
val = [
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
" "
];
opts = {
position = "center";
hl = "Type";
};
}
{
type = "padding";
val = 4;
}
{
type = "group";
val = [
{
type = "button";
val = " New File ";
on_press.__raw = "function() vim.cmd[[ene]] end";
opts = {
shortcut = "n";
keymap = [
"n"
"n"
"<cmd>ene<CR>"
{
noremap = true;
silent = true;
nowait = true;
}
];
position = "center";
width = 50;
align_shortcut = "right";
hl_shortcut = "Keyword";
};
}
{
type = "padding";
val = 2;
}
{
type = "button";
val = " Find File ";
opts = {
shortcut = "f";
keymap = [
"n"
"f"
"<cmd>lua require('fzf-lua').files({ cwd = vim.loop.cwd() })<CR>"
{
noremap = true;
silent = true;
nowait = true;
}
];
position = "center";
width = 50;
align_shortcut = "right";
hl_shortcut = "Keyword";
};
}
{
type = "padding";
val = 2;
}
{
type = "button";
val = " Recent Files ";
on_press.__raw = "function() require('telescope.builtin').oldfiles() end";
opts = {
shortcut = "r";
keymap = [
"n"
"r"
"<cmd>lua require('fzf-lua').oldfiles({ cwd = vim.loop.cwd() })<CR>"
{
noremap = true;
silent = true;
nowait = true;
}
];
position = "center";
width = 50;
align_shortcut = "right";
hl_shortcut = "Keyword";
};
}
{
type = "padding";
val = 2;
}
{
type = "button";
val = " Find Text ";
on_press.__raw = "function() require('telescope.builtin').live_grep() end";
opts = {
shortcut = "g";
keymap = [
"n"
"g"
"<cmd>lua require('fzf-lua').live_grep()<CR>"
{
noremap = true;
silent = true;
nowait = true;
}
];
position = "center";
width = 50;
align_shortcut = "right";
hl_shortcut = "Keyword";
};
}
{
type = "padding";
val = 2;
}
{
type = "button";
val = " Quit Neovim ";
on_press.__raw = "function() vim.cmd[[qa]] end";
opts = {
shortcut = "q";
keymap = [
"n"
"q"
"<cmd>qa<CR>"
{
noremap = true;
silent = true;
nowait = true;
}
];
position = "center";
width = 50;
align_shortcut = "right";
hl_shortcut = "Keyword";
};
}
];
}
];
};
};
}
-18
View File
@@ -1,18 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
# `plugins.mini.enable` with `plugins.mini.modules.icons` and `plugins.mini.mockDevIcons`.
# plugins.web-devicons.enable = true;
plugins.mini = {
enable = true;
mockDevIcons = true;
modules = [
];
};
plugins.telescope = {
enable = true;
};
}
-14
View File
@@ -1,14 +0,0 @@
{
pkgs,
inputs,
...
}: let
nix-neovim = inputs.nix-neovim.packages.${pkgs.system}.default;
in {
programs.neovim.enable = false;
home.packages = [
nix-neovim
pkgs.lazygit
# ripgrep
];
}
-8
View File
@@ -1,8 +0,0 @@
{pkgs, ...}: {
programs.rofi = {
enable = true;
plugins = with pkgs; [
rofi-calc
];
};
}
-16
View File
@@ -1,16 +0,0 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
**/
* {
background: #1E2127FF;
background-alt: #282B31FF;
foreground: #FFFFFFFF;
selected: #61AFEFFF;
active: #98C379FF;
urgent: #E06C75FF;
}
-171
View File
@@ -1,171 +0,0 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun";
show-icons: true;
display-drun: "";
drun-display-format: "{name}";
}
/*****----- Global Properties -----*****/
@import "shared/colors.rasi"
@import "shared/fonts.rasi"
/*****----- Main Window -----*****/
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 400px;
x-offset: 0px;
y-offset: 0px;
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 12px;
border-color: @selected;
background-color: @background;
cursor: "default";
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @selected;
background-color: transparent;
children: [ "inputbar", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 15px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @selected;
text-color: @background;
children: [ "prompt", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "::";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Search...";
placeholder-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 6;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @selected;
border-radius: 0px;
background-color: @background-alt;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element normal.normal {
background-color: @background;
text-color: @foreground;
}
element selected.normal {
background-color: @background-alt;
text-color: @foreground;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 32px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Message -----*****/
error-message {
padding: 15px;
border: 2px solid;
border-radius: 12px;
border-color: @selected;
background-color: @background;
text-color: @foreground;
}
textbox {
background-color: @background;
text-color: @foreground;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
}
-20
View File
@@ -1,20 +0,0 @@
#!/usr/bin/env bash
## Author : Aditya Shakya (adi1090x)
## Github : @adi1090x
#
## Rofi : Launcher (Modi Drun, Run, File Browser, Window)
#
## Available Styles
#
## style-1 style-2 style-3 style-4 style-5
## style-6 style-7 style-8 style-9 style-10
## style-11 style-12 style-13 style-14 style-15
dir="$HOME/.config/wofi/launcher/config.rasi"
theme='style-1'
## Run
wofi \
-show drun \
-theme ${dir}/${theme}.rasi
-18
View File
@@ -1,18 +0,0 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Colors
*
* Available Colors Schemes
*
* adapta catppuccin everforest navy paper
* arc cyberpunk gruvbox nord solarized
* black dracula lovelace onedark yousai
*
**/
/* Import color-scheme from `colors` directory */
@import "~/.config/wofi/colors/onedark.rasi"
-12
View File
@@ -1,12 +0,0 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Fonts
*
**/
* {
font: "Iosevka Nerd Font 10";
}
-62
View File
@@ -1,62 +0,0 @@
{lib, ...}: {
programs.starship = {
enable = true;
settings = {
format = lib.concatStrings [
"$username"
"$hostname"
"$directory"
"$git_branch"
"$git_state"
"$git_status"
"$cmd_duration"
"$line_break"
"$python"
"$character"
];
directory = {
style = "blue";
};
character = {
success_symbol = "[](purple)";
error_symbol = "[](red)";
vimcmd_symbol = "[](green)";
};
git_branch = {
format = "[$branch]($style)";
style = "bright-black";
};
git_status = {
format = "[(*$conflicted$untracked$modified$staged$renamed$deleted) $ahead_behind$stashed]($style)";
style = "cyan";
conflicted = "";
untracked = "";
modified = "";
staged = "";
renamed = "";
deleted = "";
stashed = "";
};
git_state = {
format = "([$state( $progress_current/$progress_total)]($style)) ";
style = "bright-black";
};
cmd_duration = {
format = "[$duration]($style) ";
style = "yellow";
};
python = {
format = "[$virtualenv]($style) ";
style = "bright-black";
};
};
};
# home.file.".config/starship.toml" = {
# source = builtins.toPath ./pure.toml;
# };
}
-5
View File
@@ -1,5 +0,0 @@
{
programs.steam = {
enable = true;
};
}
-3
View File
@@ -1,3 +0,0 @@
{...}: {
services.swww.enable = true;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

-229
View File
@@ -1,229 +0,0 @@
{ username, hostname, ... }: {
programs.waybar = {
enable = true;
settings = [
{
margin-top = 10;
margin-left = 10;
margin-right = 10;
layer = "top";
position = "top";
modules-left = [
"custom/start"
"hyprland/submap"
"hyprland/workspaces"
"hyprland/window"
];
modules-right = [
"tray"
"temperature"
"cpu"
"memory"
"disk"
"network"
"pulseaudio"
"battery"
"power-profiles-daemon"
"clock"
];
"cpu" = {
states = {
critical = 85;
};
interval = 1;
format = " {usage:2}%";
on-click = "kitty btop";
};
"memory" = {
states = {
critical = 85;
};
interval = 1;
format = " {percentage}%";
on-click = "kitty btop";
};
"disk" = {
states = {
critical = 85;
};
interval = 5;
format = " {percentage_used}%";
on-click = "kitty btop";
};
"network" = {
format-ethernet = " {bandwidthDownOctets}";
format-wifi = " {signalStrength}%";
format-disconnected = "";
format-disabled = "";
tooltip = false;
on-click = "rofi-network-manager";
};
"temperature" = {
critical-threshold = 80;
format = " {temperatureC}°C";
interval = 1;
on-click = "kitty btop";
};
"power-profiles-daemon" = {
format = "{icon} {profile}";
format-icons = {
performance = "";
power-saver = "";
balanced = "";
};
};
"hyprland/workspaces" = {
format = "{name}";
format-icons = {
default = " ";
active = " ";
urgent = " ";
};
on-scroll-down = "hyprctl dispatch workspace e+1";
on-scroll-up = "hyprctl dispatch workspace e-1";
};
"hyprland/window" = {
icon = true;
max-length = 45;
separate-outputs = false;
rewrite = {
"" = "${username}@${hostname}";
"~" = "${username}@${hostname}";
};
on-click-right = "hyprctl dispatch fullscreen 0";
on-click-middle = "hyprctl dispatch killactive";
on-click = "hyprctl dispatch fullscreen 1";
};
"hyprland/submap" = {
format = " {}";
on-click = "hyprctl dispatch submap reset";
};
"clock" = {
format = "{:%b %d, %I:%M %p}";
};
"tray" = {
spacing = 12;
};
"taskbar" = {
icon-size = 10;
icon-theme = "Papirus-Dark";
on-click = "activate";
on-click-right = "fullscreen";
on-click-middle = "close";
on-scroll-up = "maximize";
on-scroll-down = "minimize";
};
"pulseaudio" = {
format = "{icon} {volume}% {format_source}";
format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {volume}% {format_source_muted}";
format-muted = " {volume}% {format_source_muted}";
format-source = "";
format-source-muted = "";
format-icons = {
headphone = "";
hands-free = "";
headset = "";
phone = "";
portable = "";
car = "";
default = [
""
""
""
];
};
on-click = "pavucontrol";
on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
};
"battery" = {
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}%";
format-charging = " {capacity}%";
format-plugged = " {capacity}%";
format-icons = [
""
""
""
""
""
];
interval = 1;
on-click = "";
};
"custom/start" = {
format = "";
on-click-right = "rofi -show power-menu -modi power-menu:rofi-power-menu";
on-click = "rofi -show drun";
};
}
];
style = ''
* {
font-size: 12px;
font-family: Font Awesome, monospace;
font-weight: bold;
color: @text;
transition: none;
}
window#waybar {
background: rgba(0,0,0,0);
border: none;
}
#workspaces button {
border-radius: 0px;
margin: 0px;
background: none;
border: none;
}
#workspaces button:hover, #custom-start:hover, #window:hover {
border: none;
outline: none;
background: none;
color: @text;
background-size: 300% 300%;
background: @surface0;
}
#workspaces button.active, #submap {
background: @surface1;
}
#custom-start {
padding: 0px 5px;
color: @sky;
font-size: 16px;
}
#window, #submap {
padding: 0px 5px;
}
.modules-left, .modules-right {
background-color: @crust;
border: 2px solid @surface1;
border-radius: 10px;
padding: 0 5px;
}
#submap, #workspaces, #cpu, #memory, #disk, #clock, #window, #tray, #pulseaudio, #battery, #network, #temperature, #power-profiles-daemon, #custom-exit, #custom-start {
margin: 0 5px;
}
.critical, .muted, .performance {
color: @red;
}
.warning, .urgent {
color: @yellow;
}
.charging, .plugged, .power-saver {
color: @green;
}
'';
};
}
-55
View File
@@ -1,55 +0,0 @@
{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"blocks": [
{
"alignment": "left",
"segments": [
{
"foreground": "#ffdd86",
"style": "plain",
"template": "{{ .UserName }}@{{ .HostName }} ",
"type": "session"
},
{
"foreground": "#42a9ff",
"style": "plain",
"properties": {
"style": "full"
},
"template": "{{ .Path }} ",
"type": "path"
},
{
"properties": {
"branch_icon": "",
"fetch_status": true
},
"style": "plain",
"template": "git:{{ if or (.Working.Changed) (.Staging.Changed) (gt .StashCount 0) }}<#ffdd86>{{ .HEAD }}</>{{ else }}{{ .HEAD }}{{ end }}{{ if .Staging.Changed }} <#98c379>{{ .Staging.String }}</>{{ end }}{{ if .Working.Changed }} <#d16971>{{ .Working.String }}</>{{ end }}",
"type": "git"
}
],
"type": "prompt"
},
{
"alignment": "left",
"newline": true,
"segments": [
{
"foreground": "#ffdd86",
"foreground_templates": [
"{{ if gt .Code 0 }}#42a9ff{{ end }}"
],
"properties": {
"always_enabled": true
},
"style": "plain",
"template": "> ",
"type": "status"
}
],
"type": "prompt"
}
],
"version": 3
}
-40
View File
@@ -1,40 +0,0 @@
{
pkgs,
terminal,
...
}: {
home.packages = with pkgs; [
zoxide
];
programs.zsh.enable = true;
programs.zoxide.enable = true;
programs.zsh = {
enableCompletion = false;
syntaxHighlighting.enable = false;
shellAliases = terminal.shellAliases;
history.size = 10000;
antidote = {
enable = true;
plugins = [
"MichaelAquilina/zsh-autoswitch-virtualenv"
"jeffreytse/zsh-vi-mode"
"zdharma-continuum/fast-syntax-highlighting kind:defer"
"zsh-users/zsh-autosuggestions kind:defer"
"zsh-users/zsh-history-substring-search kind:defer"
];
};
initContent = ''
# zsh-autocomplete
# bindkey -M menuselect '^M' .accept-line # run code when selected completion
autoload -Uz compinit
if [ "$(date +'%j')" != "$(stat -f '%Sm' -t '%j' ~/.zcompdump 2>/dev/null)" ]; then
compinit
else
compinit -C
fi
'';
};
}
-102
View File
@@ -1,102 +0,0 @@
{
pkgs,
hostname,
timezone,
touchpadSupport,
inputs,
logitech-hardware,
...
}: {
environment.systemPackages = with pkgs;
[
python3
python3Packages.pip
python3Packages.pygobject3
python3Packages.setuptools
python3Packages.wheel
gobject-introspection
gtk3
libxml2
git
cargo
gcc
rustc
nodejs
yarn
busybox
p7zip
btop
tldr
jq
lm_sensors
]
++ [
inputs.matugen.packages.${pkgs.system}.default
]
++ lib.optionals (logitech-hardware.enable == true) [
solaar
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
hardware = {
logitech.wireless.enable = logitech-hardware.enable;
bluetooth = {
enable = true;
powerOnBoot = true;
};
};
i18n.defaultLocale = "en_US.UTF-8";
console = {
font = "Lat2-Terminus16";
useXkbConfig = true; # use xkb.options in tty.
};
networking.hostName = "${hostname}";
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
time.timeZone = "${timezone}";
services = {
openssh.enable = true;
libinput.enable = touchpadSupport;
blueman.enable = true;
};
programs.bash = {
interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
'';
};
programs = {
zsh.enable = true;
fish.enable = true;
};
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# ONLY WORKS non-flake
# system.copySystemConfiguration = true;
}
-107
View File
@@ -1,107 +0,0 @@
{
config,
pkgs,
...
}: let
lock-false = {
Value = false;
Status = "locked";
};
lock-true = {
Value = true;
Status = "locked";
};
in {
programs = {
firefox = {
enable = true;
languagePacks = ["en-US"];
/*
---- POLICIES ----
*/
# Check about:policies#documentation for options.
policies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value = true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
DisableFirefoxAccounts = true;
DisableAccounts = true;
DisableFirefoxScreenshots = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DontCheckDefaultBrowser = true;
DisplayBookmarksToolbar = "never"; # alternatives: "always" or "newtab"
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
SearchBar = "unified"; # alternative: "separate"
/*
---- EXTENSIONS ----
*/
# Check about:support for extension/add-on ID strings.
# Valid strings for installation_mode are "allowed", "blocked",
# "force_installed" and "normal_installed".
ExtensionSettings = {
"*".installation_mode = "blocked"; # blocks all addons except the ones specified below
# uBlock Origin:
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
};
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4493940/bitwarden_password_manager-2025.5.0.xpi";
installation_mode = "force_installed";
};
"tridactyl.vim@cmcaine.co.uk" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4405615/tridactyl_vim-1.24.2.xpi";
installation_mode = "force_installed";
};
# Privacy Badger:
# "jid1-MnnxcxisBPnSXQ@jetpack" = {
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
# installation_mode = "force_installed";
# };
# 1Password:
# "{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
# installation_mode = "force_installed";
};
};
/*
---- PREFERENCES ----
*/
# Check about:config for options.
preferences = {
# "browser.contentblocking.category" = {
# Value = "strict";
# Status = "locked";
# };
"browser.contentblocking.category" = "strict";
"extensions.pocket.enabled" = false;
"extensions.screenshots.disabled" = true;
"browser.topsites.contile.enabled" = false;
"browser.formfill.enable" = false;
"browser.search.suggest.enabled" = false;
"browser.search.suggest.enabled.private" = false;
"browser.urlbar.suggest.searches" = false;
"browser.urlbar.showSearchSuggestionsFirst" = false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
"browser.newtabpage.activity-stream.feeds.snippets" = false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.system.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
};
};
};
}
-6
View File
@@ -1,6 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
bibata-cursors
hyprcursor
];
}
-16
View File
@@ -1,16 +0,0 @@
{
pkgs,
inputs,
system,
...
}: let
unlisted-fonts = inputs.unlisted-fonts.packages.${pkgs.system};
in {
fonts.packages = with pkgs; [
unlisted-fonts.monolisa
unlisted-fonts.rubik
nerd-fonts.fira-code
nerd-fonts.jetbrains-mono
nerd-fonts.iosevka
];
}
-3
View File
@@ -1,3 +0,0 @@
{pkgs, ...}: {
services.printing.enable = true;
}
-13
View File
@@ -1,13 +0,0 @@
{ pkgs, ... }: {
# Enable sound.
# services.pulseaudio.enable = true;
# OR
environment.systemPackages = with pkgs; [
pavucontrol
];
security.rtkit.enable = true;
services.pipewire = {
enable = true;
pulse.enable = true;
};
}
-4
View File
@@ -1,4 +0,0 @@
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
];
}
-23
View File
@@ -1,23 +0,0 @@
{
pkgs,
inputs,
...
}: {
environment.systemPackages = with pkgs; [
wl-clipboard
hypridle
hyprlock
];
programs.hyprland = {
enable = true;
# package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
# portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
hardware = {
graphics.enable = true;
};
services = {
# displayManager.sddm.wayland = true;
displayManager.gdm.enable = true;
};
}
-20
View File
@@ -1,20 +0,0 @@
{
pkgs,
username,
terminal,
...
}: {
users = {
defaultUserShell = pkgs.${terminal.termShell};
users = {
${username} = {
isNormalUser = true;
extraGroups = ["wheel" "networkmanager" "input"];
initialHashedPassword = "$6$Qab6SSvEJM2YRtVA$7Oyl7E3pp/FKtCC.2Tb2tyzp3yp7BFHFAKngUYJssQJ.v1Q2mqsgW9m7njpaKNcka2vyCwrnmw1R.YPlFqR0p1";
useDefaultShell = true;
packages = [
];
};
};
};
}
-23
View File
@@ -1,23 +0,0 @@
{
vpn,
username,
...
}: {
networking.wg-quick.interfaces = {
biscuit-default = {
address = ["10.2.0.2/32"];
# listenPort = 51820;
# FIXME change privateKey to variable and add env (make sure it is inaccessible!)
privateKeyFile = vpn.vpnSecretFile;
dns = ["10.2.0.1"];
peers = [
{
publicKey = "GbuOJ8Dho0iXlS0+ma2teQ4RxhBALWK6RB94qA1GZDA=";
allowedIPs = ["0.0.0.0/0"];
endpoint = "79.127.147.2:51820";
# persistentKeepAlive = 25;
}
];
};
};
}