Compare commits
50 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cbd2575515 | |||
| 1e73f9ce06 | |||
| c08bc7a576 | |||
| 27cc1641f2 | |||
| e1de9403e4 | |||
| d1ed8bc004 | |||
| 11da625ace | |||
| 357b9a4f04 | |||
| 2d69f55eba | |||
| c7787f3d27 | |||
| b37edeed36 | |||
| 945ed455c9 | |||
| 8f4de3964f | |||
| d7489f811a | |||
| ed24c8eaea | |||
| d2baeeba6d | |||
| 6cdfd4c169 | |||
| 30a55ac796 | |||
| 277e7a1191 | |||
| 59a18fbe85 | |||
| 31d4628955 | |||
| 39162c5ead | |||
| 2cee6724c8 | |||
| 080f4ec678 | |||
| 4271d20f44 | |||
| 71c6d75ff7 | |||
| 571645a2e6 | |||
| f52a8923fd | |||
| 1fdd8f51fe | |||
| 8c4c69b5dd | |||
| 79a22e0041 | |||
| fba74facdc | |||
| bdab858be2 | |||
| 37e982c983 | |||
| 6fc18f11a5 | |||
| d9128fcf06 | |||
| b7d0583aaf | |||
| 2d5f115468 | |||
| 306ee40129 | |||
| f7b315be25 | |||
| d00c9836d6 | |||
| ea86b6f7e5 | |||
| 1e19f865de | |||
| 3ebe0c9fca | |||
| f214789d22 | |||
| fe79d7a2c4 | |||
| cc7aa6df6a | |||
| e8e7b3dd4f | |||
| 1d5dd8ac1f | |||
| b631cb20a4 |
@@ -0,0 +1 @@
|
|||||||
|
hosts/desktop/hardware-configuration.nix
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Sakamoto NixOS
|
||||||
|
|
||||||
|
Sakamoto NixOS is built with various profiles intended for reproducibility.
|
||||||
|
|
||||||
|
## Available Hosts
|
||||||
|
|
||||||
|
- MacBook M series
|
||||||
|
- Linux
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. Install [Nix](https://nixos.org/download/).
|
||||||
|
|
||||||
|
2. Ensure Nix is installed properly by running the following (this also gives you `nano` for editing later):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix-shell -p nano
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Clone the git repository:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos && cd ~/.config/nixos/
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Copy `info.default.nix` and rename it to `info.local.nix`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cp ~/.config/nixos/info.default.nix ~/.config/nixos/info.local.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
🚨 **CRITICAL STEP:** Edit `info.local.nix`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nano ~/.config/nixos/info.local.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
Modify it to fit your system — especially your **username**.
|
||||||
|
If you accidentally leave the default `biscuit`, that user will be created.
|
||||||
|
**Login password for `biscuit` is `Your-generic-password`.**
|
||||||
|
|
||||||
|
5. Execute the following command based on your host:
|
||||||
|
|
||||||
|
- **MacBook M series:**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo nix run nix-darwin --extra-experimental-features "nix-command flakes" -- switch --flake ~/.config/nixos#macos
|
||||||
|
```
|
||||||
|
|
||||||
|
- **Linux:**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo nixos-rebuild --flake ~/.config/nixos#desktop --impure
|
||||||
|
sudo nix run home-manager -- init --switch
|
||||||
|
home-manager switch --flake ~/.config/nixos#desktop --impure
|
||||||
|
nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update
|
||||||
|
reboot
|
||||||
|
```
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.6 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 246 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 14 MiB |
+70
-45
@@ -1,66 +1,91 @@
|
|||||||
{
|
{
|
||||||
myConfig = {
|
myConfig = {
|
||||||
essentials = {
|
|
||||||
# !!! replace it with your own, else system might malfunction.
|
|
||||||
Username = "kenji";
|
|
||||||
};
|
|
||||||
general = {
|
general = {
|
||||||
Terminal = {
|
Hostname = "hakase";
|
||||||
font = "JetBrainsMono Nerd Font";
|
Username = "kenji";
|
||||||
size = "12";
|
|
||||||
shell = "fish"; # or zsh
|
|
||||||
aliases = {
|
|
||||||
ls = "ls --color=auto";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nixos = {
|
|
||||||
Hostname = "nixos";
|
|
||||||
Timezone = "America/Chicago";
|
Timezone = "America/Chicago";
|
||||||
|
|
||||||
Boot = {
|
allowUnfree = true; # allows installation of commercial apps.
|
||||||
mode = "grub"; # systemd or grub
|
|
||||||
|
terminal = {
|
||||||
|
Font = "JetBrainsMono Nerd Font"; # e.g., JetBrainsMono Nerd Font
|
||||||
|
Size = "18";
|
||||||
|
Shell = "fish";
|
||||||
|
Aliases = {
|
||||||
|
ls = "ls --color=auto";
|
||||||
|
update = ''
|
||||||
|
sh -c '
|
||||||
|
if [ "$(uname)" = "Darwin" ]; then
|
||||||
|
sudo darwin-rebuild switch --flake ~/.config/nixos#macos
|
||||||
|
else
|
||||||
|
sudo nixos-rebuild switch --flake ~/.config/nixos#desktop && home-manager switch --flake ~/.config/nixos#desktop
|
||||||
|
fi
|
||||||
|
'
|
||||||
|
'';
|
||||||
|
agu = "pkill gjs & ags run ~/.config/nixos/packages/ags/biscuit/app.ts & disown (jobs -p) &";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
Gaming = {
|
gitProfile = {
|
||||||
enable = true;
|
User = "kenji";
|
||||||
};
|
Email = "kenji@sakamoto.dev";
|
||||||
Apps = {
|
|
||||||
packages = pkgs:
|
|
||||||
with pkgs; [
|
|
||||||
jellyfin-media-player
|
|
||||||
];
|
|
||||||
};
|
|
||||||
Hyprland = {
|
|
||||||
monitors = [];
|
|
||||||
};
|
|
||||||
Git = {
|
|
||||||
user = "";
|
|
||||||
email = "";
|
|
||||||
defaultBranch = "master";
|
defaultBranch = "master";
|
||||||
};
|
};
|
||||||
|
ssh = {
|
||||||
|
extraConfig = ''
|
||||||
|
Host gitea.sakamoto.dev
|
||||||
|
User kenji
|
||||||
|
ProxyCommand cloudflared access ssh --hostname %h
|
||||||
|
HostName gitea.sakamoto.dev
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
optionals = {
|
|
||||||
Builds = {
|
builds = {
|
||||||
|
builder = {
|
||||||
trustedUsers = [
|
trustedUsers = [
|
||||||
"@groups"
|
"@groups"
|
||||||
|
"biscuit"
|
||||||
];
|
];
|
||||||
buildMachines = [
|
buildMachines = [
|
||||||
{
|
{
|
||||||
hostName = "";
|
hostName = "192.168.68.81";
|
||||||
sshUser = "";
|
sshUser = "biscuit";
|
||||||
sshKey = "";
|
sshKey = "/home/biscuit/.ssh/id_rsa.pub";
|
||||||
system = "";
|
system = "x86_64-linux";
|
||||||
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
|
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
Ssh = {
|
};
|
||||||
extraConfig = ''
|
|
||||||
Host macair
|
linux = {
|
||||||
User biscuit
|
system = "x86_64";
|
||||||
HostName 192.168.68.81
|
gaming = true;
|
||||||
'';
|
|
||||||
|
vpn = {
|
||||||
|
Enable = false;
|
||||||
|
secretFile = builtins.toPath ./secrets/.vpn.yaml;
|
||||||
|
};
|
||||||
|
|
||||||
|
touchpadSupport = false;
|
||||||
|
logitech-hardware.enable = true;
|
||||||
|
|
||||||
|
# Custom Applications
|
||||||
|
apps = {
|
||||||
|
gaming = true;
|
||||||
|
apps = pkgs:
|
||||||
|
with pkgs; [
|
||||||
|
jellyfin-media-player
|
||||||
|
];
|
||||||
|
};
|
||||||
|
hyprconf = {
|
||||||
|
Monitor = [
|
||||||
|
# hyprctl monitors all
|
||||||
|
# monitor, resolution@refreshrate, position (e.g., 0x0 is middle, 0x1080 is top), scale
|
||||||
|
"DP-1,highres@165,0x1080,auto"
|
||||||
|
"DP-2,highres@highrr,0x0,auto"
|
||||||
|
"HDMI-A-1, preferred, 20000x20000,1"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Generated
+1105
File diff suppressed because it is too large
Load Diff
@@ -1,70 +1,117 @@
|
|||||||
{
|
{
|
||||||
description = "A rewrite of the original Sakamoto NixOS config.";
|
description = "Sakamoto's NixOS Configuration";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||||
|
home-manager.url = "github:nix-community/home-manager";
|
||||||
|
home-manager.inputs.nixpkgs.follows = "nixpkgs"; # `follows` ensure it follows nixpkgs versiona. Avoids breaking updates.
|
||||||
|
darwin.url = "github:lnl7/nix-darwin";
|
||||||
|
darwin.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
home-manager = {
|
ags.url = "github:aylur/ags";
|
||||||
url = "github:nix-community/home-manager";
|
ags.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
flake-utils = {
|
hyprland.url = "github:hyprwm/Hyprland";
|
||||||
url = "github:numtide/flake-utils";
|
hyprland.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
darwin = {
|
unlisted-fonts.url = "git+https://git.sakamoto.dev/kenji/nix-fonts.git";
|
||||||
url = "github:lnl7/nix-darwin";
|
unlisted-fonts.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
nixovim.url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
|
||||||
|
nixovim.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
matugen.url = "github:/InioX/Matugen";
|
||||||
|
matugen.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
nix-gaming.url = "github:fufexan/nix-gaming";
|
||||||
|
nix-gaming.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
|
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
quickshell.url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
||||||
|
quickshell.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
flake-utils,
|
|
||||||
home-manager,
|
home-manager,
|
||||||
darwin,
|
darwin,
|
||||||
|
ags,
|
||||||
|
hyprland,
|
||||||
|
unlisted-fonts,
|
||||||
|
nixovim,
|
||||||
...
|
...
|
||||||
} @ inputs:
|
} @ inputs: let
|
||||||
flake-utils.lib.eachDefaultSystem (
|
config = import ./config.nix;
|
||||||
system: let
|
lib = nixpkgs.lib;
|
||||||
config = import ./config.nix;
|
system = "x86_64-linux";
|
||||||
lib = nixpkgs.lib;
|
# pkgs = nixpkgs.legacyPackages.${system}; # alternative, without overlays. Unused.
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
args =
|
||||||
args = {inherit inputs system;} // config;
|
{
|
||||||
in {
|
inherit inputs system;
|
||||||
nixosConfigurations = {
|
|
||||||
desktop = lib.nixosSystem {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = args;
|
|
||||||
modules = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
homeConfigurations = {
|
|
||||||
desktop = home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
extraSpecialArgs = args;
|
|
||||||
modules = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
darwinConfigurations = {
|
|
||||||
macos = darwin.lib.darwinSystem {
|
|
||||||
inherit system;
|
|
||||||
specialArgs = args;
|
|
||||||
modules = [
|
|
||||||
./hosts/macos/darwin.nix
|
|
||||||
home-manager.darwinModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.extraSpecialArgs = args;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
);
|
// config;
|
||||||
|
in {
|
||||||
|
# nixosConfiguration for linux system
|
||||||
|
nixosConfigurations = {
|
||||||
|
desktop = lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
specialArgs = args;
|
||||||
|
modules = [
|
||||||
|
./hosts/desktop/configuration.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
homeConfigurations = {
|
||||||
|
desktop = home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [
|
||||||
|
# (final: prev: {
|
||||||
|
# ags_1 = prev.ags_1.overrideAttrs (old: {
|
||||||
|
# buildInputs = old.buildInputs ++ [pkgs.libdbusmenu-gtk3];
|
||||||
|
# });
|
||||||
|
# })
|
||||||
|
];
|
||||||
|
};
|
||||||
|
extraSpecialArgs = args;
|
||||||
|
modules = [./home/desktop.nix];
|
||||||
|
};
|
||||||
|
|
||||||
|
gaming = home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [];
|
||||||
|
};
|
||||||
|
extraSpecialArgs = args;
|
||||||
|
modules = [./home/gaming.nix];
|
||||||
|
};
|
||||||
|
headless = home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [];
|
||||||
|
};
|
||||||
|
extraSpecialArgs = args;
|
||||||
|
modules = [./home/headless.nix];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# darwinConfiguration for macOS M series
|
||||||
|
darwinConfigurations = {
|
||||||
|
macos = darwin.lib.darwinSystem {
|
||||||
|
system = "aarch64-darwin";
|
||||||
|
specialArgs = args;
|
||||||
|
modules = [
|
||||||
|
./hosts/macos/darwin.nix
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = args;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
myConfig,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
../modules/terminal.nix
|
||||||
|
../modules/desktop.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = "${myConfig.general.Username}";
|
||||||
|
homeDirectory = "/home/${myConfig.general.Username}";
|
||||||
|
packages = [];
|
||||||
|
sessionVariables = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.startServices = "sd-switch";
|
||||||
|
home.stateVersion = "23.05";
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
../modules/home/terminal.nix
|
../modules/terminal.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
inputs.sops-nix.nixosModules.sops
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../../modules/linuxDev.nix
|
||||||
|
../../modules/system.nix
|
||||||
|
../../modules/de.nix
|
||||||
|
]
|
||||||
|
++ lib.optionals (myConfig.linux.apps.gaming == true) [
|
||||||
|
../../modules/gaming.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = [];
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
trusted-users = myConfig.builds.builder.trustedUsers;
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.ssh.extraConfig = myConfig.general.ssh.extraConfig;
|
||||||
|
|
||||||
|
nix.distributedBuilds = true;
|
||||||
|
nix.settings.builders-use-substitutes = true;
|
||||||
|
|
||||||
|
# nix.buildMachines = builder.buildMachines;
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
}
|
||||||
@@ -5,11 +5,13 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/default/darwin.nix
|
../../modules/macosDev.nix
|
||||||
|
inputs.sops-nix.darwinModules.sops
|
||||||
];
|
];
|
||||||
# List packages installed in system profile. To search by name, run:
|
# List packages installed in system profile. To search by name, run:
|
||||||
# $ nix-env -qaP | grep wget
|
# $ nix-env -qaP | grep wget
|
||||||
environment.systemPackages = [];
|
environment.systemPackages = with pkgs; [
|
||||||
|
];
|
||||||
|
|
||||||
# Auto upgrade nix package and the daemon service.
|
# Auto upgrade nix package and the daemon service.
|
||||||
# services.nix-daemon.enable = true;
|
# services.nix-daemon.enable = true;
|
||||||
@@ -18,7 +20,7 @@
|
|||||||
|
|
||||||
# Necessary for using flakes on this system.
|
# Necessary for using flakes on this system.
|
||||||
nix.settings.experimental-features = "nix-command flakes";
|
nix.settings.experimental-features = "nix-command flakes";
|
||||||
nix.settings.trusted-users = myConfig.optionals.Builds.trustedUsers;
|
nix.settings.trusted-users = myConfig.builds.builder.trustedUsers;
|
||||||
|
|
||||||
# Create /etc/zshrc that loads the nix-darwin environment.
|
# Create /etc/zshrc that loads the nix-darwin environment.
|
||||||
programs.zsh.enable = true; # default shell on catalina
|
programs.zsh.enable = true; # default shell on catalina
|
||||||
@@ -31,11 +33,11 @@
|
|||||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||||
security.pam.services.sudo_local.touchIdAuth = true;
|
security.pam.services.sudo_local.touchIdAuth = true;
|
||||||
|
|
||||||
users.users.${myConfig.esssentials.Username} = {
|
users.users.${myConfig.general.Username} = {
|
||||||
name = "${myConfig.essentials.Username}";
|
name = "${myConfig.general.Username}";
|
||||||
home = "/Users/${myConfig.essentials.Username}";
|
home = "/Users/${myConfig.general.Username}";
|
||||||
# shell = pkgs.${myConfig.general.terminal.Shell}; # no support for nix-darwin, but can be changed via chsh.
|
# shell = pkgs.${myConfig.general.terminal.Shell}; # no support for nix-darwin, but can be changed via chsh.
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${myConfig.essentials.Username} = import ../../home/macos.nix;
|
home-manager.users.${myConfig.general.Username} = import ../../home/macos.nix;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
../system/font.nix
|
||||||
|
../system/browser.nix
|
||||||
|
../system/wayland.nix
|
||||||
|
../system/graphics.nix
|
||||||
|
../system/security.nix
|
||||||
|
|
||||||
|
# FIXME
|
||||||
|
../system/amd.nix
|
||||||
|
]
|
||||||
|
++ lib.optionals (myConfig.linux.gaming == true) [
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
../packages/hyprland/default.nix
|
||||||
|
../packages/hypridle/default.nix
|
||||||
|
../packages/hyprlock/default.nix
|
||||||
|
../packages/rofi/default.nix
|
||||||
|
../packages/matugen/default.nix
|
||||||
|
../packages/swww/default.nix
|
||||||
|
../packages/quickshell/default.nix
|
||||||
|
../packages/ags/default.nix
|
||||||
|
]
|
||||||
|
++ lib.optionals (myConfig.linux.gaming == true) [
|
||||||
|
../packages/mangohud/default.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../system/stream.nix
|
||||||
|
../system/gaming.nix
|
||||||
|
../system/appimage.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
../../packages/zsh/home.nix
|
|
||||||
../../packages/fish/home.nix
|
|
||||||
../../packages/kitty/home.nix
|
|
||||||
../../packages/neovim/home.nix
|
|
||||||
../../packages/starship/home.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
../system/dev/tools.nix
|
||||||
|
../system/dev/python.nix
|
||||||
|
../system/dev/linux.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
../system/dev/tools.nix
|
||||||
|
../system/dev/python.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
../system/users.nix
|
||||||
|
../system/hardware.nix
|
||||||
|
../system/locale.nix
|
||||||
|
../system/network.nix
|
||||||
|
../system/programs.nix
|
||||||
|
../system/services.nix
|
||||||
|
../system/tty.nix
|
||||||
|
../system/firewall.nix
|
||||||
|
../system/boot.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
../packages/git/default.nix
|
||||||
|
../packages/fish/default.nix
|
||||||
|
../packages/kitty/default.nix
|
||||||
|
../packages/neovim/default.nix
|
||||||
|
../packages/starship/default.nix
|
||||||
|
../packages/fastfetch/default.nix
|
||||||
|
../packages/zsh/default.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
zoxide init fish | source
|
zoxide init fish | source
|
||||||
|
|
||||||
'';
|
'';
|
||||||
shellAliases = myConfig.general.Terminal.aliases;
|
shellAliases = myConfig.general.terminal.Aliases;
|
||||||
|
|
||||||
plugins = with pkgs.fishPlugins; [
|
plugins = with pkgs.fishPlugins; [
|
||||||
];
|
];
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = {
|
||||||
|
user.name = "${myConfig.general.gitProfile.User}";
|
||||||
|
user.email = "${myConfig.general.gitProfile.Email}";
|
||||||
|
init.defaultBranch = "${myConfig.general.gitProfile.defaultBranch}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{myConfig, ...}: {
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = {
|
|
||||||
user.name = "${myConfig.linux.Git.user}";
|
|
||||||
user.email = "${myConfig.linux.Git.email}";
|
|
||||||
init.defaultBranch = "${myConfig.linux.Git.defaultBranch}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -7,14 +7,12 @@
|
|||||||
confirm_os_window_close = 0;
|
confirm_os_window_close = 0;
|
||||||
window_padding_width = 10;
|
window_padding_width = 10;
|
||||||
|
|
||||||
font_size = myConfig.general.Terminal.size;
|
font_size = myConfig.general.terminal.Size;
|
||||||
font_family = myConfig.general.Terminal.font;
|
font_family = myConfig.general.terminal.Font;
|
||||||
bold_font = "auto";
|
bold_font = "auto";
|
||||||
italic_font = "auto";
|
italic_font = "auto";
|
||||||
bold_italic_font = "auto";
|
bold_italic_font = "auto";
|
||||||
|
|
||||||
shell = myConfig.general.Terminal.shell;
|
|
||||||
|
|
||||||
# optimization
|
# optimization
|
||||||
input_delay = 0;
|
input_delay = 0;
|
||||||
repaint_delay = 2;
|
repaint_delay = 2;
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
programs.zsh = {
|
programs.zsh = {
|
||||||
enableCompletion = false;
|
enableCompletion = false;
|
||||||
syntaxHighlighting.enable = false;
|
syntaxHighlighting.enable = false;
|
||||||
shellAliases = myConfig.general.Terminal.aliases;
|
shellAliases = myConfig.general.terminal.Aliases;
|
||||||
history.size = 10000;
|
history.size = 10000;
|
||||||
antidote = {
|
antidote = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
keys:
|
||||||
|
- &admin_kenji age19pf5unuk3hcap0vrrlqr9lkh5eg24aw7z3skf0kverpjdqsltdxsdx88r8
|
||||||
|
creation_rules:
|
||||||
|
- path_regex: secrets/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
key_groups:
|
||||||
|
age:
|
||||||
|
- *admin_kenji
|
||||||
|
- path_regex: secrets/azmidi/[^/]+\.(yaml|json|env|ini)$
|
||||||
|
key_groups:
|
||||||
|
age:
|
||||||
|
- *admin_kenji
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
abcd: hello-world
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
glxinfo
|
||||||
|
vulkan-tools
|
||||||
|
lact
|
||||||
|
];
|
||||||
|
systemd.packages = with pkgs; [
|
||||||
|
lact
|
||||||
|
];
|
||||||
|
systemd.services.lactd = {
|
||||||
|
enable = true;
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
programs.appimage = {
|
||||||
|
enable = true;
|
||||||
|
binfmt = true;
|
||||||
|
# If moondeck-buddy.AppImage requires specific libraries not included by default
|
||||||
|
# you might need to add them here. For example:
|
||||||
|
# package = pkgs.appimage-run.override {
|
||||||
|
# extraPkgs = pkgs: with pkgs; [
|
||||||
|
# # Add any missing libraries here, e.g.,
|
||||||
|
# # libthai
|
||||||
|
# # qt5.full
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{...}: {
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
grub = {
|
||||||
|
enable = true;
|
||||||
|
device = "nodev";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,107 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
lock-false = {
|
||||||
|
Value = false;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
lock-true = {
|
||||||
|
Value = true;
|
||||||
|
Status = "locked";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
programs = {
|
||||||
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
languagePacks = ["en-US"];
|
||||||
|
|
||||||
|
/*
|
||||||
|
---- POLICIES ----
|
||||||
|
*/
|
||||||
|
# Check about:policies#documentation for options.
|
||||||
|
policies = {
|
||||||
|
DisableTelemetry = true;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
EnableTrackingProtection = {
|
||||||
|
Value = true;
|
||||||
|
Locked = true;
|
||||||
|
Cryptomining = true;
|
||||||
|
Fingerprinting = true;
|
||||||
|
};
|
||||||
|
DisablePocket = true;
|
||||||
|
DisableFirefoxAccounts = true;
|
||||||
|
DisableAccounts = true;
|
||||||
|
DisableFirefoxScreenshots = true;
|
||||||
|
OverrideFirstRunPage = "";
|
||||||
|
OverridePostUpdatePage = "";
|
||||||
|
DontCheckDefaultBrowser = true;
|
||||||
|
DisplayBookmarksToolbar = "never"; # alternatives: "always" or "newtab"
|
||||||
|
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
|
||||||
|
SearchBar = "unified"; # alternative: "separate"
|
||||||
|
|
||||||
|
/*
|
||||||
|
---- EXTENSIONS ----
|
||||||
|
*/
|
||||||
|
# Check about:support for extension/add-on ID strings.
|
||||||
|
# Valid strings for installation_mode are "allowed", "blocked",
|
||||||
|
# "force_installed" and "normal_installed".
|
||||||
|
ExtensionSettings = {
|
||||||
|
"*".installation_mode = "blocked"; # blocks all addons except the ones specified below
|
||||||
|
# uBlock Origin:
|
||||||
|
"uBlock0@raymondhill.net" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/file/4493940/bitwarden_password_manager-2025.5.0.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
"tridactyl.vim@cmcaine.co.uk" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/file/4405615/tridactyl_vim-1.24.2.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
# Privacy Badger:
|
||||||
|
# "jid1-MnnxcxisBPnSXQ@jetpack" = {
|
||||||
|
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
|
||||||
|
# installation_mode = "force_installed";
|
||||||
|
# };
|
||||||
|
# 1Password:
|
||||||
|
# "{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
|
||||||
|
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
|
||||||
|
# installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
---- PREFERENCES ----
|
||||||
|
*/
|
||||||
|
# Check about:config for options.
|
||||||
|
preferences = {
|
||||||
|
# "browser.contentblocking.category" = {
|
||||||
|
# Value = "strict";
|
||||||
|
# Status = "locked";
|
||||||
|
# };
|
||||||
|
"browser.contentblocking.category" = "strict";
|
||||||
|
"extensions.pocket.enabled" = false;
|
||||||
|
"extensions.screenshots.disabled" = true;
|
||||||
|
"browser.topsites.contile.enabled" = false;
|
||||||
|
"browser.formfill.enable" = false;
|
||||||
|
"browser.search.suggest.enabled" = false;
|
||||||
|
"browser.search.suggest.enabled.private" = false;
|
||||||
|
"browser.urlbar.suggest.searches" = false;
|
||||||
|
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.snippets" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||||
|
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
busybox
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
python3Full
|
||||||
|
python3Packages.build
|
||||||
|
python3Packages.pip
|
||||||
|
python3Packages.installer
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
git
|
||||||
|
p7zip
|
||||||
|
tldr
|
||||||
|
jq
|
||||||
|
btop
|
||||||
|
rar
|
||||||
|
|
||||||
|
cloudflared
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{...}: {
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
unlisted-fonts = inputs.unlisted-fonts.packages.${pkgs.system};
|
||||||
|
in {
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
unlisted-fonts.rubik
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
material-symbols
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
};
|
||||||
|
environment.systemPackages = [
|
||||||
|
# inputs.nix-gaming.packages.${pkgs.system}.default
|
||||||
|
pkgs.protonup-qt
|
||||||
|
pkgs.geekbench
|
||||||
|
];
|
||||||
|
# programs.steam.platformOptimizations.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
hardware.graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true; # Crucial for 32-bit games
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
myConfig,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
hardware = {
|
||||||
|
logitech.wireless.enable = myConfig.linux.logitech-hardware.enable;
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs;
|
||||||
|
[
|
||||||
|
]
|
||||||
|
++ lib.optionals (myConfig.linux.logitech-hardware.enable == true) [
|
||||||
|
solaar
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
time.timeZone = "${myConfig.general.Timezone}";
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
networking.hostName = "${myConfig.general.Hostname}";
|
||||||
|
networking.networkmanager.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.bash = {
|
||||||
|
interactiveShellInit = ''
|
||||||
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||||
|
then
|
||||||
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
|
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
zsh.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{...}: {
|
||||||
|
security.polkit.enable = true;
|
||||||
|
security.polkit.extraConfig = ''
|
||||||
|
polkit.addRule(function(action, subject) {
|
||||||
|
if ((action.id == "org.corectrl.helper.gpu.set" ||
|
||||||
|
action.id == "org.corectrl.helper.gpu.apply") &&
|
||||||
|
subject.isInGroup("wheel")) {
|
||||||
|
return polkit.Result.YES;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{...}: {
|
||||||
|
services = {
|
||||||
|
openssh.enable = true;
|
||||||
|
libinput.enable = true;
|
||||||
|
blueman.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
# sensors.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.pavucontrol
|
||||||
|
];
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
|
||||||
|
lowLatency = {
|
||||||
|
# enable this module
|
||||||
|
enable = true;
|
||||||
|
# defaults (no need to be set unless modified)
|
||||||
|
quantum = 64;
|
||||||
|
rate = 48000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# make pipewire realtime-capable
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
sunshine
|
||||||
|
];
|
||||||
|
services.sunshine = {
|
||||||
|
enable = true;
|
||||||
|
autoStart = true;
|
||||||
|
capSysAdmin = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{...}: {
|
||||||
|
console = {
|
||||||
|
font = "Lat2-Terminus16";
|
||||||
|
useXkbConfig = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
users = {
|
||||||
|
defaultUserShell = pkgs.${myConfig.general.terminal.Shell};
|
||||||
|
users = {
|
||||||
|
${myConfig.general.Username} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = ["wheel" "networkmanager" "input" "corectrl" "video"];
|
||||||
|
initialHashedPassword = "$y$j9T$NHFtSwF4NJtEmgMjy4Xdg.$9WQltjEx3eEfZ7GbpGLW8lBhJtiXPOeIawrxdmx0.vB";
|
||||||
|
useDefaultShell = true;
|
||||||
|
packages = [
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
wl-clipboard
|
||||||
|
hypridle
|
||||||
|
hyprlock
|
||||||
|
brightnessctl
|
||||||
|
];
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
|
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||||
|
};
|
||||||
|
hardware = {
|
||||||
|
graphics.enable = true;
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
# displayManager.sddm.wayland = true;
|
||||||
|
displayManager.gdm.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user