Compare commits
60 Commits
Author | SHA1 | Date | |
---|---|---|---|
4ba888bc9e | |||
cc8add034d | |||
82b87e3e13 | |||
90275dc0cd | |||
25901043df | |||
4100a0821b | |||
14a13e840a | |||
9f0d61d7e7 | |||
73a9435587 | |||
8ba54ca386 | |||
f91bea3334 | |||
63d8d1ceb9 | |||
b1bdee6fd4 | |||
2e2312fab7 | |||
49de25db5a | |||
925f96b4d1 | |||
9ec123f0f2 | |||
412f9100ca | |||
0f0280473f | |||
45d9cadc71 | |||
1e02aaf73d | |||
351fa72260 | |||
db8579c6c0 | |||
ae7ba60036 | |||
eae8f61a59 | |||
5838527b6c | |||
6183e24f9a | |||
47629ac5df | |||
b6cbe22d7a | |||
0a7738b8cd | |||
286bb64d95 | |||
a81ea65340 | |||
918d5ea085 | |||
c616655b97 | |||
8e42d4f55d | |||
0ef91f571d | |||
2faacde406 | |||
f53a34b2e7 | |||
90b8d36143 | |||
3d71ee0bf8 | |||
4f8c9c85aa | |||
44fe27911a | |||
f444961d8e | |||
410fa99aff | |||
c65c49fbb8 | |||
bafcb6cb21 | |||
fad66ef62d | |||
77dfec308e | |||
dcff7d9db4 | |||
f24abf52e2 | |||
d1facb3be7 | |||
2f9f07b3e0 | |||
6c392b49ea | |||
4debc5d78c | |||
d7a2371938 | |||
e7fc91cb3e | |||
87364629fa | |||
b73cad9444 | |||
5625ad83d9 | |||
ba4e1700e9 |
50
flake.lock
50
flake.lock
|
@ -3,46 +3,47 @@
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs-unstable"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706435589,
|
"lastModified": 1718530513,
|
||||||
"narHash": "sha256-yhEYJxMv5BkfmUuNe4QELKo+V5eq1pwhtVs6kEziHfE=",
|
"narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "4d54c29bce71f8c261513e0662cc573d30f3e33e",
|
"rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
|
"ref": "release-24.05",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706371002,
|
"lastModified": 1719426051,
|
||||||
"narHash": "sha256-dwuorKimqSYgyu8Cw6ncKhyQjUDOyuXoxDTVmAXq88s=",
|
"narHash": "sha256-yJL9VYQhaRM7xs0M867ZFxwaONB9T2Q4LnGo1WovuR4=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c002c6aa977ad22c60398daaa9be52f2203d0006",
|
"rev": "89c49874fb15f4124bf71ca5f42a04f2ee5825fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-24.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-23": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706373441,
|
"lastModified": 1719234068,
|
||||||
"narHash": "sha256-S1hbgNbVYhuY2L05OANWqmRzj4cElcbLuIkXTb69xkk=",
|
"narHash": "sha256-1AjSIedDC/aERt24KsCUftLpVppW61S7awfjGe7bMio=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "56911ef3403a9318b7621ce745f5452fb9ef6867",
|
"rev": "90bd1b26e23760742fdcb6152369919098f05417",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -52,13 +53,29 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1726463316,
|
||||||
|
"narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1706559951,
|
"lastModified": 1719509062,
|
||||||
"narHash": "sha256-yfez9ZnYWsm3m3K8HvN3bGEdWe8aO0ni9r82bAq+q9k=",
|
"narHash": "sha256-IYlezkrqdHmO/SXShve0PhDZVwLuHYweaRyrLrvta5E=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "24478b9e556e4366ef0a2ff58590d8cf24c77267",
|
"rev": "0713da5785faf081a4fa06500890f8726755f464",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -71,7 +88,8 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-23": "nixpkgs-23",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nur": "nur"
|
"nur": "nur"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
34
flake.nix
34
flake.nix
|
@ -2,31 +2,41 @@
|
||||||
description = "NixOS system flake.";
|
description = "NixOS system flake.";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";
|
nixpkgs-23.url = "github:nixos/nixpkgs/nixos-23.11";
|
||||||
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
nur.url = "github:nix-community/NUR";
|
nur.url = "github:nix-community/NUR";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager/release-24.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs-unstable";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixpkgs-stable, nur, home-manager, ... } @ inputs:
|
outputs = { self, nixpkgs, nixpkgs-23, nixpkgs-unstable, nur, home-manager, ... } @ inputs:
|
||||||
let
|
let
|
||||||
inherit (self) outputs;
|
inherit (self) outputs;
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
timeZone = "America/Denver";
|
timeZone = "America/Denver";
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
stablePkgs = nixpkgs-stable.legacyPackages.${system};
|
unstablePkgs = import nixpkgs-unstable { system = system; config = { allowUnfree = true; }; };
|
||||||
|
pkgs23 = import nixpkgs-23 { system = system; config = { allowUnfree = true; }; };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
nixServer = nixpkgs.lib.nixosSystem {
|
luci = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = { inherit inputs; };
|
specialArgs = {
|
||||||
|
inherit inputs outputs timeZone system;
|
||||||
|
};
|
||||||
modules = [
|
modules = [
|
||||||
# nixpkgs.overlays = [ nur.overlay ];
|
inputs.home-manager.nixosModules.home-manager {
|
||||||
./nixos/server_configuration.nix
|
home-manager.useGlobalPkgs = true;
|
||||||
inputs.home-manager.nixosModules.default
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.users.luci = import ./luci/modules/home-manager/home.nix;
|
||||||
|
home-manager.extraSpecialArgs = {
|
||||||
|
inherit inputs outputs;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
./luci/default.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
nate = nixpkgs.lib.nixosSystem {
|
nate = nixpkgs.lib.nixosSystem {
|
||||||
|
@ -41,7 +51,7 @@
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.users.nate = import ./nate/modules/home-manager/home.nix;
|
home-manager.users.nate = import ./nate/modules/home-manager/home.nix;
|
||||||
home-manager.extraSpecialArgs = {
|
home-manager.extraSpecialArgs = {
|
||||||
inherit inputs outputs;
|
inherit inputs outputs unstablePkgs pkgs23;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
./nate/default.nix
|
./nate/default.nix
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
nix.gc = {
|
nix.gc = {
|
||||||
automatic = true;
|
automatic = true;
|
||||||
dates = "weekly";
|
dates = "weekly";
|
||||||
options = "--delete-older-than 1w";
|
options = "--delete-older-than 21d";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Optimize storage
|
# Optimize storage
|
||||||
|
|
|
@ -7,49 +7,51 @@
|
||||||
@define-color egg_shell #f8f1dd;
|
@define-color egg_shell #f8f1dd;
|
||||||
|
|
||||||
* {
|
* {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: @egg_shell;
|
color: @egg_shell;
|
||||||
font-family: "GohuFont 14 Nerd Font";
|
font-family: "GohuFont 14 Nerd Font";
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The whole bar */
|
/* The whole bar */
|
||||||
#waybar {
|
#waybar {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
#taskbar {
|
#taskbar {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: @egg_shell;
|
color: @egg_shell;
|
||||||
}
|
}
|
||||||
|
|
||||||
#taskbar button {
|
#taskbar button {
|
||||||
padding-left: 3px;
|
padding-left: 3px;
|
||||||
padding-right: 3px;
|
padding-right: 3px;
|
||||||
margin-left: 3px;
|
margin-left: 3px;
|
||||||
margin-right: 3px;
|
margin-right: 3px;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
border-bottom: 2px solid;
|
border-bottom: 2px solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
#taskbar button.active {
|
#taskbar button.active {
|
||||||
color: @celeste;
|
color: @celeste;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modules-left,
|
.modules-left,
|
||||||
.modules-right,
|
.modules-right,
|
||||||
.modules-center {
|
.modules-center {
|
||||||
margin: 8px 8px 1px 8px;
|
margin: 8px 8px 1px 8px;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: @egg_shell;
|
color: @egg_shell;
|
||||||
background-color: @english_violet;
|
background-color: @english_violet;
|
||||||
border-radius: 25px;
|
border-radius: 25px;
|
||||||
padding: 0px 10px 0px 10px;
|
padding: 0px 10px 0px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Every modules */
|
/* Every modules */
|
||||||
#clock,
|
#clock,
|
||||||
#cpu,
|
#cpu,
|
||||||
|
@ -58,8 +60,8 @@
|
||||||
#network,
|
#network,
|
||||||
#pulseaudio,
|
#pulseaudio,
|
||||||
#taskbar {
|
#taskbar {
|
||||||
padding:0.5rem 0.6rem;
|
padding: 0.5rem 0.6rem;
|
||||||
margin: 1px 0px;
|
margin: 1px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
|
@ -67,7 +69,7 @@
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
#clock {
|
#clock {
|
||||||
min-width: 140px;
|
min-width: 140px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#cpu.warning,
|
#cpu.warning,
|
||||||
|
@ -75,24 +77,24 @@
|
||||||
#memory.warning,
|
#memory.warning,
|
||||||
#memory.critical,
|
#memory.critical,
|
||||||
#network.disconnected {
|
#network.disconnected {
|
||||||
color: @indian_red;
|
color: @indian_red;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio {
|
#pulseaudio {
|
||||||
padding-top:6px;
|
padding-top: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio.muted {
|
#pulseaudio.muted {
|
||||||
color: @celeste;
|
color: @celeste;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-spotify {
|
#custom-spotify {
|
||||||
color: @celadon;
|
color: @celadon;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-power {
|
#custom-power {
|
||||||
margin-left:15px;
|
margin-left: 15px;
|
||||||
margin-right:15px;
|
margin-right: 15px;
|
||||||
font-size:15px;
|
font-size: 15px;
|
||||||
color: @indian_red;
|
color: @indian_red;
|
||||||
}
|
}
|
|
@ -136,8 +136,14 @@
|
||||||
security.polkit.enable = true;
|
security.polkit.enable = true;
|
||||||
|
|
||||||
hardware.opengl = {
|
hardware.opengl = {
|
||||||
enable = true;
|
# Mesa
|
||||||
driSupport = true;
|
# enable = true;
|
||||||
|
# Vulkan
|
||||||
|
# driSupport = true;
|
||||||
|
# Rocm support and vulkan drivers
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
rocmPackages.clr.icd
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
120
luci/configuration.nix
Normal file
120
luci/configuration.nix
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ # Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostId = "09e1d908";
|
||||||
|
hostName = "luci"; # Define your hostname.
|
||||||
|
# Pick only one of the below networking options.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
};
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "America/Denver";
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
# i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
# console = {
|
||||||
|
# font = "Lat2-Terminus16";
|
||||||
|
# keyMap = "us";
|
||||||
|
# useXkbConfig = true; # use xkb.options in tty.
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
# services.xserver.enable = true;
|
||||||
|
# Configure keymap in X11
|
||||||
|
# services.xserver.xkb.layout = "us";
|
||||||
|
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# sound.enable = true;
|
||||||
|
# hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.luci = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||||
|
packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
tree
|
||||||
|
git
|
||||||
|
curl
|
||||||
|
nano
|
||||||
|
neofetch
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
# environment.systemPackages = with pkgs; [
|
||||||
|
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
# wget
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
# programs.mtr.enable = true;
|
||||||
|
# programs.gnupg.agent = {
|
||||||
|
# enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
36
luci/default.nix
Normal file
36
luci/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{ ... }:
|
||||||
|
let
|
||||||
|
userName = "luci";
|
||||||
|
email = "luci@fosscat.com";
|
||||||
|
hostName = "luci";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./nixos/hardware-configuration.nix
|
||||||
|
../shared/nix-gc.nix
|
||||||
|
../shared/server-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
serverConfig = {
|
||||||
|
userName = userName;
|
||||||
|
hostName = hostName;
|
||||||
|
hostId = "09e1d908";
|
||||||
|
email = email;
|
||||||
|
sshEnable = true;
|
||||||
|
nfsEnable = true;
|
||||||
|
nfsRoot = "/nfs_export";
|
||||||
|
nfsExports = [ "/kage" ];
|
||||||
|
nfsIpExport = "192.168.1.1/24";
|
||||||
|
syncthingEnable = true;
|
||||||
|
caldavEnable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# deskCfg = {
|
||||||
|
# userName = userName;
|
||||||
|
# hostName = hostName;
|
||||||
|
# de = desktop;
|
||||||
|
# installGaming = gaming;
|
||||||
|
# };
|
||||||
|
|
||||||
|
nixGc.enable = true;
|
||||||
|
}
|
166
luci/dotfiles/helix/config.toml
Normal file
166
luci/dotfiles/helix/config.toml
Normal file
|
@ -0,0 +1,166 @@
|
||||||
|
# Theme
|
||||||
|
theme = "catppuccin_macchiato"
|
||||||
|
|
||||||
|
[keys.normal]
|
||||||
|
|
||||||
|
# Navigation
|
||||||
|
n = "move_char_left" # Maps the 'a' key to the move_char_left command
|
||||||
|
i = "move_visual_line_down"
|
||||||
|
e = "move_visual_line_up"
|
||||||
|
o = "move_char_right"
|
||||||
|
|
||||||
|
I = "page_down"
|
||||||
|
E = "page_up"
|
||||||
|
|
||||||
|
# Modes
|
||||||
|
h = "insert_mode"
|
||||||
|
H = "insert_at_line_start"
|
||||||
|
l = "open_below"
|
||||||
|
L = "open_above"
|
||||||
|
|
||||||
|
# Search
|
||||||
|
k = "search_next"
|
||||||
|
K = "search_prev"
|
||||||
|
|
||||||
|
# Selection
|
||||||
|
C-s = "split_selection_on_newline"
|
||||||
|
C-minus = "merge_selections"
|
||||||
|
C-_ = "merge_consecutive_selections"
|
||||||
|
"C-;" = "flip_selections"
|
||||||
|
"C-:" = "ensure_selections_forward"
|
||||||
|
"C-," = "remove_primary_selection"
|
||||||
|
C-c = "change_selection_noyank"
|
||||||
|
C-d = "delete_selection_noyank"
|
||||||
|
"C-(" = "rotate_selection_contents_backward"
|
||||||
|
"C-)" = "rotate_selection_contents_forward"
|
||||||
|
C-x = "shrink_to_line_bounds"
|
||||||
|
C-J = "join_selections_space"
|
||||||
|
C-K = "remove_selections"
|
||||||
|
C-o = "expand_selection"
|
||||||
|
C-i = "shrink_selection"
|
||||||
|
C-p = "select_prev_sibling"
|
||||||
|
C-n = "select_next_sibling"
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
"C-/" = "toggle_comments"
|
||||||
|
|
||||||
|
[keys.normal."C-space"]
|
||||||
|
x = ":wbc!"
|
||||||
|
s = ":w!" # save file
|
||||||
|
o = ":config-open"
|
||||||
|
|
||||||
|
[keys.normal.g]
|
||||||
|
"/" = "goto_next_buffer"
|
||||||
|
h = "goto_previous_buffer"
|
||||||
|
n = ["collapse_selection", "extend_to_line_start"]
|
||||||
|
o = ["collapse_selection", "extend_to_line_end"]
|
||||||
|
e = "move_line_up"
|
||||||
|
i = "move_line_down"
|
||||||
|
l = "goto_last_line"
|
||||||
|
|
||||||
|
p = "no_op"
|
||||||
|
k = "no_op"
|
||||||
|
j = "no_op"
|
||||||
|
|
||||||
|
[keys.normal.m]
|
||||||
|
m = ["select_mode", "match_brackets", "normal_mode"]
|
||||||
|
|
||||||
|
[keys.select]
|
||||||
|
n = "extend_char_left"
|
||||||
|
i = "extend_line_down"
|
||||||
|
e = "extend_line_up"
|
||||||
|
o = "extend_char_right"
|
||||||
|
|
||||||
|
[keys.select.g]
|
||||||
|
"/" = "goto_next_buffer"
|
||||||
|
h = "goto_previous_buffer"
|
||||||
|
n = "goto_line_start"
|
||||||
|
o = "goto_line_end"
|
||||||
|
e = "move_line_up"
|
||||||
|
i = "move_line_down"
|
||||||
|
l = "goto_last_line"
|
||||||
|
|
||||||
|
p = "no_op"
|
||||||
|
k = "no_op"
|
||||||
|
j = "no_op"
|
||||||
|
|
||||||
|
# Window mode
|
||||||
|
[keys.normal."C-w"]
|
||||||
|
h = "hsplit"
|
||||||
|
C-h = "hsplit"
|
||||||
|
n = "jump_view_left"
|
||||||
|
C-n = "jump_view_left"
|
||||||
|
i = "jump_view_down"
|
||||||
|
I = "swap_view_down"
|
||||||
|
C-i = "jump_view_down"
|
||||||
|
e = "jump_view_up"
|
||||||
|
E = "swap_view_up"
|
||||||
|
C-e = "jump_view_up"
|
||||||
|
o = "jump_view_right"
|
||||||
|
O = "swap_view_right"
|
||||||
|
C-o = "jump_view_right"
|
||||||
|
|
||||||
|
# Remove old
|
||||||
|
s = "no_op"
|
||||||
|
C-s = "no_op"
|
||||||
|
H = "no_op"
|
||||||
|
j = "no_op"
|
||||||
|
J = "no_op"
|
||||||
|
C-j = "no_op"
|
||||||
|
k = "no_op"
|
||||||
|
K = "no_op"
|
||||||
|
C-k = "no_op"
|
||||||
|
l = "no_op"
|
||||||
|
L = "no_op"
|
||||||
|
C-l = "no_op"
|
||||||
|
|
||||||
|
[keys.normal."space"]
|
||||||
|
h = "hover"
|
||||||
|
k = "select_references_to_symbol_under_cursor"
|
||||||
|
|
||||||
|
[editor]
|
||||||
|
bufferline = "multiple"
|
||||||
|
auto-save = true
|
||||||
|
line-number = "relative"
|
||||||
|
cursorline = true
|
||||||
|
color-modes = true
|
||||||
|
text-width = 120
|
||||||
|
auto-format = true
|
||||||
|
|
||||||
|
[editor.statusline]
|
||||||
|
left = ["mode", "spinner", "version-control", "file-name"]
|
||||||
|
mode.normal = "Normal"
|
||||||
|
mode.insert = "Insert"
|
||||||
|
mode.select = "Select"
|
||||||
|
|
||||||
|
[editor.indent-guides]
|
||||||
|
render = true
|
||||||
|
|
||||||
|
[editor.lsp]
|
||||||
|
display-messages = true
|
||||||
|
|
||||||
|
[editor.cursor-shape]
|
||||||
|
insert = "bar"
|
||||||
|
normal = "block"
|
||||||
|
select = "underline"
|
||||||
|
|
||||||
|
[editor.file-picker]
|
||||||
|
hidden = false
|
||||||
|
|
||||||
|
[editor.whitespace.render]
|
||||||
|
space = "all"
|
||||||
|
tab = "all"
|
||||||
|
tabpad = "all"
|
||||||
|
newline = "none"
|
||||||
|
nbsp = "none"
|
||||||
|
|
||||||
|
[editor.whitespace.characters]
|
||||||
|
space = "·"
|
||||||
|
tab = "⇀"
|
||||||
|
tabpad = " "
|
||||||
|
|
||||||
|
|
||||||
|
#w = "move_line_up" # Maps the 'w' key move_line_up
|
||||||
|
#"C-S-esc" = "extend_line" # Maps Ctrl-Shift-Escape to extend_line
|
||||||
|
#g = { a = "code_action" } # Maps `ga` to show possible code actions
|
||||||
|
#"ret" = ["open_below", "normal_mode"] # Maps the enter key to open_below then re-enter normal mode
|
22
luci/dotfiles/helix/languages.toml
Normal file
22
luci/dotfiles/helix/languages.toml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# [language-server.flutter-lsp]
|
||||||
|
# command = "dart language-server --client-id helix --client-version 1.0"
|
||||||
|
|
||||||
|
# [[language]]
|
||||||
|
# name = "typescript"
|
||||||
|
# auto-format = true
|
||||||
|
# formatter = { command = "eslint", args = ["--parser", "typescript"] }# [[language]]
|
||||||
|
|
||||||
|
# name = "typescript"
|
||||||
|
# language-servers = [ { name = "eslint", only-features = [ "format" ] }, "typescript-language-server" ]
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "dart"
|
||||||
|
formatter = {command = "dart", args = ["format", "-l", "120"]}
|
||||||
|
# [[language]]
|
||||||
|
# name = "dart"
|
||||||
|
# formatter = { command = "format", args = [ "-l", "120"] }
|
||||||
|
# config = { lineLength = 120 }
|
||||||
|
# config = { dartls.settings.dart.lineLength = 120 }
|
||||||
|
# config = { dart = { lineLength = 120 } }
|
||||||
|
# config = { settings = { dart = { lineLength = 120 } } }
|
||||||
|
# config = { dartls = { settings = { dart = { lineLength = 120 } } } }
|
93
luci/modules/home-manager/home.nix
Normal file
93
luci/modules/home-manager/home.nix
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
userName = "luci";
|
||||||
|
fullName = "Luci NAS";
|
||||||
|
email = "luci@fosscat.com";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.username = userName;
|
||||||
|
home.homeDirectory = "/home/${userName}";
|
||||||
|
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
home.stateVersion = "23.11"; # Please read the comment before changing.
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
helix
|
||||||
|
jq
|
||||||
|
|
||||||
|
#
|
||||||
|
# Better Unix
|
||||||
|
#
|
||||||
|
bat
|
||||||
|
duf
|
||||||
|
fd
|
||||||
|
fzf
|
||||||
|
lsd
|
||||||
|
ripgrep
|
||||||
|
tre-command
|
||||||
|
gtop
|
||||||
|
htop
|
||||||
|
neofetch
|
||||||
|
|
||||||
|
# Normies
|
||||||
|
unzip
|
||||||
|
|
||||||
|
imv
|
||||||
|
mpv
|
||||||
|
ffmpeg
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file."${config.xdg.configHome}" = {
|
||||||
|
source = ../../dotfiles;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Copy radicale pass file
|
||||||
|
home.file."${config.xdg.configHome}/radicale" = {
|
||||||
|
source = ../radicale;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "hx";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Git setup
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userEmail = email;
|
||||||
|
userName = fullName;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true; # see note on other shells below
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
bash.enable = true; # see note on other shells below
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zsh setup
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
plugins = [ "git" ];
|
||||||
|
theme = "dieter";
|
||||||
|
};
|
||||||
|
initExtra = ''
|
||||||
|
eval "$(direnv hook zsh)"
|
||||||
|
|
||||||
|
alias ls="lsd"
|
||||||
|
alias l="lsd --almost-all --long"
|
||||||
|
alias llm="lsd --timesort --long"
|
||||||
|
alias lS="lsd --oneline --classic"
|
||||||
|
alias lt="lsd --tree --depth=2"
|
||||||
|
alias grep="rg"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
1
luci/modules/radicale/rad_pass
Normal file
1
luci/modules/radicale/rad_pass
Normal file
|
@ -0,0 +1 @@
|
||||||
|
n8r:$apr1$HpSAv/EE$pCDM0qP2JJIY0B5aUXjS30
|
55
luci/nixos/hardware-configuration.nix
Normal file
55
luci/nixos/hardware-configuration.nix
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ "zfs" ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
boot.supportedFilesystems = [ "zfs" ];
|
||||||
|
|
||||||
|
boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;
|
||||||
|
|
||||||
|
boot.zfs.forceImportRoot = false;
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-label/NIXROOT";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-label/NIXBOOT";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/nfs_export/kage" =
|
||||||
|
{ device = "zdata/kage";
|
||||||
|
fsType = "zfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# change ownership of kage to be open
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /nfs_export/kage 0777 kage users - -"
|
||||||
|
];
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp3s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp5s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp6s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
|
@ -27,7 +27,7 @@
|
||||||
nix.gc = {
|
nix.gc = {
|
||||||
automatic = true;
|
automatic = true;
|
||||||
dates = "weekly";
|
dates = "weekly";
|
||||||
options = "--delete-older-than 1w";
|
options = "--delete-older-than 14d";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Optimize storage
|
# Optimize storage
|
||||||
|
|
|
@ -73,6 +73,7 @@ in
|
||||||
installGaming = deskCfg.installGaming;
|
installGaming = deskCfg.installGaming;
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
libreoffice
|
libreoffice
|
||||||
|
rpi-imager
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Binary file not shown.
2021
nate/dotfiles/bat/themes/Catppuccin Macchiato.tmTheme
Normal file
2021
nate/dotfiles/bat/themes/Catppuccin Macchiato.tmTheme
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
# Theme
|
# Theme
|
||||||
theme = "catppuccin_frappe"
|
theme = "catppuccin_macchiato"
|
||||||
|
|
||||||
[keys.normal]
|
[keys.normal]
|
||||||
|
|
||||||
|
@ -9,11 +9,12 @@ i = "move_visual_line_down"
|
||||||
e = "move_visual_line_up"
|
e = "move_visual_line_up"
|
||||||
o = "move_char_right"
|
o = "move_char_right"
|
||||||
|
|
||||||
C-i = "half_page_down"
|
I = "page_down"
|
||||||
C-e = "half_page_up"
|
E = "page_up"
|
||||||
|
|
||||||
# Modes
|
# Modes
|
||||||
h = "insert_mode"
|
h = "insert_mode"
|
||||||
|
H = "insert_at_line_start"
|
||||||
l = "open_below"
|
l = "open_below"
|
||||||
L = "open_above"
|
L = "open_above"
|
||||||
|
|
||||||
|
@ -21,34 +22,115 @@ L = "open_above"
|
||||||
k = "search_next"
|
k = "search_next"
|
||||||
K = "search_prev"
|
K = "search_prev"
|
||||||
|
|
||||||
|
# Selection
|
||||||
|
C-s = "split_selection_on_newline"
|
||||||
|
C-minus = "merge_selections"
|
||||||
|
C-_ = "merge_consecutive_selections"
|
||||||
|
"C-;" = "flip_selections"
|
||||||
|
"C-:" = "ensure_selections_forward"
|
||||||
|
"C-," = "remove_primary_selection"
|
||||||
|
C-c = "change_selection_noyank"
|
||||||
|
C-d = "delete_selection_noyank"
|
||||||
|
"C-(" = "rotate_selection_contents_backward"
|
||||||
|
"C-)" = "rotate_selection_contents_forward"
|
||||||
|
C-x = "shrink_to_line_bounds"
|
||||||
|
C-J = "join_selections_space"
|
||||||
|
C-K = "remove_selections"
|
||||||
|
C-o = "expand_selection"
|
||||||
|
C-i = "shrink_selection"
|
||||||
|
C-p = "select_prev_sibling"
|
||||||
|
C-n = "select_next_sibling"
|
||||||
|
|
||||||
C-s = ":w" # Maps Ctrl-s to the typable command :w which is an alias for :write (save file)
|
# Misc
|
||||||
C-o = ":open ~/.config/helix/config.toml" # Maps Ctrl-o to opening of the helix config file
|
"C-/" = "toggle_comments"
|
||||||
C-l = ":open ~/.config/helix/languages.toml"
|
|
||||||
|
[keys.normal."C-space"]
|
||||||
|
x = ":wbc!"
|
||||||
|
s = ":w!" # save file
|
||||||
|
o = ":config-open"
|
||||||
|
|
||||||
[keys.normal.g]
|
[keys.normal.g]
|
||||||
P = "goto_previous_buffer"
|
"/" = "goto_next_buffer"
|
||||||
N = "goto_next_buffer"
|
h = "goto_previous_buffer"
|
||||||
n = "goto_line_start"
|
n = ["collapse_selection", "extend_to_line_start"]
|
||||||
o = "goto_line_end"
|
o = ["collapse_selection", "extend_to_line_end"]
|
||||||
|
e = "move_line_up"
|
||||||
|
i = "move_line_down"
|
||||||
|
l = "goto_last_line"
|
||||||
|
|
||||||
|
p = "no_op"
|
||||||
|
k = "no_op"
|
||||||
|
j = "no_op"
|
||||||
|
|
||||||
|
[keys.normal.m]
|
||||||
|
m = ["select_mode", "match_brackets", "normal_mode"]
|
||||||
|
|
||||||
[keys.select]
|
[keys.select]
|
||||||
n = "move_char_left"
|
n = "extend_char_left"
|
||||||
i = "move_visual_line_down"
|
i = "extend_line_down"
|
||||||
e = "move_visual_line_up"
|
e = "extend_line_up"
|
||||||
o = "move_char_right"
|
o = "extend_char_right"
|
||||||
|
|
||||||
|
[keys.select.g]
|
||||||
|
"/" = "goto_next_buffer"
|
||||||
|
h = "goto_previous_buffer"
|
||||||
|
n = "goto_line_start"
|
||||||
|
o = "goto_line_end"
|
||||||
|
e = "move_line_up"
|
||||||
|
i = "move_line_down"
|
||||||
|
l = "goto_last_line"
|
||||||
|
|
||||||
|
p = "no_op"
|
||||||
|
k = "no_op"
|
||||||
|
j = "no_op"
|
||||||
|
|
||||||
|
# Window mode
|
||||||
|
[keys.normal."C-w"]
|
||||||
|
h = "hsplit"
|
||||||
|
C-h = "hsplit"
|
||||||
|
n = "jump_view_left"
|
||||||
|
C-n = "jump_view_left"
|
||||||
|
i = "jump_view_down"
|
||||||
|
I = "swap_view_down"
|
||||||
|
C-i = "jump_view_down"
|
||||||
|
e = "jump_view_up"
|
||||||
|
E = "swap_view_up"
|
||||||
|
C-e = "jump_view_up"
|
||||||
|
o = "jump_view_right"
|
||||||
|
O = "swap_view_right"
|
||||||
|
C-o = "jump_view_right"
|
||||||
|
|
||||||
|
# Remove old
|
||||||
|
s = "no_op"
|
||||||
|
C-s = "no_op"
|
||||||
|
H = "no_op"
|
||||||
|
j = "no_op"
|
||||||
|
J = "no_op"
|
||||||
|
C-j = "no_op"
|
||||||
|
k = "no_op"
|
||||||
|
K = "no_op"
|
||||||
|
C-k = "no_op"
|
||||||
|
l = "no_op"
|
||||||
|
L = "no_op"
|
||||||
|
C-l = "no_op"
|
||||||
|
|
||||||
|
[keys.normal."space"]
|
||||||
|
h = "hover"
|
||||||
|
k = "select_references_to_symbol_under_cursor"
|
||||||
|
|
||||||
[editor]
|
[editor]
|
||||||
bufferline = "multiple"
|
bufferline = "always"
|
||||||
auto-save = true
|
auto-save = true
|
||||||
line-number = "relative"
|
line-number = "relative"
|
||||||
cursorline = true
|
cursorline = true
|
||||||
|
cursorcolumn = true
|
||||||
color-modes = true
|
color-modes = true
|
||||||
text-width = 120
|
text-width = 120
|
||||||
auto-format = true
|
auto-format = true
|
||||||
|
|
||||||
[editor.statusline]
|
[editor.statusline]
|
||||||
left = ["mode", "spinner", "version-control", "file-name"]
|
left = ["mode", "spinner", "version-control"]
|
||||||
|
center = ["file-name"]
|
||||||
mode.normal = "Normal"
|
mode.normal = "Normal"
|
||||||
mode.insert = "Insert"
|
mode.insert = "Insert"
|
||||||
mode.select = "Select"
|
mode.select = "Select"
|
||||||
|
@ -58,6 +140,7 @@ render = true
|
||||||
|
|
||||||
[editor.lsp]
|
[editor.lsp]
|
||||||
display-messages = true
|
display-messages = true
|
||||||
|
display-inlay-hints = false
|
||||||
|
|
||||||
[editor.cursor-shape]
|
[editor.cursor-shape]
|
||||||
insert = "bar"
|
insert = "bar"
|
||||||
|
|
|
@ -1,22 +1,4 @@
|
||||||
# [language-server.flutter-lsp]
|
# Change dart format to 120 lines
|
||||||
# command = "dart language-server --client-id helix --client-version 1.0"
|
|
||||||
|
|
||||||
# [[language]]
|
|
||||||
# name = "typescript"
|
|
||||||
# auto-format = true
|
|
||||||
# formatter = { command = "eslint", args = ["--parser", "typescript"] }# [[language]]
|
|
||||||
|
|
||||||
# name = "typescript"
|
|
||||||
# language-servers = [ { name = "eslint", only-features = [ "format" ] }, "typescript-language-server" ]
|
|
||||||
|
|
||||||
[[language]]
|
[[language]]
|
||||||
name = "dart"
|
name = "dart"
|
||||||
formatter = {command = "dart", args = ["format", "-l", "120"]}
|
formatter = {command = "dart", args = ["format", "-l", "120"]}
|
||||||
# [[language]]
|
|
||||||
# name = "dart"
|
|
||||||
# formatter = { command = "format", args = [ "-l", "120"] }
|
|
||||||
# config = { lineLength = 120 }
|
|
||||||
# config = { dartls.settings.dart.lineLength = 120 }
|
|
||||||
# config = { dart = { lineLength = 120 } }
|
|
||||||
# config = { settings = { dart = { lineLength = 120 } } }
|
|
||||||
# config = { dartls = { settings = { dart = { lineLength = 120 } } } }
|
|
|
@ -259,7 +259,7 @@ command = "lua-language-server"
|
||||||
# diagnostics.enable = true
|
# diagnostics.enable = true
|
||||||
|
|
||||||
[language.markdown]
|
[language.markdown]
|
||||||
filetype = ["md", "markdown"]
|
filetypes = ["md", "markdown"]
|
||||||
roots = [".git", ".hg"]
|
roots = [".git", ".hg"]
|
||||||
command = "vscode-markdown-language-server"
|
command = "vscode-markdown-language-server"
|
||||||
args = ["--stdio"]
|
args = ["--stdio"]
|
||||||
|
|
1
nate/dotfiles/kak/colors/kakoune
Submodule
1
nate/dotfiles/kak/colors/kakoune
Submodule
|
@ -0,0 +1 @@
|
||||||
|
Subproject commit 5db74769ca8710b27140cf5a1107183b339f2916
|
1
nate/dotfiles/kak/colors/nord.kak
Normal file
1
nate/dotfiles/kak/colors/nord.kak
Normal file
|
@ -0,0 +1 @@
|
||||||
|
|
87
nate/dotfiles/kak/colors/pastel.kak
Normal file
87
nate/dotfiles/kak/colors/pastel.kak
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
|
||||||
|
# Pastel theme for Kakoune
|
||||||
|
|
||||||
|
# Color palette
|
||||||
|
# declare-option str black 'rgb:2b2e33'
|
||||||
|
declare-option str black default
|
||||||
|
declare-option str dark 'rgb:3b3b46'
|
||||||
|
declare-option str gray 'rgb:5a5b5b'
|
||||||
|
declare-option str aqua 'rgb:6bbac1'
|
||||||
|
declare-option str white 'rgb:dcdbd7'
|
||||||
|
declare-option str blue 'rgb:65a4cf'
|
||||||
|
declare-option str cyan 'rgb:6dcac0'
|
||||||
|
declare-option str blue_green 'rgb:81bba3'
|
||||||
|
declare-option str green 'rgb:8dbc92'
|
||||||
|
declare-option str orange 'rgb:dea981'
|
||||||
|
declare-option str pink 'rgb:d38da9'
|
||||||
|
declare-option str purple 'rgb:ca9bf7'
|
||||||
|
declare-option str red 'rgb:db948e'
|
||||||
|
declare-option str yellow 'rgb:e1d179'
|
||||||
|
declare-option str lime 'rgb:adc47e'
|
||||||
|
declare-option str dimgray 'rgb:3d4747'
|
||||||
|
declare-option str psel 'rgba:46466480'
|
||||||
|
declare-option str ssel 'rgba:37375580'
|
||||||
|
|
||||||
|
declare-option str background %opt{black}
|
||||||
|
declare-option str dimmed_background %opt{gray}
|
||||||
|
declare-option str foreground %opt{white}
|
||||||
|
|
||||||
|
# Reference
|
||||||
|
# https://github.com/mawww/kakoune/blob/master/colors/default.kak
|
||||||
|
# For code
|
||||||
|
set-face global value "%opt{yellow}"
|
||||||
|
set-face global type "%opt{aqua}"
|
||||||
|
set-face global variable "%opt{purple}"
|
||||||
|
set-face global module "%opt{white}"
|
||||||
|
set-face global function "%opt{orange}"
|
||||||
|
set-face global string "%opt{pink}"
|
||||||
|
set-face global keyword "%opt{green}"
|
||||||
|
set-face global operator "%opt{aqua}"
|
||||||
|
set-face global attribute "%opt{blue_green}"
|
||||||
|
set-face global bracket "%opt{white}+b"
|
||||||
|
set-face global arguement "%opt{blue_green}"
|
||||||
|
set-face global comma "%opt{white}"
|
||||||
|
set-face global constant "%opt{blue_green}+b"
|
||||||
|
set-face global class "%opt{lime}"
|
||||||
|
set-face global comment "%opt{gray}+i"
|
||||||
|
set-face global meta "%opt{blue}"
|
||||||
|
set-face global builtin "%opt{cyan}+b"
|
||||||
|
|
||||||
|
# For markup
|
||||||
|
set-face global title "%opt{pink}"
|
||||||
|
set-face global header "%opt{orange}"
|
||||||
|
set-face global bold "%opt{pink}"
|
||||||
|
set-face global italic "%opt{purple}"
|
||||||
|
set-face global mono "%opt{green}"
|
||||||
|
set-face global block "%opt{cyan}"
|
||||||
|
set-face global link "%opt{green}"
|
||||||
|
set-face global bullet "%opt{green}"
|
||||||
|
set-face global list "%opt{white}"
|
||||||
|
|
||||||
|
# Builtin faces
|
||||||
|
set-face global Default "%opt{white},%opt{black}"
|
||||||
|
# set-face global Default "%opt{white},default"
|
||||||
|
set-face global PrimarySelection "default,%opt{psel}"
|
||||||
|
set-face global SecondarySelection "default,%opt{ssel}"
|
||||||
|
set-face global PrimaryCursor "%opt{dark},%opt{purple}"
|
||||||
|
set-face global SecondaryCursor "%opt{dark},%opt{aqua}"
|
||||||
|
set-face global PrimaryCursorEol "%opt{dark},%opt{yellow}"
|
||||||
|
set-face global SecondaryCursorEol "%opt{dark},%opt{blue}"
|
||||||
|
set-face global LineNumbers "%opt{gray},%opt{black}"
|
||||||
|
set-face global LineNumberCursor "%opt{purple},%opt{black}+b"
|
||||||
|
set-face global LineNumbersWrapped "%opt{gray},%opt{black}+i"
|
||||||
|
set-face global MenuForeground "%opt{dark},%opt{white}+b"
|
||||||
|
set-face global MenuBackground "%opt{white},%opt{dark}"
|
||||||
|
set-face global MenuInfo "%opt{dark},%opt{orange}"
|
||||||
|
set-face global Information "%opt{yellow},%opt{black}"
|
||||||
|
set-face global Error "%opt{red},%opt{black}"
|
||||||
|
set-face global StatusLine "%opt{white},%opt{black}"
|
||||||
|
set-face global StatusLineMode "%opt{aqua},%opt{black}"
|
||||||
|
set-face global StatusLineInfo "%opt{purple},%opt{black}"
|
||||||
|
set-face global StatusLineValue "%opt{orange},%opt{black}"
|
||||||
|
set-face global StatusCursor "%opt{white},%opt{blue}"
|
||||||
|
set-face global Prompt "%opt{green},%opt{black}"
|
||||||
|
set-face global MatchingChar "%opt{blue},%opt{black}"
|
||||||
|
set-face global Whitespace "%opt{dimgray},%opt{black}+f"
|
||||||
|
set-face global WrapMarker Whitespace
|
||||||
|
set-face global BufferPadding "%opt{black},%opt{black}"
|
|
@ -28,9 +28,9 @@ set-option global startup_info_version 30000000
|
||||||
set-option global tabstop 4
|
set-option global tabstop 4
|
||||||
set-option global indentwidth 4
|
set-option global indentwidth 4
|
||||||
set-option global scrolloff 5,3
|
set-option global scrolloff 5,3
|
||||||
declare-option str kakrc_path "~/.config/kak/kakrc"
|
declare-option str kakrc_path "~/system/nate/dotfiles/kak/kakrc"
|
||||||
declare-option str sway_conf_path "~/.config/sway/config.d/default"
|
declare-option str sway_conf_path "~/system/nate/dotfiles/sway/config.d/default"
|
||||||
declare-option str shell_config "~/.zshrc"
|
declare-option str shell_config "~/system/nate/modules/home-manager/home.nix"
|
||||||
|
|
||||||
# plug "catppuccin/kakoune" theme config %{
|
# plug "catppuccin/kakoune" theme config %{
|
||||||
# colorscheme catppuccin_macchiato
|
# colorscheme catppuccin_macchiato
|
||||||
|
@ -56,6 +56,20 @@ hook global FocusOut .* %{ try %{
|
||||||
hook global BufWritePost .* %{ evaluate-commands 'git update-diff' }
|
hook global BufWritePost .* %{ evaluate-commands 'git update-diff' }
|
||||||
hook global BufReload .* %{ evaluate-commands 'git update-diff' }
|
hook global BufReload .* %{ evaluate-commands 'git update-diff' }
|
||||||
|
|
||||||
|
# Color Render in Echo Area
|
||||||
|
hook global WinSetOption filetype=kak %{ hook global NormalIdle .* %{
|
||||||
|
evaluate-commands -save-regs 'a' %{ try %{
|
||||||
|
execute-keys -draft <a-i>w"ay
|
||||||
|
evaluate-commands %sh{ (
|
||||||
|
color="${kak_reg_a}"
|
||||||
|
inverted_color=$(echo "${color}" | perl -pe 'tr/0123456789abcdefABCDEF/fedcba9876543210543210/')
|
||||||
|
printf "%s\n" "evaluate-commands -client $kak_client %{ try %{
|
||||||
|
echo -markup %{{rgb:${inverted_color},rgb:${color}+b} #${color} }
|
||||||
|
}}" | kak -p $kak_session
|
||||||
|
) >/dev/null 2>&1 </dev/null & }
|
||||||
|
}}
|
||||||
|
}}
|
||||||
|
|
||||||
# Add default,red and bold style to these regex matches
|
# Add default,red and bold style to these regex matches
|
||||||
add-highlighter global/ regex \b(TODO|FIXME|XXX|NOTE)\b 0:default,red+rb
|
add-highlighter global/ regex \b(TODO|FIXME|XXX|NOTE)\b 0:default,red+rb
|
||||||
|
|
||||||
|
@ -91,6 +105,7 @@ map global normal <c-S> <a-S> -docstring 'select first and last character of ea
|
||||||
map global normal '<c-;>' '<a-;>' -docstring 'flip direction of each selection'
|
map global normal '<c-;>' '<a-;>' -docstring 'flip direction of each selection'
|
||||||
map global normal <c-:> <a-:> -docstring 'ensure selections are in forward direction (cursor then anchor)'
|
map global normal <c-:> <a-:> -docstring 'ensure selections are in forward direction (cursor then anchor)'
|
||||||
map global normal <c-,> <a-,> -docstring 'clear the main selection'
|
map global normal <c-,> <a-,> -docstring 'clear the main selection'
|
||||||
|
map global normal <c-.> <a-.> -docstring 'Repeat last object or f/t selection'
|
||||||
|
|
||||||
# Scrolling remap
|
# Scrolling remap
|
||||||
map global normal <c-e> <pageup> -docstring 'Scroll screen up'
|
map global normal <c-e> <pageup> -docstring 'Scroll screen up'
|
||||||
|
@ -244,9 +259,17 @@ plug "alexherbo2/auto-pairs.kak" %{
|
||||||
enable-auto-pairs
|
enable-auto-pairs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
plug "https://github.com/h-youhei/kakoune-surround"
|
plug "https://github.com/h-youhei/kakoune-surround"
|
||||||
|
|
||||||
map global normal <c-m> ':surround<ret>'
|
map global normal <c-m> ':surround<ret>'
|
||||||
|
|
||||||
# Custom scripts
|
# Custom scripts
|
||||||
source "~/.config/kak/rc/fzf_git.kak"
|
|
||||||
|
# evaluate-commands %sh{
|
||||||
|
# for file in ~/.config/kak/rc/*.kak; do
|
||||||
|
# printf "source %s\n" $file
|
||||||
|
# done
|
||||||
|
# }
|
||||||
|
|
||||||
|
# source "~/.config/kak/rc/"
|
||||||
|
|
40
nate/dotfiles/kak/rc/close_tag.kak
Normal file
40
nate/dotfiles/kak/rc/close_tag.kak
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#use evaluate-commands to collapse undo
|
||||||
|
define-command close_tag %{ evaluate-commands %{
|
||||||
|
#revert removing indent after leaving insert mode
|
||||||
|
try %{
|
||||||
|
execute-keys -draft '<a-h>s[^\n]<ret>'
|
||||||
|
} catch %{
|
||||||
|
execute-keys -draft 'K<a-&>'
|
||||||
|
}
|
||||||
|
execute-keys ';Gg<a-;>'
|
||||||
|
evaluate-commands %sh{
|
||||||
|
tag_list=`echo "$kak_selection" | grep -P -o '(?<=<)[^>]*[^/>](?=>)' | tac | cut -d ' ' -f 1`
|
||||||
|
close=
|
||||||
|
close_stack=
|
||||||
|
result=
|
||||||
|
for tag in $tag_list ; do
|
||||||
|
if [ `echo $tag | cut -c 1` = / ] ; then
|
||||||
|
close=${tag#/}
|
||||||
|
close_stack=$close\\n$close_stack
|
||||||
|
else
|
||||||
|
if [ $kak_opt_filetype != xml ] ; then
|
||||||
|
case $tag in
|
||||||
|
#self-closing tags
|
||||||
|
area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr) continue ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
if [ $tag = $close ] ; then
|
||||||
|
close_stack=${close_stack#*\\n}
|
||||||
|
close=`echo $close_stack | head -n 1`
|
||||||
|
else
|
||||||
|
result=$tag
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ -z $result ] && echo "fail 'no un-closed tag'"
|
||||||
|
echo "execute-keys -with-hooks \;i<lt>/$result><esc>"
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
|
map global user c ':close_tag<ret>' -docstring "Close tag"
|
26
nate/dotfiles/macchiato.gitconfig
Normal file
26
nate/dotfiles/macchiato.gitconfig
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[delta "Catppuccin Macchiato"]
|
||||||
|
blame-palette = "#24273a #1e2030 #181926 #363a4f #494d64"
|
||||||
|
commit-decoration-style = "box ul"
|
||||||
|
dark = true
|
||||||
|
file-decoration-style = "#cad3f5"
|
||||||
|
file-style = "#cad3f5"
|
||||||
|
hunk-header-decoration-style = "box ul"
|
||||||
|
hunk-header-file-style = "bold"
|
||||||
|
hunk-header-line-number-style = "bold #a5adcb"
|
||||||
|
hunk-header-style = "file line-number syntax"
|
||||||
|
line-numbers = true
|
||||||
|
line-numbers-left-style = "#6e738d"
|
||||||
|
line-numbers-minus-style = "bold #ed8796"
|
||||||
|
line-numbers-plus-style = "bold #a6da95"
|
||||||
|
line-numbers-right-style = "#6e738d"
|
||||||
|
line-numbers-zero-style = "#6e738d"
|
||||||
|
# 25% red 75% base
|
||||||
|
minus-emph-style = "bold syntax #564052"
|
||||||
|
# 10% red 90% base
|
||||||
|
minus-style = "syntax #383143"
|
||||||
|
# 25% green 75% base
|
||||||
|
plus-emph-style = "bold syntax #455552"
|
||||||
|
# 10% green 90% base
|
||||||
|
plus-style = "syntax #313943"
|
||||||
|
# Should match the name of the bat theme
|
||||||
|
syntax-theme = "Catppuccin-macchiato"
|
|
@ -1,19 +1,19 @@
|
||||||
font=UbuntuMono 12.5
|
font=Overpass Nerd Font 20
|
||||||
|
|
||||||
background-color=#404552
|
background-color=#24273a
|
||||||
text-color=#e5e9f0
|
text-color=#cad3f5
|
||||||
width=315
|
width=630
|
||||||
height=200
|
height=400
|
||||||
padding=10
|
padding=10
|
||||||
margin=10
|
margin=20
|
||||||
progress-color=over #eceff480
|
progress-color=over #eceff480
|
||||||
icon-path=/usr/share/icons/Arc-X-D
|
icon-path=/usr/share/icons/Arc-X-D
|
||||||
max-icon-size=70
|
max-icon-size=140
|
||||||
layer=overlay
|
layer=overlay
|
||||||
|
|
||||||
border-size=5
|
border-size=5
|
||||||
border-radius=0
|
border-radius=8
|
||||||
border-color=#5294e2
|
border-color=#b7bdf8
|
||||||
|
|
||||||
default-timeout=5000
|
default-timeout=5000
|
||||||
|
|
||||||
|
|
|
@ -14,13 +14,14 @@ for_window [class="Telegram"] focus
|
||||||
|
|
||||||
for_window [app_id="xed"] focus
|
for_window [app_id="xed"] focus
|
||||||
|
|
||||||
|
# default keepass main window to scratch
|
||||||
|
for_window [app_id="org.keepassxc.KeePassXC"] $floating_window
|
||||||
|
for_window [app_id="org.keepassxc.KeePassXC" title="KeePassXC"] move to scratchpad #, scratchpad show # default to show
|
||||||
|
|
||||||
# set floating (nontiling)for apps needing it:
|
# set floating (nontiling) for apps needing it:
|
||||||
for_window [class="Yad" instance="yad"] floating enable
|
for_window [class="Yad" instance="yad"] floating enable
|
||||||
for_window [app_id="yad"] floating enable
|
for_window [app_id="yad"] floating enable
|
||||||
for_window [app_id="blueman-manager"] floating enable, resize set width 40 ppt height 30 ppt
|
for_window [app_id="blueman-manager"] floating enable, resize set width 40 ppt height 30 ppt
|
||||||
for_window [app_id="mobile"] floating enable, resize set width 200 ppt height 400 ppt
|
|
||||||
|
|
||||||
|
|
||||||
# set floating (nontiling) for special apps:
|
# set floating (nontiling) for special apps:
|
||||||
for_window [class="Xsane" instance="xsane"] floating enable
|
for_window [class="Xsane" instance="xsane"] floating enable
|
||||||
|
@ -29,6 +30,7 @@ for_window [class="qt5ct" instance="qt5ct"] floating enable, resize set width 60
|
||||||
for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable
|
for_window [class="Bluetooth-sendto" instance="bluetooth-sendto"] floating enable
|
||||||
for_window [app_id="pamac-manager"] floating enable, resize set width 80 ppt height 70 ppt
|
for_window [app_id="pamac-manager"] floating enable, resize set width 80 ppt height 70 ppt
|
||||||
for_window [class="Lxappearance"] floating enable, resize set width 60 ppt height 50 ppt
|
for_window [class="Lxappearance"] floating enable, resize set width 60 ppt height 50 ppt
|
||||||
|
for_window [class="steam" title="^((?!Steam$).)*"] floating enable
|
||||||
|
|
||||||
# set floating for window roles
|
# set floating for window roles
|
||||||
for_window [window_role="pop-up"] floating enable
|
for_window [window_role="pop-up"] floating enable
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Auth with polkit-gnome:
|
# Auth with polkit-gnome:
|
||||||
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
exec lxqt-policykit-agent
|
||||||
|
|
||||||
# Desktop notifications
|
# Desktop notifications
|
||||||
exec mako
|
exec mako
|
||||||
|
|
|
@ -145,8 +145,8 @@ exec swayidle -w\
|
||||||
# Move focus to the parent container
|
# Move focus to the parent container
|
||||||
bindsym $mod+a focus parent
|
bindsym $mod+a focus parent
|
||||||
|
|
||||||
bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc
|
# bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc
|
||||||
bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec
|
# bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec
|
||||||
|
|
||||||
#
|
#
|
||||||
# Scratchpad:
|
# Scratchpad:
|
||||||
|
@ -225,7 +225,7 @@ bindsym $mod+r mode "resize"
|
||||||
#
|
#
|
||||||
# Screenshots
|
# Screenshots
|
||||||
#
|
#
|
||||||
bindsym $mod+Shift+p exec /usr/share/sway/scripts/grimshot --notify save output
|
bindsym $mod+Shift+p exec ~/.config/sway/scripts/screenshot.sh clipboard
|
||||||
bindsym $mod+p exec ~/.config/sway/scripts/screenshot.sh
|
bindsym $mod+p exec ~/.config/sway/scripts/screenshot.sh
|
||||||
#
|
#
|
||||||
# Keybindings List
|
# Keybindings List
|
||||||
|
|
|
@ -9,5 +9,5 @@
|
||||||
# Wacom Tablet - Example
|
# Wacom Tablet - Example
|
||||||
# input "1386:884:Wacom_Intuos_S_Pad" map_to_output HDMI-A-1
|
# input "1386:884:Wacom_Intuos_S_Pad" map_to_output HDMI-A-1
|
||||||
# input "1386:884:Wacom_Intuos_S_Pen" map_to_output HDMI-A-1
|
# input "1386:884:Wacom_Intuos_S_Pen" map_to_output HDMI-A-1
|
||||||
output DP-3 resolution 2560x1440@164.956Hz position 0,0
|
output DP-3 resolution 3840x2160@240.084Hz position 0,0
|
||||||
output * adaptive_sync on
|
output * adaptive_sync off
|
||||||
|
|
|
@ -41,8 +41,8 @@ font pango:Overpass Nerd Font 12
|
||||||
smart_borders on
|
smart_borders on
|
||||||
|
|
||||||
# Set wallpaper:
|
# Set wallpaper:
|
||||||
#exec_always swaybg -i /home/nate/.config/sway/wallpapers/ign-0000.png
|
exec_always swaybg -i /home/nate/.config/sway/wallpapers/nix-black-4k.png
|
||||||
exec_always /home/nate/.config/sway/scripts/background.sh
|
# exec_always /home/nate/.config/sway/scripts/background.sh
|
||||||
|
|
||||||
# Title format for windows
|
# Title format for windows
|
||||||
for_window [shell="xdg_shell"] title_format "%title (%app_id)"
|
for_window [shell="xdg_shell"] title_format "%title (%app_id)"
|
||||||
|
@ -71,31 +71,28 @@ bar {
|
||||||
swaybar_command waybar
|
swaybar_command waybar
|
||||||
}
|
}
|
||||||
|
|
||||||
set $opacity 0.88
|
set $opacity 0.8
|
||||||
set $floating_window floating enable, resize set width 1030 height 710, opacity 1.0
|
set $floating_window floating enable, resize set width 1030 height 710, opacity 1.0
|
||||||
|
|
||||||
for_window {
|
for_window {
|
||||||
[class=".*"] opacity $opacity
|
[class=".*"] opacity 1.0
|
||||||
[app_id=".*"] opacity $opacity
|
[app_id=".*"] opacity 1.0
|
||||||
[app_id="firefox"] opacity 1.0
|
[app_id="foot"] opacity $opacity
|
||||||
[app_id="corectrl"] opacity 1.0
|
[app_id="thunar"] opacity $opacity
|
||||||
[app_id="org.keepassxc.KeePassXC"] $floating_window, move to scratchpad, sratchpad show, opacity 1.0
|
|
||||||
[app_id="pavucontrol"] opacity 1.0
|
|
||||||
[app_id="oversteer"] opacity 1.0
|
|
||||||
|
|
||||||
|
# Steam
|
||||||
[class="steam_app.*"] inhibit_idle fullscreen; floating enable; border none opacity 1.0
|
[class="steam_app.*"] inhibit_idle fullscreen; floating enable; border none opacity 1.0
|
||||||
[class="steam"] opacity 1.0
|
[class="steam"] opacity 1.0
|
||||||
[class="leagueclientux.exe"] opacity 1.0
|
|
||||||
[class="obsidian"] opacity 1.0
|
|
||||||
|
|
||||||
[title="(?:Open|Save|Save New|Open a) (?:File|Folder|As|Scene As)"] $floating_window
|
|
||||||
# Godot windows
|
# Godot windows
|
||||||
[title="(?:Godot)"] opacity 1.0
|
|
||||||
[title="(?:Create New|Select Frames|project.godot|node)"] $floating_window
|
[title="(?:Create New|Select Frames|project.godot|node)"] $floating_window
|
||||||
[title="(?:Create Folder|Node Configuration|Warning|Please Confirm)"] $floating_window, resize set height 200
|
[title="(?:Create Folder|Node Configuration|Warning|Please Confirm)"] $floating_window, resize set height 200
|
||||||
|
|
||||||
# Aseprite
|
# Aseprite
|
||||||
[title="(?:Aseprite)"] opacity 1.0
|
[title="(?:Aseprite)"] opacity 1.0
|
||||||
|
|
||||||
|
# Floating windows
|
||||||
|
[title="(?:Open|Save|Save New|Open a) (?:File|Folder|As|Scene As)"] $floating_window
|
||||||
[window_role="pop-up"] $floating_window
|
[window_role="pop-up"] $floating_window
|
||||||
[window_role="bubble"] $floating_window
|
[window_role="bubble"] $floating_window
|
||||||
[window_role="task_dialog"] $floating_window
|
[window_role="task_dialog"] $floating_window
|
||||||
|
|
|
@ -4,15 +4,30 @@ entries="Active Screen Output Area Window"
|
||||||
|
|
||||||
selected=$(printf '%s\n' $entries | wofi --style=$HOME/.config/wofi/style.widgets.css --conf=$HOME/.config/wofi/config.screenshot | awk '{print tolower($1)}')
|
selected=$(printf '%s\n' $entries | wofi --style=$HOME/.config/wofi/style.widgets.css --conf=$HOME/.config/wofi/config.screenshot | awk '{print tolower($1)}')
|
||||||
|
|
||||||
case $selected in
|
if [ "$1" == "clipboard" ]; then
|
||||||
active)
|
case $selected in
|
||||||
grimshot --notify save active;;
|
active)
|
||||||
screen)
|
grimshot --notify copy active;;
|
||||||
grimshot --notify save screen;;
|
screen)
|
||||||
output)
|
grimshot --notify copy screen;;
|
||||||
grimshot --notify save output;;
|
output)
|
||||||
area)
|
grimshot --notify copy output;;
|
||||||
grimshot --notify save area;;
|
area)
|
||||||
window)
|
grimshot --notify copy area;;
|
||||||
grimshot --notify save window;;
|
window)
|
||||||
esac
|
grimshot --notify copy window;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
case $selected in
|
||||||
|
active)
|
||||||
|
grimshot --notify save active;;
|
||||||
|
screen)
|
||||||
|
grimshot --notify save screen;;
|
||||||
|
output)
|
||||||
|
grimshot --notify save output;;
|
||||||
|
area)
|
||||||
|
grimshot --notify save area;;
|
||||||
|
window)
|
||||||
|
grimshot --notify save window;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
BIN
nate/dotfiles/sway/wallpapers/nix-black-4k.png
Normal file
BIN
nate/dotfiles/sway/wallpapers/nix-black-4k.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 68 KiB |
7
nate/dotfiles/vis/config
Normal file
7
nate/dotfiles/vis/config
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
visualizer.fps=20
|
||||||
|
visualizer.spectrum.bar.spacing=1
|
||||||
|
visualizer.spectrum.bar.width=3
|
||||||
|
visualizer.spectrum.smoothing.mode=monstercat
|
||||||
|
|
||||||
|
visualizer.monstercat.smoothing.factor=3
|
||||||
|
audio.stereo.enabled=false
|
0
nate/dotfiles/vis/vis.log
Normal file
0
nate/dotfiles/vis/vis.log
Normal file
|
@ -2,13 +2,13 @@
|
||||||
{
|
{
|
||||||
"layer": "top",
|
"layer": "top",
|
||||||
"position": "top",
|
"position": "top",
|
||||||
"margin-top": 8,
|
"margin-top": 3,
|
||||||
"margin-left": 10,
|
"margin-left": 10,
|
||||||
"margin-right": 10,
|
"margin-right": 10,
|
||||||
"margin-bottom": 8,
|
"margin-bottom": 3,
|
||||||
|
|
||||||
// If height property would be not present, it'd be calculated dynamically
|
// If height property would be not present, it'd be calculated dynamically
|
||||||
"height": 30,
|
"height": 60,
|
||||||
|
|
||||||
"modules-left": [
|
"modules-left": [
|
||||||
"custom/launcher",
|
"custom/launcher",
|
||||||
|
@ -17,6 +17,13 @@
|
||||||
],
|
],
|
||||||
|
|
||||||
"modules-center": [
|
"modules-center": [
|
||||||
|
"custom/signal",
|
||||||
|
"custom/steam",
|
||||||
|
"custom/spotify",
|
||||||
|
"custom/firefox",
|
||||||
|
"custom/slack",
|
||||||
|
"custom/files",
|
||||||
|
"custom/pomo",
|
||||||
],
|
],
|
||||||
|
|
||||||
"modules-right": [
|
"modules-right": [
|
||||||
|
@ -25,12 +32,11 @@
|
||||||
"memory",
|
"memory",
|
||||||
"cpu",
|
"cpu",
|
||||||
"pulseaudio",
|
"pulseaudio",
|
||||||
"custom/spotify",
|
|
||||||
"custom/keyboard-layout",
|
"custom/keyboard-layout",
|
||||||
"battery",
|
"battery",
|
||||||
//"custom/PBPbattery",
|
//"custom/PBPbattery",
|
||||||
"backlight#icon",
|
// "backlight#icon",
|
||||||
"backlight#value",
|
// "backlight#value",
|
||||||
"clock",
|
"clock",
|
||||||
"tray",
|
"tray",
|
||||||
//"custom/weather",
|
//"custom/weather",
|
||||||
|
@ -80,7 +86,7 @@
|
||||||
"warning": 70,
|
"warning": 70,
|
||||||
"critical": 90,
|
"critical": 90,
|
||||||
},
|
},
|
||||||
"on-click": "xfce4-terminal -e 'htop'",
|
"on-click": "foot -e 'htop'",
|
||||||
},
|
},
|
||||||
|
|
||||||
"custom/keyboard-layout": {
|
"custom/keyboard-layout": {
|
||||||
|
@ -97,7 +103,7 @@
|
||||||
"memory": {
|
"memory": {
|
||||||
"interval": 5,
|
"interval": 5,
|
||||||
"format": " {}%", // Icon: memory
|
"format": " {}%", // Icon: memory
|
||||||
"on-click": "xfce4-terminal -e 'htop'",
|
"on-click": "foot -e 'htop'",
|
||||||
"states": {
|
"states": {
|
||||||
"warning": 70,
|
"warning": 70,
|
||||||
"critical": 90
|
"critical": 90
|
||||||
|
@ -110,7 +116,7 @@
|
||||||
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
|
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
|
||||||
"format-disconnected": "⚠ Disconnected",
|
"format-disconnected": "⚠ Disconnected",
|
||||||
"tooltip-format": "{ifname}: {ipaddr}",
|
"tooltip-format": "{ifname}: {ipaddr}",
|
||||||
"on-click": "xfce4-terminal -e 'nmtui'",
|
"on-click": "foot -e 'nmtui'",
|
||||||
},
|
},
|
||||||
"network#vpn": {
|
"network#vpn": {
|
||||||
"interface": "tun0",
|
"interface": "tun0",
|
||||||
|
@ -147,18 +153,18 @@
|
||||||
"scroll-step": 1, // %, can be a float
|
"scroll-step": 1, // %, can be a float
|
||||||
"format": "{volume}% {icon}",
|
"format": "{volume}% {icon}",
|
||||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||||
"format-bluetooth-muted": " {icon} {format_source}",
|
"format-bluetooth-muted": " {icon} {format_source}",
|
||||||
"format-muted": "婢 {format_source}",
|
"format-muted": " {format_source}",
|
||||||
"format-source": "{volume}% ",
|
"format-source": "{volume}% ",
|
||||||
"format-source-muted": "",
|
"format-source-muted": "",
|
||||||
"format-icons": {
|
"format-icons": {
|
||||||
"headphone": "",
|
"headphone": "",
|
||||||
"hands-free": "וֹ",
|
"hands-free": "",
|
||||||
"headset": " ",
|
"headset": "",
|
||||||
"phone": "",
|
"phone": "",
|
||||||
"portable": "",
|
"portable": "",
|
||||||
"car": "",
|
"car": "",
|
||||||
"default": [""]
|
"default": [""]
|
||||||
},
|
},
|
||||||
"on-click": "pavucontrol",
|
"on-click": "pavucontrol",
|
||||||
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
|
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
|
||||||
|
@ -173,6 +179,12 @@
|
||||||
"interval": 600,
|
"interval": 600,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// "custom/temp": {
|
||||||
|
// "exec": "notify-send \"temp thing\"",
|
||||||
|
// "interval": "once",
|
||||||
|
// "signal": 8,
|
||||||
|
// },
|
||||||
|
|
||||||
"tray": {
|
"tray": {
|
||||||
"icon-size": 18,
|
"icon-size": 18,
|
||||||
"spacing":10,
|
"spacing":10,
|
||||||
|
@ -191,28 +203,54 @@
|
||||||
"on-scroll-up": "brightnessctl -c backlight set +1%"
|
"on-scroll-up": "brightnessctl -c backlight set +1%"
|
||||||
},
|
},
|
||||||
|
|
||||||
"custom/firefox": {
|
"custom/signal": {
|
||||||
"format": " ",
|
"format": " ",
|
||||||
"on-click": "exec firefox",
|
"on-click": "exec signal",
|
||||||
"tooltip": false
|
"tooltip": false,
|
||||||
|
},
|
||||||
|
|
||||||
|
"custom/steam": {
|
||||||
|
"format": " ",
|
||||||
|
"on-click": "exec steam",
|
||||||
|
"tooltip": false,
|
||||||
},
|
},
|
||||||
|
|
||||||
"custom/spotify": {
|
"custom/spotify": {
|
||||||
"format": " ",
|
"format": " ",
|
||||||
"on-click": "foot -e 'ncspot'",
|
"on-click": "foot -e 'ncspot'",
|
||||||
"tooltip": false
|
"tooltip": false,
|
||||||
},
|
},
|
||||||
|
|
||||||
"custom/terminal": {
|
"custom/firefox": {
|
||||||
"format": " ",
|
"format": " ",
|
||||||
"on-click": "exec xfce4-terminal",
|
"on-click": "exec firefox",
|
||||||
"tooltip": false
|
"tooltip": false,
|
||||||
},
|
},
|
||||||
|
|
||||||
"custom/files": {
|
|
||||||
"format": " ",
|
"custom/slack": {
|
||||||
|
"format": " ",
|
||||||
|
"on-click": "slack",
|
||||||
|
"tooltip": false,
|
||||||
|
"exec if": "pgrep slack"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
"custom/files": {
|
||||||
|
"format": " ",
|
||||||
"on-click": "exec thunar",
|
"on-click": "exec thunar",
|
||||||
"tooltip": false
|
"tooltip": false,
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
"custom/pomo": {
|
||||||
|
"format": " {} ",
|
||||||
|
"exec": "/home/nate/source/pomozoro/zig-out/bin/pomozoro",
|
||||||
|
"return-type": "json",
|
||||||
|
"on-click": "echo 's' > ~/.local/share/pomozoro/pomopipe",
|
||||||
|
"on-click-right": "echo 'p' > ~/.local/share/pomozoro/pomopipe",
|
||||||
|
"on-click-middle": "echo 'r' > ~/.local/share/pomozoro/pomopipe",
|
||||||
|
// "signal": 8,
|
||||||
},
|
},
|
||||||
|
|
||||||
"custom/launcher": {
|
"custom/launcher": {
|
||||||
|
|
|
@ -6,67 +6,110 @@
|
||||||
*
|
*
|
||||||
* =========================================================================== */
|
* =========================================================================== */
|
||||||
|
|
||||||
|
@define-color rosewater #f4dbd6;
|
||||||
|
@define-color flamingo #f0c6c6;
|
||||||
|
@define-color pink #f5bde6;
|
||||||
|
@define-color mauve #c6a0f6;
|
||||||
|
@define-color red #ed8796;
|
||||||
|
@define-color maroon #ee99a0;
|
||||||
|
@define-color peach #f5a97f;
|
||||||
|
@define-color yellow #eed49f;
|
||||||
|
@define-color green #a6da95;
|
||||||
|
@define-color teal #8bd5ca;
|
||||||
|
@define-color sky #91d7e3;
|
||||||
|
@define-color sapphire #7dc4e4;
|
||||||
|
@define-color blue #8aadf4;
|
||||||
|
@define-color lavender #b7bdf8;
|
||||||
|
@define-color text #cad3f5;
|
||||||
|
@define-color subtext1 #b8c0e0;
|
||||||
|
@define-color subtext0 #a5adcb;
|
||||||
|
@define-color overlay2 #939ab7;
|
||||||
|
@define-color overlay1 #8087a2;
|
||||||
|
@define-color overlay0 #6e738d;
|
||||||
|
@define-color surface2 #5b6078;
|
||||||
|
@define-color surface1 #494d64;
|
||||||
|
@define-color surface0 #363a4f;
|
||||||
|
@define-color base #24273a;
|
||||||
|
@define-color mantle #1e2030;
|
||||||
|
@define-color crust #181926;
|
||||||
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* Keyframes
|
* Keyframes
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
/*
|
|
||||||
Nordic Color Scheme
|
|
||||||
*/
|
|
||||||
@define-color nord2 #434c5e;
|
|
||||||
@define-color nord3 #4c566a;
|
|
||||||
@define-color nord4 #d8dee9;
|
|
||||||
@define-color nord8 #88c0d0;
|
|
||||||
@define-color nord9 #81a1c1;
|
|
||||||
@define-color nord_cyan #8fbcbb;
|
|
||||||
@define-color nord_orange #d08770;
|
|
||||||
@define-color nord_red #bf616a;
|
|
||||||
@define-color nord_green #a3be8c;
|
|
||||||
@define-color nord_yellow #ebcb8b;
|
|
||||||
|
|
||||||
@keyframes blink-warning {
|
@keyframes blink-warning {
|
||||||
70% {
|
70% {
|
||||||
color: white;
|
color: @overlay0;
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
color: white;
|
color: @overlay0;
|
||||||
background-color: @nord_orange;
|
background-color: @crust;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes blink-critical {
|
@keyframes blink-critical {
|
||||||
70% {
|
70% {
|
||||||
color: white;
|
color: @overlay2;
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
color: white;
|
color: @overlay2;
|
||||||
background-color: @nord_red;
|
background-color: @base;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* Base styles
|
* Base styles
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
/* Reset all styles */
|
/* Reset all styles */
|
||||||
* {
|
* {
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
margin: 1px;
|
margin: 1px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The whole bar */
|
/* The whole bar */
|
||||||
#waybar {
|
#waybar {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: @nord4;
|
background-color: transparent;
|
||||||
background-color: @nord3;
|
font-family: Overpass Nerd Font;
|
||||||
font-family: Overpass Nerd Font;
|
font-size: 20px;
|
||||||
font-size: 16px;
|
color: @text;
|
||||||
border-radius: 15px;
|
}
|
||||||
|
|
||||||
|
#taskbar {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button {
|
||||||
|
padding-left: 3px;
|
||||||
|
padding-right: 3px;
|
||||||
|
margin-left: 3px;
|
||||||
|
margin-right: 3px;
|
||||||
|
color: transparent;
|
||||||
|
border-bottom: 2px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
#taskbar button.active {
|
||||||
|
color: @lavender;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modules-left,
|
||||||
|
.modules-right,
|
||||||
|
.modules-center {
|
||||||
|
/* margin: 8px 8px 1px 8px; */
|
||||||
|
background: transparent;
|
||||||
|
/* color: @; */
|
||||||
|
background-color: @base;
|
||||||
|
border-radius: 25px;
|
||||||
|
padding: 0px 10px 0px 10px;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 3px;
|
||||||
|
border-color: @surface0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Every modules */
|
/* Every modules */
|
||||||
|
@ -84,8 +127,8 @@ Nordic Color Scheme
|
||||||
#tray,
|
#tray,
|
||||||
#idle_inhibitor,
|
#idle_inhibitor,
|
||||||
#custom-PBPbattery {
|
#custom-PBPbattery {
|
||||||
padding:0.5rem 0.6rem;
|
padding: 0.5rem 0.6rem;
|
||||||
margin: 1px 0px;
|
margin: 1px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
|
@ -93,127 +136,179 @@ Nordic Color Scheme
|
||||||
* -------------------------------------------------------------------------- */
|
* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
#battery {
|
#battery {
|
||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-direction: alternate;
|
animation-direction: alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.warning {
|
#battery.warning {
|
||||||
color: @nord_orange;
|
color: @flamingo;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.critical {
|
#battery.critical {
|
||||||
color: @nord_red;
|
color: @red;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.warning.discharging {
|
#battery.warning.discharging {
|
||||||
animation-name: blink-warning;
|
animation-name: blink-warning;
|
||||||
animation-duration: 3s;
|
animation-duration: 3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.critical.discharging {
|
#battery.critical.discharging {
|
||||||
animation-name: blink-critical;
|
animation-name: blink-critical;
|
||||||
animation-duration: 2s;
|
animation-duration: 2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#cpu.warning {
|
#cpu.warning {
|
||||||
color: @nord_orange;
|
color: @flamingo;
|
||||||
}
|
}
|
||||||
|
|
||||||
#cpu.critical {
|
#cpu.critical {
|
||||||
color: @nord_red;
|
color: @red;
|
||||||
}
|
}
|
||||||
|
|
||||||
#memory {
|
#memory {
|
||||||
animation-timing-function: linear;
|
animation-timing-function: linear;
|
||||||
animation-iteration-count: infinite;
|
animation-iteration-count: infinite;
|
||||||
animation-direction: alternate;
|
animation-direction: alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#memory.warning {
|
#memory.warning {
|
||||||
color: @nord_orange;
|
color: @flamingo;
|
||||||
}
|
}
|
||||||
|
|
||||||
#memory.critical {
|
#memory.critical {
|
||||||
color: @nord_red;
|
color: @red;
|
||||||
animation-name: blink-critical;
|
animation-name: blink-critical;
|
||||||
animation-duration: 2s;
|
animation-duration: 2s;
|
||||||
padding-left:5px;
|
padding-left: 5px;
|
||||||
padding-right:5px;
|
padding-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#mode {
|
#mode {
|
||||||
background: @nord8;
|
background: @overlay0;
|
||||||
border-bottom: 3px transparent;
|
border-bottom: 3px transparent;
|
||||||
color:white;
|
color: @text;
|
||||||
margin-left: 5px;
|
margin-left: 5px;
|
||||||
padding: 7px;
|
margin-right: 5px;
|
||||||
|
border-radius: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#network.disconnected {
|
#network.disconnected {
|
||||||
color: @nord_orange;
|
color: @flamingo;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio {
|
#pulseaudio {
|
||||||
padding-top:6px;
|
padding-top: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio.muted {
|
#pulseaudio.muted {
|
||||||
|
color: @sky;
|
||||||
color: @nord_cyan;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#temperature.critical {
|
#temperature.critical {
|
||||||
color: @nord_red;
|
color: @red;
|
||||||
}
|
}
|
||||||
|
|
||||||
#window {
|
#window {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces {
|
#workspaces {
|
||||||
font-size:13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button {
|
#workspaces button {
|
||||||
border-bottom: 3px solid transparent;
|
border-bottom: 3px solid transparent;
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
padding:0px;
|
padding: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-launcher {
|
#custom-launcher {
|
||||||
color: @nord9;
|
color: @lavenderblush;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* @define-color rosewater #f4dbd6; */
|
||||||
|
/* @define-color flamingo #f0c6c6; */
|
||||||
|
/* @define-color pink #f5bde6; */
|
||||||
|
/* @define-color mauve #c6a0f6; */
|
||||||
|
/* @define-color red #ed8796; */
|
||||||
|
/* @define-color maroon #ee99a0; */
|
||||||
|
/* @define-color peach #f5a97f; */
|
||||||
|
/* @define-color yellow #eed49f; */
|
||||||
|
/* @define-color green #a6da95; */
|
||||||
|
/* @define-color teal #8bd5ca; */
|
||||||
|
/* @define-color sky #91d7e3; */
|
||||||
|
/* @define-color sapphire #7dc4e4; */
|
||||||
|
/* @define-color blue #8aadf4; */
|
||||||
|
/* @define-color lavender #b7bdf8; */
|
||||||
|
|
||||||
|
|
||||||
|
#custom-signal {
|
||||||
|
color: @lavender;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-steam {
|
||||||
|
color: @teal;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-spotify {
|
#custom-spotify {
|
||||||
color: @nord_green;
|
color: @green;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#custom-firefox {
|
||||||
|
color: @yellow;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-slack {
|
||||||
|
color: @peach;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-files {
|
||||||
|
color: @pink;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-pomo {
|
||||||
|
color: @red;
|
||||||
|
padding: 0px 5px 0px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#wiggle {
|
||||||
|
animation-name: blink-warning;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#workspaces button.focused {
|
#workspaces button.focused {
|
||||||
border-bottom: 3px solid @nord_green;
|
border-bottom: 3px solid @green;
|
||||||
margin-bottom: 1px;
|
margin-bottom: 1px;
|
||||||
padding-left:0;
|
padding-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button.urgent {
|
#workspaces button.urgent {
|
||||||
border-color: @nord2;
|
border-color: @lavender;
|
||||||
color: @nord_yellow;
|
color: @yellow;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-power {
|
#custom-power {
|
||||||
margin-left:15px;
|
margin-left: 15px;
|
||||||
margin-right:15px;
|
margin-right: 15px;
|
||||||
font-size:15px;
|
font-size: 15px;
|
||||||
color: @nord_orange;
|
color: @flamingo;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-launcher {
|
#custom-launcher {
|
||||||
font-size:15px;
|
font-size: 15px;
|
||||||
margin-left:15px;
|
margin-left: 15px;
|
||||||
margin-right:10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#backlight.icon {
|
#backlight.icon {
|
||||||
padding-right:1px;
|
padding-right: 1px;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
|
@ -12,6 +12,8 @@ in
|
||||||
};
|
};
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
|
# Add pipewire support
|
||||||
|
# package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles = {
|
profiles = {
|
||||||
default = {
|
default = {
|
||||||
|
@ -22,6 +24,7 @@ in
|
||||||
nur.repos.rycee.firefox-addons.darkreader
|
nur.repos.rycee.firefox-addons.darkreader
|
||||||
nur.repos.rycee.firefox-addons.keepassxc-browser
|
nur.repos.rycee.firefox-addons.keepassxc-browser
|
||||||
nur.repos.crazazy.firefox-addons.ublock-origin
|
nur.repos.crazazy.firefox-addons.ublock-origin
|
||||||
|
nur.repos.bandithedoge.firefoxAddons.stylus
|
||||||
];
|
];
|
||||||
search = {
|
search = {
|
||||||
# Replace default firefox search engine config with this one
|
# Replace default firefox search engine config with this one
|
||||||
|
@ -33,12 +36,22 @@ in
|
||||||
template = "https://www.startpage.com/sp/search?query={searchTerms}";
|
template = "https://www.startpage.com/sp/search?query={searchTerms}";
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
"Nix Packages" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://search.nixos.org/packages";
|
||||||
|
params = [
|
||||||
|
{ name = "type"; value = "packages"; }
|
||||||
|
{ name = "query"; value = "{searchTerms}"; }
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
|
definedAliases = [ "@np" ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
"browser.startup.blankWindow" = true;
|
"browser.startup.blankWindow" = true;
|
||||||
"browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064";
|
"browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064";
|
||||||
"browser.newtabpage.enabled" = false;
|
|
||||||
"browser.search.region" = "US";
|
"browser.search.region" = "US";
|
||||||
"browser.search.isUS" = true;
|
"browser.search.isUS" = true;
|
||||||
"distribution.searchplugins.defaultLocale" = "en-US";
|
"distribution.searchplugins.defaultLocale" = "en-US";
|
||||||
|
@ -54,7 +67,9 @@ in
|
||||||
"signon.rememberSignon" = false;
|
"signon.rememberSignon" = false;
|
||||||
"extensions.formautofill.creditCards.enabled" = false;
|
"extensions.formautofill.creditCards.enabled" = false;
|
||||||
"extensions.formautofill.addresses.enabled" = false;
|
"extensions.formautofill.addresses.enabled" = false;
|
||||||
# "browser.bookmarks.showMobileBookmarks" = true;
|
"browser.toolbars.bookmarks.visibility" = "always";
|
||||||
|
# For applying userContent.css - not being used
|
||||||
|
# "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
# "browser.newtabpage.pinned" = [{
|
# "browser.newtabpage.pinned" = [{
|
||||||
# title = "NixOS";
|
# title = "NixOS";
|
||||||
# url = "https://nixos.org";
|
# url = "https://nixos.org";
|
||||||
|
|
|
@ -1,16 +1,37 @@
|
||||||
{ inputs, outputs, lib, config, pkgs, ... }:
|
{ inputs, config, pkgs, ... }:
|
||||||
let
|
let
|
||||||
userName = "nate";
|
userName = "nate";
|
||||||
fullName = "Nathan Anderson";
|
fullName = "Nathan Anderson";
|
||||||
email = "n8r@tuta.io";
|
email = "n8r@tuta.io";
|
||||||
|
unstable = import inputs.nixpkgs-unstable { system = "x86_64-linux"; config.allowUnfree = true; };
|
||||||
|
oldstable = import inputs.nixpkgs-23 { system = "x86_64-linux"; config.allowUnfree = true; };
|
||||||
|
davinciDesktop = pkgs.makeDesktopItem {
|
||||||
|
name = "davinci-resolve-studio";
|
||||||
|
desktopName = "Davinci Resolve Studio";
|
||||||
|
exec = "${oldstable.davinci-resolve-studio}";
|
||||||
|
};
|
||||||
|
# overlay-unstable = final: prev: {
|
||||||
|
# unstable = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux;
|
||||||
|
# };
|
||||||
|
# overlay-oldstable = final: prev: {
|
||||||
|
# pkgs23 = inputs.nixpkgs-23.legacyPackages.x86_64-linux;
|
||||||
|
# };
|
||||||
|
# overlay-unstable = final: prev: {
|
||||||
|
# # unstable = inputs.nixpkgs-unstable.legacyPackages.x86_64-linux;
|
||||||
|
# unstable = import inputs.nixpkgs-unstable {
|
||||||
|
# system = "x86_64-linux";
|
||||||
|
# config = {
|
||||||
|
# allowUnfreePredicate = (pkg: true);
|
||||||
|
# allowUnfree = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# nixpkgs.overlays = [
|
# nixpkgs.overlays = [
|
||||||
# inputs.nur.overlay
|
# overlay-unstable
|
||||||
# ];
|
# ];
|
||||||
|
|
||||||
# nixpkgs.config.allowUnfree = true;
|
|
||||||
# inputs.nixpkgs-stable.config.allowUnfree = true;
|
|
||||||
imports = [
|
imports = [
|
||||||
../apps/firefox/firefox.nix
|
../apps/firefox/firefox.nix
|
||||||
];
|
];
|
||||||
|
@ -27,40 +48,46 @@
|
||||||
firefoxApp.enable = true;
|
firefoxApp.enable = true;
|
||||||
|
|
||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# nur.repos.crazazy.js.eslint
|
# nur.repos.crazazy.js.eslint
|
||||||
# inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl
|
# inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl
|
||||||
|
chromium
|
||||||
#
|
#
|
||||||
# Dev Tools
|
# Dev Tools
|
||||||
#
|
#
|
||||||
dbeaver
|
dbeaver-bin
|
||||||
cargo
|
helix
|
||||||
kakoune
|
# kakoune
|
||||||
flutter316
|
# flutter316
|
||||||
docker
|
docker
|
||||||
docker-compose
|
docker-compose
|
||||||
|
fossil
|
||||||
|
fnc
|
||||||
|
jq
|
||||||
python310
|
python310
|
||||||
nodejs_21
|
|
||||||
zig
|
|
||||||
### LSP's
|
### LSP's
|
||||||
rnix-lsp # Nix LSP
|
nil # Nix LSP
|
||||||
|
nodePackages_latest.bash-language-server
|
||||||
openscad-lsp
|
openscad-lsp
|
||||||
nodePackages.typescript-language-server
|
|
||||||
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
|
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
|
||||||
rubyPackages.solargraph
|
python311Packages.python-lsp-server
|
||||||
python310Packages.python-lsp-server
|
# zls
|
||||||
zls
|
|
||||||
### Misc
|
### Misc
|
||||||
# android-udev-rules
|
# android-udev-rules
|
||||||
# android-tools
|
# android-tools
|
||||||
# sdkmanager
|
# sdkmanager
|
||||||
|
usbutils
|
||||||
|
cli-visualizer
|
||||||
openscad
|
openscad
|
||||||
|
|
||||||
#
|
#
|
||||||
# Gaming
|
# Gaming
|
||||||
#
|
#
|
||||||
amdgpu_top
|
amdgpu_top
|
||||||
|
mangohud
|
||||||
|
r2modman
|
||||||
wine-wayland
|
wine-wayland
|
||||||
webcord
|
webcord
|
||||||
|
|
||||||
|
@ -69,79 +96,80 @@
|
||||||
#
|
#
|
||||||
bat
|
bat
|
||||||
duf
|
duf
|
||||||
|
du-dust
|
||||||
fd
|
fd
|
||||||
fzf
|
fzf
|
||||||
lsd
|
lsd
|
||||||
ripgrep
|
ripgrep
|
||||||
tre-command
|
tre-command
|
||||||
gtop
|
gtop
|
||||||
|
htop
|
||||||
|
neofetch
|
||||||
# Normies
|
# Normies
|
||||||
unzip
|
unzip
|
||||||
|
llpp
|
||||||
|
nmap
|
||||||
|
|
||||||
#
|
#
|
||||||
# Photo / Video
|
# Photo / Video
|
||||||
#
|
#
|
||||||
davinci-resolve-studio
|
oldstable.davinci-resolve-studio
|
||||||
|
davinciDesktop
|
||||||
imv
|
imv
|
||||||
mpv
|
mpv
|
||||||
gimp
|
gimp
|
||||||
ffmpeg
|
ffmpeg
|
||||||
|
tenacity
|
||||||
|
yt-dlp
|
||||||
|
libimobiledevice
|
||||||
|
ifuse
|
||||||
|
|
||||||
#
|
#
|
||||||
# Communication
|
# Communication
|
||||||
#
|
#
|
||||||
mumble
|
mumble
|
||||||
slack
|
slack
|
||||||
signal-desktop
|
unstable.signal-desktop
|
||||||
|
|
||||||
#
|
#
|
||||||
# Other
|
# Other
|
||||||
#
|
#
|
||||||
keepassxc
|
keepassxc
|
||||||
obs-studio
|
obs-studio
|
||||||
|
unstable.betaflight-configurator
|
||||||
|
yubioath-flutter
|
||||||
|
|
||||||
|
#
|
||||||
|
# Style
|
||||||
|
#
|
||||||
|
catppuccin-kvantum
|
||||||
|
libsForQt5.qtstyleplugin-kvantum
|
||||||
|
libsForQt5.qt5ct
|
||||||
# Install fonts
|
# Install fonts
|
||||||
|
lato
|
||||||
(nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; })
|
(nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; })
|
||||||
|
recursive
|
||||||
# # You can also create simple shell scripts directly inside your
|
|
||||||
# # configuration. For example, this adds a command 'my-hello' to your
|
|
||||||
# # environment:
|
|
||||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
|
||||||
# echo "Hello, ${config.home.username}!"
|
|
||||||
# '')
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||||
# plain files is through 'home.file'.
|
# plain files is through 'home.file'.
|
||||||
home.file."${config.xdg.configHome}" = {
|
home.file."${config.xdg.configHome}" = {
|
||||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
|
||||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
|
||||||
# # symlink to the Nix store copy.
|
|
||||||
# ".screenrc".source = dotfiles/screenrc;
|
|
||||||
source = ../../dotfiles;
|
source = ../../dotfiles;
|
||||||
recursive = true;
|
recursive = true;
|
||||||
|
|
||||||
# # You can also set the file content immediately.
|
|
||||||
# ".gradle/gradle.properties".text = ''
|
|
||||||
# org.gradle.console=verbose
|
|
||||||
# org.gradle.daemon.idletimeout=3600000
|
|
||||||
# '';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# For applying custom styles
|
||||||
|
# home.file.".mozilla/firefox/default" = {
|
||||||
|
# source = ../../misc/firefox_styles;
|
||||||
|
# recursive = true;
|
||||||
|
# };
|
||||||
|
# location where stylus data is kept
|
||||||
|
# /home/nate/.mozilla/firefox/default/storage/default/moz-extension+++77a1d59f-183c-4439-b249-fdae98b7bd7b/idb
|
||||||
|
|
||||||
# Home Manager can also manage your environment variables through
|
|
||||||
# 'home.sessionVariables'. If you don't want to manage your shell through Home
|
|
||||||
# Manager then you have to manually source 'hm-session-vars.sh' located at
|
|
||||||
# either
|
|
||||||
#
|
|
||||||
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
# or
|
|
||||||
#
|
|
||||||
# /etc/profiles/per-user/nate/etc/profile.d/hm-session-vars.sh
|
|
||||||
#
|
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
EDITOR = "kak";
|
# MANPAGER="sh -c 'col -bx | bat -l man -p'";
|
||||||
|
BAT_THEME="Catppuccin Macchiato";
|
||||||
|
EDITOR = "hx";
|
||||||
XDG_CURRENT_DESKTOP="sway";
|
XDG_CURRENT_DESKTOP="sway";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -150,6 +178,25 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
userEmail = email;
|
userEmail = email;
|
||||||
userName = fullName;
|
userName = fullName;
|
||||||
|
extraConfig = {
|
||||||
|
include = { path = "${config.xdg.configHome}/macchiato.gitconfig"; };
|
||||||
|
init = { defaultBranch = "main"; };
|
||||||
|
pull = { ff = "only"; };
|
||||||
|
merge = { conflictStyle="zdiff3"; };
|
||||||
|
push = { autoSetupRemote="true"; };
|
||||||
|
delta = { features = "Catppuccin Macchiato"; };
|
||||||
|
};
|
||||||
|
delta.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true; # see note on other shells below
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
bash.enable = true; # see note on other shells below
|
||||||
};
|
};
|
||||||
|
|
||||||
# Zsh setup
|
# Zsh setup
|
||||||
|
@ -157,51 +204,85 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
oh-my-zsh = {
|
oh-my-zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
plugins = [ "git" ];
|
plugins = [ "fossil" "git" ];
|
||||||
theme = "half-life";
|
theme = "half-life";
|
||||||
};
|
};
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
alias ask="nix-shell -p python310Packages.openai --run 'python ~/source/python/chat.py'"
|
eval "$(direnv hook zsh)"
|
||||||
|
export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/ssh-agent
|
||||||
|
|
||||||
fzf_projects() {
|
# fzf_projects() {
|
||||||
DIR=`
|
# DIR=`
|
||||||
fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \
|
# fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \
|
||||||
xargs dirname | \
|
# xargs dirname | \
|
||||||
sed 's|$HOME||g' | \
|
# sed 's|$HOME||g' | \
|
||||||
sort | \
|
# sort | \
|
||||||
uniq | \
|
# uniq | \
|
||||||
fzf --preview 'ls $HOME/{}/README.md 2>/dev/null && bat $HOME/{}/README.md || printf "No README.md file found in this directory\n%s" {}' --preview-window=top | \
|
# fzf --preview 'ls $HOME/{}/README.md 2>/dev/null && bat $HOME/{}/README.md || printf "No README.md file found in this directory\n%s" {}' --preview-window=top | \
|
||||||
xargs printf "$HOME/%s/"
|
# xargs printf "$HOME/%s/"
|
||||||
`
|
# `
|
||||||
cd $DIR
|
# cd $DIR
|
||||||
|
# }
|
||||||
|
# alias p="fzf_projects ~/source/"
|
||||||
|
yt-audio() {
|
||||||
|
nix-shell -p yt-dlp --run "yt-dlp -x $1 --audio-format mp3"
|
||||||
}
|
}
|
||||||
alias p="fzf_projects source/"
|
|
||||||
|
|
||||||
|
# Better Unix Aliases
|
||||||
|
# alias ask="nix-shell -p python310Packages.openai --run 'python ~/source/python/chat.py'"
|
||||||
alias ls="lsd"
|
alias ls="lsd"
|
||||||
alias l="lsd --almost-all --long"
|
alias l="lsd --almost-all --long"
|
||||||
alias llm="lsd --timesort --long"
|
alias llm="lsd --timesort --long"
|
||||||
alias lS="lsd --oneline --classic"
|
alias lS="lsd --oneline --classic"
|
||||||
alias lt="lsd --tree --depth=2"
|
alias lt="lsd --tree --depth=2"
|
||||||
|
alias grep="rg"
|
||||||
|
alias cat="bat --paging=never"
|
||||||
|
alias rm="rm -i"
|
||||||
|
alias adaptiveoff="swaymsg 'output * adaptive_sync off'"
|
||||||
|
alias adaptiveon="swaymsg 'output * adaptive_sync on'"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
qt = {
|
qt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
platformTheme = "gtk";
|
platformTheme.name = "qtct";
|
||||||
style.name = "adwaita-dark";
|
style.name = "kvantum";
|
||||||
style.package = pkgs.adwaita-qt;
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
cursorTheme = {
|
||||||
|
package = pkgs.catppuccin-cursors.macchiatoLavender;
|
||||||
|
name = "Catppuccin-Macchiato-Lavender-Cursors";
|
||||||
};
|
};
|
||||||
gtk = {
|
iconTheme = {
|
||||||
enable = true;
|
package = pkgs.catppuccin-papirus-folders;
|
||||||
cursorTheme.package = pkgs.catppuccin-cursors;
|
name = "Papirus-Dark";
|
||||||
cursorTheme.name = "latteFlamingo";
|
|
||||||
theme = {
|
|
||||||
name = "Catppuccin-Latte-Pink";
|
|
||||||
package = pkgs.catppuccin-gtk.override {
|
|
||||||
accents = [ "pink" ];
|
|
||||||
tweaks = [ ];
|
|
||||||
variant = "latte";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
theme = {
|
||||||
|
name = "catppuccin-macchiato-lavender-compact+rimless";
|
||||||
|
package = pkgs.catppuccin-gtk.override {
|
||||||
|
accents = [ "lavender" ];
|
||||||
|
size = "compact";
|
||||||
|
tweaks = [ "rimless" ];
|
||||||
|
variant = "macchiato";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# Symlink in gtk and kvantum theme to ~/.config
|
||||||
|
xdg.configFile = {
|
||||||
|
"gtk-4.0/assets".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/assets";
|
||||||
|
"gtk-4.0/gtk.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk.css";
|
||||||
|
"gtk-4.0/gtk-dark.css".source = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0/gtk-dark.css";
|
||||||
|
"Kvantum/kvantum.kvconfig".text = ''
|
||||||
|
[General]
|
||||||
|
theme=Catppuccin-Frappe-Blue
|
||||||
|
'';
|
||||||
|
"Kvantum/Catppuccin-Frappe-Blue".source = "${pkgs.catppuccin-kvantum}/share/Kvantum/Catppuccin-Frappe-Blue";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".icons/default/index.theme".text = ''
|
||||||
|
[icon theme]
|
||||||
|
Inherits=Catppuccin-Macchiato-Lavender-Cursors
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
config = lib.mkIf config.swaywm.enable {
|
config = lib.mkIf config.swaywm.enable {
|
||||||
|
|
||||||
programs.sway.enable = true;
|
programs.sway.enable = true;
|
||||||
|
programs.sway.wrapperFeatures.gtk = true;
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = config.swaywm.useNonFree;
|
nixpkgs.config.allowUnfree = config.swaywm.useNonFree;
|
||||||
# For R2ModMan
|
# For R2ModMan
|
||||||
|
@ -65,30 +66,33 @@
|
||||||
sway-contrib.grimshot
|
sway-contrib.grimshot
|
||||||
libnotify
|
libnotify
|
||||||
mako
|
mako
|
||||||
|
man-pages
|
||||||
|
man-pages-posix
|
||||||
ncspot
|
ncspot
|
||||||
networkmanagerapplet
|
networkmanagerapplet
|
||||||
pavucontrol
|
pavucontrol
|
||||||
slurp
|
slurp
|
||||||
|
syncthingtray
|
||||||
swaylock
|
swaylock
|
||||||
swayidle
|
swayidle
|
||||||
swww
|
swaybg
|
||||||
|
# swww
|
||||||
|
tailscale-systray
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
waybar
|
waybar
|
||||||
wdisplays
|
wdisplays
|
||||||
wofi
|
wofi
|
||||||
xdg-utils
|
xdg-utils
|
||||||
zsh
|
zsh
|
||||||
|
lxqt.lxqt-policykit
|
||||||
# Fonts
|
# Fonts
|
||||||
]
|
]
|
||||||
config.swaywm.systemPackages
|
config.swaywm.systemPackages
|
||||||
# (lib.mkIf config.swaywm.installGaming [
|
|
||||||
# pkgs.lutris
|
|
||||||
# ])
|
|
||||||
];
|
];
|
||||||
|
environment.variables.QT_STYLE_OVERRIDE = "kvantum";
|
||||||
|
|
||||||
# environment.loginShellInit = ''
|
# adds additional man pages
|
||||||
# [[ "$(tty)" == /dev/tty1 ]] && sway
|
documentation.dev.enable = true;
|
||||||
# '';
|
|
||||||
|
|
||||||
# Thunar config
|
# Thunar config
|
||||||
programs.thunar = {
|
programs.thunar = {
|
||||||
|
@ -103,44 +107,54 @@
|
||||||
|
|
||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
programs.steam.enable = config.swaywm.installGaming;
|
programs.steam.enable = config.swaywm.installGaming;
|
||||||
|
programs.gamemode.enable = true;
|
||||||
|
|
||||||
programs.adb.enable = true;
|
programs.adb.enable = true;
|
||||||
# kdeconnect setup
|
|
||||||
programs.kdeconnect.enable = true;
|
programs.kdeconnect.enable = true;
|
||||||
|
# service file to start the sshAgent
|
||||||
|
programs.ssh.startAgent = true;
|
||||||
|
|
||||||
###
|
###
|
||||||
## Services
|
## Services
|
||||||
###
|
###
|
||||||
services.gvfs.enable = true; # thunar functionalities
|
virtualisation.docker.enable = true;
|
||||||
|
services.blueman.enable = true;
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
services.gvfs.enable = true; # thunar mount, trash, etc
|
||||||
|
services.tumbler.enable = true; # thunar thumbnails
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
services.dbus.enable = true;
|
services.dbus.enable = true;
|
||||||
|
services.syncthing.enable = true;
|
||||||
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
services.usbmuxd.enable = true;
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
# For betaflight configurator
|
||||||
|
services.udev.extraRules = ''
|
||||||
|
# DFU (Internal bootloader for STM32 and AT32 MCUs)
|
||||||
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout"
|
||||||
|
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout"
|
||||||
|
'';
|
||||||
|
# For yubioath desktop
|
||||||
|
services.pcscd.enable = true;
|
||||||
# Audio
|
# Audio
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
alsa.enable = true;
|
alsa.enable = true;
|
||||||
# alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
wireplumber.enable = true;
|
wireplumber.enable = true;
|
||||||
};
|
};
|
||||||
sound.enable = false;
|
sound.enable = false;
|
||||||
|
|
||||||
###
|
###
|
||||||
## Misc
|
## Misc
|
||||||
###
|
###
|
||||||
|
|
||||||
# Necessary for home-manager sway setup
|
# Necessary for home-manager sway setup
|
||||||
security.polkit.enable = true;
|
security.polkit.enable = true;
|
||||||
|
|
||||||
# services.xserver.enable = true;
|
|
||||||
# services.xserver.displayManager.defaultSession = "sway";
|
|
||||||
# services.xserver.displayManager.gdm.enable = true;
|
|
||||||
# services.xserver.displayManager.gdm.wayland = true;
|
|
||||||
# services.xserver.displayManager.gdm.settings = {
|
|
||||||
# greeter.includeAll = false;
|
|
||||||
# greeter.include = "nate";
|
|
||||||
# };
|
|
||||||
|
|
||||||
services.greetd = {
|
services.greetd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = rec {
|
settings = rec {
|
||||||
|
@ -152,21 +166,21 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.xserver.videoDrivers = [ "amdgpu" ];
|
# services.xserver.videoDrivers = [ "amdgpu" ];
|
||||||
# Enable HIP
|
# Enable HIP
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
|
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
|
||||||
];
|
];
|
||||||
# services.xserver.videoDrivers = [ "amdgpu-pro" ];
|
hardware.bluetooth.enable = true; # enables support for Bluetooth
|
||||||
|
hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot
|
||||||
hardware.opengl = {
|
hardware.opengl = {
|
||||||
# Mesa
|
# Mesa
|
||||||
enable = true;
|
# enable = true;
|
||||||
# Vulkan
|
# Vulkan
|
||||||
driSupport = true;
|
# driSupport = true;
|
||||||
# Rocm support and vulkan drivers
|
# Rocm support and vulkan drivers
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [
|
||||||
rocmPackages.clr.icd
|
rocmPackages.clr.icd
|
||||||
amdvlk
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -46,6 +46,10 @@ in
|
||||||
"audio"
|
"audio"
|
||||||
# For android
|
# For android
|
||||||
"adbusers"
|
"adbusers"
|
||||||
|
# For serial interfaces
|
||||||
|
"dialout"
|
||||||
|
# For docker
|
||||||
|
"docker"
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
|
@ -28,6 +28,12 @@
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fileSystems."/home/nate/kage" = {
|
||||||
|
device = "192.168.1.169:/kage";
|
||||||
|
fsType = "nfs";
|
||||||
|
options = [ "nfsvers=4.2" "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ]; # lazy mounting and auto disconnect after 600 seconds
|
||||||
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
|
80
shared/modules/apps/firefox/firefox.nix
Normal file
80
shared/modules/apps/firefox/firefox.nix
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
{lib, config, pkgs, inputs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.firefoxApp;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# imports = [
|
||||||
|
# inputs.nur.hmModules.nur
|
||||||
|
# ];
|
||||||
|
|
||||||
|
options.firefoxApp = {
|
||||||
|
enable = lib.mkEnableOption "enable firefox browser";
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.firefox = {
|
||||||
|
# Add pipewire support
|
||||||
|
package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
|
||||||
|
enable = true;
|
||||||
|
profiles = {
|
||||||
|
default = {
|
||||||
|
id = 0;
|
||||||
|
name = "default";
|
||||||
|
isDefault = true;
|
||||||
|
extensions = with pkgs; [
|
||||||
|
nur.repos.rycee.firefox-addons.darkreader
|
||||||
|
nur.repos.rycee.firefox-addons.keepassxc-browser
|
||||||
|
nur.repos.crazazy.firefox-addons.ublock-origin
|
||||||
|
];
|
||||||
|
search = {
|
||||||
|
# Replace default firefox search engine config with this one
|
||||||
|
force = true;
|
||||||
|
default = "Startpage";
|
||||||
|
engines = {
|
||||||
|
"Startpage" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://www.startpage.com/sp/search?query={searchTerms}";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
"Nix Packages" = {
|
||||||
|
urls = [{
|
||||||
|
template = "https://search.nixos.org/packages";
|
||||||
|
params = [
|
||||||
|
{ name = "type"; value = "packages"; }
|
||||||
|
{ name = "query"; value = "{searchTerms}"; }
|
||||||
|
];
|
||||||
|
}];
|
||||||
|
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
|
||||||
|
definedAliases = [ "@np" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
settings = {
|
||||||
|
"browser.startup.blankWindow" = true;
|
||||||
|
"browser.startup.homepage" = "https://www.startpage.com/do/mypage.pl?prfe=11898a1adf7b7dfb587580692f358773a11ca25e993b8e077476641cec033319e15f2449c345f5be919fd0a082015c3e4ed23143bd4337512466c04c2999831a54abca2eaeb42963c63ff064";
|
||||||
|
"browser.newtabpage.enabled" = false;
|
||||||
|
"browser.search.region" = "US";
|
||||||
|
"browser.search.isUS" = true;
|
||||||
|
"distribution.searchplugins.defaultLocale" = "en-US";
|
||||||
|
"general.useragent.locale" = "en-US";
|
||||||
|
"extensions.activeThemeID" = "{831b8843-7251-4306-9521-e688f18b4aeb}";
|
||||||
|
"privacy.trackingprotection.enable" = true;
|
||||||
|
"privacy.trackingprotection.emailtracking.enable" = true;
|
||||||
|
"privacy.trackingprotection.socialtracking.enable" = true;
|
||||||
|
"privacy.clearOnShutdown.cookies" = true;
|
||||||
|
"browser.safebrowsing.passwords.enabled" = false;
|
||||||
|
"browser.migrate.interactions.passwords" = false;
|
||||||
|
"pref.privacy.disable_button.view_passwords" = false;
|
||||||
|
"signon.rememberSignon" = false;
|
||||||
|
"extensions.formautofill.creditCards.enabled" = false;
|
||||||
|
"extensions.formautofill.addresses.enabled" = false;
|
||||||
|
"browser.toolbars.bookmarks.visibility" = "always";
|
||||||
|
# "browser.newtabpage.pinned" = [{
|
||||||
|
# title = "NixOS";
|
||||||
|
# url = "https://nixos.org";
|
||||||
|
# }];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
53
shared/modules/user/main_user.nix
Normal file
53
shared/modules/user/main_user.nix
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{ lib, config, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.main_user;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.main_user = {
|
||||||
|
enable = lib.mkEnableOption "enable user module";
|
||||||
|
|
||||||
|
isDesktopUser = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = "Add additional user groups for desktop users";
|
||||||
|
};
|
||||||
|
|
||||||
|
userName = lib.mkOption {
|
||||||
|
default = "mainuser";
|
||||||
|
description = "username";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
users.users.${cfg.userName} = lib.mkMerge [
|
||||||
|
{
|
||||||
|
isNormalUser = true;
|
||||||
|
initialPassword = "password";
|
||||||
|
|
||||||
|
description = "main user";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
}
|
||||||
|
|
||||||
|
(lib.mkIf (!cfg.isDesktopUser) {
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"networkmanager"
|
||||||
|
cfg.userName
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf cfg.isDesktopUser {
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"networkmanager"
|
||||||
|
"corectrl"
|
||||||
|
cfg.userName
|
||||||
|
"video"
|
||||||
|
"audio"
|
||||||
|
# For android
|
||||||
|
"adbusers"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
28
shared/nix-gc.nix
Normal file
28
shared/nix-gc.nix
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
{lib, pkgs, config, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixGc;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixGc = {
|
||||||
|
enable = lib.mkEnableOption "enable nix gc default settings";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# Limit the number of generations to keep
|
||||||
|
boot.loader.systemd-boot.configurationLimit = 5;
|
||||||
|
|
||||||
|
# Perform garbage collection weekly to maintain low disk usage
|
||||||
|
nix.gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 1w";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Optimize storage
|
||||||
|
# You can also manually optimize the store via:
|
||||||
|
# nix-store --optimise
|
||||||
|
# Refer to the following link for more details:
|
||||||
|
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html#conf-auto-optimise-store
|
||||||
|
nix.settings.auto-optimise-store = true;
|
||||||
|
};
|
||||||
|
}
|
193
shared/server-configuration.nix
Normal file
193
shared/server-configuration.nix
Normal file
|
@ -0,0 +1,193 @@
|
||||||
|
{ config, lib, pkgs, timeZone, ... }:
|
||||||
|
let
|
||||||
|
srvConfig = config.serverConfig;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.serverConfig= {
|
||||||
|
userName = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Main username for system";
|
||||||
|
};
|
||||||
|
hostName = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Hostname for system";
|
||||||
|
};
|
||||||
|
hostId = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Host ID";
|
||||||
|
};
|
||||||
|
email = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Email for server box";
|
||||||
|
};
|
||||||
|
sshEnable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Whether to enable ssh server";
|
||||||
|
};
|
||||||
|
nfsEnable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
nfsRoot = lib.mkOption {
|
||||||
|
default = "/nfs_export";
|
||||||
|
type = lib.types.str;
|
||||||
|
};
|
||||||
|
nfsExports = lib.mkOption {
|
||||||
|
default = [];
|
||||||
|
description = "List of file paths provided as strings to the nfs exports";
|
||||||
|
};
|
||||||
|
nfsIpExport = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Where to export the shares to i.e. 192.168.0.0/24 (export to local network)";
|
||||||
|
};
|
||||||
|
syncthingEnable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Whether to enable syncThing host on this machine";
|
||||||
|
};
|
||||||
|
caldavEnable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
description = "Enable the caldav server service (radicale)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./modules/user/main_user.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
# Enable flakes feature
|
||||||
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command" "flakes"
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostId = srvConfig.hostId;
|
||||||
|
hostName = srvConfig.hostName; # Define your hostname.
|
||||||
|
# Pick only one of the below networking options.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = timeZone;
|
||||||
|
|
||||||
|
main_user = {
|
||||||
|
enable = true;
|
||||||
|
userName = srvConfig.userName;
|
||||||
|
isDesktopUser = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
docker
|
||||||
|
docker-compose
|
||||||
|
zsh
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
|
||||||
|
services.openssh = lib.mkIf srvConfig.sshEnable {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# nfs options breakdown: link for export options https://linux.die.net/man/5/exports
|
||||||
|
# rw - default read write
|
||||||
|
# sync - wait until requests are saved to disk to respond to clients, safer but slower
|
||||||
|
# no_subtree_check -
|
||||||
|
services.nfs.server = lib.mkIf srvConfig.nfsEnable {
|
||||||
|
enable = true;
|
||||||
|
exports = ''
|
||||||
|
${srvConfig.nfsRoot} ${srvConfig.nfsIpExport}(rw,fsid=root,no_subtree_check)
|
||||||
|
${lib.concatMapStringsSep "\n" (n: "${srvConfig.nfsRoot}${n} ${srvConfig.nfsIpExport}(rw,sync,no_subtree_check,all_squash,anongid=105,anonuid=1005)") srvConfig.nfsExports}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
# nfs port TODO make dependant on option enabled
|
||||||
|
# 2049 - nfs
|
||||||
|
# 8384 - syncthing
|
||||||
|
# 5352 - caldav server radicale
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 2049 5232 8384 ];
|
||||||
|
|
||||||
|
users.groups.kage = {
|
||||||
|
gid = 105;
|
||||||
|
};
|
||||||
|
users.users.kage = {
|
||||||
|
uid = 1005;
|
||||||
|
isSystemUser = true;
|
||||||
|
initialPassword = "password";
|
||||||
|
description = "user to manage nfs and syncthing tasks";
|
||||||
|
group = "kage";
|
||||||
|
extraGroups = [
|
||||||
|
"users"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
services.syncthing = lib.mkIf srvConfig.syncthingEnable {
|
||||||
|
enable = true;
|
||||||
|
user = "kage";
|
||||||
|
group = "users";
|
||||||
|
dataDir = "${srvConfig.nfsRoot}/kage/syncthing";
|
||||||
|
configDir = "${srvConfig.nfsRoot}/kage/.config/syncthing";
|
||||||
|
# overrideDevices = true; # overrides any devices added or deleted through the WebUI
|
||||||
|
# overrideFolders = true; # overrides any folders added or deleted through the WebUI
|
||||||
|
openDefaultPorts = true;
|
||||||
|
relay.enable = true;
|
||||||
|
guiAddress = "0.0.0.0:8384";
|
||||||
|
# settings = {
|
||||||
|
# devices = {
|
||||||
|
# # "supernote" = { id = "DEVICE-ID-GOES-HERE"; };
|
||||||
|
# # "pixel" = { id = "DEVICE-ID-GOES-HERE2"; };
|
||||||
|
# # "winmax" = { id = "id3"; };
|
||||||
|
# # "nix-box" = { id = "id4"; };
|
||||||
|
# };
|
||||||
|
# folders = {
|
||||||
|
# "supernote" = { # Name of folder in Syncthing, also the folder ID
|
||||||
|
# path = "${srvConfig.nfsRoot}/kage/syncthing/supernote"; # Which folder to add to Syncthing
|
||||||
|
# # devices = [ "supernote" "pixel" ]; # Which devices to share the folder with
|
||||||
|
# };
|
||||||
|
# "web" = { # Name of folder in Syncthing, also the folder ID
|
||||||
|
# path = "${srvConfig.nfsRoot}/kage/syncthing/web"; # Which folder to add to Syncthing
|
||||||
|
# # devices = [ "supernote" "pixel" "winmax" "nix-box" ]; # Which devices to share the folder with
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
services.radicale = lib.mkIf srvConfig.caldavEnable {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
# Run server port 5232
|
||||||
|
server = {
|
||||||
|
hosts = [ "0.0.0.0:5232" "[::]:5232" ];
|
||||||
|
};
|
||||||
|
auth = {
|
||||||
|
type = "htpasswd";
|
||||||
|
htpasswd_filename = "/home/luci/.config/radicale/rad_pass";
|
||||||
|
htpasswd_encryption = "bcrypt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.timers."pixel-backups" = {
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnCalendar = "daily";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."pixel-backups" = {
|
||||||
|
script = ''
|
||||||
|
# Move files older than 90 days to the backups file
|
||||||
|
find /nfs_export/kage/syncthing/pixel_images/ -type f -mtime +90 | xargs -I {} mv {} /nfs_export/kage/Personal/Nate/Phone_Images
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "root";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
|
||||||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user