mirror of
https://gitlab.com/upRootNutrition/dotfiles.git
synced 2025-06-15 09:35:12 -05:00
feat: init
This commit is contained in:
commit
96c6f790fc
804 changed files with 33411 additions and 0 deletions
1
.envrc
Executable file
1
.envrc
Executable file
|
@ -0,0 +1 @@
|
|||
use flake
|
4
.gitignore
vendored
Executable file
4
.gitignore
vendored
Executable file
|
@ -0,0 +1,4 @@
|
|||
.direnv
|
||||
.vscode
|
||||
.pre-commit-config.yaml
|
||||
result
|
7
.sops.yaml
Executable file
7
.sops.yaml
Executable file
|
@ -0,0 +1,7 @@
|
|||
keys:
|
||||
- &user0 age19dpncsdphdt2tmknjs99eghk527pvdrw0m29qjn2z2gg3et5tdtqycqhl0
|
||||
creation_rules:
|
||||
- path_regex: secrets/secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *user0
|
15
.zed/settings.json
Executable file
15
.zed/settings.json
Executable file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"languages": {
|
||||
"nix": {
|
||||
"enable_language_server": true
|
||||
}
|
||||
},
|
||||
"formatter": {
|
||||
"external": {
|
||||
"command": "nixfmt",
|
||||
"arguments": ["-"],
|
||||
"standalone": true
|
||||
}
|
||||
},
|
||||
"format_on_save": "on"
|
||||
}
|
67
README.md
Executable file
67
README.md
Executable file
|
@ -0,0 +1,67 @@
|
|||
# My NixOS Dotfiles
|
||||
|
||||
This is my current multi-system NixOS configuration.
|
||||
|
||||
## File Structure
|
||||
|
||||
### `lib/`
|
||||
|
||||
This defines two helper functions that make it easier to create configurations in the `flake`:
|
||||
|
||||
1. `mkHome`: Creates a Home Manager configuration (for managing user-specific settings and packages)
|
||||
2. `mkLinuxSystem`: Creates a NixOS system configuration (for managing system-wide settings)
|
||||
|
||||
Both functions take some modules (configuration files) as input and set up the necessary environment with some default settings, like allowing unfree packages and passing through important variables (inputs, config, etc.).
|
||||
|
||||
### `modules/config/`
|
||||
|
||||
This defines a configuration schema or template for managing various aspects of the system:
|
||||
|
||||
1. `people`: Creates records for user accounts, their SSH keys, emails, etc.
|
||||
2. `services`: Creates records for various services with their domains, hostnames, SSL certificates, etc.
|
||||
3. `machines`: Creates records for different devices with their mount points, IP addresses, and storage configurations
|
||||
4. `aesthetics`: Creates records for visual appearance settings like fonts, colours, and cursor properties
|
||||
|
||||
It's essentially creating a structured way to organize abstracted configuration data that is declared in multiple places throughout the system configuration.
|
||||
|
||||
### `modules/home/`
|
||||
|
||||
This defines home environment configurations for different users across different machines in a multi-user, multi-device setup. It's using NixOS's home-manager functionality to manage user-specific configurations. Essentially, this is a configuration file that determines which software and configurations each user gets on each machine, allowing for personalized but reproducible user environments across the system.
|
||||
|
||||
### `modules/nixos/`
|
||||
|
||||
This defines a set of NixOS modules that are used to configure different systems. Each system has its own set of module imports that define what features or services are enabled on that system, as well as some shared modules. The file uses a helper function `directoryImport` (imported from ../helpers.nix) to import all the module definitions from the current directory. This allows for modular system configuration where different machines can easily inherit different sets of features and services. These modules are used in the `flake`.
|
||||
|
||||
### `parts/`
|
||||
|
||||
This defines the development environment configuration for the project, which includes:
|
||||
|
||||
1. `devshells`: Creates a default development shell with several development tools.
|
||||
2. `pre-commit`: Creates pre-commit hooks that run before git commits.
|
||||
|
||||
This setup ensures that anyone working on this project has access to the same development tools and follows the same code formatting and commit message standards.
|
||||
|
||||
### `profiles/`
|
||||
|
||||
This defines NIxOS user configurations and their respective homes. Each profile is designed to be imported into each system configuration via the `flake`, with different settings and tools based on the user's needs and preferences. It also uses `systemd.tmpfiles` to declare custom home folder structures.
|
||||
|
||||
### `secrets/`
|
||||
|
||||
This contains encrypted secrets and credentials using `sops-nix`. This is a security-sensitive file that should be handled carefully as it contains encrypted credentials for multiple services and systems.
|
||||
|
||||
### `systems/`
|
||||
|
||||
This defines the system configurations for different machines. Each machine has similar configuration structure but with specific customizations. The system naming schema follows a celestial convention, with desktops being named after planets, laptops after moons, and servers after dwarf planets. The `fileSystems` configurations include helper functions for easily configuring mounts for internal storage, Synology, and samba drives.
|
||||
|
||||
### `templates/`
|
||||
|
||||
This defines flake-based development environment templates for projects written in different programming languages, such as Elm and Haskell. This setup also makes use of `devshells` and is designed for developers who want to quickly bootstrap projects with a complete development environment using Nix for reproducibility and dependency management.
|
||||
|
||||
### `flake.nix`
|
||||
|
||||
This defines the core of the NixOS configuration using helper functions from `lib/`, which is organized as a flake-parts-based structure for better modularity:
|
||||
|
||||
1. `inputs`: Declares all external dependencies including, such as core Nix components (`nixpkgs`, `flake-parts`, `systems`) and user environment components (`home-manager`, `sops-nix`).
|
||||
2. `outputs`: Uses flake-parts to organize system configurations for multiple machines (`mars`, `venus`, `deimos`, `charon`, and `ceres`) and shared modules (`core`, `mantle`, `crust`) imported across systems.
|
||||
|
||||
Each system imports specialized modules and user profiles based on its intended purpose and users, creating a flexible but consistent configuration framework across multiple machines.
|
1772
flake.lock
generated
Executable file
1772
flake.lock
generated
Executable file
File diff suppressed because it is too large
Load diff
153
flake.nix
Executable file
153
flake.nix
Executable file
|
@ -0,0 +1,153 @@
|
|||
{
|
||||
description = "Nick's Big Fat Flakey Sausage";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
lix-module = {
|
||||
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0.tar.gz";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
flake-parts = {
|
||||
url = "github:hercules-ci/flake-parts";
|
||||
inputs.nixpkgs-lib.follows = "nixpkgs";
|
||||
};
|
||||
systems.url = "github:nix-systems/x86_64-linux";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
ngipkgs.url = "github:ngi-nix/ngipkgs";
|
||||
ghostty = {
|
||||
url = "github:ghostty-org/ghostty";
|
||||
};
|
||||
nur = {
|
||||
url = "github:nix-community/NUR";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
pre-commit-hooks-nix = {
|
||||
url = "github:cachix/pre-commit-hooks.nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
yazi.url = "github:sxyazi/yazi";
|
||||
helix = {
|
||||
url = "github:helix-editor/helix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
|
||||
hyprland = {
|
||||
url = "github:hyprwm/Hyprland";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
hyprland-portal = {
|
||||
url = "github:hyprwm/xdg-desktop-portal-hyprland";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
waybar = {
|
||||
url = "github:Alexays/Waybar";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
zed-editor = {
|
||||
url = "github:zed-industries/zed";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
outputs =
|
||||
inputs:
|
||||
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
|
||||
imports = [
|
||||
inputs.pre-commit-hooks-nix.flakeModule
|
||||
./lib
|
||||
./modules
|
||||
./parts
|
||||
];
|
||||
|
||||
flake =
|
||||
{ config, ... }:
|
||||
{
|
||||
nixosConfigurations = {
|
||||
mars = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/mars
|
||||
./profiles/user0
|
||||
./profiles/user1
|
||||
./profiles/user3
|
||||
config.nixosModules.mars
|
||||
config.nixosModules.core
|
||||
config.nixosModules.mantle
|
||||
config.nixosModules.crust
|
||||
inputs.nixos-cosmic.nixosModules.default
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.lix-module.nixosModules.default
|
||||
inputs.nur.modules.nixos.default
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
venus = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/venus
|
||||
./profiles/user2
|
||||
config.nixosModules.venus
|
||||
config.nixosModules.core
|
||||
config.nixosModules.mantle
|
||||
config.nixosModules.crust
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.lix-module.nixosModules.default
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
deimos = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/deimos
|
||||
./profiles/user0
|
||||
./profiles/user1
|
||||
./profiles/user2
|
||||
config.nixosModules.deimos
|
||||
config.nixosModules.core
|
||||
config.nixosModules.mantle
|
||||
config.nixosModules.crust
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.lix-module.nixosModules.default
|
||||
inputs.nur.modules.nixos.default
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
charon = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/charon
|
||||
./profiles/user1
|
||||
config.nixosModules.charon
|
||||
config.nixosModules.core
|
||||
config.nixosModules.crust
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.lix-module.nixosModules.default
|
||||
];
|
||||
ceres = inputs.self.lib.mkLinuxSystem [
|
||||
./systems/ceres
|
||||
./profiles/user0
|
||||
config.nixosModules.ceres
|
||||
config.nixosModules.core
|
||||
config.nixosModules.mantle
|
||||
inputs.home-manager.nixosModules.home-manager
|
||||
inputs.lix-module.nixosModules.default
|
||||
inputs.ngipkgs.nixosModules."services.peertube"
|
||||
inputs.ngipkgs.nixosModules.default
|
||||
inputs.sops-nix.nixosModules.sops
|
||||
];
|
||||
};
|
||||
templates = {
|
||||
elm = {
|
||||
path = ./templates/elm;
|
||||
description = "Elm Environment";
|
||||
};
|
||||
haskell = {
|
||||
path = ./templates/haskell;
|
||||
description = "Haskell Environment";
|
||||
};
|
||||
typst = {
|
||||
path = ./templates/typst;
|
||||
description = "Typst Environment";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systems = import inputs.systems;
|
||||
};
|
||||
}
|
44
lib/default.nix
Executable file
44
lib/default.nix
Executable file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
config,
|
||||
inputs,
|
||||
self,
|
||||
...
|
||||
}:
|
||||
{
|
||||
flake.lib = {
|
||||
mkHome =
|
||||
modules: system:
|
||||
inputs.home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import inputs.nixpkgs {
|
||||
inherit
|
||||
system
|
||||
;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
extraSpecialArgs = {
|
||||
inherit
|
||||
inputs
|
||||
;
|
||||
};
|
||||
inherit
|
||||
modules
|
||||
;
|
||||
};
|
||||
mkLinuxSystem =
|
||||
modules:
|
||||
inputs.nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
flake = {
|
||||
inherit
|
||||
config
|
||||
inputs
|
||||
self
|
||||
;
|
||||
};
|
||||
};
|
||||
inherit
|
||||
modules
|
||||
;
|
||||
};
|
||||
};
|
||||
}
|
178
modules/config/default.nix
Executable file
178
modules/config/default.nix
Executable file
|
@ -0,0 +1,178 @@
|
|||
{ lib, ... }:
|
||||
let
|
||||
stringType = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
};
|
||||
intType = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
};
|
||||
listType = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
};
|
||||
attrList = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
};
|
||||
|
||||
numOptions = 20;
|
||||
|
||||
genOptions =
|
||||
config: prefix:
|
||||
builtins.listToAttrs (
|
||||
map (i: {
|
||||
name = "${prefix}${toString i}";
|
||||
value = config;
|
||||
}) (builtins.genList (i: i) numOptions)
|
||||
);
|
||||
|
||||
mkOptionsFromDir =
|
||||
path:
|
||||
builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
name = builtins.substring 0 (builtins.stringLength name - 4) name;
|
||||
value = stringType;
|
||||
})
|
||||
(
|
||||
builtins.filter (name: builtins.match ".*\\.nix$" name != null) (
|
||||
builtins.attrNames (builtins.readDir path)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
userSubmodule = lib.types.submodule {
|
||||
options = {
|
||||
name = stringType;
|
||||
label = stringType;
|
||||
sshKeys = listType;
|
||||
group = stringType;
|
||||
aliases = genOptions stringType "name";
|
||||
email = genOptions stringType "address";
|
||||
paths = genOptions stringType "path";
|
||||
};
|
||||
};
|
||||
|
||||
instanceSubmodule = lib.types.submodule {
|
||||
options = {
|
||||
subdomain = stringType;
|
||||
label = stringType;
|
||||
name = stringType;
|
||||
hostname = stringType;
|
||||
domains = genOptions stringType "url";
|
||||
dns = genOptions stringType "provider";
|
||||
localhost = genOptions stringType "address";
|
||||
email = genOptions stringType "address";
|
||||
sops = genOptions stringType "path";
|
||||
paths = genOptions stringType "path";
|
||||
ports = genOptions intType "port";
|
||||
ssl = {
|
||||
cert = stringType;
|
||||
key = stringType;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
deviceSubmodule = lib.types.submodule {
|
||||
options =
|
||||
let
|
||||
mountConfig = {
|
||||
mount = stringType;
|
||||
device = stringType;
|
||||
options = listType;
|
||||
};
|
||||
in
|
||||
{
|
||||
boot = mountConfig;
|
||||
ip = genOptions stringType "address";
|
||||
label = stringType;
|
||||
name = stringType;
|
||||
sync = genOptions stringType "address";
|
||||
}
|
||||
// genOptions mountConfig "folder"
|
||||
// genOptions mountConfig "samba"
|
||||
// genOptions mountConfig "storage";
|
||||
};
|
||||
|
||||
themesSubmodule = lib.types.submodule {
|
||||
options = {
|
||||
currentTheme = genOptions stringType "theme";
|
||||
fonts = {
|
||||
names = genOptions stringType "name";
|
||||
sizes = {
|
||||
applications = genOptions intType "size";
|
||||
desktop = genOptions intType "size";
|
||||
popups = genOptions intType "size";
|
||||
terminal = genOptions intType "size";
|
||||
};
|
||||
};
|
||||
cursor = {
|
||||
name = stringType;
|
||||
size = intType;
|
||||
};
|
||||
palettes = lib.mkOption {
|
||||
type = lib.types.attrsOf (
|
||||
lib.types.submodule {
|
||||
options = {
|
||||
colours = attrList;
|
||||
font = stringType;
|
||||
};
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options = mkOptionsFromDir ./instances/config // {
|
||||
instances = lib.mkOption {
|
||||
type = lib.types.attrsOf instanceSubmodule;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
machines = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options =
|
||||
let
|
||||
devicesPath = ./devices/config;
|
||||
printerPath = devicesPath + /printers;
|
||||
in
|
||||
mkOptionsFromDir devicesPath
|
||||
// mkOptionsFromDir printerPath
|
||||
// {
|
||||
devices = lib.mkOption {
|
||||
type = lib.types.attrsOf deviceSubmodule;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
people = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options = mkOptionsFromDir ./users/config // {
|
||||
users = lib.mkOption {
|
||||
type = lib.types.attrsOf userSubmodule;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
aesthetics = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options = mkOptionsFromDir ./themes // {
|
||||
themes = lib.mkOption {
|
||||
type = themesSubmodule;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
people = import ./users;
|
||||
services = import ./instances;
|
||||
machines = import ./devices;
|
||||
aesthetics = import ./themes;
|
||||
};
|
||||
}
|
36
modules/config/devices/config/ceres.nix
Executable file
36
modules/config/devices/config/ceres.nix
Executable file
|
@ -0,0 +1,36 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
fileModeAndDirMode
|
||||
ownerExclusiveReadWriteMask
|
||||
readWritePermissions
|
||||
sambaPermissions
|
||||
userIdForUser0
|
||||
ceresIP
|
||||
;
|
||||
ceresName = "ceres";
|
||||
ceresStorageDriveName = "NAS1";
|
||||
in
|
||||
{
|
||||
label = "Ceres";
|
||||
name = ceresName;
|
||||
sync = {
|
||||
address0 = "";
|
||||
};
|
||||
ip = {
|
||||
address0 = ceresIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerExclusiveReadWriteMask;
|
||||
};
|
||||
storage0 = {
|
||||
mount = "/mnt/media/${ceresStorageDriveName}";
|
||||
device = "/dev/disk/by-label/${ceresStorageDriveName}";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
samba0 = {
|
||||
mount = "/mnt/media/${ceresName}";
|
||||
device = "//${ceresIP}";
|
||||
options = sambaPermissions ++ fileModeAndDirMode ++ userIdForUser0;
|
||||
};
|
||||
}
|
20
modules/config/devices/config/charon.nix
Executable file
20
modules/config/devices/config/charon.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
ownerExclusiveReadWriteMask
|
||||
charonIP
|
||||
;
|
||||
in
|
||||
{
|
||||
label = "Charon";
|
||||
name = "charon";
|
||||
sync = {
|
||||
address0 = "";
|
||||
};
|
||||
ip = {
|
||||
address0 = charonIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerExclusiveReadWriteMask;
|
||||
};
|
||||
}
|
20
modules/config/devices/config/deimos.nix
Executable file
20
modules/config/devices/config/deimos.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
ownerWriteOthersReadMask
|
||||
deimosIP
|
||||
;
|
||||
in
|
||||
{
|
||||
label = "Deimos";
|
||||
name = "deimos";
|
||||
sync = {
|
||||
address0 = deimosIP;
|
||||
};
|
||||
ip = {
|
||||
address0 = deimosIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerWriteOthersReadMask;
|
||||
};
|
||||
}
|
31
modules/config/devices/config/mars.nix
Executable file
31
modules/config/devices/config/mars.nix
Executable file
|
@ -0,0 +1,31 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
ownerWriteOthersReadMask
|
||||
readWritePermissions
|
||||
marsIP
|
||||
;
|
||||
in
|
||||
{
|
||||
label = "Mars";
|
||||
name = "mars";
|
||||
sync = {
|
||||
address0 = "";
|
||||
};
|
||||
ip = {
|
||||
address0 = marsIP;
|
||||
};
|
||||
boot = {
|
||||
options = ownerWriteOthersReadMask;
|
||||
};
|
||||
storage0 = {
|
||||
mount = "/mnt/media/games";
|
||||
device = "/dev/disk/by-label/Games";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
storage1 = {
|
||||
mount = "/mnt/media/storage";
|
||||
device = "/dev/disk/by-label/Storage";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
}
|
18
modules/config/devices/config/phone.nix
Executable file
18
modules/config/devices/config/phone.nix
Executable file
|
@ -0,0 +1,18 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
phoneIP
|
||||
dummy
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "pixel";
|
||||
label = dummy;
|
||||
sync = {
|
||||
address0 = "RMDKNJY-BTX6FYF-G6SR332-WS6HARI-PF74SC6-VPBSGRQ-MKVQZEQ-KSIB6QV"; # User0
|
||||
address1 = "RUKSHY4-UCBYRVG-CVYFCMU-M3NLA3Q-JINRF5V-YPR5W32-TEIBJN6-DNQRCAR"; # User2
|
||||
};
|
||||
ip = {
|
||||
address0 = phoneIP;
|
||||
};
|
||||
}
|
13
modules/config/devices/config/printers/printer0.nix
Executable file
13
modules/config/devices/config/printers/printer0.nix
Executable file
|
@ -0,0 +1,13 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
dummy
|
||||
;
|
||||
in
|
||||
{
|
||||
name = dummy;
|
||||
label = "Canon-TR7620a";
|
||||
ip = {
|
||||
address0 = "";
|
||||
};
|
||||
}
|
14
modules/config/devices/config/printers/printer1.nix
Executable file
14
modules/config/devices/config/printers/printer1.nix
Executable file
|
@ -0,0 +1,14 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
brotherIP
|
||||
dummy
|
||||
;
|
||||
in
|
||||
{
|
||||
name = dummy;
|
||||
label = "Brother-HL-2170W";
|
||||
ip = {
|
||||
address0 = brotherIP;
|
||||
};
|
||||
}
|
53
modules/config/devices/config/synology.nix
Executable file
53
modules/config/devices/config/synology.nix
Executable file
|
@ -0,0 +1,53 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
sambaPermissions
|
||||
userIdForUser0
|
||||
userIdForUser1
|
||||
userIdForUser3
|
||||
synologyIP
|
||||
;
|
||||
|
||||
user0 = "nick";
|
||||
user1 = "garnet";
|
||||
user3 = "streaming";
|
||||
user0Name = "Nick";
|
||||
user1Name = "Garnet";
|
||||
user3Name = "Streaming";
|
||||
synologyName = "synology";
|
||||
in
|
||||
{
|
||||
label = "Synology";
|
||||
sync = {
|
||||
address0 = "MWRGX2V-F5XKE5E-REP6ECT-OOPFBMF-22NHSMW-YFBU6MB-PLFUN63-R3MW2QX"; # User0
|
||||
address1 = ""; # User2
|
||||
};
|
||||
name = synologyName;
|
||||
ip = {
|
||||
address0 = synologyIP;
|
||||
};
|
||||
# Nick Home Folder
|
||||
folder0 = {
|
||||
mount = "/mnt/media/${synologyName}/${user0}";
|
||||
device = "//${synologyIP}/homes/${user0Name}";
|
||||
options = sambaPermissions ++ userIdForUser0;
|
||||
};
|
||||
# Garnet Home Folder
|
||||
folder1 = {
|
||||
mount = "/mnt/media/${synologyName}/${user1}";
|
||||
device = "//${synologyIP}/homes/${user1Name}";
|
||||
options = sambaPermissions ++ userIdForUser1;
|
||||
};
|
||||
# Minecraft Worlds
|
||||
folder2 = {
|
||||
mount = "/home/${user1}/.local/share/PrismLauncher/instances/1.21/.minecraft/saves";
|
||||
device = "//${synologyIP}/homes/${user1Name}/Minecraft";
|
||||
options = sambaPermissions ++ userIdForUser1;
|
||||
};
|
||||
# Streaming Folder
|
||||
folder3 = {
|
||||
mount = "/mnt/media/${synologyName}/${user3}";
|
||||
device = "//${synologyIP}/homes/${user0Name}";
|
||||
options = sambaPermissions ++ userIdForUser3;
|
||||
};
|
||||
}
|
33
modules/config/devices/config/venus.nix
Executable file
33
modules/config/devices/config/venus.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ devicesFunctions }:
|
||||
let
|
||||
inherit (devicesFunctions)
|
||||
readWritePermissions
|
||||
venusIP
|
||||
;
|
||||
drivePath = "/run/media";
|
||||
byLabel = "/dev/disk/by-label";
|
||||
|
||||
in
|
||||
{
|
||||
label = "Venus";
|
||||
name = "venus";
|
||||
ip = {
|
||||
address0 = venusIP;
|
||||
};
|
||||
boot = {
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
storage0 = {
|
||||
mount = "${drivePath}/games";
|
||||
device = "${byLabel}/Games";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
storage1 = {
|
||||
mount = "${drivePath}/entertainment";
|
||||
device = "${byLabel}/Entertainment";
|
||||
options = readWritePermissions;
|
||||
};
|
||||
}
|
87
modules/config/devices/default.nix
Executable file
87
modules/config/devices/default.nix
Executable file
|
@ -0,0 +1,87 @@
|
|||
let
|
||||
configPath = ./config;
|
||||
printerPath = configPath + /printers;
|
||||
|
||||
devicesFunctions = {
|
||||
ownerWriteOthersReadMask = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
ownerExclusiveReadWriteMask = [
|
||||
"fmask=0077"
|
||||
"dmask=0077"
|
||||
];
|
||||
readWritePermissions = [
|
||||
"rw"
|
||||
];
|
||||
sambaPermissions = [
|
||||
"rw"
|
||||
"gid=100"
|
||||
"vers=3.0"
|
||||
"x-systemd.automount"
|
||||
"x-systemd.requires=network-online.target"
|
||||
];
|
||||
fileModeAndDirMode = [
|
||||
"file_mode=0644"
|
||||
"dir_mode=0755"
|
||||
];
|
||||
userIdForUser0 = [
|
||||
"uid=1000"
|
||||
];
|
||||
userIdForUser1 = [
|
||||
"uid=1001"
|
||||
];
|
||||
userIdForUser3 = [
|
||||
"uid=1002"
|
||||
];
|
||||
dummy = [
|
||||
];
|
||||
ceresIP = "192.168.50.140";
|
||||
charonIP = "192.168.50.42";
|
||||
deimosIP = "192.168.50.142";
|
||||
marsIP = "192.168.50.196";
|
||||
phoneIP = "192.168.50.243";
|
||||
synologyIP = "192.168.50.209";
|
||||
venusIP = "192.168.58.104";
|
||||
brotherIP = "192.168.50.195";
|
||||
};
|
||||
|
||||
deviceswithFunctions = builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
name = builtins.substring 0 (builtins.stringLength name - 4) name;
|
||||
value = import (configPath + "/${name}") {
|
||||
inherit
|
||||
devicesFunctions
|
||||
;
|
||||
};
|
||||
})
|
||||
(
|
||||
builtins.filter (name: builtins.match ".*\\.nix$" name != null) (
|
||||
builtins.attrNames (builtins.readDir configPath)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
devicesPrinters = builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
name = builtins.substring 0 (builtins.stringLength name - 4) name;
|
||||
value = import (printerPath + "/${name}") {
|
||||
inherit
|
||||
devicesFunctions
|
||||
;
|
||||
};
|
||||
})
|
||||
(
|
||||
builtins.filter (name: builtins.match ".*\\.nix$" name != null) (
|
||||
builtins.attrNames (builtins.readDir printerPath)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
devices = deviceswithFunctions // devicesPrinters;
|
||||
in
|
||||
{
|
||||
devices = devices;
|
||||
}
|
20
modules/config/instances/config/acme.nix
Executable file
20
modules/config/instances/config/acme.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
acmeLabel = "Acme";
|
||||
acmeName = "acme";
|
||||
in
|
||||
{
|
||||
label = acmeLabel;
|
||||
name = acmeName;
|
||||
paths = {
|
||||
path0 = sslPath;
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${acmeName}";
|
||||
};
|
||||
}
|
30
modules/config/instances/config/audiobookshelf.nix
Executable file
30
modules/config/instances/config/audiobookshelf.nix
Executable file
|
@ -0,0 +1,30 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
audiobookshelfLabel
|
||||
audiobookshelfName
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
audiobookshelfSubdomain = "books";
|
||||
in
|
||||
{
|
||||
label = audiobookshelfLabel;
|
||||
name = audiobookshelfName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${audiobookshelfName}";
|
||||
};
|
||||
subdomain = audiobookshelfSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${audiobookshelfLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8000;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${audiobookshelfSubdomain}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${audiobookshelfSubdomain}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
20
modules/config/instances/config/caddy.nix
Executable file
20
modules/config/instances/config/caddy.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
sopsPath
|
||||
;
|
||||
|
||||
caddyLabel = "Caddy";
|
||||
caddyName = "caddy";
|
||||
in
|
||||
{
|
||||
label = caddyLabel;
|
||||
name = caddyName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${caddyName}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 80;
|
||||
port1 = 443;
|
||||
};
|
||||
}
|
34
modules/config/instances/config/forgejo.nix
Executable file
34
modules/config/instances/config/forgejo.nix
Executable file
|
@ -0,0 +1,34 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
forgejoLabel = "Forgejo";
|
||||
forgejoName = "forgejo";
|
||||
forgejoSubdomain = "source";
|
||||
in
|
||||
{
|
||||
label = forgejoLabel;
|
||||
name = forgejoName;
|
||||
email = {
|
||||
address0 = "noreply@${domain3}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${forgejoName}";
|
||||
};
|
||||
subdomain = forgejoSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${forgejoLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 3033;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${forgejoSubdomain}.${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${forgejoSubdomain}.${domain3}/key.pem";
|
||||
};
|
||||
}
|
31
modules/config/instances/config/jellyfin.nix
Executable file
31
modules/config/instances/config/jellyfin.nix
Executable file
|
@ -0,0 +1,31 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
jellyfinLabel
|
||||
jellyfinName
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
in
|
||||
{
|
||||
label = jellyfinLabel;
|
||||
name = jellyfinName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${jellyfinName}";
|
||||
};
|
||||
subdomain = jellyfinName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${jellyfinLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 5055; # Jellyseer
|
||||
port1 = 8096; # Jellyfin HTTP
|
||||
port2 = 8920; # Jellyfin HTTPS
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${jellyfinName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${jellyfinName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
33
modules/config/instances/config/mastodon.nix
Executable file
33
modules/config/instances/config/mastodon.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
mastodonLabel = "Mastodon";
|
||||
mastodonName = "mastodon";
|
||||
mastodonSubdomain = "social";
|
||||
in
|
||||
{
|
||||
label = mastodonLabel;
|
||||
name = mastodonName;
|
||||
email = {
|
||||
address0 = "noreply@${domain3}";
|
||||
};
|
||||
subdomain = mastodonSubdomain;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${mastodonName}";
|
||||
};
|
||||
paths = {
|
||||
path0 = "${servicePath}/${mastodonLabel}";
|
||||
path1 = "";
|
||||
path2 = "";
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${mastodonSubdomain}.${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${mastodonSubdomain}.${domain3}/key.pem";
|
||||
};
|
||||
}
|
23
modules/config/instances/config/matrix.nix
Executable file
23
modules/config/instances/config/matrix.nix
Executable file
|
@ -0,0 +1,23 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
servicePath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
matrixLabel = "Matrix";
|
||||
matrixName = "matrix";
|
||||
in
|
||||
{
|
||||
label = matrixLabel;
|
||||
name = matrixName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${matrixName}";
|
||||
};
|
||||
subdomain = matrixName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${matrixLabel}";
|
||||
path1 = "";
|
||||
path2 = "";
|
||||
};
|
||||
}
|
30
modules/config/instances/config/minecraft.nix
Executable file
30
modules/config/instances/config/minecraft.nix
Executable file
|
@ -0,0 +1,30 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
minecraftLabel = "Minecraft";
|
||||
minecraftName = "minecraft";
|
||||
in
|
||||
{
|
||||
label = minecraftLabel;
|
||||
name = minecraftName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${minecraftName}";
|
||||
};
|
||||
subdomain = minecraftName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${minecraftLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 43000; # Minecraft (Brix on Nix)
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${minecraftName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${minecraftName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
30
modules/config/instances/config/nextcloud.nix
Executable file
30
modules/config/instances/config/nextcloud.nix
Executable file
|
@ -0,0 +1,30 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain1
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
nextcloudLabel = "Nextcloud";
|
||||
nextcloudName = "nextcloud";
|
||||
in
|
||||
{
|
||||
label = nextcloudLabel;
|
||||
name = nextcloudName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${nextcloudName}";
|
||||
};
|
||||
subdomain = nextcloudName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${nextcloudLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8354; # Nextcloud
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${nextcloudName}.${domain1}/fullchain.pem";
|
||||
key = "${sslPath}/${nextcloudName}.${domain1}/key.pem";
|
||||
};
|
||||
}
|
32
modules/config/instances/config/ollama.nix
Executable file
32
modules/config/instances/config/ollama.nix
Executable file
|
@ -0,0 +1,32 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
ollamaLabel = "Ollama";
|
||||
ollamaName = "ollama";
|
||||
in
|
||||
{
|
||||
label = ollamaLabel;
|
||||
name = ollamaName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${ollamaName}";
|
||||
};
|
||||
subdomain = ollamaName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${ollamaLabel}";
|
||||
path1 = "/mnt/media/storage/${ollamaName}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8088; # Open-WebUI (Ollama Front End)
|
||||
port1 = 11434; # Ollama API
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${ollamaName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${ollamaName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
33
modules/config/instances/config/owncast.nix
Executable file
33
modules/config/instances/config/owncast.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain1
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
owncastLabel = "Owncast";
|
||||
owncastName = "owncast";
|
||||
owncastSubdomain = "stream";
|
||||
in
|
||||
{
|
||||
label = owncastLabel;
|
||||
name = owncastName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${owncastName}";
|
||||
};
|
||||
subdomain = owncastSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${owncastLabel}";
|
||||
path1 = "/mnt/media/storage/${owncastName}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 9454;
|
||||
port1 = 1935;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${owncastSubdomain}.${domain1}/fullchain.pem";
|
||||
key = "${sslPath}/${owncastSubdomain}.${domain1}/key.pem";
|
||||
};
|
||||
}
|
38
modules/config/instances/config/peertube.nix
Executable file
38
modules/config/instances/config/peertube.nix
Executable file
|
@ -0,0 +1,38 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
peertubeLabel = "PeerTube";
|
||||
peertubeName = "peertube";
|
||||
peertubeSubdomain = "video";
|
||||
in
|
||||
{
|
||||
label = peertubeLabel;
|
||||
name = peertubeName;
|
||||
email = {
|
||||
address0 = "noreply@${domain3}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${peertubeName}";
|
||||
};
|
||||
subdomain = peertubeSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${peertubeLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 9000; # HTTP
|
||||
port1 = 1935;
|
||||
port2 = 1936;
|
||||
port3 = 5432;
|
||||
port4 = 52800;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${peertubeSubdomain}.${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${peertubeSubdomain}.${domain3}/key.pem";
|
||||
};
|
||||
}
|
27
modules/config/instances/config/postfix.nix
Executable file
27
modules/config/instances/config/postfix.nix
Executable file
|
@ -0,0 +1,27 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
postfixLabel = "Postfix";
|
||||
postfixName = "postfix";
|
||||
in
|
||||
{
|
||||
label = postfixLabel;
|
||||
name = postfixName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${postfixName}";
|
||||
};
|
||||
subdomain = postfixName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${postfixLabel}";
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${domain3}/key.pem";
|
||||
};
|
||||
}
|
23
modules/config/instances/config/postgresql.nix
Executable file
23
modules/config/instances/config/postgresql.nix
Executable file
|
@ -0,0 +1,23 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
servicePath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
postgresLabel = "PostgreSQL";
|
||||
postgresName = "postgres";
|
||||
in
|
||||
{
|
||||
label = postgresLabel;
|
||||
name = postgresName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${postgresName}";
|
||||
};
|
||||
paths = {
|
||||
path0 = "${servicePath}/${postgresLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 5432;
|
||||
};
|
||||
}
|
21
modules/config/instances/config/samba.nix
Executable file
21
modules/config/instances/config/samba.nix
Executable file
|
@ -0,0 +1,21 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
sopsPath
|
||||
;
|
||||
|
||||
sambaLabel = "Samba";
|
||||
sambaName = "samba";
|
||||
in
|
||||
{
|
||||
label = sambaLabel;
|
||||
name = sambaName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${sambaName}";
|
||||
};
|
||||
paths = {
|
||||
};
|
||||
ports = {
|
||||
port0 = 445; # Samba
|
||||
};
|
||||
}
|
34
modules/config/instances/config/searx.nix
Executable file
34
modules/config/instances/config/searx.nix
Executable file
|
@ -0,0 +1,34 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
searxLabel = "SearXNG";
|
||||
searxName = "searx";
|
||||
searxSubdomain = "search";
|
||||
in
|
||||
{
|
||||
label = searxLabel;
|
||||
name = searxName;
|
||||
email = {
|
||||
address0 = "noreply@${domain0}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${searxName}";
|
||||
};
|
||||
subdomain = searxSubdomain;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${searxLabel}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8888;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${searxSubdomain}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${searxSubdomain}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
13
modules/config/instances/config/smtp.nix
Executable file
13
modules/config/instances/config/smtp.nix
Executable file
|
@ -0,0 +1,13 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
dummy
|
||||
;
|
||||
in
|
||||
{
|
||||
hostname = "mail.smtp2go.com";
|
||||
name = dummy;
|
||||
ports = {
|
||||
port0 = 2525;
|
||||
};
|
||||
}
|
28
modules/config/instances/config/syncthing.nix
Executable file
28
modules/config/instances/config/syncthing.nix
Executable file
|
@ -0,0 +1,28 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
syncthingLabel = "Syncthing";
|
||||
syncthingName = "syncthing";
|
||||
in
|
||||
{
|
||||
label = syncthingLabel;
|
||||
name = syncthingName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${syncthingName}";
|
||||
};
|
||||
subdomain = syncthingName;
|
||||
ports = {
|
||||
port0 = 8388; # Syncthing (WebUI)
|
||||
port1 = 21027; # Syncthing (Discovery)
|
||||
port2 = 22000; # Syncthing (Transfer)
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${syncthingName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${syncthingName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
19
modules/config/instances/config/synology.nix
Executable file
19
modules/config/instances/config/synology.nix
Executable file
|
@ -0,0 +1,19 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
sopsPath
|
||||
;
|
||||
|
||||
synologyLabel = "Synology";
|
||||
synologyName = "synology";
|
||||
in
|
||||
{
|
||||
label = synologyLabel;
|
||||
name = synologyName;
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${synologyName}";
|
||||
};
|
||||
ports = {
|
||||
port0 = 5001; # Synology HTTPS
|
||||
};
|
||||
}
|
33
modules/config/instances/config/upRootNutrition.nix
Executable file
33
modules/config/instances/config/upRootNutrition.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain3
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
upRootNutritionLabel = "upRootNutrition";
|
||||
upRootNutritionName = "uprootnutrition";
|
||||
in
|
||||
{
|
||||
label = upRootNutritionLabel;
|
||||
name = upRootNutritionName;
|
||||
email = {
|
||||
address0 = "nick@${domain3}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${upRootNutritionName}";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/var/lib/website/dist";
|
||||
path1 = "";
|
||||
path2 = "";
|
||||
};
|
||||
ports = {
|
||||
port0 = 1234;
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${domain3}/fullchain.pem";
|
||||
key = "${sslPath}/${domain3}/key.pem";
|
||||
};
|
||||
}
|
33
modules/config/instances/config/vaultwarden.nix
Executable file
33
modules/config/instances/config/vaultwarden.nix
Executable file
|
@ -0,0 +1,33 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
servicePath
|
||||
sslPath
|
||||
sopsPath
|
||||
;
|
||||
|
||||
vaultwardenLabel = "Vaultwarden";
|
||||
vaultwardenName = "vaultwarden";
|
||||
in
|
||||
{
|
||||
label = vaultwardenLabel;
|
||||
name = vaultwardenName;
|
||||
email = {
|
||||
address0 = "noreply@${vaultwardenName}.${domain0}";
|
||||
};
|
||||
sops = {
|
||||
path0 = "${sopsPath}/${vaultwardenName}";
|
||||
};
|
||||
subdomain = vaultwardenName;
|
||||
paths = {
|
||||
path0 = "${servicePath}/${vaultwardenLabel}/BackupDir";
|
||||
};
|
||||
ports = {
|
||||
port0 = 8085; # Vaultwarden WebUI
|
||||
};
|
||||
ssl = {
|
||||
cert = "${sslPath}/${vaultwardenName}.${domain0}/fullchain.pem";
|
||||
key = "${sslPath}/${vaultwardenName}.${domain0}/key.pem";
|
||||
};
|
||||
}
|
26
modules/config/instances/config/web.nix
Executable file
26
modules/config/instances/config/web.nix
Executable file
|
@ -0,0 +1,26 @@
|
|||
{ instancesFunctions }:
|
||||
let
|
||||
inherit (instancesFunctions)
|
||||
domain0
|
||||
domain1
|
||||
domain2
|
||||
domain3
|
||||
;
|
||||
in
|
||||
{
|
||||
domains = {
|
||||
url0 = domain0;
|
||||
url1 = domain1;
|
||||
url2 = domain2;
|
||||
url3 = domain3;
|
||||
};
|
||||
dns = {
|
||||
provider0 = "namecheap";
|
||||
};
|
||||
localhost = {
|
||||
address0 = "127.0.0.1"; # Local
|
||||
address1 = "0.0.0.0"; # All
|
||||
address2 = "192.168.50.1"; # Router
|
||||
address3 = "192.168.50.0"; # Router
|
||||
};
|
||||
}
|
39
modules/config/instances/default.nix
Executable file
39
modules/config/instances/default.nix
Executable file
|
@ -0,0 +1,39 @@
|
|||
let
|
||||
configPath = ./config;
|
||||
|
||||
instancesFunctions = {
|
||||
jellyfinLabel = "Jellyfin";
|
||||
jellyfinName = "jellyfin";
|
||||
audiobookshelfLabel = "Audiobookshelf";
|
||||
audiobookshelfName = "audiobookshelf";
|
||||
domain0 = "cloudbert.fun";
|
||||
domain1 = "the-nutrivore.social";
|
||||
domain2 = "the-nutrivore.com";
|
||||
domain3 = "uprootnutrition.com";
|
||||
servicePath = "/mnt/media/NAS1";
|
||||
sopsPath = "/var/lib/secrets";
|
||||
sslPath = "/var/lib/acme";
|
||||
varLib = "/var/lib";
|
||||
dummy = "";
|
||||
};
|
||||
|
||||
instances = builtins.listToAttrs (
|
||||
map
|
||||
(name: {
|
||||
name = builtins.substring 0 (builtins.stringLength name - 4) name;
|
||||
value = import (configPath + "/${name}") {
|
||||
inherit
|
||||
instancesFunctions
|
||||
;
|
||||
};
|
||||
})
|
||||
(
|
||||
builtins.filter (name: builtins.match ".*\\.nix$" name != null) (
|
||||
builtins.attrNames (builtins.readDir configPath)
|
||||
)
|
||||
)
|
||||
);
|
||||
in
|
||||
{
|
||||
instances = instances;
|
||||
}
|
92
modules/config/themes/default.nix
Executable file
92
modules/config/themes/default.nix
Executable file
|
@ -0,0 +1,92 @@
|
|||
let
|
||||
currentTheme0 = catppuccin-mocha; # User0 Theme
|
||||
currentTheme1 = catppuccin-mocha; # User1 Theme
|
||||
currentTheme2 = catppuccin-mocha; # User2 Theme
|
||||
|
||||
brogrammer = "brogrammer";
|
||||
catppuccin-frappe = "catppuccin-frappe";
|
||||
catppuccin-latte = "catppuccin-latte";
|
||||
catppuccin-macchiato = "catppuccin-macchiato";
|
||||
catppuccin-mocha = "catppuccin-mocha";
|
||||
chalk = "chalk";
|
||||
deep-oceanic-next = "deep-oceanic-next";
|
||||
dracula = "dracula";
|
||||
espresso = "espresso";
|
||||
flat = "flat";
|
||||
framer = "framer";
|
||||
github = "github";
|
||||
hardcore = "hardcore";
|
||||
one-black = "one-black";
|
||||
one-dark = "one-dark";
|
||||
one-light = "one light";
|
||||
sparky = "sparky";
|
||||
|
||||
in
|
||||
{
|
||||
themes = {
|
||||
currentTheme = {
|
||||
theme0 = currentTheme0; # User0 Theme
|
||||
theme1 = currentTheme1; # User1 Theme
|
||||
theme2 = currentTheme2; # User2 Theme
|
||||
};
|
||||
cursor = {
|
||||
name = "";
|
||||
size = 18;
|
||||
};
|
||||
fonts = {
|
||||
names = {
|
||||
name0 = "MonaspiceNe Nerd Font"; # User0 Font
|
||||
name1 = ""; # User1 Font
|
||||
name2 = ""; # User2 Font
|
||||
};
|
||||
sizes = {
|
||||
applications = {
|
||||
size0 = 14; # User0 Size
|
||||
size1 = 14; # User1 Size
|
||||
size2 = 14; # User2 Size
|
||||
};
|
||||
desktop = {
|
||||
size0 = 12; # User0 Size
|
||||
size1 = 12; # User1 Size
|
||||
size2 = 12; # User2 Size
|
||||
};
|
||||
popups = {
|
||||
size0 = 10; # User0 Size
|
||||
size1 = 10; # User1 Size
|
||||
size2 = 10; # User2 Size
|
||||
};
|
||||
terminal = {
|
||||
size0 = 10; # User0 Size
|
||||
size1 = 10; # User1 Size
|
||||
size2 = 10; # User2 Size
|
||||
};
|
||||
};
|
||||
};
|
||||
palettes =
|
||||
let
|
||||
palettePath = ./palettes;
|
||||
catppuccinPath = /catppuccin;
|
||||
onePath = /one;
|
||||
in
|
||||
{
|
||||
${brogrammer} = import (palettePath + /brogrammer);
|
||||
${catppuccin-frappe} = import (palettePath + catppuccinPath + /frappe);
|
||||
${catppuccin-latte} = import (palettePath + catppuccinPath + /latte);
|
||||
${catppuccin-macchiato} = import (palettePath + catppuccinPath + /macchiato);
|
||||
${catppuccin-mocha} = import (palettePath + catppuccinPath + /mocha);
|
||||
${chalk} = import (palettePath + /chalk);
|
||||
${deep-oceanic-next} = import (palettePath + /deep-oceanic-next);
|
||||
${dracula} = import (palettePath + /dracula);
|
||||
${espresso} = import (palettePath + /espresso);
|
||||
${flat} = import (palettePath + /flat);
|
||||
${framer} = import (palettePath + /framer);
|
||||
${github} = import (palettePath + /github);
|
||||
${hardcore} = import (palettePath + /hardcore);
|
||||
${one-black} = import (palettePath + onePath + /black);
|
||||
${one-dark} = import (palettePath + onePath + /dark);
|
||||
${one-light} = import (palettePath + onePath + /light);
|
||||
${sparky} = import (palettePath + /sparky);
|
||||
|
||||
};
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/brogrammer/default.nix
Executable file
29
modules/config/themes/palettes/brogrammer/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "131313";
|
||||
base01 = "1f1f1f";
|
||||
base02 = "2a3141";
|
||||
base03 = "343d50";
|
||||
base04 = "d6dae4";
|
||||
base05 = "c1c8d7";
|
||||
base06 = "e3e6ed";
|
||||
base07 = "ffffff";
|
||||
base08 = "f71118";
|
||||
base09 = "ecb90f";
|
||||
base0A = "0f80d5";
|
||||
base0B = "2cc55d";
|
||||
base0C = "0f80d5";
|
||||
base0D = "2a84d2";
|
||||
base0E = "4e59b7";
|
||||
base0F = "7b080c";
|
||||
base10 = "0a0a0a";
|
||||
base11 = "020202";
|
||||
base12 = "de342e";
|
||||
base13 = "f2bd09";
|
||||
base14 = "1dd260";
|
||||
base15 = "289af0";
|
||||
base16 = "509bdc";
|
||||
base17 = "524fb9";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/catppuccin/frappe/default.nix
Executable file
29
modules/config/themes/palettes/catppuccin/frappe/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "303446"; # base
|
||||
base01 = "292c3c"; # mantle
|
||||
base02 = "414559"; # surface0
|
||||
base03 = "51576d"; # surface1
|
||||
base04 = "626880"; # surface2
|
||||
base05 = "c6d0f5"; # text
|
||||
base06 = "f2d5cf"; # rosewater label
|
||||
base07 = "babbf1"; # lavender
|
||||
base08 = "e78284"; # red
|
||||
base09 = "ef9f76"; # peach
|
||||
base0A = "e5c890"; # yellow
|
||||
base0B = "a6d189"; # green
|
||||
base0C = "81c8be"; # teal character
|
||||
base0D = "8caaee"; # blue function
|
||||
base0E = "ca9ee6"; # mauve
|
||||
base0F = "eebebe"; # flamingo
|
||||
base10 = "292c3c"; # mantle - darker background
|
||||
base11 = "232634"; # crust - darkest background
|
||||
base12 = "ea999c"; # maroon - bright red parameter
|
||||
base13 = "f2d5cf"; # rosewater - bright yellow
|
||||
base14 = "a6d189"; # green - bright green
|
||||
base15 = "99d1db"; # sky - bright cyan operator
|
||||
base16 = "85c1dc"; # sapphire - bright blue constructor
|
||||
base17 = "f4b8e4"; # pink - bright purple
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/catppuccin/latte/default.nix
Executable file
29
modules/config/themes/palettes/catppuccin/latte/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "eff1f5"; # base
|
||||
base01 = "e6e9ef"; # mantle
|
||||
base02 = "ccd0da"; # surface0
|
||||
base03 = "bcc0cc"; # surface1
|
||||
base04 = "acb0be"; # surface2
|
||||
base05 = "4c4f69"; # text
|
||||
base06 = "dc8a78"; # rosewater
|
||||
base07 = "7287fd"; # lavender
|
||||
base08 = "d20f39"; # red
|
||||
base09 = "fe640b"; # peach
|
||||
base0A = "df8e1d"; # yellow
|
||||
base0B = "40a02b"; # green
|
||||
base0C = "179299"; # teal
|
||||
base0D = "1e66f5"; # blue
|
||||
base0E = "8839ef"; # mauve
|
||||
base0F = "dd7878"; # flamingo
|
||||
base10 = "e6e9ef"; # mantle - darker background
|
||||
base11 = "dce0e8"; # crust - darkest background
|
||||
base12 = "e64553"; # maroon - bright red
|
||||
base13 = "dc8a78"; # rosewater - bright yellow
|
||||
base14 = "40a02b"; # green - bright green
|
||||
base15 = "04a5e5"; # sky - bright cyan
|
||||
base16 = "209fb5"; # sapphire - bright blue
|
||||
base17 = "ea76cb"; # pink - bright purple
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/catppuccin/macchiato/default.nix
Executable file
29
modules/config/themes/palettes/catppuccin/macchiato/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "24273a"; # base
|
||||
base01 = "1e2030"; # mantle
|
||||
base02 = "363a4f"; # surface0
|
||||
base03 = "494d64"; # surface1
|
||||
base04 = "5b6078"; # surface2
|
||||
base05 = "cad3f5"; # text
|
||||
base06 = "f4dbd6"; # rosewater
|
||||
base07 = "b7bdf8"; # lavender
|
||||
base08 = "ed8796"; # red
|
||||
base09 = "f5a97f"; # peach
|
||||
base0A = "eed49f"; # yellow
|
||||
base0B = "a6da95"; # green
|
||||
base0C = "8bd5ca"; # teal
|
||||
base0D = "8aadf4"; # blue
|
||||
base0E = "c6a0f6"; # mauve
|
||||
base0F = "f0c6c6"; # flamingo
|
||||
base10 = "1e2030"; # mantle - darker background
|
||||
base11 = "181926"; # crust - darkest background
|
||||
base12 = "ee99a0"; # maroon - bright red
|
||||
base13 = "f4dbd6"; # rosewater - bright yellow
|
||||
base14 = "a6da95"; # green - bright green
|
||||
base15 = "91d7e3"; # sky - bright cyan
|
||||
base16 = "7dc4e4"; # sapphire - bright blue
|
||||
base17 = "f5bde6"; # pink - bright purple
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/catppuccin/mocha/default.nix
Executable file
29
modules/config/themes/palettes/catppuccin/mocha/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "1e1e2e"; # base
|
||||
base01 = "181825"; # mantle
|
||||
base02 = "313244"; # surface0
|
||||
base03 = "45475a"; # surface1
|
||||
base04 = "585b70"; # surface2
|
||||
base05 = "cdd6f4"; # text
|
||||
base06 = "f5e0dc"; # rosewater
|
||||
base07 = "b4befe"; # lavender
|
||||
base08 = "f38ba8"; # red
|
||||
base09 = "fab387"; # peach
|
||||
base0A = "f9e2af"; # yellow
|
||||
base0B = "a6e3a1"; # green
|
||||
base0C = "94e2d5"; # teal
|
||||
base0D = "89b4fa"; # blue
|
||||
base0E = "cba6f7"; # mauve
|
||||
base0F = "f2cdcd"; # flamingo
|
||||
base10 = "181825"; # mantle - darker background
|
||||
base11 = "11111b"; # crust - darkest background
|
||||
base12 = "eba0ac"; # maroon - bright red
|
||||
base13 = "f5e0dc"; # rosewater - bright yellow
|
||||
base14 = "a6e3a1"; # green - bright green
|
||||
base15 = "89dceb"; # sky - bright cyan
|
||||
base16 = "74c7ec"; # sapphire - bright blue
|
||||
base17 = "f5c2e7"; # pink - bright purple
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/chalk/default.nix
Executable file
29
modules/config/themes/palettes/chalk/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "151515";
|
||||
base01 = "202020";
|
||||
base02 = "303030";
|
||||
base03 = "505050";
|
||||
base04 = "b0b0b0";
|
||||
base05 = "d0d0d0";
|
||||
base06 = "e0e0e0";
|
||||
base07 = "f5f5f5";
|
||||
base08 = "fa859c";
|
||||
base09 = "ea9971";
|
||||
base0A = "ddb26f";
|
||||
base0B = "a1bb54";
|
||||
base0C = "10bcad";
|
||||
base0D = "5ab9ed";
|
||||
base0E = "db8fea";
|
||||
base0F = "deaf8f";
|
||||
base10 = "0b0b0b";
|
||||
base11 = "060606";
|
||||
base12 = "fb9fb1";
|
||||
base13 = "eda987";
|
||||
base14 = "acc267";
|
||||
base15 = "12cfc0";
|
||||
base16 = "6fc2ef";
|
||||
base17 = "e1a3ee";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/deep-oceanic-next/default.nix
Executable file
29
modules/config/themes/palettes/deep-oceanic-next/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "001c1f";
|
||||
base01 = "002931";
|
||||
base02 = "003640";
|
||||
base03 = "004852";
|
||||
base04 = "0093a3";
|
||||
base05 = "d4e1e8";
|
||||
base06 = "e0e9ef";
|
||||
base07 = "f2f7f9";
|
||||
base08 = "d3464d";
|
||||
base09 = "e37552";
|
||||
base0A = "f3b863";
|
||||
base0B = "63b784";
|
||||
base0C = "4fb7ae";
|
||||
base0D = "568ccf";
|
||||
base0E = "8b66d6";
|
||||
base0F = "d0658e";
|
||||
base10 = "1f2628";
|
||||
base11 = "2a2f30";
|
||||
base12 = "ff6670";
|
||||
base13 = "ffe08a";
|
||||
base14 = "72e1a6";
|
||||
base15 = "4de3e3";
|
||||
base16 = "5caeff";
|
||||
base17 = "b788ff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/dracula/default.nix
Executable file
29
modules/config/themes/palettes/dracula/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "282a36";
|
||||
base01 = "363447";
|
||||
base02 = "44475a";
|
||||
base03 = "6272a4";
|
||||
base04 = "9ea8c7";
|
||||
base05 = "f8f8f2";
|
||||
base06 = "f0f1f4";
|
||||
base07 = "ffffff";
|
||||
base08 = "ff5555";
|
||||
base09 = "ffb86c";
|
||||
base0A = "f1fa8c";
|
||||
base0B = "50fa7b";
|
||||
base0C = "8be9fd";
|
||||
base0D = "80bfff";
|
||||
base0E = "ff79c6";
|
||||
base0F = "bd93f9";
|
||||
base10 = "1e2029";
|
||||
base11 = "16171d";
|
||||
base12 = "f28c8c";
|
||||
base13 = "eef5a3";
|
||||
base14 = "a3f5b8";
|
||||
base15 = "baedf7";
|
||||
base16 = "a3ccf5";
|
||||
base17 = "f5a3d2";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/espresso/default.nix
Executable file
29
modules/config/themes/palettes/espresso/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "262626";
|
||||
base01 = "343434";
|
||||
base02 = "535353";
|
||||
base03 = "797979";
|
||||
base04 = "a0a09f";
|
||||
base05 = "c7c7c5";
|
||||
base06 = "eeeeec";
|
||||
base07 = "ffffff";
|
||||
base08 = "d25151";
|
||||
base09 = "ffc66d";
|
||||
base0A = "8ab7d9";
|
||||
base0B = "a5c261";
|
||||
base0C = "bed6ff";
|
||||
base0D = "6c99bb";
|
||||
base0E = "d197d9";
|
||||
base0F = "692828";
|
||||
base10 = "373737";
|
||||
base11 = "1b1b1b";
|
||||
base12 = "f00c0c";
|
||||
base13 = "e1e38b";
|
||||
base14 = "c2e075";
|
||||
base15 = "dcf3ff";
|
||||
base16 = "8ab7d9";
|
||||
base17 = "efb5f7";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/flat/default.nix
Executable file
29
modules/config/themes/palettes/flat/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "082845";
|
||||
base01 = "1d2845";
|
||||
base02 = "2e2e45";
|
||||
base03 = "444e5b";
|
||||
base04 = "68717b";
|
||||
base05 = "8c939a";
|
||||
base06 = "b0b6ba";
|
||||
base07 = "e7eced";
|
||||
base08 = "a82320";
|
||||
base09 = "e58d11";
|
||||
base0A = "3c7dd2";
|
||||
base0B = "2d9440";
|
||||
base0C = "2c9370";
|
||||
base0D = "3167ac";
|
||||
base0E = "781aa0";
|
||||
base0F = "541110";
|
||||
base10 = "002240";
|
||||
base11 = "001629";
|
||||
base12 = "d4312e";
|
||||
base13 = "e5be0c";
|
||||
base14 = "32a548";
|
||||
base15 = "35b387";
|
||||
base16 = "3c7dd2";
|
||||
base17 = "8230a7";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/framer/default.nix
Executable file
29
modules/config/themes/palettes/framer/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "111111";
|
||||
base01 = "141414";
|
||||
base02 = "414141";
|
||||
base03 = "636363";
|
||||
base04 = "868686";
|
||||
base05 = "a9a9a9";
|
||||
base06 = "cccccc";
|
||||
base07 = "ffffff";
|
||||
base08 = "ff5555";
|
||||
base09 = "ffcc33";
|
||||
base0A = "33bbff";
|
||||
base0B = "98ec65";
|
||||
base0C = "88ddff";
|
||||
base0D = "00aaff";
|
||||
base0E = "aa88ff";
|
||||
base0F = "7f2a2a";
|
||||
base10 = "2b2b2b";
|
||||
base11 = "151515";
|
||||
base12 = "ff8888";
|
||||
base13 = "ffd966";
|
||||
base14 = "b6f292";
|
||||
base15 = "bbecff";
|
||||
base16 = "33bbff";
|
||||
base17 = "cebbff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/github/default.nix
Executable file
29
modules/config/themes/palettes/github/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "f4f4f4";
|
||||
base01 = "3e3e3e";
|
||||
base02 = "666666";
|
||||
base03 = "8c8c8c";
|
||||
base04 = "b2b2b2";
|
||||
base05 = "d8d8d8";
|
||||
base06 = "ffffff";
|
||||
base07 = "ffffff";
|
||||
base08 = "970b16";
|
||||
base09 = "f8eec7";
|
||||
base0A = "2e6cba";
|
||||
base0B = "07962a";
|
||||
base0C = "89d1ec";
|
||||
base0D = "003e8a";
|
||||
base0E = "e94691";
|
||||
base0F = "4b050b";
|
||||
base10 = "444444";
|
||||
base11 = "222222";
|
||||
base12 = "de0000";
|
||||
base13 = "f1d007";
|
||||
base14 = "87d5a2";
|
||||
base15 = "1cfafe";
|
||||
base16 = "2e6cba";
|
||||
base17 = "ffa29f";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/hardcore/default.nix
Executable file
29
modules/config/themes/palettes/hardcore/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "111111";
|
||||
base01 = "141414";
|
||||
base02 = "414141";
|
||||
base03 = "636363";
|
||||
base04 = "868686";
|
||||
base05 = "a9a9a9";
|
||||
base06 = "cccccc";
|
||||
base07 = "ffffff";
|
||||
base08 = "ff5555";
|
||||
base09 = "ffcc33";
|
||||
base0A = "33bbff";
|
||||
base0B = "98ec65";
|
||||
base0C = "88ddff";
|
||||
base0D = "00aaff";
|
||||
base0E = "aa88ff";
|
||||
base0F = "7f2a2a";
|
||||
base10 = "0a0a0a";
|
||||
base11 = "060606";
|
||||
base12 = "ff8888";
|
||||
base13 = "ffd966";
|
||||
base14 = "b6f292";
|
||||
base15 = "bbecff";
|
||||
base16 = "33bbff";
|
||||
base17 = "cebbff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/one/black/default.nix
Executable file
29
modules/config/themes/palettes/one/black/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "000000";
|
||||
base01 = "000000";
|
||||
base02 = "4f5666";
|
||||
base03 = "545862";
|
||||
base04 = "9196a1";
|
||||
base05 = "abb2bf";
|
||||
base06 = "e6e6e6";
|
||||
base07 = "ffffff";
|
||||
base08 = "e05561";
|
||||
base09 = "d18f52";
|
||||
base0A = "e6b965";
|
||||
base0B = "8cc265";
|
||||
base0C = "42b3c2";
|
||||
base0D = "4aa5f0";
|
||||
base0E = "c162de";
|
||||
base0F = "bf4034";
|
||||
base10 = "000000";
|
||||
base11 = "000000";
|
||||
base12 = "ff616e";
|
||||
base13 = "f0a45d";
|
||||
base14 = "a5e075";
|
||||
base15 = "4cd1e0";
|
||||
base16 = "4dc4ff";
|
||||
base17 = "de73ff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/one/dark/default.nix
Executable file
29
modules/config/themes/palettes/one/dark/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "282c34";
|
||||
base01 = "3f4451";
|
||||
base02 = "4f5666";
|
||||
base03 = "545862";
|
||||
base04 = "9196a1";
|
||||
base05 = "abb2bf";
|
||||
base06 = "e6e6e6";
|
||||
base07 = "ffffff";
|
||||
base08 = "e05561";
|
||||
base09 = "d18f52";
|
||||
base0A = "e6b965";
|
||||
base0B = "8cc265";
|
||||
base0C = "42b3c2";
|
||||
base0D = "4aa5f0";
|
||||
base0E = "c162de";
|
||||
base0F = "bf4034";
|
||||
base10 = "21252b";
|
||||
base11 = "181a1f";
|
||||
base12 = "ff616e";
|
||||
base13 = "f0a45d";
|
||||
base14 = "a5e075";
|
||||
base15 = "4cd1e0";
|
||||
base16 = "4dc4ff";
|
||||
base17 = "de73ff";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/one/light/default.nix
Executable file
29
modules/config/themes/palettes/one/light/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "e7e7e9";
|
||||
base01 = "dfdfe1";
|
||||
base02 = "cacace";
|
||||
base03 = "a0a1a7";
|
||||
base04 = "696c77";
|
||||
base05 = "383a42";
|
||||
base06 = "202227";
|
||||
base07 = "090a0b";
|
||||
base08 = "ca1243";
|
||||
base09 = "c18401";
|
||||
base0A = "febb2a";
|
||||
base0B = "50a14f";
|
||||
base0C = "0184bc";
|
||||
base0D = "4078f2";
|
||||
base0E = "a626a4";
|
||||
base0F = "986801";
|
||||
base10 = "f0f0f1";
|
||||
base11 = "fafafa";
|
||||
base12 = "ec2258";
|
||||
base13 = "f4a701";
|
||||
base14 = "6db76c";
|
||||
base15 = "01a7ef";
|
||||
base16 = "709af5";
|
||||
base17 = "d02fcd";
|
||||
};
|
||||
}
|
29
modules/config/themes/palettes/sparky/default.nix
Executable file
29
modules/config/themes/palettes/sparky/default.nix
Executable file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
font = "";
|
||||
colours = {
|
||||
base00 = "072B31";
|
||||
base01 = "00313C";
|
||||
base02 = "003C46";
|
||||
base03 = "003B49";
|
||||
base04 = "00778B";
|
||||
base05 = "F4F5F0";
|
||||
base06 = "F5F5F1";
|
||||
base07 = "FFFFFF";
|
||||
base08 = "FF585D";
|
||||
base09 = "FF8F1C";
|
||||
base0A = "FBDD40";
|
||||
base0B = "78D64B";
|
||||
base0C = "2DCCD3";
|
||||
base0D = "4698CB";
|
||||
base0E = "D59ED7";
|
||||
base0F = "9B704D";
|
||||
base10 = "4B4F54";
|
||||
base11 = "212322";
|
||||
base12 = "FF7276";
|
||||
base13 = "F6EB61";
|
||||
base14 = "8EDD65";
|
||||
base15 = "00C1D5";
|
||||
base16 = "69B3E7";
|
||||
base17 = "F99FC9";
|
||||
};
|
||||
}
|
27
modules/config/users/config/user0.nix
Executable file
27
modules/config/users/config/user0.nix
Executable file
|
@ -0,0 +1,27 @@
|
|||
{ user0 }:
|
||||
let
|
||||
inherit
|
||||
user0
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Nick";
|
||||
aliases = {
|
||||
name0 = "BRBWaffles";
|
||||
name1 = "brbwaffles";
|
||||
name2 = "Nutrivore";
|
||||
name3 = "nutrivore";
|
||||
name4 = "upRootNutrition";
|
||||
};
|
||||
email = {
|
||||
address0 = "nickjhiebert@proton.me";
|
||||
address1 = "thenutrivore@proton.me";
|
||||
address2 = "nick@uprootnutrition.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user0}/Files/Projects"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBF9TmImDoYDpsW5VMFbOcuK3aH4TWRtx/xGxT3yUtEN nick@desktop"
|
||||
];
|
||||
}
|
15
modules/config/users/config/user1.nix
Executable file
15
modules/config/users/config/user1.nix
Executable file
|
@ -0,0 +1,15 @@
|
|||
{ user1 }:
|
||||
let
|
||||
inherit
|
||||
user1
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Garnet";
|
||||
email = {
|
||||
address0 = "ninaeffler@gmail.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user1}/Files/Projects"; # Git path
|
||||
};
|
||||
}
|
19
modules/config/users/config/user2.nix
Executable file
19
modules/config/users/config/user2.nix
Executable file
|
@ -0,0 +1,19 @@
|
|||
{ user2 }:
|
||||
let
|
||||
inherit
|
||||
user2
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Stacie";
|
||||
email = {
|
||||
address0 = "staciesimonson@gmail.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user2}"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILQQDw0NigCC76G/GlHWIMunckaBmfgqbfJXFGWB+8fe stacie@desktop"
|
||||
];
|
||||
|
||||
}
|
20
modules/config/users/config/user3.nix
Executable file
20
modules/config/users/config/user3.nix
Executable file
|
@ -0,0 +1,20 @@
|
|||
{ user3 }:
|
||||
let
|
||||
inherit
|
||||
user3
|
||||
;
|
||||
in
|
||||
{
|
||||
name = "Streaming";
|
||||
aliases = {
|
||||
};
|
||||
email = {
|
||||
address0 = "nick@upRootNutrition.com";
|
||||
};
|
||||
paths = {
|
||||
path0 = "/home/${user3}/Files/Projects"; # Git path
|
||||
};
|
||||
sshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBF9TmImDoYDpsW5VMFbOcuK3aH4TWRtx/xGxT3yUtEN nick@desktop"
|
||||
];
|
||||
}
|
22
modules/config/users/default.nix
Executable file
22
modules/config/users/default.nix
Executable file
|
@ -0,0 +1,22 @@
|
|||
let
|
||||
configPath = ./config;
|
||||
|
||||
user0 = "nick";
|
||||
user1 = "garnet";
|
||||
user2 = "fallaryn";
|
||||
user3 = "streaming";
|
||||
in
|
||||
{
|
||||
inherit
|
||||
user0
|
||||
user1
|
||||
user2
|
||||
user3
|
||||
;
|
||||
users = {
|
||||
"${user0}" = import (configPath + /user0.nix) { inherit user0; };
|
||||
"${user1}" = import (configPath + /user1.nix) { inherit user1; };
|
||||
"${user2}" = import (configPath + /user2.nix) { inherit user2; };
|
||||
"${user3}" = import (configPath + /user3.nix) { inherit user3; };
|
||||
};
|
||||
}
|
11
modules/default.nix
Executable file
11
modules/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
23
modules/helpers.nix
Executable file
23
modules/helpers.nix
Executable file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
directoryImport =
|
||||
let
|
||||
collectDirs =
|
||||
path:
|
||||
let
|
||||
content = builtins.readDir path;
|
||||
subdirs = builtins.filter (name: content.${name} == "directory") (builtins.attrNames content);
|
||||
buildPath = name: path + "/${name}";
|
||||
|
||||
thisDirs = map buildPath subdirs;
|
||||
subDirs = builtins.concatMap collectDirs thisDirs;
|
||||
in
|
||||
[ path ] ++ subDirs;
|
||||
in
|
||||
path:
|
||||
builtins.listToAttrs (
|
||||
map (dir: {
|
||||
name = baseNameOf (toString dir);
|
||||
value = import dir;
|
||||
}) (collectDirs path)
|
||||
);
|
||||
}
|
12
modules/home/cli/android/androidFileTransfer/default.nix
Executable file
12
modules/home/cli/android/androidFileTransfer/default.nix
Executable file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
android-file-transfer
|
||||
;
|
||||
};
|
||||
}
|
||||
# requires that users be part of the adbusers group
|
12
modules/home/cli/android/androidTools/default.nix
Executable file
12
modules/home/cli/android/androidTools/default.nix
Executable file
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
android-tools
|
||||
;
|
||||
};
|
||||
}
|
||||
# requires that users be part of the adbusers group
|
11
modules/home/cli/android/default.nix
Executable file
11
modules/home/cli/android/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
11
modules/home/cli/android/simpleMtpfs/default.nix
Executable file
11
modules/home/cli/android/simpleMtpfs/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
simple-mtpfs
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/default.nix
Executable file
11
modules/home/cli/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
11
modules/home/cli/development/default.nix
Executable file
11
modules/home/cli/development/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
11
modules/home/cli/development/editing/default.nix
Executable file
11
modules/home/cli/development/editing/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
44
modules/home/cli/development/editing/helix/config/languages.nix
Executable file
44
modules/home/cli/development/editing/helix/config/languages.nix
Executable file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
language = [
|
||||
{
|
||||
auto-format = true;
|
||||
formatter.command = "nixfmt";
|
||||
name = "nix";
|
||||
}
|
||||
{
|
||||
auto-format = true;
|
||||
formatter.command = "cssfmt";
|
||||
name = "css";
|
||||
}
|
||||
{
|
||||
auto-format = true;
|
||||
language-servers = [
|
||||
"elm-language-server"
|
||||
];
|
||||
name = "elm";
|
||||
}
|
||||
{
|
||||
auto-format = true;
|
||||
formatter.command = "haskell";
|
||||
name = "haskell";
|
||||
}
|
||||
{
|
||||
auto-format = true;
|
||||
formatter.command = "yamlfmt";
|
||||
name = "yaml";
|
||||
}
|
||||
{
|
||||
auto-format = true;
|
||||
formatter.command = "yuck";
|
||||
name = "yuck";
|
||||
}
|
||||
];
|
||||
language-server = {
|
||||
elm-language-server = {
|
||||
config.elmLS = {
|
||||
disableElmLSDiagnostics = true;
|
||||
elmReviewDiagnostics = "warning";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
62
modules/home/cli/development/editing/helix/config/settings.nix
Executable file
62
modules/home/cli/development/editing/helix/config/settings.nix
Executable file
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
editor = {
|
||||
mouse = true;
|
||||
auto-format = true;
|
||||
soft-wrap.enable = true;
|
||||
auto-save = true;
|
||||
line-number = "relative";
|
||||
cursorline = true;
|
||||
indent-guides = {
|
||||
character = "╎";
|
||||
skip-levels = 1;
|
||||
render = true;
|
||||
};
|
||||
lsp = {
|
||||
display-messages = true;
|
||||
display-inlay-hints = true;
|
||||
};
|
||||
};
|
||||
|
||||
keys = {
|
||||
normal = {
|
||||
f = ":format";
|
||||
tab = "indent";
|
||||
S-tab = "unindent";
|
||||
ret = [
|
||||
"add_newline_below"
|
||||
"move_line_down"
|
||||
];
|
||||
S-ret = [
|
||||
"add_newline_above"
|
||||
"move_line_up"
|
||||
];
|
||||
S-up = [
|
||||
"extend_to_line_bounds"
|
||||
"delete_selection"
|
||||
"move_line_up"
|
||||
"paste_before"
|
||||
];
|
||||
|
||||
S-down = [
|
||||
"extend_to_line_bounds"
|
||||
"delete_selection"
|
||||
"paste_after"
|
||||
];
|
||||
S-g = [
|
||||
":write-all"
|
||||
":new"
|
||||
":insert-output lazygit"
|
||||
":buffer-close!"
|
||||
":redraw"
|
||||
":reload-all"
|
||||
];
|
||||
Y = "yank_main_selection_to_primary_clipboard";
|
||||
R = "replace_selections_with_primary_clipboard";
|
||||
space = {
|
||||
q = ":q";
|
||||
w = ":w";
|
||||
};
|
||||
};
|
||||
};
|
||||
theme = "catppuccin_macchiato";
|
||||
}
|
19
modules/home/cli/development/editing/helix/default.nix
Executable file
19
modules/home/cli/development/editing/helix/default.nix
Executable file
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
pkgs,
|
||||
flake,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.helix =
|
||||
let
|
||||
configPath = ./config;
|
||||
settingsPath = import (configPath + /settings.nix);
|
||||
languagesPath = import (configPath + /languages.nix);
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
package = flake.inputs.helix.packages.${pkgs.system}.default;
|
||||
languages = languagesPath;
|
||||
settings = settingsPath;
|
||||
};
|
||||
}
|
11
modules/home/cli/development/tooling/default.nix
Executable file
11
modules/home/cli/development/tooling/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
16
modules/home/cli/development/tooling/elm/default.nix
Executable file
16
modules/home/cli/development/tooling/elm/default.nix
Executable file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs.elmPackages)
|
||||
elm
|
||||
elm-format
|
||||
elm-land
|
||||
elm-language-server
|
||||
elm-review
|
||||
elm-test
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/development/tooling/javascript/default.nix
Executable file
11
modules/home/cli/development/tooling/javascript/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs.nodePackages)
|
||||
nodejs
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/development/versioning/default.nix
Executable file
11
modules/home/cli/development/versioning/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
16
modules/home/cli/development/versioning/git/default.nix
Executable file
16
modules/home/cli/development/versioning/git/default.nix
Executable file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
config,
|
||||
flake,
|
||||
...
|
||||
}:
|
||||
let
|
||||
user = config.home.username;
|
||||
userConfig = flake.config.people.users.${user};
|
||||
in
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = userConfig.name;
|
||||
userEmail = userConfig.email.address0;
|
||||
};
|
||||
}
|
7
modules/home/cli/development/versioning/lazygit/default.nix
Executable file
7
modules/home/cli/development/versioning/lazygit/default.nix
Executable file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
programs.lazygit = {
|
||||
enable = true;
|
||||
settings = {
|
||||
};
|
||||
};
|
||||
}
|
11
modules/home/cli/files/default.nix
Executable file
11
modules/home/cli/files/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
11
modules/home/cli/files/fileRoller/default.nix
Executable file
11
modules/home/cli/files/fileRoller/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
file-roller
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/files/ncdu/default.nix
Executable file
11
modules/home/cli/files/ncdu/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
ncdu
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/files/samba/default.nix
Executable file
11
modules/home/cli/files/samba/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
samba
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/files/unrar/default.nix
Executable file
11
modules/home/cli/files/unrar/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
unrar
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/files/unzip/default.nix
Executable file
11
modules/home/cli/files/unzip/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
unzip
|
||||
;
|
||||
};
|
||||
}
|
16
modules/home/cli/files/yazi/config/keymap.nix
Executable file
16
modules/home/cli/files/yazi/config/keymap.nix
Executable file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
keymap.manager.prepend_keymap = [
|
||||
{
|
||||
on = [
|
||||
"Q"
|
||||
];
|
||||
run = "quit";
|
||||
}
|
||||
{
|
||||
on = [
|
||||
"q"
|
||||
];
|
||||
run = "quit --no-cwd-file";
|
||||
}
|
||||
];
|
||||
}
|
18
modules/home/cli/files/yazi/config/settings.nix
Executable file
18
modules/home/cli/files/yazi/config/settings.nix
Executable file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
settings = {
|
||||
log = {
|
||||
enabled = false;
|
||||
};
|
||||
manager = {
|
||||
show_hidden = true;
|
||||
sort_by = "alphabetical";
|
||||
sort_dir_first = true;
|
||||
sort_reverse = false;
|
||||
};
|
||||
preview = {
|
||||
tab_size = 2;
|
||||
max_width = 1500;
|
||||
max_height = 1000;
|
||||
};
|
||||
};
|
||||
}
|
22
modules/home/cli/files/yazi/default.nix
Executable file
22
modules/home/cli/files/yazi/default.nix
Executable file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
flake,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.yazi =
|
||||
let
|
||||
configPath = ./config;
|
||||
keymapPath = import (configPath + /keymap.nix);
|
||||
settingsPath = import (configPath + /settings.nix);
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
# package = flake.inputs.yazi.packages.${pkgs.system}.yazi;
|
||||
enableNushellIntegration = true;
|
||||
keymap = keymapPath;
|
||||
settings = settingsPath;
|
||||
};
|
||||
# Keymap
|
||||
# https://github.com/sxyazi/yazi/blob/main/yazi-config/preset/keymap.toml
|
||||
}
|
11
modules/home/cli/files/zip/default.nix
Executable file
11
modules/home/cli/files/zip/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
zip
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/fun/aniCli/default.nix
Executable file
11
modules/home/cli/fun/aniCli/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
ani-cli
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/fun/default.nix
Executable file
11
modules/home/cli/fun/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
let
|
||||
importList =
|
||||
let
|
||||
content = builtins.readDir ./.;
|
||||
dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content);
|
||||
in
|
||||
map (name: ./. + "/${name}") dirContent;
|
||||
in
|
||||
{
|
||||
imports = importList;
|
||||
}
|
76
modules/home/cli/fun/fastFetch/config/settings.nix
Executable file
76
modules/home/cli/fun/fastFetch/config/settings.nix
Executable file
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
logo = {
|
||||
source = "nixos_large";
|
||||
padding = {
|
||||
right = 2;
|
||||
top = 3;
|
||||
};
|
||||
};
|
||||
display = {
|
||||
size = {
|
||||
binaryPrefix = "si";
|
||||
};
|
||||
color = "magenta";
|
||||
separator = " → ";
|
||||
};
|
||||
modules = [
|
||||
{
|
||||
type = "separator";
|
||||
string = "SYSTEM: ";
|
||||
}
|
||||
{
|
||||
type = "os";
|
||||
key = "NixOS Version";
|
||||
}
|
||||
{
|
||||
type = "kernel";
|
||||
key = "Kernel Version";
|
||||
}
|
||||
"shell"
|
||||
"terminal"
|
||||
"packages"
|
||||
"locale"
|
||||
{
|
||||
type = "wm";
|
||||
key = "Window Manager";
|
||||
}
|
||||
{
|
||||
type = "separator";
|
||||
string = "HARDWARE: ";
|
||||
}
|
||||
{
|
||||
type = "board";
|
||||
key = "Motherboard";
|
||||
}
|
||||
{
|
||||
type = "cpu";
|
||||
key = "Processor";
|
||||
}
|
||||
{
|
||||
type = "gpu";
|
||||
key = "Graphics";
|
||||
}
|
||||
"memory"
|
||||
"disk"
|
||||
"display"
|
||||
"gamepad"
|
||||
{
|
||||
type = "sound";
|
||||
key = "Audio Interface";
|
||||
}
|
||||
{
|
||||
type = "separator";
|
||||
string = "INTERFACE: ";
|
||||
}
|
||||
"theme"
|
||||
"cursor"
|
||||
"icons"
|
||||
"font"
|
||||
"editor"
|
||||
"player"
|
||||
{
|
||||
type = "media";
|
||||
key = "Song";
|
||||
}
|
||||
];
|
||||
}
|
10
modules/home/cli/fun/fastFetch/default.nix
Executable file
10
modules/home/cli/fun/fastFetch/default.nix
Executable file
|
@ -0,0 +1,10 @@
|
|||
let
|
||||
configPath = ./config;
|
||||
settingsPath = import (configPath + /settings.nix);
|
||||
in
|
||||
{
|
||||
programs.fastfetch = {
|
||||
enable = true;
|
||||
settings = settingsPath;
|
||||
};
|
||||
}
|
11
modules/home/cli/fun/libgenCli/default.nix
Executable file
11
modules/home/cli/fun/libgenCli/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
libgen-cli
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/fun/nyanCat/default.nix
Executable file
11
modules/home/cli/fun/nyanCat/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
nyancat
|
||||
;
|
||||
};
|
||||
}
|
11
modules/home/cli/fun/yaBridge/default.nix
Executable file
11
modules/home/cli/fun/yaBridge/default.nix
Executable file
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = builtins.attrValues {
|
||||
inherit (pkgs)
|
||||
yabridge
|
||||
;
|
||||
};
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue