Compare commits
13 commits
4741aa8a47
...
653938a61f
Author | SHA1 | Date | |
---|---|---|---|
653938a61f |
|||
24f35c4ccd |
|||
2c8ed668ca |
|||
a64bc12cf1 |
|||
ef8c6854f4 |
|||
45d2f35c64 |
|||
33c4a5b297 |
|||
41b72ce92c |
|||
2239e0e983 |
|||
4267ca1d9e |
|||
b98c824f87 |
|||
7d45992c07 |
|||
a951911578 |
22 changed files with 517 additions and 318 deletions
73
flake.lock
generated
73
flake.lock
generated
|
@ -248,25 +248,6 @@
|
||||||
"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": [
|
||||||
|
@ -602,7 +583,7 @@
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||||
"rust-overlay": "rust-overlay_2"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747056319,
|
"lastModified": 1747056319,
|
||||||
|
@ -681,15 +662,15 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1740560979,
|
"lastModified": 1748190013,
|
||||||
"narHash": "sha256-Vr3Qi346M+8CjedtbyUevIGDZW8LcA1fTG0ugPY/Hic=",
|
"narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5135c59491985879812717f4c9fea69604e7f26f",
|
"rev": "62b852f6c6742134ade1abdd2a21685fd617a291",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
|
@ -708,22 +689,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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=",
|
||||||
|
@ -810,12 +775,11 @@
|
||||||
},
|
},
|
||||||
"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_2",
|
"nixpkgs": "nixpkgs",
|
||||||
"quickshell": "quickshell",
|
"quickshell": "quickshell",
|
||||||
"schizofox": "schizofox",
|
"schizofox": "schizofox",
|
||||||
"superfreq": "superfreq",
|
"superfreq": "superfreq",
|
||||||
|
@ -823,27 +787,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
|
@ -870,7 +813,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_3",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"searx-randomizer": "searx-randomizer",
|
"searx-randomizer": "searx-randomizer",
|
||||||
"systems": "systems_2"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
|
|
|
@ -21,10 +21,9 @@
|
||||||
inherit
|
inherit
|
||||||
(import ./packages {
|
(import ./packages {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
helix = inputs.helix.packages.${system}.default;
|
|
||||||
})
|
})
|
||||||
fish
|
fish
|
||||||
wrapped-helix
|
helix
|
||||||
kakoune
|
kakoune
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
@ -32,7 +31,7 @@
|
||||||
pkgsFor;
|
pkgsFor;
|
||||||
|
|
||||||
apps = eachSystem (system: let
|
apps = eachSystem (system: let
|
||||||
inherit (inputs.self.packages.${system}) fish wrapped-helix;
|
inherit (inputs.self.packages.${system}) fish helix;
|
||||||
in {
|
in {
|
||||||
default = {
|
default = {
|
||||||
type = "app";
|
type = "app";
|
||||||
|
@ -40,7 +39,7 @@
|
||||||
};
|
};
|
||||||
helix = {
|
helix = {
|
||||||
type = "app";
|
type = "app";
|
||||||
program = "${wrapped-helix}/bin/hx";
|
program = "${helix}/bin/hx";
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -71,8 +70,6 @@
|
||||||
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}) wrapped-helix fish;
|
inherit (self.packages.${pkgs.stdenv.system}) helix fish;
|
||||||
in {
|
in {
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
builtins.attrValues {
|
builtins.attrValues {
|
||||||
|
@ -46,7 +46,7 @@ in {
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
++ builtins.attrValues (hiPrioSet {
|
++ builtins.attrValues (hiPrioSet {
|
||||||
inherit wrapped-helix fish;
|
inherit 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,7 +23,9 @@
|
||||||
pinentryPackage = pkgs.pinentry-qt;
|
pinentryPackage = pkgs.pinentry-qt;
|
||||||
};
|
};
|
||||||
modules = {
|
modules = {
|
||||||
desktops.hyprland.enable = true;
|
wms.wayland.enable = true;
|
||||||
|
desktops.hyprland.enable = false;
|
||||||
|
desktops.niri.enable = true;
|
||||||
|
|
||||||
theming = {
|
theming = {
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
|
@ -62,8 +64,8 @@
|
||||||
services = {
|
services = {
|
||||||
locate.enable = true;
|
locate.enable = true;
|
||||||
kanata.enable = true;
|
kanata.enable = true;
|
||||||
uwsm.enable = true;
|
uwsm.enable = false;
|
||||||
greetd.enable = true;
|
greetd.enable = false;
|
||||||
|
|
||||||
media.mpd = {
|
media.mpd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -18,13 +18,12 @@
|
||||||
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
|
||||||
|
@ -48,7 +47,6 @@
|
||||||
mprocs
|
mprocs
|
||||||
mpv
|
mpv
|
||||||
networkmanagerapplet
|
networkmanagerapplet
|
||||||
nil
|
|
||||||
nitch
|
nitch
|
||||||
obsidian
|
obsidian
|
||||||
swww
|
swww
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
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,161 +1,327 @@
|
||||||
// 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 {
|
scroll {
|
||||||
bind "Esc" "Ctrl s" { SwitchToMode "Locked"; }
|
bind "Esc" "Ctrl s" {
|
||||||
bind "e" { EditScrollback; SwitchToMode "Locked"; }
|
SwitchToMode "Locked"
|
||||||
bind "/" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
}
|
||||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Locked"; }
|
bind "e" {
|
||||||
bind "j" "Down" { ScrollDown; }
|
EditScrollback
|
||||||
bind "k" "Up" { ScrollUp; }
|
SwitchToMode "Locked"
|
||||||
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
}
|
||||||
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
bind "/" {
|
||||||
bind "d" { HalfPageScrollDown; }
|
SwitchToMode "EnterSearch"
|
||||||
bind "u" { HalfPageScrollUp; }
|
SearchInput 0
|
||||||
bind "g" { ScrollToTop; }
|
}
|
||||||
bind "G" { ScrollToBottom; }
|
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 {
|
search {
|
||||||
bind "Ctrl s" { SwitchToMode "Locked"; }
|
bind "Ctrl s" {
|
||||||
bind "Esc" "Ctrl c" { ScrollToBottom; SwitchToMode "Locked"; }
|
SwitchToMode "Locked"
|
||||||
bind "j" "Down" { ScrollDown; }
|
}
|
||||||
bind "k" "Up" { ScrollUp; }
|
bind "Esc" "Ctrl c" {
|
||||||
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
ScrollToBottom
|
||||||
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
SwitchToMode "Locked"
|
||||||
bind "d" { HalfPageScrollDown; }
|
}
|
||||||
bind "u" { HalfPageScrollUp; }
|
bind "j" "Down" {
|
||||||
bind "n" { Search "down"; }
|
ScrollDown
|
||||||
bind "p" { Search "up"; }
|
}
|
||||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
bind "k" "Up" {
|
||||||
bind "w" { SearchToggleOption "Wrap"; }
|
ScrollUp
|
||||||
bind "o" { SearchToggleOption "WholeWord"; }
|
}
|
||||||
|
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 {
|
entersearch {
|
||||||
bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; }
|
bind "Ctrl c" "Esc" {
|
||||||
bind "Enter" { SwitchToMode "Search"; }
|
SwitchToMode "Scroll"
|
||||||
|
}
|
||||||
|
bind "Enter" {
|
||||||
|
SwitchToMode "Search"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renametab {
|
renametab {
|
||||||
bind "Ctrl c" { SwitchToMode "Locked"; }
|
bind "Ctrl c" {
|
||||||
bind "Esc" { UndoRenameTab; SwitchToMode "Tmux"; }
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "Esc" {
|
||||||
|
UndoRenameTab
|
||||||
|
SwitchToMode "Tmux"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renamepane {
|
renamepane {
|
||||||
bind "Ctrl c" { SwitchToMode "Locked"; }
|
bind "Ctrl c" {
|
||||||
bind "Esc" { UndoRenamePane; SwitchToMode "Tmux"; }
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "Esc" {
|
||||||
|
UndoRenamePane
|
||||||
|
SwitchToMode "Tmux"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tmux {
|
tmux {
|
||||||
bind "[" { SwitchToMode "Scroll"; }
|
bind "[" {
|
||||||
bind "Ctrl Space" { Write 1; SwitchToMode "Locked"; }
|
SwitchToMode "Scroll"
|
||||||
bind "z" { ToggleFocusFullscreen; SwitchToMode "Locked"; }
|
}
|
||||||
|
bind "Ctrl Space" {
|
||||||
|
Write 1
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "z" {
|
||||||
|
ToggleFocusFullscreen
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
// manipulate tabs
|
// manipulate tabs
|
||||||
bind "c" { NewTab; SwitchToMode "Locked"; }
|
bind "c" {
|
||||||
bind "K" { CloseTab; SwitchToMode "Locked"; }
|
NewTab
|
||||||
bind "R" { SwitchToMode "RenameTab"; }
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "K" {
|
||||||
|
CloseTab
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "R" {
|
||||||
|
SwitchToMode "RenameTab"
|
||||||
|
}
|
||||||
// switch modes
|
// switch modes
|
||||||
bind "/" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
bind "/" {
|
||||||
|
SwitchToMode "EnterSearch"
|
||||||
|
SearchInput 0
|
||||||
|
}
|
||||||
// miscellaneous
|
// miscellaneous
|
||||||
bind "s" { ToggleActiveSyncTab; SwitchToMode "Locked"; }
|
bind "s" {
|
||||||
bind "m" { ToggleMouseMode; SwitchToMode "Locked"; }
|
ToggleActiveSyncTab
|
||||||
bind "y" { Run "yazi"; SwitchToMode "Locked"; }
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "m" {
|
||||||
|
ToggleMouseMode
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "y" {
|
||||||
|
Run "yazi"
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
// create new pane
|
// create new pane
|
||||||
bind "Space" { NewPane; SwitchToMode "Locked"; }
|
bind "Space" {
|
||||||
bind "-" "_" { NewPane "Down"; SwitchToMode "Locked"; }
|
NewPane
|
||||||
bind "|" "\\" { NewPane "Right"; SwitchToMode "Locked"; }
|
SwitchToMode "Locked"
|
||||||
bind "r" { SwitchToMode "RenamePane"; }
|
}
|
||||||
|
bind "-" "_" {
|
||||||
|
NewPane "Down"
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "|" "\\" {
|
||||||
|
NewPane "Right"
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "r" {
|
||||||
|
SwitchToMode "RenamePane"
|
||||||
|
}
|
||||||
// switch between tabs
|
// switch between tabs
|
||||||
bind "h" { GoToPreviousTab; SwitchToMode "Locked"; }
|
bind "h" {
|
||||||
bind "l" { GoToNextTab; SwitchToMode "Locked"; }
|
GoToPreviousTab
|
||||||
bind "1" { GoToTab 1; SwitchToMode "Locked"; }
|
SwitchToMode "Locked"
|
||||||
bind "2" { GoToTab 2; SwitchToMode "Locked"; }
|
}
|
||||||
bind "3" { GoToTab 3; SwitchToMode "Locked"; }
|
bind "l" {
|
||||||
bind "4" { GoToTab 4; SwitchToMode "Locked"; }
|
GoToNextTab
|
||||||
bind "5" { GoToTab 5; SwitchToMode "Locked"; }
|
SwitchToMode "Locked"
|
||||||
bind "6" { GoToTab 6; SwitchToMode "Locked"; }
|
}
|
||||||
bind "7" { GoToTab 7; SwitchToMode "Locked"; }
|
bind "1" {
|
||||||
bind "8" { GoToTab 8; SwitchToMode "Locked"; }
|
GoToTab 1
|
||||||
bind "9" { GoToTab 9; SwitchToMode "Locked"; }
|
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
|
// switch between panes
|
||||||
bind "Left" { MoveFocus "Left"; }
|
bind "Left" {
|
||||||
bind "Right" { MoveFocus "Right"; }
|
MoveFocus "Left"
|
||||||
bind "Down" { MoveFocus "Down"; }
|
}
|
||||||
bind "Up" { MoveFocus "Up"; }
|
bind "Right" {
|
||||||
bind "Tab" { FocusNextPane; }
|
MoveFocus "Right"
|
||||||
|
}
|
||||||
|
bind "Down" {
|
||||||
|
MoveFocus "Down"
|
||||||
|
}
|
||||||
|
bind "Up" {
|
||||||
|
MoveFocus "Up"
|
||||||
|
}
|
||||||
|
bind "Tab" {
|
||||||
|
FocusNextPane
|
||||||
|
}
|
||||||
// move panes
|
// move panes
|
||||||
bind "H" { MovePane "Left"; }
|
bind "H" {
|
||||||
bind "J" { MovePane "Down"; }
|
MovePane "Left"
|
||||||
bind "K" { MovePane "Up"; }
|
}
|
||||||
bind "L" { MovePane "Right"; }
|
bind "J" {
|
||||||
|
MovePane "Down"
|
||||||
|
}
|
||||||
|
bind "K" {
|
||||||
|
MovePane "Up"
|
||||||
|
}
|
||||||
|
bind "L" {
|
||||||
|
MovePane "Right"
|
||||||
|
}
|
||||||
// manipulate panes
|
// manipulate panes
|
||||||
bind "W" { CloseFocus; SwitchToMode "Locked"; }
|
bind "W" {
|
||||||
|
CloseFocus
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
// exit etc
|
// exit etc
|
||||||
bind "Enter" "Esc" { SwitchToMode "Locked"; }
|
bind "Enter" "Esc" {
|
||||||
bind "d" { Detach; SwitchToMode "Locked"; }
|
SwitchToMode "Locked"
|
||||||
bind "Q" { Quit; }
|
}
|
||||||
|
bind "d" {
|
||||||
|
Detach
|
||||||
|
SwitchToMode "Locked"
|
||||||
|
}
|
||||||
|
bind "Q" {
|
||||||
|
Quit
|
||||||
|
}
|
||||||
// resizing
|
// resizing
|
||||||
bind "Ctrl h" { Resize "Increase Left"; }
|
bind "Ctrl h" {
|
||||||
bind "Ctrl j" { Resize "Increase Down"; }
|
Resize "Increase Left"
|
||||||
bind "Ctrl k" { Resize "Increase Up"; }
|
}
|
||||||
bind "Ctrl l" { Resize "Increase Right"; }
|
bind "Ctrl j" {
|
||||||
|
Resize "Increase Down"
|
||||||
|
}
|
||||||
|
bind "Ctrl k" {
|
||||||
|
Resize "Increase Up"
|
||||||
|
}
|
||||||
|
bind "Ctrl l" {
|
||||||
|
Resize "Increase Right"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
shared {
|
shared {
|
||||||
bind "Alt n" { NewPane; }
|
bind "Alt n" {
|
||||||
bind "Alt h" { MoveFocus "Left"; }
|
NewPane
|
||||||
bind "Alt j" { MoveFocus "Down"; }
|
}
|
||||||
bind "Alt l" { MoveFocus "Right"; }
|
bind "Alt Ctrl h" {
|
||||||
bind "Alt k" { MoveFocus "Up"; }
|
MoveFocus "Left"
|
||||||
bind "Ctrl h" { MoveFocus "Left"; }
|
}
|
||||||
bind "Ctrl j" { MoveFocus "Down"; }
|
bind "Alt Ctrl j" {
|
||||||
bind "Ctrl l" { MoveFocus "Right"; }
|
MoveFocus "Down"
|
||||||
bind "Ctrl k" { MoveFocus "Up"; }
|
}
|
||||||
bind "Alt [" { PreviousSwapLayout; }
|
bind "Alt Ctrl l" {
|
||||||
bind "Alt ]" { NextSwapLayout; }
|
MoveFocus "Right"
|
||||||
bind "Alt =" "Alt +" { Resize "Increase"; }
|
}
|
||||||
bind "Alt -" "Alt _" { Resize "Decrease"; }
|
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" {
|
shared_except "tmux" {
|
||||||
bind "Ctrl Space" { SwitchToMode "Tmux"; }
|
bind "Ctrl Space" {
|
||||||
|
SwitchToMode "Tmux"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ in {
|
||||||
package = pkgs.loki;
|
package = pkgs.loki;
|
||||||
|
|
||||||
configuration = {
|
configuration = {
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -55,32 +55,25 @@ 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 = ["localhost::25" "[::]:25"];
|
bind = ["[::]: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 = ["localhost:465" "[::]:465"];
|
bind = ["[::]:465"];
|
||||||
protocol = "smtp";
|
protocol = "smtp";
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
imaps = {
|
imaps = {
|
||||||
bind = ["localhost:993" "[::]:993"];
|
bind = ["[::]: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 = ["localhost:8080"];
|
bind = ["127.0.0.1:8080"];
|
||||||
protocol = "http";
|
protocol = "http";
|
||||||
tls.implicit = true;
|
tls.implicit = true;
|
||||||
};
|
};
|
||||||
|
@ -90,40 +83,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,6 +38,16 @@ 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)
|
||||||
|
@ -54,9 +64,24 @@ 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,6 +51,9 @@ 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
|
||||||
|
@ -69,7 +72,14 @@ 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 = 2;
|
max-jobs = "auto";
|
||||||
|
|
||||||
|
# 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,34 +1,39 @@
|
||||||
# taken from raf
|
# taken from raf
|
||||||
{
|
{
|
||||||
# Global nixpkgs configuration. This is ignored if nixpkgs.pkgs is set
|
# Global nixpkgs configuration.
|
||||||
# which is a case that should be avoided. Everything that is set to configure
|
# This is ignored if nixpkgs.pkgs is set, which should be avoided.
|
||||||
# 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. allowBroken = false;
|
# Disallow broken packages to be built.
|
||||||
|
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;
|
||||||
|
|
||||||
# Default to none, add more as necessary. This is usually where
|
# Permitted insecure packages in a system.
|
||||||
# electron packages go when they reach EOL.
|
# Default to none, add more as necessary.
|
||||||
permittedInsecurePackages = ["olm-3.2.16"];
|
# Matrix also likes using deprecated libraries, which tend to go into this list.
|
||||||
|
# permittedInsecurePackages = [];
|
||||||
|
|
||||||
# Nixpkgs sets internal package aliases to ease migration from other
|
# Whether to set enableParallelBuilding to true by default while
|
||||||
# distributions easier, or for convenience's sake. Even though the manual
|
# building nixpkgs packages. Changing the default causes a mass rebuild.
|
||||||
# and the description for this option recommends this to be true, I prefer
|
enableParallelBuildingByDefault = false;
|
||||||
# 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,10 +16,8 @@ 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,
|
(
|
||||||
# and have to merge them into one big list.
|
# We use imap0 insted of map because imap0 starts indexing at zero as oppsed to one with map.
|
||||||
(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
|
||||||
|
@ -35,7 +33,11 @@ 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,de"
|
layout "us,ru"
|
||||||
variant ",phonetic_winkeys,,dvorak"
|
variant "phonetic_winkeys,"
|
||||||
options "grp:rctrl_rshift_toggle,caps:escape"
|
options "grp:rctrl_rshift_toggle,compose:104"
|
||||||
}
|
}
|
||||||
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,11 +124,14 @@ binds {
|
||||||
Mod+Shift+Slash {
|
Mod+Shift+Slash {
|
||||||
show-hotkey-overlay
|
show-hotkey-overlay
|
||||||
}
|
}
|
||||||
|
// Mod+Return {
|
||||||
|
// spawn "foot"
|
||||||
|
// }
|
||||||
Mod+Return {
|
Mod+Return {
|
||||||
spawn "foot"
|
spawn "ghostty"
|
||||||
}
|
}
|
||||||
Mod+D {
|
Mod+D {
|
||||||
spawn "quickshell msg launcher open"
|
spawn "bash" "-c" "quickshell msg launcher open"
|
||||||
}
|
}
|
||||||
Mod+Alt+L {
|
Mod+Alt+L {
|
||||||
spawn "swaylock"
|
spawn "swaylock"
|
||||||
|
|
|
@ -8,11 +8,6 @@
|
||||||
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 {
|
||||||
|
@ -26,5 +21,21 @@ 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,10 +1,9 @@
|
||||||
{
|
{pkgs}: let
|
||||||
pkgs,
|
inherit (pkgs) lib;
|
||||||
helix,
|
wrapped-helix = pkgs.callPackage ./helix {};
|
||||||
}: let
|
|
||||||
wrapped-helix = pkgs.callPackage ./helix {inherit helix;};
|
|
||||||
kakoune = pkgs.callPackage ./kakoune.nix {};
|
kakoune = pkgs.callPackage ./kakoune.nix {};
|
||||||
fish = pkgs.callPackage ./shell {};
|
fish = pkgs.callPackage ./shell {inherit lib;};
|
||||||
in {
|
in {
|
||||||
inherit wrapped-helix kakoune fish;
|
inherit kakoune fish;
|
||||||
|
helix = wrapped-helix;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
symlinkJoin,
|
symlinkJoin,
|
||||||
makeWrapper,
|
makeWrapper,
|
||||||
callPackage,
|
callPackage,
|
||||||
|
fetchzip,
|
||||||
|
rustPlatform,
|
||||||
alejandra,
|
alejandra,
|
||||||
basedpyright,
|
basedpyright,
|
||||||
bash-language-server,
|
bash-language-server,
|
||||||
|
@ -21,7 +23,6 @@
|
||||||
lazygit,
|
lazygit,
|
||||||
lib,
|
lib,
|
||||||
lldb_19,
|
lldb_19,
|
||||||
nil,
|
|
||||||
nixd,
|
nixd,
|
||||||
ruff,
|
ruff,
|
||||||
rust-analyzer,
|
rust-analyzer,
|
||||||
|
@ -40,6 +41,21 @@
|
||||||
}: 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;};
|
||||||
|
@ -116,7 +132,7 @@
|
||||||
wrapped-helix = symlinkJoin {
|
wrapped-helix = symlinkJoin {
|
||||||
name = "helix-wrapped";
|
name = "helix-wrapped";
|
||||||
paths = [
|
paths = [
|
||||||
helix
|
custom-helix
|
||||||
|
|
||||||
# Bash
|
# Bash
|
||||||
bash-language-server
|
bash-language-server
|
||||||
|
@ -128,13 +144,15 @@
|
||||||
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,22 +1,25 @@
|
||||||
{
|
{
|
||||||
|
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,
|
||||||
kdePackages,
|
simple-completion-language-server,
|
||||||
typescript-language-server,
|
typescript-language-server,
|
||||||
vscode-langservers-extracted,
|
vscode-langservers-extracted,
|
||||||
simple-completion-language-server,
|
|
||||||
zls,
|
zls,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
|
@ -24,6 +27,22 @@
|
||||||
|
|
||||||
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: {
|
||||||
|
@ -186,10 +205,13 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
nil = {
|
nil = {
|
||||||
command = getExe nil;
|
command = getExe newer-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,33 +1,42 @@
|
||||||
# This shell setup was inspired by sioodmy. Check out his setup!
|
# This shell setup was originally inspired by sioodmy.
|
||||||
|
# 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 {inherit pkgs aliasesStr;};
|
fishinit = import ./fishinit.nix {
|
||||||
|
inherit
|
||||||
|
pkgs
|
||||||
|
aliasesStr
|
||||||
|
vendorConf
|
||||||
|
;
|
||||||
|
};
|
||||||
|
|
||||||
aliasesStr =
|
aliasesStr =
|
||||||
pkgs.lib.concatStringsSep "\n"
|
mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases
|
||||||
(pkgs.lib.mapAttrsToList (k: v: "alias ${k}=\"${v}\"") aliases);
|
|> concatStringsSep "\n";
|
||||||
packages = import ./packages.nix pkgs;
|
|
||||||
|
|
||||||
# this was taken from viperml, check out his config for this!
|
packages = import ./packages.nix pkgs;
|
||||||
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 = [custom-fish] ++ packages;
|
paths = [pkgs.fish] ++ packages;
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [pkgs.makeWrapper];
|
||||||
postBuild = ''
|
postBuild = ''
|
||||||
wrapProgram $out/bin/fish --set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \
|
wrapProgram $out/bin/fish \
|
||||||
|
--set STARSHIP_CONFIG "${toml.generate "starship.toml" starship-config}" \
|
||||||
|
--prefix XDG_DATA_DIRS : "${
|
||||||
|
lib.makeSearchPathOutput "out" "share" [
|
||||||
|
fishinit
|
||||||
|
]
|
||||||
|
}"
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
.overrideAttrs (_: {
|
.overrideAttrs (_: {
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
--- 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,9 +1,11 @@
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
aliasesStr,
|
aliasesStr,
|
||||||
|
vendorConf,
|
||||||
}:
|
}:
|
||||||
pkgs.writeText "config.fish" ''
|
pkgs.writeTextDir "${vendorConf}/blox_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
|
||||||
|
@ -11,6 +13,10 @@ pkgs.writeText "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