Compare commits
No commits in common. "653938a61f2360a490166291cc113673904cb065" and "4741aa8a477d044d4502e88bd41e330cdd2d0756" have entirely different histories.
653938a61f
...
4741aa8a47
22 changed files with 344 additions and 543 deletions
73
flake.lock
generated
73
flake.lock
generated
|
@ -248,6 +248,25 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"helix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1748359092,
|
||||||
|
"narHash": "sha256-bfQVlnTe1PZ3DfulcHUwJzh6qcir0n1F8B0xYUV+Vu0=",
|
||||||
|
"owner": "helix-editor",
|
||||||
|
"repo": "helix",
|
||||||
|
"rev": "2bd7452fe0309e273d06280d15caad6943034377",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "helix-editor",
|
||||||
|
"repo": "helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"hercules-ci-effects": {
|
"hercules-ci-effects": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
|
@ -583,7 +602,7 @@
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747056319,
|
"lastModified": 1747056319,
|
||||||
|
@ -662,15 +681,15 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748190013,
|
"lastModified": 1740560979,
|
||||||
"narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=",
|
"narHash": "sha256-Vr3Qi346M+8CjedtbyUevIGDZW8LcA1fTG0ugPY/Hic=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "62b852f6c6742134ade1abdd2a21685fd617a291",
|
"rev": "5135c59491985879812717f4c9fea69604e7f26f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
|
@ -689,6 +708,22 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1748190013,
|
||||||
|
"narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "62b852f6c6742134ade1abdd2a21685fd617a291",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1736429638,
|
"lastModified": 1736429638,
|
||||||
"narHash": "sha256-dDWqQqSgMQXw5eFtcyoVijv7HbYJZOIo+jWQdJtsxn4=",
|
"narHash": "sha256-dDWqQqSgMQXw5eFtcyoVijv7HbYJZOIo+jWQdJtsxn4=",
|
||||||
|
@ -775,11 +810,12 @@
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"helix": "helix",
|
||||||
"hyprland": "hyprland",
|
"hyprland": "hyprland",
|
||||||
"impermanence": "impermanence",
|
"impermanence": "impermanence",
|
||||||
"lanzaboote": "lanzaboote",
|
"lanzaboote": "lanzaboote",
|
||||||
"lix-module": "lix-module",
|
"lix-module": "lix-module",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"quickshell": "quickshell",
|
"quickshell": "quickshell",
|
||||||
"schizofox": "schizofox",
|
"schizofox": "schizofox",
|
||||||
"superfreq": "superfreq",
|
"superfreq": "superfreq",
|
||||||
|
@ -787,6 +823,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"helix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1740623427,
|
||||||
|
"narHash": "sha256-3SdPQrZoa4odlScFDUHd4CUPQ/R1gtH4Mq9u8CBiK8M=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "d342e8b5fd88421ff982f383c853f0fc78a847ab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"lanzaboote",
|
"lanzaboote",
|
||||||
|
@ -813,7 +870,7 @@
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpak": "nixpak",
|
"nixpak": "nixpak",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"searx-randomizer": "searx-randomizer",
|
"searx-randomizer": "searx-randomizer",
|
||||||
"systems": "systems_2"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
|
|
|
@ -21,9 +21,10 @@
|
||||||
inherit
|
inherit
|
||||||
(import ./packages {
|
(import ./packages {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
|
helix = inputs.helix.packages.${system}.default;
|
||||||
})
|
})
|
||||||
fish
|
fish
|
||||||
helix
|
wrapped-helix
|
||||||
kakoune
|
kakoune
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -31,7 +32,7 @@
|
||||||
pkgsFor;
|
pkgsFor;
|
||||||
|
|
||||||
apps = eachSystem (system: let
|
apps = eachSystem (system: let
|
||||||
inherit (inputs.self.packages.${system}) fish helix;
|
inherit (inputs.self.packages.${system}) fish wrapped-helix;
|
||||||
in {
|
in {
|
||||||
default = {
|
default = {
|
||||||
type = "app";
|
type = "app";
|
||||||
|
@ -39,7 +40,7 @@
|
||||||
};
|
};
|
||||||
helix = {
|
helix = {
|
||||||
type = "app";
|
type = "app";
|
||||||
program = "${helix}/bin/hx";
|
program = "${wrapped-helix}/bin/hx";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -70,6 +71,8 @@
|
||||||
inputs.systems.follows = "systems";
|
inputs.systems.follows = "systems";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
helix.url = "github:helix-editor/helix";
|
||||||
|
|
||||||
quickshell = {
|
quickshell = {
|
||||||
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
||||||
# THIS IS IMPORTANT
|
# THIS IS IMPORTANT
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.meta) hiPrioSet;
|
inherit (lib.meta) hiPrioSet;
|
||||||
inherit (self.packages.${pkgs.stdenv.system}) helix fish;
|
inherit (self.packages.${pkgs.stdenv.system}) wrapped-helix fish;
|
||||||
in {
|
in {
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
builtins.attrValues {
|
builtins.attrValues {
|
||||||
|
@ -46,7 +46,7 @@ in {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
++ builtins.attrValues (hiPrioSet {
|
++ builtins.attrValues (hiPrioSet {
|
||||||
inherit helix fish;
|
inherit wrapped-helix fish;
|
||||||
});
|
});
|
||||||
# helix as the only editor, a reasonable choice.
|
# helix as the only editor, a reasonable choice.
|
||||||
environment.sessionVariables.EDITOR = "hx";
|
environment.sessionVariables.EDITOR = "hx";
|
||||||
|
|
|
@ -31,7 +31,7 @@ inputs: let
|
||||||
networking.hostName = hostname;
|
networking.hostName = hostname;
|
||||||
nixpkgs.hostPlatform = system;
|
nixpkgs.hostPlatform = system;
|
||||||
})
|
})
|
||||||
(
|
(flatten (
|
||||||
concatLists [
|
concatLists [
|
||||||
# configuration for the host, passed as an argument.
|
# configuration for the host, passed as an argument.
|
||||||
(singleton ./${hostname}/default.nix)
|
(singleton ./${hostname}/default.nix)
|
||||||
|
@ -39,12 +39,12 @@ inputs: let
|
||||||
(singleton ./common.nix)
|
(singleton ./common.nix)
|
||||||
# Import all files called module.nix from my modules directory.
|
# Import all files called module.nix from my modules directory.
|
||||||
(
|
(
|
||||||
|
filter (hasSuffix "module.nix") (
|
||||||
map toString (listFilesRecursive ../modules)
|
map toString (listFilesRecursive ../modules)
|
||||||
|> filter (hasSuffix "module.nix")
|
)
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|> flatten
|
))
|
||||||
)
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
|
@ -61,8 +61,8 @@ in {
|
||||||
system = "aarch64-linux";
|
system = "aarch64-linux";
|
||||||
hostname = "tower";
|
hostname = "tower";
|
||||||
};
|
};
|
||||||
# world = mkSystem {
|
world = mkSystem {
|
||||||
# system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
# hostname = "world";
|
hostname = "world";
|
||||||
# };
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,9 +23,7 @@
|
||||||
pinentryPackage = pkgs.pinentry-qt;
|
pinentryPackage = pkgs.pinentry-qt;
|
||||||
};
|
};
|
||||||
modules = {
|
modules = {
|
||||||
wms.wayland.enable = true;
|
desktops.hyprland.enable = true;
|
||||||
desktops.hyprland.enable = false;
|
|
||||||
desktops.niri.enable = true;
|
|
||||||
|
|
||||||
theming = {
|
theming = {
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
|
@ -64,8 +62,8 @@
|
||||||
services = {
|
services = {
|
||||||
locate.enable = true;
|
locate.enable = true;
|
||||||
kanata.enable = true;
|
kanata.enable = true;
|
||||||
uwsm.enable = false;
|
uwsm.enable = true;
|
||||||
greetd.enable = false;
|
greetd.enable = true;
|
||||||
|
|
||||||
media.mpd = {
|
media.mpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -18,12 +18,13 @@
|
||||||
comma
|
comma
|
||||||
difftastic
|
difftastic
|
||||||
dua
|
dua
|
||||||
|
element
|
||||||
|
element-desktop
|
||||||
evince
|
evince
|
||||||
eza
|
eza
|
||||||
fselect
|
fselect
|
||||||
gcc
|
gcc
|
||||||
gh
|
gh
|
||||||
ghostty
|
|
||||||
grc
|
grc
|
||||||
gparted
|
gparted
|
||||||
git
|
git
|
||||||
|
@ -47,6 +48,7 @@
|
||||||
mprocs
|
mprocs
|
||||||
mpv
|
mpv
|
||||||
networkmanagerapplet
|
networkmanagerapplet
|
||||||
|
nil
|
||||||
nitch
|
nitch
|
||||||
obsidian
|
obsidian
|
||||||
swww
|
swww
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
forgejo.enable = true;
|
forgejo.enable = true;
|
||||||
grafana.enable = true;
|
grafana.enable = true;
|
||||||
prometheus.enable = true;
|
prometheus.enable = true;
|
||||||
plausible.enable = true;
|
|
||||||
};
|
};
|
||||||
programs = {
|
programs = {
|
||||||
editors = {
|
editors = {
|
||||||
|
|
|
@ -1,327 +1,161 @@
|
||||||
// taken from https://lobste.rs/s/ft797a/why_zellij#c_4g7k3x
|
// taken from https://lobste.rs/s/ft797a/why_zellij#c_4g7k3x
|
||||||
|
|
||||||
|
|
||||||
// Make the default layout compact and non-disturbing
|
// Make the default layout compact and non-disturbing
|
||||||
default_layout "compact"
|
default_layout "compact"
|
||||||
// do not pane frames
|
// do not pane frames
|
||||||
pane_frames false
|
pane_frames false
|
||||||
// do not show startup tips
|
// do not show startup tips
|
||||||
show_startup_tips false
|
show_startup_tips false
|
||||||
|
|
||||||
// Choose the mode that zellij uses when starting up.
|
// Choose the mode that zellij uses when starting up.
|
||||||
// Default: normal
|
// Default: normal
|
||||||
//
|
//
|
||||||
default_mode "locked"
|
default_mode "locked"
|
||||||
|
|
||||||
default_shell "fish"
|
default_shell "fish"
|
||||||
|
|
||||||
theme "catppuccin-frappe"
|
theme "catppuccin-frappe"
|
||||||
|
|
||||||
// Toggle enabling the mouse mode. On certain configurations, or terminals this
|
// Toggle enabling the mouse mode. On certain configurations, or terminals this
|
||||||
// could potentially interfere with copying text.
|
// could potentially interfere with copying text.
|
||||||
// Default: true
|
// Default: true
|
||||||
//
|
//
|
||||||
mouse_mode true
|
mouse_mode true
|
||||||
|
|
||||||
|
|
||||||
// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true"
|
// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true"
|
||||||
keybinds clear-defaults=true {
|
keybinds clear-defaults=true {
|
||||||
scroll {
|
|
||||||
bind "Esc" "Ctrl s" {
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "e" {
|
|
||||||
EditScrollback
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "/" {
|
|
||||||
SwitchToMode "EnterSearch"
|
|
||||||
SearchInput 0
|
|
||||||
}
|
|
||||||
bind "Ctrl c" {
|
|
||||||
ScrollToBottom
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "j" "Down" {
|
|
||||||
ScrollDown
|
|
||||||
}
|
|
||||||
bind "k" "Up" {
|
|
||||||
ScrollUp
|
|
||||||
}
|
|
||||||
bind "Ctrl f" "PageDown" "Right" "l" {
|
|
||||||
PageScrollDown
|
|
||||||
}
|
|
||||||
bind "Ctrl b" "PageUp" "Left" "h" {
|
|
||||||
PageScrollUp
|
|
||||||
}
|
|
||||||
bind "d" {
|
|
||||||
HalfPageScrollDown
|
|
||||||
}
|
|
||||||
bind "u" {
|
|
||||||
HalfPageScrollUp
|
|
||||||
}
|
|
||||||
bind "g" {
|
|
||||||
ScrollToTop
|
|
||||||
}
|
|
||||||
bind "G" {
|
|
||||||
ScrollToBottom
|
|
||||||
}
|
|
||||||
}
|
|
||||||
search {
|
|
||||||
bind "Ctrl s" {
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "Esc" "Ctrl c" {
|
|
||||||
ScrollToBottom
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "j" "Down" {
|
|
||||||
ScrollDown
|
|
||||||
}
|
|
||||||
bind "k" "Up" {
|
|
||||||
ScrollUp
|
|
||||||
}
|
|
||||||
bind "Ctrl f" "PageDown" "Right" "l" {
|
|
||||||
PageScrollDown
|
|
||||||
}
|
|
||||||
bind "Ctrl b" "PageUp" "Left" "h" {
|
|
||||||
PageScrollUp
|
|
||||||
}
|
|
||||||
bind "d" {
|
|
||||||
HalfPageScrollDown
|
|
||||||
}
|
|
||||||
bind "u" {
|
|
||||||
HalfPageScrollUp
|
|
||||||
}
|
|
||||||
bind "n" {
|
|
||||||
Search "down"
|
|
||||||
}
|
|
||||||
bind "p" {
|
|
||||||
Search "up"
|
|
||||||
}
|
|
||||||
bind "c" {
|
|
||||||
SearchToggleOption "CaseSensitivity"
|
|
||||||
}
|
|
||||||
bind "w" {
|
|
||||||
SearchToggleOption "Wrap"
|
|
||||||
}
|
|
||||||
bind "o" {
|
|
||||||
SearchToggleOption "WholeWord"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
entersearch {
|
|
||||||
bind "Ctrl c" "Esc" {
|
|
||||||
SwitchToMode "Scroll"
|
|
||||||
}
|
|
||||||
bind "Enter" {
|
|
||||||
SwitchToMode "Search"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
renametab {
|
|
||||||
bind "Ctrl c" {
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "Esc" {
|
|
||||||
UndoRenameTab
|
|
||||||
SwitchToMode "Tmux"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
renamepane {
|
|
||||||
bind "Ctrl c" {
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "Esc" {
|
|
||||||
UndoRenamePane
|
|
||||||
SwitchToMode "Tmux"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tmux {
|
|
||||||
bind "[" {
|
|
||||||
SwitchToMode "Scroll"
|
|
||||||
}
|
|
||||||
bind "Ctrl Space" {
|
|
||||||
Write 1
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "z" {
|
|
||||||
ToggleFocusFullscreen
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
// manipulate tabs
|
|
||||||
bind "c" {
|
|
||||||
NewTab
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "K" {
|
|
||||||
CloseTab
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "R" {
|
|
||||||
SwitchToMode "RenameTab"
|
|
||||||
}
|
|
||||||
// switch modes
|
|
||||||
bind "/" {
|
|
||||||
SwitchToMode "EnterSearch"
|
|
||||||
SearchInput 0
|
|
||||||
}
|
|
||||||
// miscellaneous
|
|
||||||
bind "s" {
|
|
||||||
ToggleActiveSyncTab
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "m" {
|
|
||||||
ToggleMouseMode
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "y" {
|
|
||||||
Run "yazi"
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
// create new pane
|
|
||||||
bind "Space" {
|
|
||||||
NewPane
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "-" "_" {
|
|
||||||
NewPane "Down"
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "|" "\\" {
|
|
||||||
NewPane "Right"
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "r" {
|
|
||||||
SwitchToMode "RenamePane"
|
|
||||||
}
|
|
||||||
// switch between tabs
|
|
||||||
bind "h" {
|
|
||||||
GoToPreviousTab
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "l" {
|
|
||||||
GoToNextTab
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "1" {
|
|
||||||
GoToTab 1
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "2" {
|
|
||||||
GoToTab 2
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "3" {
|
|
||||||
GoToTab 3
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "4" {
|
|
||||||
GoToTab 4
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "5" {
|
|
||||||
GoToTab 5
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "6" {
|
|
||||||
GoToTab 6
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "7" {
|
|
||||||
GoToTab 7
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "8" {
|
|
||||||
GoToTab 8
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "9" {
|
|
||||||
GoToTab 9
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
// switch between panes
|
|
||||||
bind "Left" {
|
|
||||||
MoveFocus "Left"
|
|
||||||
}
|
|
||||||
bind "Right" {
|
|
||||||
MoveFocus "Right"
|
|
||||||
}
|
|
||||||
bind "Down" {
|
|
||||||
MoveFocus "Down"
|
|
||||||
}
|
|
||||||
bind "Up" {
|
|
||||||
MoveFocus "Up"
|
|
||||||
}
|
|
||||||
bind "Tab" {
|
|
||||||
FocusNextPane
|
|
||||||
}
|
|
||||||
// move panes
|
|
||||||
bind "H" {
|
|
||||||
MovePane "Left"
|
|
||||||
}
|
|
||||||
bind "J" {
|
|
||||||
MovePane "Down"
|
|
||||||
}
|
|
||||||
bind "K" {
|
|
||||||
MovePane "Up"
|
|
||||||
}
|
|
||||||
bind "L" {
|
|
||||||
MovePane "Right"
|
|
||||||
}
|
|
||||||
// manipulate panes
|
|
||||||
bind "W" {
|
|
||||||
CloseFocus
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
// exit etc
|
|
||||||
bind "Enter" "Esc" {
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "d" {
|
|
||||||
Detach
|
|
||||||
SwitchToMode "Locked"
|
|
||||||
}
|
|
||||||
bind "Q" {
|
|
||||||
Quit
|
|
||||||
}
|
|
||||||
// resizing
|
|
||||||
bind "Ctrl h" {
|
|
||||||
Resize "Increase Left"
|
|
||||||
}
|
|
||||||
bind "Ctrl j" {
|
|
||||||
Resize "Increase Down"
|
|
||||||
}
|
|
||||||
bind "Ctrl k" {
|
|
||||||
Resize "Increase Up"
|
|
||||||
}
|
|
||||||
bind "Ctrl l" {
|
|
||||||
Resize "Increase Right"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
shared {
|
|
||||||
bind "Alt n" {
|
|
||||||
NewPane
|
|
||||||
}
|
|
||||||
bind "Alt Ctrl h" {
|
|
||||||
MoveFocus "Left"
|
|
||||||
}
|
|
||||||
bind "Alt Ctrl j" {
|
|
||||||
MoveFocus "Down"
|
|
||||||
}
|
|
||||||
bind "Alt Ctrl l" {
|
|
||||||
MoveFocus "Right"
|
|
||||||
}
|
|
||||||
bind "Alt Ctrl k" {
|
|
||||||
MoveFocus "Up"
|
|
||||||
}
|
|
||||||
bind "Alt [" {
|
|
||||||
PreviousSwapLayout
|
|
||||||
}
|
|
||||||
bind "Alt ]" {
|
|
||||||
NextSwapLayout
|
|
||||||
}
|
|
||||||
bind "Alt =" "Alt +" {
|
|
||||||
Resize "Increase"
|
|
||||||
}
|
|
||||||
bind "Alt -" "Alt _" {
|
|
||||||
Resize "Decrease"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
shared_except "tmux" {
|
|
||||||
bind "Ctrl Space" {
|
|
||||||
SwitchToMode "Tmux"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
scroll {
|
||||||
|
bind "Esc" "Ctrl s" { SwitchToMode "Locked"; }
|
||||||
|
bind "e" { EditScrollback; SwitchToMode "Locked"; }
|
||||||
|
bind "/" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
||||||
|
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Locked"; }
|
||||||
|
bind "j" "Down" { ScrollDown; }
|
||||||
|
bind "k" "Up" { ScrollUp; }
|
||||||
|
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
||||||
|
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
||||||
|
bind "d" { HalfPageScrollDown; }
|
||||||
|
bind "u" { HalfPageScrollUp; }
|
||||||
|
bind "g" { ScrollToTop; }
|
||||||
|
bind "G" { ScrollToBottom; }
|
||||||
|
}
|
||||||
|
|
||||||
|
search {
|
||||||
|
bind "Ctrl s" { SwitchToMode "Locked"; }
|
||||||
|
bind "Esc" "Ctrl c" { ScrollToBottom; SwitchToMode "Locked"; }
|
||||||
|
bind "j" "Down" { ScrollDown; }
|
||||||
|
bind "k" "Up" { ScrollUp; }
|
||||||
|
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
||||||
|
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
||||||
|
bind "d" { HalfPageScrollDown; }
|
||||||
|
bind "u" { HalfPageScrollUp; }
|
||||||
|
bind "n" { Search "down"; }
|
||||||
|
bind "p" { Search "up"; }
|
||||||
|
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||||
|
bind "w" { SearchToggleOption "Wrap"; }
|
||||||
|
bind "o" { SearchToggleOption "WholeWord"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
entersearch {
|
||||||
|
bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; }
|
||||||
|
bind "Enter" { SwitchToMode "Search"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
renametab {
|
||||||
|
bind "Ctrl c" { SwitchToMode "Locked"; }
|
||||||
|
bind "Esc" { UndoRenameTab; SwitchToMode "Tmux"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
renamepane {
|
||||||
|
bind "Ctrl c" { SwitchToMode "Locked"; }
|
||||||
|
bind "Esc" { UndoRenamePane; SwitchToMode "Tmux"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
tmux {
|
||||||
|
bind "[" { SwitchToMode "Scroll"; }
|
||||||
|
bind "Ctrl Space" { Write 1; SwitchToMode "Locked"; }
|
||||||
|
bind "z" { ToggleFocusFullscreen; SwitchToMode "Locked"; }
|
||||||
|
|
||||||
|
// manipulate tabs
|
||||||
|
bind "c" { NewTab; SwitchToMode "Locked"; }
|
||||||
|
bind "K" { CloseTab; SwitchToMode "Locked"; }
|
||||||
|
bind "R" { SwitchToMode "RenameTab"; }
|
||||||
|
|
||||||
|
// switch modes
|
||||||
|
bind "/" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
||||||
|
|
||||||
|
// miscellaneous
|
||||||
|
bind "s" { ToggleActiveSyncTab; SwitchToMode "Locked"; }
|
||||||
|
bind "m" { ToggleMouseMode; SwitchToMode "Locked"; }
|
||||||
|
bind "y" { Run "yazi"; SwitchToMode "Locked"; }
|
||||||
|
|
||||||
|
// create new pane
|
||||||
|
bind "Space" { NewPane; SwitchToMode "Locked"; }
|
||||||
|
bind "-" "_" { NewPane "Down"; SwitchToMode "Locked"; }
|
||||||
|
bind "|" "\\" { NewPane "Right"; SwitchToMode "Locked"; }
|
||||||
|
bind "r" { SwitchToMode "RenamePane"; }
|
||||||
|
|
||||||
|
// switch between tabs
|
||||||
|
bind "h" { GoToPreviousTab; SwitchToMode "Locked"; }
|
||||||
|
bind "l" { GoToNextTab; SwitchToMode "Locked"; }
|
||||||
|
bind "1" { GoToTab 1; SwitchToMode "Locked"; }
|
||||||
|
bind "2" { GoToTab 2; SwitchToMode "Locked"; }
|
||||||
|
bind "3" { GoToTab 3; SwitchToMode "Locked"; }
|
||||||
|
bind "4" { GoToTab 4; SwitchToMode "Locked"; }
|
||||||
|
bind "5" { GoToTab 5; SwitchToMode "Locked"; }
|
||||||
|
bind "6" { GoToTab 6; SwitchToMode "Locked"; }
|
||||||
|
bind "7" { GoToTab 7; SwitchToMode "Locked"; }
|
||||||
|
bind "8" { GoToTab 8; SwitchToMode "Locked"; }
|
||||||
|
bind "9" { GoToTab 9; SwitchToMode "Locked"; }
|
||||||
|
|
||||||
|
// switch between panes
|
||||||
|
bind "Left" { MoveFocus "Left"; }
|
||||||
|
bind "Right" { MoveFocus "Right"; }
|
||||||
|
bind "Down" { MoveFocus "Down"; }
|
||||||
|
bind "Up" { MoveFocus "Up"; }
|
||||||
|
bind "Tab" { FocusNextPane; }
|
||||||
|
|
||||||
|
// move panes
|
||||||
|
bind "H" { MovePane "Left"; }
|
||||||
|
bind "J" { MovePane "Down"; }
|
||||||
|
bind "K" { MovePane "Up"; }
|
||||||
|
bind "L" { MovePane "Right"; }
|
||||||
|
|
||||||
|
// manipulate panes
|
||||||
|
bind "W" { CloseFocus; SwitchToMode "Locked"; }
|
||||||
|
|
||||||
|
// exit etc
|
||||||
|
bind "Enter" "Esc" { SwitchToMode "Locked"; }
|
||||||
|
bind "d" { Detach; SwitchToMode "Locked"; }
|
||||||
|
bind "Q" { Quit; }
|
||||||
|
|
||||||
|
// resizing
|
||||||
|
bind "Ctrl h" { Resize "Increase Left"; }
|
||||||
|
bind "Ctrl j" { Resize "Increase Down"; }
|
||||||
|
bind "Ctrl k" { Resize "Increase Up"; }
|
||||||
|
bind "Ctrl l" { Resize "Increase Right"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
shared {
|
||||||
|
bind "Alt n" { NewPane; }
|
||||||
|
bind "Alt h" { MoveFocus "Left"; }
|
||||||
|
bind "Alt j" { MoveFocus "Down"; }
|
||||||
|
bind "Alt l" { MoveFocus "Right"; }
|
||||||
|
bind "Alt k" { MoveFocus "Up"; }
|
||||||
|
bind "Ctrl h" { MoveFocus "Left"; }
|
||||||
|
bind "Ctrl j" { MoveFocus "Down"; }
|
||||||
|
bind "Ctrl l" { MoveFocus "Right"; }
|
||||||
|
bind "Ctrl k" { MoveFocus "Up"; }
|
||||||
|
bind "Alt [" { PreviousSwapLayout; }
|
||||||
|
bind "Alt ]" { NextSwapLayout; }
|
||||||
|
bind "Alt =" "Alt +" { Resize "Increase"; }
|
||||||
|
bind "Alt -" "Alt _" { Resize "Decrease"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
shared_except "tmux" {
|
||||||
|
bind "Ctrl Space" { SwitchToMode "Tmux"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ in {
|
||||||
package = pkgs.loki;
|
package = pkgs.loki;
|
||||||
|
|
||||||
configuration = {
|
configuration = {
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -55,25 +55,32 @@ in {
|
||||||
# This is the standard port for SMTP, and is used by mail servers to send email to each other.
|
# This is the standard port for SMTP, and is used by mail servers to send email to each other.
|
||||||
smtp = {
|
smtp = {
|
||||||
protocol = "smtp";
|
protocol = "smtp";
|
||||||
bind = ["[::]:25"];
|
bind = ["localhost::25" "[::]:25"];
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# SMTP submissions with implicit TLS are received on port 465 by default.
|
# SMTP submissions with implicit TLS are received on port 465 by default.
|
||||||
# This is the standard port for SMTP submissions with native implicit TLS,
|
# This is the standard port for SMTP submissions with native implicit TLS,
|
||||||
# and is used by mail clients to send email to mail servers.
|
# and is used by mail clients to send email to mail servers.
|
||||||
|
|
||||||
submissions = {
|
submissions = {
|
||||||
bind = ["[::]:465"];
|
bind = ["localhost:465" "[::]:465"];
|
||||||
protocol = "smtp";
|
protocol = "smtp";
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
imaps = {
|
imaps = {
|
||||||
bind = ["[::]:993"];
|
bind = ["localhost:993" "[::]:993"];
|
||||||
protocol = "imap";
|
protocol = "imap";
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
|
jmap = {
|
||||||
|
bind = ["localhost:8080" "[::]:8080"];
|
||||||
|
url = "https://mail.${domain}";
|
||||||
|
protocol = "jmap";
|
||||||
|
tls.implicit = true;
|
||||||
|
};
|
||||||
management = {
|
management = {
|
||||||
bind = ["127.0.0.1:8080"];
|
bind = ["localhost:8080"];
|
||||||
protocol = "http";
|
protocol = "http";
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
|
@ -83,40 +90,40 @@ in {
|
||||||
inherit domain;
|
inherit domain;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# storage = {
|
storage = {
|
||||||
# data = "postgresql";
|
data = "postgresql";
|
||||||
# blob = "postgresql";
|
blob = "postgresql";
|
||||||
# fts = "postgresql";
|
fts = "postgresql";
|
||||||
# lookup = "postgresql";
|
lookup = "postgresql";
|
||||||
# full-text = {
|
full-text = {
|
||||||
# default-language = "en";
|
default-language = "en";
|
||||||
# };
|
};
|
||||||
# };
|
};
|
||||||
# store = {
|
store = {
|
||||||
# postgresql = {
|
postgresql = {
|
||||||
# # Specifies the database type, set to "postgresql" for PostgreSQL.
|
# Specifies the database type, set to "postgresql" for PostgreSQL.
|
||||||
# type = "postgresql";
|
type = "postgresql";
|
||||||
|
|
||||||
# # The hostname or IP address of the PostgreSQL server.
|
# The hostname or IP address of the PostgreSQL server.
|
||||||
# host = "localhost";
|
host = "localhost";
|
||||||
|
|
||||||
# # Port PostgreSQL runs on. Defaults to 5432.
|
# Port PostgreSQL runs on. Defaults to 5432.
|
||||||
# port = "5432";
|
port = "5432";
|
||||||
|
|
||||||
# # Name of the database to connect to.
|
# Name of the database to connect to.
|
||||||
# # TODO: add this to PostgreSQL.
|
# TODO: add this to PostgreSQL.
|
||||||
# database = "stalwart";
|
database = "stalwart";
|
||||||
|
|
||||||
# # The username used for authentication with the PostgreSQL server.
|
# The username used for authentication with the PostgreSQL server.
|
||||||
# # TODO: add this to PostgreSQL.
|
# TODO: add this to PostgreSQL.
|
||||||
# user = "stalwart";
|
user = "stalwart";
|
||||||
|
|
||||||
# password = "";
|
password = "";
|
||||||
|
|
||||||
# # Enable TLS
|
# Enable TLS
|
||||||
# tls.enable = true;
|
tls.enable = true;
|
||||||
# };
|
};
|
||||||
# };
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.nginx = {
|
services.nginx = {
|
||||||
|
|
|
@ -38,16 +38,6 @@ in {
|
||||||
governor = "performance";
|
governor = "performance";
|
||||||
# Turbo boost setting: "always", "auto", or "never"
|
# Turbo boost setting: "always", "auto", or "never"
|
||||||
turbo = "auto";
|
turbo = "auto";
|
||||||
|
|
||||||
# Enable or disable automatic turbo management (when turbo = "auto")
|
|
||||||
enable_auto_turbo = true;
|
|
||||||
# Custom thresholds for auto turbo management
|
|
||||||
turbo_auto_settings = {
|
|
||||||
load_threshold_high = 70.0;
|
|
||||||
load_threshold_low = 30.0;
|
|
||||||
temp_threshold_high = 75.0;
|
|
||||||
initial_turbo_state = false; # whether turbo should be initially enabled (false = disabled)
|
|
||||||
};
|
|
||||||
# Energy Performance Preference
|
# Energy Performance Preference
|
||||||
epp = "performance";
|
epp = "performance";
|
||||||
# Energy Performance Bias (0-15 scale or named value)
|
# Energy Performance Bias (0-15 scale or named value)
|
||||||
|
@ -64,24 +54,9 @@ in {
|
||||||
battery = {
|
battery = {
|
||||||
governor = "powersave";
|
governor = "powersave";
|
||||||
turbo = "auto";
|
turbo = "auto";
|
||||||
|
|
||||||
# More conservative auto turbo settings on battery
|
|
||||||
enable_auto_turbo = true;
|
|
||||||
turbo_auto_settings = {
|
|
||||||
load_threshold_high = 80.0;
|
|
||||||
load_threshold_low = 40.0;
|
|
||||||
temp_threshold_high = 70.0;
|
|
||||||
# start with turbo disabled on battery for power savings
|
|
||||||
initial_turbo_state = false;
|
|
||||||
};
|
|
||||||
epp = "power";
|
epp = "power";
|
||||||
epb = "balance_power";
|
epb = "balance_power";
|
||||||
platform_profile = "low-power";
|
platform_profile = "low-power";
|
||||||
|
|
||||||
# Global battery charging thresholds (applied to both profiles unless overridden)
|
|
||||||
# Start charging at 40%, stop at 80% - extends battery lifespan
|
|
||||||
# take precedence over this global setting
|
|
||||||
battery_charge_thresholds = [40 90];
|
|
||||||
min_freq_mhz = 800;
|
min_freq_mhz = 800;
|
||||||
max_freq_mhz = 2500;
|
max_freq_mhz = 2500;
|
||||||
};
|
};
|
||||||
|
|
|
@ -51,9 +51,6 @@ in {
|
||||||
dates = ["21:00"];
|
dates = ["21:00"];
|
||||||
};
|
};
|
||||||
|
|
||||||
# NOTE:
|
|
||||||
# Writes the settings to /etc/nix/nix.conf.
|
|
||||||
# See `man nix.conf` for more detailed descriptions of these settings.
|
|
||||||
settings = {
|
settings = {
|
||||||
# Tell nix to use the xdg spec for base directories
|
# Tell nix to use the xdg spec for base directories
|
||||||
# while transitioning, any state must be carried over
|
# while transitioning, any state must be carried over
|
||||||
|
@ -72,14 +69,7 @@ in {
|
||||||
# Let the system decide the number of max jobs
|
# Let the system decide the number of max jobs
|
||||||
# based on available system specs. Usually this is
|
# based on available system specs. Usually this is
|
||||||
# the same as the number of cores your CPU has.
|
# the same as the number of cores your CPU has.
|
||||||
max-jobs = "auto";
|
max-jobs = 2;
|
||||||
|
|
||||||
# This option defines the maximum number of concurrent tasks during one build.
|
|
||||||
# It affects, e.g., -j option for make. The special value 0 means that the builder
|
|
||||||
# should use all available CPU cores in the system. Some builds may become
|
|
||||||
# non-deterministic with this option; use with care!
|
|
||||||
# Packages will only be affected if enableParallelBuilding is set for them.
|
|
||||||
cores = 0;
|
|
||||||
|
|
||||||
# If set, Nix will perform builds in a sandboxed environment
|
# If set, Nix will perform builds in a sandboxed environment
|
||||||
# that it will set up automatically for each build.
|
# that it will set up automatically for each build.
|
||||||
|
|
|
@ -1,39 +1,34 @@
|
||||||
# taken from raf
|
# taken from raf
|
||||||
{
|
{
|
||||||
# Global nixpkgs configuration.
|
# Global nixpkgs configuration. This is ignored if nixpkgs.pkgs is set
|
||||||
# This is ignored if nixpkgs.pkgs is set, which should be avoided.
|
# which is a case that should be avoided. Everything that is set to configure
|
||||||
|
# nixpkgs must go here.
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
# Configuration reference:
|
# Configuration reference:
|
||||||
# <https://nixos.org/manual/nixpkgs/unstable/#chap-packageconfig>
|
# <https://nixos.org/manual/nixpkgs/unstable/#chap-packageconfig>
|
||||||
config = {
|
config = {
|
||||||
# Disallow broken packages to be built.
|
# Disallow broken packages to be built. allowBroken = false;
|
||||||
allowBroken = false;
|
|
||||||
|
|
||||||
allowUnsupportedSystem = true;
|
allowUnsupportedSystem = true;
|
||||||
|
|
||||||
# Warn when config contains an unrecognized attribute.
|
|
||||||
# This might be useful for getting a better configuration.
|
|
||||||
warnUndeclaredOptions = true;
|
|
||||||
|
|
||||||
# Allow unfree packages
|
# Allow unfree packages
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
|
|
||||||
# Permitted insecure packages in a system.
|
# Default to none, add more as necessary. This is usually where
|
||||||
# Default to none, add more as necessary.
|
# electron packages go when they reach EOL.
|
||||||
# Matrix also likes using deprecated libraries, which tend to go into this list.
|
permittedInsecurePackages = ["olm-3.2.16"];
|
||||||
# permittedInsecurePackages = [];
|
|
||||||
|
|
||||||
# Whether to set enableParallelBuilding to true by default while
|
# Nixpkgs sets internal package aliases to ease migration from other
|
||||||
# building nixpkgs packages. Changing the default causes a mass rebuild.
|
# distributions easier, or for convenience's sake. Even though the manual
|
||||||
enableParallelBuildingByDefault = false;
|
# and the description for this option recommends this to be true, I prefer
|
||||||
|
# explicit naming conventions, i.e., no aliases.
|
||||||
# Whether to expose old attribute names for compatibility.
|
|
||||||
# This improves backwards compatibility,
|
|
||||||
# which I could not care less about in my configuration.
|
|
||||||
allowAliases = false;
|
allowAliases = false;
|
||||||
|
|
||||||
# List of derivation warnings to display while rebuilding.
|
# List of derivation warnings to display while rebuilding.
|
||||||
# See: <https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/check-meta.nix>
|
# See: <https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/check-meta.nix>
|
||||||
|
# NOTE: "maintainerless" can be added to emit warnings
|
||||||
|
# about packages without maintainers but it seems to me
|
||||||
|
# like there are more packages without maintainers than
|
||||||
|
# with maintainers, so it's disabled for the time being.
|
||||||
showDerivationWarnings = [];
|
showDerivationWarnings = [];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,8 +16,10 @@ in {
|
||||||
# To be able to use this for a varying amount of monitors we do some nasty trickery.
|
# To be able to use this for a varying amount of monitors we do some nasty trickery.
|
||||||
# This was inspired by jacekpoz, whose configuration is linked in this project's README.md.
|
# This was inspired by jacekpoz, whose configuration is linked in this project's README.md.
|
||||||
workspace =
|
workspace =
|
||||||
(
|
# We're creating several lists of workspace assignments, one for each monitor,
|
||||||
# We use imap0 insted of map because imap0 starts indexing at zero as oppsed to one with map.
|
# and have to merge them into one big list.
|
||||||
|
(flatten
|
||||||
|
# We then use imap0 insted of map because imap0 starts indexing at zero as oppsed to one with map.
|
||||||
(imap0 (monitorIndex: monitorName: (
|
(imap0 (monitorIndex: monitorName: (
|
||||||
map (
|
map (
|
||||||
i: let
|
i: let
|
||||||
|
@ -33,11 +35,7 @@ in {
|
||||||
(genList (i: i + 1 + (10 * monitorIndex)) 10)
|
(genList (i: i + 1 + (10 * monitorIndex)) 10)
|
||||||
))
|
))
|
||||||
# our attrSet of different monitors
|
# our attrSet of different monitors
|
||||||
(attrNames monitors))
|
(attrNames monitors)))
|
||||||
# We're creating several lists of workspace assignments, one for each monitor,
|
|
||||||
# and have to merge them into one big list.
|
|
||||||
|> flatten
|
|
||||||
)
|
|
||||||
# These are my two special workspaces
|
# These are my two special workspaces
|
||||||
++ [
|
++ [
|
||||||
"special:nixos, decorate:false"
|
"special:nixos, decorate:false"
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
input {
|
input {
|
||||||
keyboard {
|
keyboard {
|
||||||
xkb {
|
xkb {
|
||||||
layout "us,ru"
|
layout "us,de"
|
||||||
variant "phonetic_winkeys,"
|
variant ",phonetic_winkeys,,dvorak"
|
||||||
options "grp:rctrl_rshift_toggle,compose:104"
|
options "grp:rctrl_rshift_toggle,caps:escape"
|
||||||
}
|
}
|
||||||
repeat-rate 60
|
repeat-rate 60
|
||||||
repeat-delay 200
|
repeat-delay 200
|
||||||
|
@ -68,8 +68,8 @@ layout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// xwayland stuff
|
// xwayland stuff
|
||||||
spawn-at-startup "xwayland-satellite"
|
spawn-at-startup ", xwayland-satellite"
|
||||||
spawn-at-startup "avizo-service"
|
spawn-at-startup ", avizo-service"
|
||||||
spawn-at-startup "keepassxc"
|
spawn-at-startup "keepassxc"
|
||||||
spawn-at-startup "startxfce4"
|
spawn-at-startup "startxfce4"
|
||||||
spawn-at-startup "quickshell"
|
spawn-at-startup "quickshell"
|
||||||
|
@ -124,14 +124,11 @@ binds {
|
||||||
Mod+Shift+Slash {
|
Mod+Shift+Slash {
|
||||||
show-hotkey-overlay
|
show-hotkey-overlay
|
||||||
}
|
}
|
||||||
// Mod+Return {
|
|
||||||
// spawn "foot"
|
|
||||||
// }
|
|
||||||
Mod+Return {
|
Mod+Return {
|
||||||
spawn "ghostty"
|
spawn "foot"
|
||||||
}
|
}
|
||||||
Mod+D {
|
Mod+D {
|
||||||
spawn "bash" "-c" "quickshell msg launcher open"
|
spawn "quickshell msg launcher open"
|
||||||
}
|
}
|
||||||
Mod+Alt+L {
|
Mod+Alt+L {
|
||||||
spawn "swaylock"
|
spawn "swaylock"
|
||||||
|
|
|
@ -8,6 +8,11 @@
|
||||||
inherit (lib.options) mkEnableOption;
|
inherit (lib.options) mkEnableOption;
|
||||||
|
|
||||||
cfg = config.modules.desktops.niri;
|
cfg = config.modules.desktops.niri;
|
||||||
|
|
||||||
|
niri-config = {
|
||||||
|
};
|
||||||
|
|
||||||
|
toKDL = import ./toKDL.nix lib;
|
||||||
in {
|
in {
|
||||||
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
|
options.modules.desktops.niri.enable = mkEnableOption "Niri, a scolling tiling wayland compositor";
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -21,21 +26,5 @@ in {
|
||||||
|
|
||||||
# set niri's config location to /etc/niri/config.kdl.
|
# set niri's config location to /etc/niri/config.kdl.
|
||||||
environment.etc."niri/config.kdl".source = ./config.kdl;
|
environment.etc."niri/config.kdl".source = ./config.kdl;
|
||||||
|
|
||||||
environment.systemPackages = builtins.attrValues {
|
|
||||||
inherit (pkgs) xwayland-satellite avizo;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
xdgOpenUsePortal = true;
|
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
common.default = ["*"];
|
|
||||||
hyprland.default = ["gtk"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
{pkgs}: let
|
{
|
||||||
inherit (pkgs) lib;
|
pkgs,
|
||||||
wrapped-helix = pkgs.callPackage ./helix {};
|
helix,
|
||||||
|
}: let
|
||||||
|
wrapped-helix = pkgs.callPackage ./helix {inherit helix;};
|
||||||
kakoune = pkgs.callPackage ./kakoune.nix {};
|
kakoune = pkgs.callPackage ./kakoune.nix {};
|
||||||
fish = pkgs.callPackage ./shell {inherit lib;};
|
fish = pkgs.callPackage ./shell {};
|
||||||
in {
|
in {
|
||||||
inherit kakoune fish;
|
inherit wrapped-helix kakoune fish;
|
||||||
helix = wrapped-helix;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
symlinkJoin,
|
symlinkJoin,
|
||||||
makeWrapper,
|
makeWrapper,
|
||||||
callPackage,
|
callPackage,
|
||||||
fetchzip,
|
|
||||||
rustPlatform,
|
|
||||||
alejandra,
|
alejandra,
|
||||||
basedpyright,
|
basedpyright,
|
||||||
bash-language-server,
|
bash-language-server,
|
||||||
|
@ -23,6 +21,7 @@
|
||||||
lazygit,
|
lazygit,
|
||||||
lib,
|
lib,
|
||||||
lldb_19,
|
lldb_19,
|
||||||
|
nil,
|
||||||
nixd,
|
nixd,
|
||||||
ruff,
|
ruff,
|
||||||
rust-analyzer,
|
rust-analyzer,
|
||||||
|
@ -41,21 +40,6 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.meta) getExe;
|
inherit (lib.meta) getExe;
|
||||||
|
|
||||||
custom-helix = helix.overrideAttrs (_: rec {
|
|
||||||
version = "25.06.1";
|
|
||||||
src = fetchzip {
|
|
||||||
url = "https://github.com/bloxx12/helix/releases/download/${version}/helix-${version}-source.tar.xz";
|
|
||||||
hash = "sha256-941moaBUF+aGsbFapK1cp5+NFdecSfRCTdnVUtkDQps=";
|
|
||||||
stripRoot = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
doInstallCheck = false;
|
|
||||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
|
||||||
inherit (custom-helix) src;
|
|
||||||
hash = "sha256-w07ZV1tR3lzYz4N+hI9alvFp0AHCcsItPRhVt9Sluo8=";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
toml = formats.toml {};
|
toml = formats.toml {};
|
||||||
|
|
||||||
helix-languages = callPackage ./languages.nix {inherit lib;};
|
helix-languages = callPackage ./languages.nix {inherit lib;};
|
||||||
|
@ -132,7 +116,7 @@
|
||||||
wrapped-helix = symlinkJoin {
|
wrapped-helix = symlinkJoin {
|
||||||
name = "helix-wrapped";
|
name = "helix-wrapped";
|
||||||
paths = [
|
paths = [
|
||||||
custom-helix
|
helix
|
||||||
|
|
||||||
# Bash
|
# Bash
|
||||||
bash-language-server
|
bash-language-server
|
||||||
|
@ -144,15 +128,13 @@
|
||||||
lldb_19
|
lldb_19
|
||||||
# Markdown
|
# Markdown
|
||||||
taplo
|
taplo
|
||||||
|
# Nix
|
||||||
|
nil
|
||||||
nixd
|
nixd
|
||||||
rust-analyzer
|
rust-analyzer
|
||||||
rustfmt
|
rustfmt
|
||||||
# Shell
|
# Shell
|
||||||
shellcheck
|
shellcheck
|
||||||
|
|
||||||
kdlfmt
|
|
||||||
|
|
||||||
superhtml
|
superhtml
|
||||||
# toml
|
# toml
|
||||||
taplo
|
taplo
|
||||||
|
|
|
@ -1,25 +1,22 @@
|
||||||
{
|
{
|
||||||
fetchFromGitHub,
|
|
||||||
rustPlatform,
|
|
||||||
alejandra,
|
alejandra,
|
||||||
basedpyright,
|
basedpyright,
|
||||||
bash-language-server,
|
bash-language-server,
|
||||||
clang-tools,
|
clang-tools,
|
||||||
cmake-format,
|
cmake-format,
|
||||||
cmake-language-server,
|
cmake-language-server,
|
||||||
deadnix,
|
|
||||||
deno,
|
deno,
|
||||||
dprint,
|
dprint,
|
||||||
formats,
|
formats,
|
||||||
gdb,
|
gdb,
|
||||||
kdePackages,
|
|
||||||
lib,
|
lib,
|
||||||
nil,
|
nil,
|
||||||
ruff,
|
ruff,
|
||||||
shfmt,
|
shfmt,
|
||||||
simple-completion-language-server,
|
kdePackages,
|
||||||
typescript-language-server,
|
typescript-language-server,
|
||||||
vscode-langservers-extracted,
|
vscode-langservers-extracted,
|
||||||
|
simple-completion-language-server,
|
||||||
zls,
|
zls,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
@ -27,22 +24,6 @@
|
||||||
|
|
||||||
toml = formats.toml {};
|
toml = formats.toml {};
|
||||||
|
|
||||||
# a newer nil version, for pipes support.
|
|
||||||
newer-nil = nil.overrideAttrs (_: {
|
|
||||||
version = "unstable-02-06-2025";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "oxalica";
|
|
||||||
repo = "nil";
|
|
||||||
rev = "577d160da311cc7f5042038456a0713e9863d09e";
|
|
||||||
hash = "sha256-ggXU3RHv6NgWw+vc+HO4/9n0GPufhTIUjVuLci8Za8c=";
|
|
||||||
};
|
|
||||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
|
||||||
inherit (newer-nil) src;
|
|
||||||
hash = "sha256-uZsLlFU9GKLvFllF7Kf5Q7HfN26KQojf4rvOb9p7Rjs=";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
helix-languages = {
|
helix-languages = {
|
||||||
language = let
|
language = let
|
||||||
mark = lang: {
|
mark = lang: {
|
||||||
|
@ -205,13 +186,10 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
nil = {
|
nil = {
|
||||||
command = getExe newer-nil;
|
command = getExe nil;
|
||||||
# alejandro
|
# alejandro
|
||||||
config.nil.formatting.command = ["${getExe alejandra}" "-q"];
|
config.nil.formatting.command = ["${getExe alejandra}" "-q"];
|
||||||
};
|
};
|
||||||
deadnix = {
|
|
||||||
command = getExe deadnix;
|
|
||||||
};
|
|
||||||
|
|
||||||
scls = {
|
scls = {
|
||||||
command = getExe simple-completion-language-server;
|
command = getExe simple-completion-language-server;
|
||||||
|
|
|
@ -1,42 +1,33 @@
|
||||||
# This shell setup was originally inspired by sioodmy.
|
# This shell setup was inspired by sioodmy. Check out his setup!
|
||||||
# Some further cool tricks, like using vendor_conf.d to avoid having
|
|
||||||
# to build fish myself, are taken from viperml's setup.
|
|
||||||
{pkgs, ...}: let
|
{pkgs, ...}: let
|
||||||
inherit (pkgs) lib;
|
|
||||||
inherit (lib.strings) concatStringsSep;
|
|
||||||
inherit (lib.attrsets) mapAttrsToList;
|
|
||||||
|
|
||||||
toml = pkgs.formats.toml {};
|
toml = pkgs.formats.toml {};
|
||||||
starship-config = import ./starship.nix;
|
starship-config = import ./starship.nix;
|
||||||
aliases = import ./aliases.nix {inherit pkgs;};
|
aliases = import ./aliases.nix {inherit pkgs;};
|
||||||
vendorConf = "share/fish/vendor_conf.d";
|
|
||||||
|
|
||||||
fishinit = import ./fishinit.nix {
|
fishinit = import ./fishinit.nix {inherit pkgs aliasesStr;};
|
||||||
inherit
|
|
||||||
pkgs
|
|
||||||
aliasesStr
|
|
||||||
vendorConf
|
|
||||||
;
|
|
||||||
};
|
|
||||||
|
|
||||||
aliasesStr =
|
aliasesStr =
|
||||||
mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases
|
pkgs.lib.concatStringsSep "\n"
|
||||||
|> concatStringsSep "\n";
|
(pkgs.lib.mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases);
|
||||||
|
|
||||||
packages = import ./packages.nix pkgs;
|
packages = import ./packages.nix pkgs;
|
||||||
|
|
||||||
|
# this was taken from viperml, check out his config for this!
|
||||||
|
custom-fish = pkgs.fish.overrideAttrs (old: {
|
||||||
|
patches = [./fish-on-tmpfs.patch];
|
||||||
|
doCheck = false;
|
||||||
|
postInstall =
|
||||||
|
old.postInstall
|
||||||
|
+ ''
|
||||||
|
echo "source ${fishinit}" >> $out/etc/fish/config.fish
|
||||||
|
'';
|
||||||
|
});
|
||||||
in
|
in
|
||||||
(pkgs.symlinkJoin {
|
(pkgs.symlinkJoin {
|
||||||
name = "fish";
|
name = "fish";
|
||||||
paths = [pkgs.fish] ++ packages;
|
paths = [custom-fish] ++ packages;
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [pkgs.makeWrapper];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/fish \
|
wrapProgram $out/bin/fish --set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \
|
||||||
--set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \
|
|
||||||
--prefix XDG_DATA_DIRS : "${
|
|
||||||
lib.makeSearchPathOutput "out" "share" [
|
|
||||||
fishinit
|
|
||||||
]
|
|
||||||
}"
|
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
.overrideAttrs (_: {
|
.overrideAttrs (_: {
|
||||||
|
|
10
packages/shell/fish-on-tmpfs.patch
Normal file
10
packages/shell/fish-on-tmpfs.patch
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- a/src/path.rs
|
||||||
|
+++ b/src/path.rs
|
||||||
|
@@ -781,7 +781,7 @@ fn get_cache_directory() -> &'static BaseDirectory {
|
||||||
|
|
||||||
|
fn get_config_directory() -> &'static BaseDirectory {
|
||||||
|
static DIR: Lazy<BaseDirectory> =
|
||||||
|
- Lazy::new(|| make_base_directory(L!("XDG_CONFIG_HOME"), L!("/.config/fish")));
|
||||||
|
+ Lazy::new(|| make_base_directory(L!("XDG_RUNTIME_DIR"), L!("/.config/fish")));
|
||||||
|
&DIR
|
||||||
|
}
|
|
@ -1,11 +1,9 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
aliasesStr,
|
aliasesStr,
|
||||||
vendorConf,
|
|
||||||
}:
|
}:
|
||||||
pkgs.writeTextDir "${vendorConf}/blox_config.fish"
|
pkgs.writeText "config.fish" ''
|
||||||
# fish
|
|
||||||
''
|
|
||||||
# source ${pkgs.fishPlugins.sponge}/share/zsh-defer/zsh-defer.plugin.zsh
|
# source ${pkgs.fishPlugins.sponge}/share/zsh-defer/zsh-defer.plugin.zsh
|
||||||
${pkgs.atuin}/bin/atuin init fish | source
|
${pkgs.atuin}/bin/atuin init fish | source
|
||||||
${pkgs.zoxide}/bin/zoxide init fish | source
|
${pkgs.zoxide}/bin/zoxide init fish | source
|
||||||
|
@ -13,10 +11,6 @@ pkgs.writeTextDir "${vendorConf}/blox_config.fish"
|
||||||
${pkgs.direnv}/bin/direnv hook fish | source
|
${pkgs.direnv}/bin/direnv hook fish | source
|
||||||
${pkgs.pay-respects}/bin/pay-respects fish --alias f --nocnf | source
|
${pkgs.pay-respects}/bin/pay-respects fish --alias f --nocnf | source
|
||||||
|
|
||||||
# I need to source /etc/profile using foreign-env, to get stuff set by nixos, e.g. environment.systemVariables.
|
|
||||||
# set -p fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d
|
|
||||||
|
|
||||||
# fenv source /etc/profile
|
|
||||||
|
|
||||||
source ${./config.fish}
|
source ${./config.fish}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue