Compare commits
62 Commits
Author | SHA1 | Date | |
---|---|---|---|
a177448997 | |||
7bf7df6000 | |||
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": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
"nixpkgs-unstable"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1706435589,
|
||||
"narHash": "sha256-yhEYJxMv5BkfmUuNe4QELKo+V5eq1pwhtVs6kEziHfE=",
|
||||
"lastModified": 1718530513,
|
||||
"narHash": "sha256-BmO8d0r+BVlwWtMLQEYnwmngqdXIuyFzMwvmTcLMee8=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "4d54c29bce71f8c261513e0662cc573d30f3e33e",
|
||||
"rev": "a1fddf0967c33754271761d91a3d921772b30d0e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1706371002,
|
||||
"narHash": "sha256-dwuorKimqSYgyu8Cw6ncKhyQjUDOyuXoxDTVmAXq88s=",
|
||||
"lastModified": 1719426051,
|
||||
"narHash": "sha256-yJL9VYQhaRM7xs0M867ZFxwaONB9T2Q4LnGo1WovuR4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c002c6aa977ad22c60398daaa9be52f2203d0006",
|
||||
"rev": "89c49874fb15f4124bf71ca5f42a04f2ee5825fd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"nixpkgs-23": {
|
||||
"locked": {
|
||||
"lastModified": 1706373441,
|
||||
"narHash": "sha256-S1hbgNbVYhuY2L05OANWqmRzj4cElcbLuIkXTb69xkk=",
|
||||
"lastModified": 1719234068,
|
||||
"narHash": "sha256-1AjSIedDC/aERt24KsCUftLpVppW61S7awfjGe7bMio=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "56911ef3403a9318b7621ce745f5452fb9ef6867",
|
||||
"rev": "90bd1b26e23760742fdcb6152369919098f05417",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -52,13 +53,29 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1726937504,
|
||||
"narHash": "sha256-bvGoiQBvponpZh8ClUcmJ6QnsNKw0EMrCQJARK3bI1c=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9357f4f23713673f310988025d9dc261c20e70c6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"locked": {
|
||||
"lastModified": 1706559951,
|
||||
"narHash": "sha256-yfez9ZnYWsm3m3K8HvN3bGEdWe8aO0ni9r82bAq+q9k=",
|
||||
"lastModified": 1719509062,
|
||||
"narHash": "sha256-IYlezkrqdHmO/SXShve0PhDZVwLuHYweaRyrLrvta5E=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "24478b9e556e4366ef0a2ff58590d8cf24c77267",
|
||||
"rev": "0713da5785faf081a4fa06500890f8726755f464",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -71,7 +88,8 @@
|
|||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"nixpkgs-23": "nixpkgs-23",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nur": "nur"
|
||||
}
|
||||
}
|
||||
|
|
34
flake.nix
34
flake.nix
|
@ -2,31 +2,41 @@
|
|||
description = "NixOS system flake.";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
nixpkgs-23.url = "github:nixos/nixpkgs/nixos-23.11";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nur.url = "github:nix-community/NUR";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
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
|
||||
inherit (self) outputs;
|
||||
system = "x86_64-linux";
|
||||
timeZone = "America/Denver";
|
||||
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
|
||||
{
|
||||
nixosConfigurations = {
|
||||
nixServer = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
luci = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs outputs timeZone system;
|
||||
};
|
||||
modules = [
|
||||
# nixpkgs.overlays = [ nur.overlay ];
|
||||
./nixos/server_configuration.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
inputs.home-manager.nixosModules.home-manager {
|
||||
home-manager.useGlobalPkgs = true;
|
||||
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 {
|
||||
|
@ -41,7 +51,7 @@
|
|||
home-manager.useUserPackages = true;
|
||||
home-manager.users.nate = import ./nate/modules/home-manager/home.nix;
|
||||
home-manager.extraSpecialArgs = {
|
||||
inherit inputs outputs;
|
||||
inherit inputs outputs unstablePkgs pkgs23;
|
||||
};
|
||||
}
|
||||
./nate/default.nix
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
nix.gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 1w";
|
||||
options = "--delete-older-than 21d";
|
||||
};
|
||||
|
||||
# Optimize storage
|
||||
|
|
|
@ -7,49 +7,51 @@
|
|||
@define-color egg_shell #f8f1dd;
|
||||
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: @egg_shell;
|
||||
font-family: "GohuFont 14 Nerd Font";
|
||||
font-size: 16px;
|
||||
font-weight: normal;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: @egg_shell;
|
||||
font-family: "GohuFont 14 Nerd Font";
|
||||
font-size: 16px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* The whole bar */
|
||||
#waybar {
|
||||
background: transparent;
|
||||
background-color: transparent;
|
||||
background: transparent;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#taskbar {
|
||||
background: transparent;
|
||||
color: @egg_shell;
|
||||
background: transparent;
|
||||
color: @egg_shell;
|
||||
}
|
||||
|
||||
#taskbar button {
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
margin-left: 3px;
|
||||
margin-right: 3px;
|
||||
color: transparent;
|
||||
border-bottom: 2px solid;
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
margin-left: 3px;
|
||||
margin-right: 3px;
|
||||
color: transparent;
|
||||
border-bottom: 2px solid;
|
||||
}
|
||||
|
||||
#taskbar button.active {
|
||||
color: @celeste;
|
||||
color: @celeste;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-right,
|
||||
.modules-center {
|
||||
margin: 8px 8px 1px 8px;
|
||||
background: transparent;
|
||||
color: @egg_shell;
|
||||
background-color: @english_violet;
|
||||
border-radius: 25px;
|
||||
padding: 0px 10px 0px 10px;
|
||||
margin: 8px 8px 1px 8px;
|
||||
background: transparent;
|
||||
color: @egg_shell;
|
||||
background-color: @english_violet;
|
||||
border-radius: 25px;
|
||||
padding: 0px 10px 0px 10px;
|
||||
}
|
||||
|
||||
/* Every modules */
|
||||
#clock,
|
||||
#cpu,
|
||||
|
@ -58,8 +60,8 @@
|
|||
#network,
|
||||
#pulseaudio,
|
||||
#taskbar {
|
||||
padding:0.5rem 0.6rem;
|
||||
margin: 1px 0px;
|
||||
padding: 0.5rem 0.6rem;
|
||||
margin: 1px 0px;
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
@ -67,7 +69,7 @@
|
|||
* -------------------------------------------------------------------------- */
|
||||
|
||||
#clock {
|
||||
min-width: 140px;
|
||||
min-width: 140px;
|
||||
}
|
||||
|
||||
#cpu.warning,
|
||||
|
@ -75,24 +77,24 @@
|
|||
#memory.warning,
|
||||
#memory.critical,
|
||||
#network.disconnected {
|
||||
color: @indian_red;
|
||||
color: @indian_red;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
padding-top:6px;
|
||||
padding-top: 6px;
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
color: @celeste;
|
||||
color: @celeste;
|
||||
}
|
||||
|
||||
#custom-spotify {
|
||||
color: @celadon;
|
||||
color: @celadon;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
margin-left:15px;
|
||||
margin-right:15px;
|
||||
font-size:15px;
|
||||
color: @indian_red;
|
||||
}
|
||||
margin-left: 15px;
|
||||
margin-right: 15px;
|
||||
font-size: 15px;
|
||||
color: @indian_red;
|
||||
}
|
|
@ -136,8 +136,14 @@
|
|||
security.polkit.enable = true;
|
||||
|
||||
hardware.opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
# Mesa
|
||||
# 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 = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 1w";
|
||||
options = "--delete-older-than 14d";
|
||||
};
|
||||
|
||||
# Optimize storage
|
||||
|
|
|
@ -73,6 +73,7 @@ in
|
|||
installGaming = deskCfg.installGaming;
|
||||
systemPackages = with pkgs; [
|
||||
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 = "catppuccin_frappe"
|
||||
theme = "catppuccin_macchiato"
|
||||
|
||||
[keys.normal]
|
||||
|
||||
|
@ -9,11 +9,12 @@ i = "move_visual_line_down"
|
|||
e = "move_visual_line_up"
|
||||
o = "move_char_right"
|
||||
|
||||
C-i = "half_page_down"
|
||||
C-e = "half_page_up"
|
||||
I = "page_down"
|
||||
E = "page_up"
|
||||
|
||||
# Modes
|
||||
h = "insert_mode"
|
||||
H = "insert_at_line_start"
|
||||
l = "open_below"
|
||||
L = "open_above"
|
||||
|
||||
|
@ -21,34 +22,115 @@ L = "open_above"
|
|||
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"
|
||||
|
||||
C-s = ":w" # Maps Ctrl-s to the typable command :w which is an alias for :write (save file)
|
||||
C-o = ":open ~/.config/helix/config.toml" # Maps Ctrl-o to opening of the helix config file
|
||||
C-l = ":open ~/.config/helix/languages.toml"
|
||||
# Misc
|
||||
"C-/" = "toggle_comments"
|
||||
|
||||
[keys.normal."C-space"]
|
||||
x = ":wbc!"
|
||||
s = ":w!" # save file
|
||||
o = ":config-open"
|
||||
|
||||
[keys.normal.g]
|
||||
P = "goto_previous_buffer"
|
||||
N = "goto_next_buffer"
|
||||
n = "goto_line_start"
|
||||
o = "goto_line_end"
|
||||
"/" = "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 = "move_char_left"
|
||||
i = "move_visual_line_down"
|
||||
e = "move_visual_line_up"
|
||||
o = "move_char_right"
|
||||
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"
|
||||
bufferline = "always"
|
||||
auto-save = true
|
||||
line-number = "relative"
|
||||
cursorline = true
|
||||
cursorcolumn = true
|
||||
color-modes = true
|
||||
text-width = 120
|
||||
auto-format = true
|
||||
|
||||
[editor.statusline]
|
||||
left = ["mode", "spinner", "version-control", "file-name"]
|
||||
left = ["mode", "spinner", "version-control"]
|
||||
center = ["file-name"]
|
||||
mode.normal = "Normal"
|
||||
mode.insert = "Insert"
|
||||
mode.select = "Select"
|
||||
|
@ -58,6 +140,7 @@ render = true
|
|||
|
||||
[editor.lsp]
|
||||
display-messages = true
|
||||
display-inlay-hints = false
|
||||
|
||||
[editor.cursor-shape]
|
||||
insert = "bar"
|
||||
|
|
|
@ -1,22 +1,4 @@
|
|||
# [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" ]
|
||||
|
||||
# Change dart format to 120 lines
|
||||
[[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 } } } }
|
|
@ -259,7 +259,7 @@ command = "lua-language-server"
|
|||
# diagnostics.enable = true
|
||||
|
||||
[language.markdown]
|
||||
filetype = ["md", "markdown"]
|
||||
filetypes = ["md", "markdown"]
|
||||
roots = [".git", ".hg"]
|
||||
command = "vscode-markdown-language-server"
|
||||
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 indentwidth 4
|
||||
set-option global scrolloff 5,3
|
||||
declare-option str kakrc_path "~/.config/kak/kakrc"
|
||||
declare-option str sway_conf_path "~/.config/sway/config.d/default"
|
||||
declare-option str shell_config "~/.zshrc"
|
||||
declare-option str kakrc_path "~/system/nate/dotfiles/kak/kakrc"
|
||||
declare-option str sway_conf_path "~/system/nate/dotfiles/sway/config.d/default"
|
||||
declare-option str shell_config "~/system/nate/modules/home-manager/home.nix"
|
||||
|
||||
# plug "catppuccin/kakoune" theme config %{
|
||||
# colorscheme catppuccin_macchiato
|
||||
|
@ -56,6 +56,20 @@ hook global FocusOut .* %{ try %{
|
|||
hook global BufWritePost .* %{ 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-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 '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 'Repeat last object or f/t selection'
|
||||
|
||||
# Scrolling remap
|
||||
map global normal <c-e> <pageup> -docstring 'Scroll screen up'
|
||||
|
@ -244,9 +259,17 @@ plug "alexherbo2/auto-pairs.kak" %{
|
|||
enable-auto-pairs
|
||||
}
|
||||
|
||||
|
||||
plug "https://github.com/h-youhei/kakoune-surround"
|
||||
|
||||
map global normal <c-m> ':surround<ret>'
|
||||
|
||||
# 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
|
||||
text-color=#e5e9f0
|
||||
width=315
|
||||
height=200
|
||||
background-color=#24273a
|
||||
text-color=#cad3f5
|
||||
width=630
|
||||
height=400
|
||||
padding=10
|
||||
margin=10
|
||||
margin=20
|
||||
progress-color=over #eceff480
|
||||
icon-path=/usr/share/icons/Arc-X-D
|
||||
max-icon-size=70
|
||||
max-icon-size=140
|
||||
layer=overlay
|
||||
|
||||
border-size=5
|
||||
border-radius=0
|
||||
border-color=#5294e2
|
||||
border-radius=8
|
||||
border-color=#b7bdf8
|
||||
|
||||
default-timeout=5000
|
||||
|
||||
|
|
|
@ -14,13 +14,14 @@ for_window [class="Telegram"] 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 [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="mobile"] floating enable, resize set width 200 ppt height 400 ppt
|
||||
|
||||
|
||||
# set floating (nontiling) for special apps:
|
||||
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 [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="steam" title="^((?!Steam$).)*"] floating enable
|
||||
|
||||
# set floating for window roles
|
||||
for_window [window_role="pop-up"] floating enable
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# Auth with polkit-gnome:
|
||||
exec /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||
exec lxqt-policykit-agent
|
||||
|
||||
# Desktop notifications
|
||||
exec mako
|
||||
|
|
|
@ -145,8 +145,8 @@ exec swayidle -w\
|
|||
# Move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc
|
||||
bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec
|
||||
# bindsym $mod+g exec ~/.config/sway/scripts/scale.sh inc
|
||||
# bindsym $mod+m exec ~/.config/sway/scripts/scale.sh dec
|
||||
|
||||
#
|
||||
# Scratchpad:
|
||||
|
@ -225,7 +225,7 @@ bindsym $mod+r mode "resize"
|
|||
#
|
||||
# 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
|
||||
#
|
||||
# Keybindings List
|
||||
|
|
|
@ -9,5 +9,5 @@
|
|||
# Wacom Tablet - Example
|
||||
# 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
|
||||
output DP-3 resolution 2560x1440@164.956Hz position 0,0
|
||||
output * adaptive_sync on
|
||||
output DP-3 resolution 3840x2160@240.084Hz position 0,0
|
||||
output * adaptive_sync off
|
||||
|
|
|
@ -41,8 +41,8 @@ font pango:Overpass Nerd Font 12
|
|||
smart_borders on
|
||||
|
||||
# Set wallpaper:
|
||||
#exec_always swaybg -i /home/nate/.config/sway/wallpapers/ign-0000.png
|
||||
exec_always /home/nate/.config/sway/scripts/background.sh
|
||||
exec_always swaybg -i /home/nate/.config/sway/wallpapers/nix-black-4k.png
|
||||
# exec_always /home/nate/.config/sway/scripts/background.sh
|
||||
|
||||
# Title format for windows
|
||||
for_window [shell="xdg_shell"] title_format "%title (%app_id)"
|
||||
|
@ -71,31 +71,28 @@ bar {
|
|||
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
|
||||
|
||||
for_window {
|
||||
[class=".*"] opacity $opacity
|
||||
[app_id=".*"] opacity $opacity
|
||||
[app_id="firefox"] opacity 1.0
|
||||
[app_id="corectrl"] opacity 1.0
|
||||
[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
|
||||
[class=".*"] opacity 1.0
|
||||
[app_id=".*"] opacity 1.0
|
||||
[app_id="foot"] opacity $opacity
|
||||
[app_id="thunar"] opacity $opacity
|
||||
|
||||
# Steam
|
||||
[class="steam_app.*"] inhibit_idle fullscreen; floating enable; border none 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
|
||||
[title="(?:Godot)"] opacity 1.0
|
||||
[title="(?:Create New|Select Frames|project.godot|node)"] $floating_window
|
||||
[title="(?:Create Folder|Node Configuration|Warning|Please Confirm)"] $floating_window, resize set height 200
|
||||
|
||||
# Aseprite
|
||||
[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="bubble"] $floating_window
|
||||
[window_role="task_dialog"] $floating_window
|
||||
|
|
|
@ -3,16 +3,31 @@
|
|||
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)}')
|
||||
|
||||
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
|
||||
|
||||
if [ "$1" == "clipboard" ]; then
|
||||
case $selected in
|
||||
active)
|
||||
grimshot --notify copy active;;
|
||||
screen)
|
||||
grimshot --notify copy screen;;
|
||||
output)
|
||||
grimshot --notify copy output;;
|
||||
area)
|
||||
grimshot --notify copy area;;
|
||||
window)
|
||||
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",
|
||||
"position": "top",
|
||||
"margin-top": 8,
|
||||
"margin-top": 3,
|
||||
"margin-left": 10,
|
||||
"margin-right": 10,
|
||||
"margin-bottom": 8,
|
||||
"margin-bottom": 3,
|
||||
|
||||
// If height property would be not present, it'd be calculated dynamically
|
||||
"height": 30,
|
||||
"height": 60,
|
||||
|
||||
"modules-left": [
|
||||
"custom/launcher",
|
||||
|
@ -17,6 +17,13 @@
|
|||
],
|
||||
|
||||
"modules-center": [
|
||||
"custom/signal",
|
||||
"custom/steam",
|
||||
"custom/spotify",
|
||||
"custom/firefox",
|
||||
"custom/slack",
|
||||
"custom/files",
|
||||
"custom/pomo",
|
||||
],
|
||||
|
||||
"modules-right": [
|
||||
|
@ -25,12 +32,11 @@
|
|||
"memory",
|
||||
"cpu",
|
||||
"pulseaudio",
|
||||
"custom/spotify",
|
||||
"custom/keyboard-layout",
|
||||
"battery",
|
||||
//"custom/PBPbattery",
|
||||
"backlight#icon",
|
||||
"backlight#value",
|
||||
// "backlight#icon",
|
||||
// "backlight#value",
|
||||
"clock",
|
||||
"tray",
|
||||
//"custom/weather",
|
||||
|
@ -80,7 +86,7 @@
|
|||
"warning": 70,
|
||||
"critical": 90,
|
||||
},
|
||||
"on-click": "xfce4-terminal -e 'htop'",
|
||||
"on-click": "foot -e 'htop'",
|
||||
},
|
||||
|
||||
"custom/keyboard-layout": {
|
||||
|
@ -97,7 +103,7 @@
|
|||
"memory": {
|
||||
"interval": 5,
|
||||
"format": " {}%", // Icon: memory
|
||||
"on-click": "xfce4-terminal -e 'htop'",
|
||||
"on-click": "foot -e 'htop'",
|
||||
"states": {
|
||||
"warning": 70,
|
||||
"critical": 90
|
||||
|
@ -110,7 +116,7 @@
|
|||
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
|
||||
"format-disconnected": "⚠ Disconnected",
|
||||
"tooltip-format": "{ifname}: {ipaddr}",
|
||||
"on-click": "xfce4-terminal -e 'nmtui'",
|
||||
"on-click": "foot -e 'nmtui'",
|
||||
},
|
||||
"network#vpn": {
|
||||
"interface": "tun0",
|
||||
|
@ -147,18 +153,18 @@
|
|||
"scroll-step": 1, // %, can be a float
|
||||
"format": "{volume}% {icon}",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": "婢 {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": " {format_source}",
|
||||
"format-source": "{volume}% ",
|
||||
"format-source-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "וֹ",
|
||||
"headset": " ",
|
||||
"headphone": "",
|
||||
"hands-free": "",
|
||||
"headset": "",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": [""]
|
||||
"default": [""]
|
||||
},
|
||||
"on-click": "pavucontrol",
|
||||
"on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +2%",
|
||||
|
@ -173,6 +179,12 @@
|
|||
"interval": 600,
|
||||
},
|
||||
|
||||
// "custom/temp": {
|
||||
// "exec": "notify-send \"temp thing\"",
|
||||
// "interval": "once",
|
||||
// "signal": 8,
|
||||
// },
|
||||
|
||||
"tray": {
|
||||
"icon-size": 18,
|
||||
"spacing":10,
|
||||
|
@ -191,28 +203,54 @@
|
|||
"on-scroll-up": "brightnessctl -c backlight set +1%"
|
||||
},
|
||||
|
||||
"custom/firefox": {
|
||||
"format": " ",
|
||||
"on-click": "exec firefox",
|
||||
"tooltip": false
|
||||
"custom/signal": {
|
||||
"format": " ",
|
||||
"on-click": "exec signal",
|
||||
"tooltip": false,
|
||||
},
|
||||
|
||||
"custom/steam": {
|
||||
"format": " ",
|
||||
"on-click": "exec steam",
|
||||
"tooltip": false,
|
||||
},
|
||||
|
||||
"custom/spotify": {
|
||||
"format": " ",
|
||||
"format": " ",
|
||||
"on-click": "foot -e 'ncspot'",
|
||||
"tooltip": false
|
||||
"tooltip": false,
|
||||
},
|
||||
|
||||
"custom/terminal": {
|
||||
"format": " ",
|
||||
"on-click": "exec xfce4-terminal",
|
||||
"tooltip": false
|
||||
"custom/firefox": {
|
||||
"format": " ",
|
||||
"on-click": "exec firefox",
|
||||
"tooltip": false,
|
||||
},
|
||||
|
||||
"custom/files": {
|
||||
"format": " ",
|
||||
|
||||
"custom/slack": {
|
||||
"format": " ",
|
||||
"on-click": "slack",
|
||||
"tooltip": false,
|
||||
"exec if": "pgrep slack"
|
||||
},
|
||||
|
||||
|
||||
"custom/files": {
|
||||
"format": " ",
|
||||
"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": {
|
||||
|
|
|
@ -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
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
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 {
|
||||
70% {
|
||||
color: white;
|
||||
}
|
||||
70% {
|
||||
color: @overlay0;
|
||||
}
|
||||
|
||||
to {
|
||||
color: white;
|
||||
background-color: @nord_orange;
|
||||
}
|
||||
to {
|
||||
color: @overlay0;
|
||||
background-color: @crust;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes blink-critical {
|
||||
70% {
|
||||
color: white;
|
||||
}
|
||||
70% {
|
||||
color: @overlay2;
|
||||
}
|
||||
|
||||
to {
|
||||
color: white;
|
||||
background-color: @nord_red;
|
||||
}
|
||||
to {
|
||||
color: @overlay2;
|
||||
background-color: @base;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Base styles
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
/* Reset all styles */
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
min-height: 0;
|
||||
margin: 1px;
|
||||
padding: 0;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
min-height: 0;
|
||||
margin: 1px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/* The whole bar */
|
||||
#waybar {
|
||||
background: transparent;
|
||||
color: @nord4;
|
||||
background-color: @nord3;
|
||||
font-family: Overpass Nerd Font;
|
||||
font-size: 16px;
|
||||
border-radius: 15px;
|
||||
background: transparent;
|
||||
background-color: transparent;
|
||||
font-family: Overpass Nerd Font;
|
||||
font-size: 20px;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
#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 */
|
||||
|
@ -84,8 +127,8 @@ Nordic Color Scheme
|
|||
#tray,
|
||||
#idle_inhibitor,
|
||||
#custom-PBPbattery {
|
||||
padding:0.5rem 0.6rem;
|
||||
margin: 1px 0px;
|
||||
padding: 0.5rem 0.6rem;
|
||||
margin: 1px 0px;
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
@ -93,127 +136,179 @@ Nordic Color Scheme
|
|||
* -------------------------------------------------------------------------- */
|
||||
|
||||
#battery {
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
color: @nord_orange;
|
||||
color: @flamingo;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
color: @nord_red;
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#battery.warning.discharging {
|
||||
animation-name: blink-warning;
|
||||
animation-duration: 3s;
|
||||
animation-name: blink-warning;
|
||||
animation-duration: 3s;
|
||||
}
|
||||
|
||||
#battery.critical.discharging {
|
||||
animation-name: blink-critical;
|
||||
animation-duration: 2s;
|
||||
animation-name: blink-critical;
|
||||
animation-duration: 2s;
|
||||
}
|
||||
|
||||
#cpu.warning {
|
||||
color: @nord_orange;
|
||||
color: @flamingo;
|
||||
}
|
||||
|
||||
#cpu.critical {
|
||||
color: @nord_red;
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#memory {
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#memory.warning {
|
||||
color: @nord_orange;
|
||||
}
|
||||
color: @flamingo;
|
||||
}
|
||||
|
||||
#memory.critical {
|
||||
color: @nord_red;
|
||||
animation-name: blink-critical;
|
||||
animation-duration: 2s;
|
||||
padding-left:5px;
|
||||
padding-right:5px;
|
||||
color: @red;
|
||||
animation-name: blink-critical;
|
||||
animation-duration: 2s;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#mode {
|
||||
background: @nord8;
|
||||
border-bottom: 3px transparent;
|
||||
color:white;
|
||||
margin-left: 5px;
|
||||
padding: 7px;
|
||||
background: @overlay0;
|
||||
border-bottom: 3px transparent;
|
||||
color: @text;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
color: @nord_orange;
|
||||
color: @flamingo;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
padding-top:6px;
|
||||
padding-top: 6px;
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
|
||||
color: @nord_cyan;
|
||||
color: @sky;
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
color: @nord_red;
|
||||
color: @red;
|
||||
}
|
||||
|
||||
#window {
|
||||
font-weight: bold;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
font-size:13px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
border-bottom: 3px solid transparent;
|
||||
margin-bottom: 0px;
|
||||
padding:0px;
|
||||
border-bottom: 3px solid transparent;
|
||||
margin-bottom: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#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 {
|
||||
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 {
|
||||
border-bottom: 3px solid @nord_green;
|
||||
margin-bottom: 1px;
|
||||
padding-left:0;
|
||||
border-bottom: 3px solid @green;
|
||||
margin-bottom: 1px;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
border-color: @nord2;
|
||||
color: @nord_yellow;
|
||||
border-color: @lavender;
|
||||
color: @yellow;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
margin-left:15px;
|
||||
margin-right:15px;
|
||||
font-size:15px;
|
||||
color: @nord_orange;
|
||||
margin-left: 15px;
|
||||
margin-right: 15px;
|
||||
font-size: 15px;
|
||||
color: @flamingo;
|
||||
}
|
||||
|
||||
#custom-launcher {
|
||||
font-size:15px;
|
||||
margin-left:15px;
|
||||
margin-right:10px;
|
||||
font-size: 15px;
|
||||
margin-left: 15px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#backlight.icon {
|
||||
padding-right:1px;
|
||||
font-size: 13px;
|
||||
}
|
||||
padding-right: 1px;
|
||||
font-size: 13px;
|
||||
}
|
|
@ -12,6 +12,8 @@ in
|
|||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.firefox = {
|
||||
# Add pipewire support
|
||||
# package = (pkgs.wrapFirefox (pkgs.firefox-unwrapped.override { pipewireSupport = true;}) {});
|
||||
enable = true;
|
||||
profiles = {
|
||||
default = {
|
||||
|
@ -22,6 +24,7 @@ in
|
|||
nur.repos.rycee.firefox-addons.darkreader
|
||||
nur.repos.rycee.firefox-addons.keepassxc-browser
|
||||
nur.repos.crazazy.firefox-addons.ublock-origin
|
||||
nur.repos.bandithedoge.firefoxAddons.stylus
|
||||
];
|
||||
search = {
|
||||
# Replace default firefox search engine config with this one
|
||||
|
@ -33,12 +36,22 @@ in
|
|||
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";
|
||||
|
@ -54,7 +67,9 @@ in
|
|||
"signon.rememberSignon" = false;
|
||||
"extensions.formautofill.creditCards.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" = [{
|
||||
# title = "NixOS";
|
||||
# url = "https://nixos.org";
|
||||
|
|
|
@ -1,16 +1,37 @@
|
|||
{ inputs, outputs, lib, config, pkgs, ... }:
|
||||
{ inputs, config, pkgs, ... }:
|
||||
let
|
||||
userName = "nate";
|
||||
fullName = "Nathan Anderson";
|
||||
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
|
||||
{
|
||||
# nixpkgs.overlays = [
|
||||
# inputs.nur.overlay
|
||||
# overlay-unstable
|
||||
# ];
|
||||
|
||||
# nixpkgs.config.allowUnfree = true;
|
||||
# inputs.nixpkgs-stable.config.allowUnfree = true;
|
||||
imports = [
|
||||
../apps/firefox/firefox.nix
|
||||
];
|
||||
|
@ -27,40 +48,46 @@
|
|||
firefoxApp.enable = true;
|
||||
|
||||
fonts.fontconfig.enable = true;
|
||||
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# nur.repos.crazazy.js.eslint
|
||||
# inputs.nixpkgs-stable.legacyPackages.x86_64-linux.corectrl
|
||||
|
||||
chromium
|
||||
#
|
||||
# Dev Tools
|
||||
#
|
||||
dbeaver
|
||||
cargo
|
||||
kakoune
|
||||
flutter316
|
||||
dbeaver-bin
|
||||
helix
|
||||
# kakoune
|
||||
# flutter316
|
||||
docker
|
||||
docker-compose
|
||||
fossil
|
||||
fnc
|
||||
jq
|
||||
python310
|
||||
nodejs_21
|
||||
zig
|
||||
### LSP's
|
||||
rnix-lsp # Nix LSP
|
||||
nil # Nix LSP
|
||||
nodePackages_latest.bash-language-server
|
||||
openscad-lsp
|
||||
nodePackages.typescript-language-server
|
||||
vscode-langservers-extracted # provides eslint, markdown, json, css, and html lsp
|
||||
rubyPackages.solargraph
|
||||
python310Packages.python-lsp-server
|
||||
zls
|
||||
python311Packages.python-lsp-server
|
||||
# zls
|
||||
### Misc
|
||||
# android-udev-rules
|
||||
# android-tools
|
||||
# sdkmanager
|
||||
usbutils
|
||||
cli-visualizer
|
||||
openscad
|
||||
|
||||
#
|
||||
# Gaming
|
||||
#
|
||||
amdgpu_top
|
||||
mangohud
|
||||
r2modman
|
||||
wine-wayland
|
||||
webcord
|
||||
|
||||
|
@ -69,80 +96,88 @@
|
|||
#
|
||||
bat
|
||||
duf
|
||||
du-dust
|
||||
fd
|
||||
fzf
|
||||
lsd
|
||||
ripgrep
|
||||
tre-command
|
||||
gtop
|
||||
htop
|
||||
neofetch
|
||||
# Normies
|
||||
unzip
|
||||
llpp
|
||||
nmap
|
||||
|
||||
#
|
||||
# Photo / Video
|
||||
#
|
||||
davinci-resolve-studio
|
||||
# oldstable.davinci-resolve-studio
|
||||
# davinciDesktop
|
||||
imv
|
||||
mpv
|
||||
gimp
|
||||
ffmpeg
|
||||
tenacity
|
||||
yt-dlp
|
||||
libimobiledevice
|
||||
ifuse
|
||||
|
||||
#
|
||||
# Communication
|
||||
#
|
||||
mumble
|
||||
slack
|
||||
signal-desktop
|
||||
unstable.signal-desktop
|
||||
|
||||
#
|
||||
# Other
|
||||
#
|
||||
keepassxc
|
||||
obs-studio
|
||||
prusa-slicer
|
||||
yubioath-flutter
|
||||
gnome.gnome-disk-utility
|
||||
kdePackages.filelight
|
||||
|
||||
#
|
||||
# Style
|
||||
#
|
||||
catppuccin-kvantum
|
||||
libsForQt5.qtstyleplugin-kvantum
|
||||
libsForQt5.qt5ct
|
||||
# Install fonts
|
||||
lato
|
||||
(nerdfonts.override { fonts = [ "Hermit" "Overpass" ]; })
|
||||
|
||||
# # 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}!"
|
||||
# '')
|
||||
recursive
|
||||
];
|
||||
|
||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||
# plain files is through 'home.file'.
|
||||
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;
|
||||
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
|
||||
services.kdeconnect = {
|
||||
enable = true;
|
||||
indicator = true;
|
||||
};
|
||||
|
||||
# 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 = {
|
||||
EDITOR = "kak";
|
||||
# MANPAGER="sh -c 'col -bx | bat -l man -p'";
|
||||
BAT_THEME="Catppuccin Macchiato";
|
||||
EDITOR = "hx";
|
||||
XDG_CURRENT_DESKTOP="sway";
|
||||
NIXOS_OZONE_WL = "1";
|
||||
};
|
||||
|
||||
# Git setup
|
||||
|
@ -150,6 +185,25 @@
|
|||
enable = true;
|
||||
userEmail = email;
|
||||
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
|
||||
|
@ -157,51 +211,83 @@
|
|||
enable = true;
|
||||
oh-my-zsh = {
|
||||
enable = true;
|
||||
plugins = [ "git" ];
|
||||
plugins = [ "fossil" "git" ];
|
||||
theme = "half-life";
|
||||
};
|
||||
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() {
|
||||
DIR=`
|
||||
fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \
|
||||
xargs dirname | \
|
||||
sed 's|$HOME||g' | \
|
||||
sort | \
|
||||
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 | \
|
||||
xargs printf "$HOME/%s/"
|
||||
`
|
||||
cd $DIR
|
||||
# fzf_projects() {
|
||||
# DIR=`
|
||||
# fd .git --search-path="$HOME/source/" -H --ignore-file ~/.config/fd-ignore -tdirectory | \
|
||||
# xargs dirname | \
|
||||
# sed 's|$HOME||g' | \
|
||||
# sort | \
|
||||
# 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 | \
|
||||
# xargs printf "$HOME/%s/"
|
||||
# `
|
||||
# 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/"
|
||||
|
||||
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"
|
||||
alias cat="bat --paging=never"
|
||||
alias rm="rm -i"
|
||||
alias adaptiveoff="swaymsg 'output * adaptive_sync off'"
|
||||
alias adaptiveon="swaymsg 'output * adaptive_sync on'"
|
||||
'';
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "gtk";
|
||||
style.name = "adwaita-dark";
|
||||
style.package = pkgs.adwaita-qt;
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme.name = "qtct";
|
||||
style.name = "kvantum";
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
cursorTheme = {
|
||||
package = pkgs.catppuccin-cursors.macchiatoLavender;
|
||||
name = "Catppuccin-Macchiato-Lavender-Cursors";
|
||||
};
|
||||
gtk = {
|
||||
enable = true;
|
||||
cursorTheme.package = pkgs.catppuccin-cursors;
|
||||
cursorTheme.name = "latteFlamingo";
|
||||
theme = {
|
||||
name = "Catppuccin-Latte-Pink";
|
||||
package = pkgs.catppuccin-gtk.override {
|
||||
accents = [ "pink" ];
|
||||
tweaks = [ ];
|
||||
variant = "latte";
|
||||
};
|
||||
};
|
||||
iconTheme = {
|
||||
package = pkgs.catppuccin-papirus-folders;
|
||||
name = "Papirus-Dark";
|
||||
};
|
||||
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 {
|
||||
|
||||
programs.sway.enable = true;
|
||||
programs.sway.wrapperFeatures.gtk = true;
|
||||
|
||||
nixpkgs.config.allowUnfree = config.swaywm.useNonFree;
|
||||
# For R2ModMan
|
||||
|
@ -65,30 +66,33 @@
|
|||
sway-contrib.grimshot
|
||||
libnotify
|
||||
mako
|
||||
man-pages
|
||||
man-pages-posix
|
||||
ncspot
|
||||
networkmanagerapplet
|
||||
pavucontrol
|
||||
slurp
|
||||
syncthingtray
|
||||
swaylock
|
||||
swayidle
|
||||
swww
|
||||
swaybg
|
||||
# swww
|
||||
tailscale-systray
|
||||
wl-clipboard
|
||||
waybar
|
||||
wdisplays
|
||||
wofi
|
||||
xdg-utils
|
||||
zsh
|
||||
lxqt.lxqt-policykit
|
||||
# Fonts
|
||||
]
|
||||
config.swaywm.systemPackages
|
||||
# (lib.mkIf config.swaywm.installGaming [
|
||||
# pkgs.lutris
|
||||
# ])
|
||||
];
|
||||
environment.variables.QT_STYLE_OVERRIDE = "kvantum";
|
||||
|
||||
# environment.loginShellInit = ''
|
||||
# [[ "$(tty)" == /dev/tty1 ]] && sway
|
||||
# '';
|
||||
# adds additional man pages
|
||||
documentation.dev.enable = true;
|
||||
|
||||
# Thunar config
|
||||
programs.thunar = {
|
||||
|
@ -103,44 +107,54 @@
|
|||
|
||||
programs.zsh.enable = true;
|
||||
programs.steam.enable = config.swaywm.installGaming;
|
||||
programs.gamemode.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.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.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
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
# alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
wireplumber.enable = true;
|
||||
};
|
||||
sound.enable = false;
|
||||
|
||||
###
|
||||
## Misc
|
||||
###
|
||||
|
||||
# Necessary for home-manager sway setup
|
||||
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 = {
|
||||
enable = true;
|
||||
settings = rec {
|
||||
|
@ -152,21 +166,21 @@
|
|||
};
|
||||
};
|
||||
|
||||
services.xserver.videoDrivers = [ "amdgpu" ];
|
||||
# services.xserver.videoDrivers = [ "amdgpu" ];
|
||||
# Enable HIP
|
||||
systemd.tmpfiles.rules = [
|
||||
"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 = {
|
||||
# Mesa
|
||||
enable = true;
|
||||
# Vulkan
|
||||
driSupport = true;
|
||||
# driSupport = true;
|
||||
# Rocm support and vulkan drivers
|
||||
extraPackages = with pkgs; [
|
||||
rocmPackages.clr.icd
|
||||
amdvlk
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
@ -46,6 +46,10 @@ in
|
|||
"audio"
|
||||
# For android
|
||||
"adbusers"
|
||||
# For serial interfaces
|
||||
"dialout"
|
||||
# For docker
|
||||
"docker"
|
||||
];
|
||||
})
|
||||
];
|
||||
|
|
|
@ -8,18 +8,18 @@
|
|||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "uas" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "uas" "usb_storage" "sd_mod" ];
|
||||
boot.initrd.kernelModules = [ "amdgpu" ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/e48c53a4-6e7d-4b12-a46e-a408956268ea";
|
||||
{ device = "/dev/disk/by-uuid/ab6f54b1-f9ba-482a-b1b4-ac3ebdbfe751";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/82B2-9D40";
|
||||
{ device = "/dev/disk/by-uuid/69D1-3DFE";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
|
@ -28,6 +28,12 @@
|
|||
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 = [ ];
|
||||
|
||||
# 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