feat(terminal): new terminal home
This commit is contained in:
242
home/terminal/browser.nix
Normal file
242
home/terminal/browser.nix
Normal file
@@ -0,0 +1,242 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
self,
|
||||
...
|
||||
}:
|
||||
with lib; {
|
||||
imports = [
|
||||
self.homeManagerModules.qutebrowser-profiles
|
||||
./scripts.nix
|
||||
./profiles.nix
|
||||
];
|
||||
|
||||
programs.qutebrowser = {
|
||||
enable = true;
|
||||
|
||||
keyBindings = {
|
||||
normal = {
|
||||
",m" = "spawn umpv {url}";
|
||||
",M" = "hint links spawn umpv {hint-url}";
|
||||
";M" = "hint --rapid links spawn umpv {hint-url}";
|
||||
"tD" = "config-cycle -t -u {url} colors.webpage.darkmode.enabled false true ;; reload";
|
||||
};
|
||||
};
|
||||
|
||||
settings = {
|
||||
auto_save.session = true;
|
||||
confirm_quit = ["downloads"];
|
||||
|
||||
tabs.width = builtins.floor (1920 * 0.1);
|
||||
tabs.position = "left";
|
||||
|
||||
# Colors
|
||||
colors.tabs.pinned.even.bg = mkForce "#181818";
|
||||
colors.tabs.pinned.odd.bg = mkForce "#181818";
|
||||
|
||||
colors.tabs.selected.even.bg = mkForce "#CDD6F4"; # Catppuccin's Text
|
||||
colors.tabs.selected.odd.bg = mkForce "#CDD6F4"; # Catppuccin's Text
|
||||
colors.tabs.selected.even.fg = mkForce "#111111";
|
||||
colors.tabs.selected.odd.fg = mkForce "#111111";
|
||||
|
||||
colors.tabs.pinned.selected.even.bg = mkForce "#CDD6F4"; # Catppuccin's Text
|
||||
colors.tabs.pinned.selected.odd.bg = mkForce "#CDD6F4"; # Catppuccin's Text
|
||||
|
||||
## Darkmode
|
||||
colors.webpage.darkmode.enabled = true;
|
||||
colors.webpage.darkmode.algorithm = "lightness-cielab";
|
||||
colors.webpage.darkmode.policy.images = "never";
|
||||
|
||||
# Prevent fingerprinting
|
||||
content.canvas_reading = false;
|
||||
content.cookies.accept = "all";
|
||||
content.cookies.store = true;
|
||||
content.geolocation = false;
|
||||
content.webgl = false;
|
||||
content.webrtc_ip_handling_policy = "default-public-interface-only";
|
||||
};
|
||||
|
||||
extraConfig = ''
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'file://*')
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'http://*:*/*')
|
||||
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'capytal.company')
|
||||
config.set('colors.webpage.darkmode.enabled', False, '*.capytal.company')
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'capytal.cc')
|
||||
config.set('colors.webpage.darkmode.enabled', False, '*.capytal.cc')
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'lored.dev')
|
||||
config.set('colors.webpage.darkmode.enabled', False, '*.lored.dev')
|
||||
config.set('colors.webpage.darkmode.enabled', False, 'guz.one')
|
||||
config.set('colors.webpage.darkmode.enabled', False, '*.guz.one')
|
||||
|
||||
# Thanks to @hseg on GitHub (https://github.com/qutebrowser/qutebrowser/issues/6880#issuecomment-1815248845)
|
||||
config.bind('o', 'cmd-set-text -s :open -s')
|
||||
config.bind('go', 'cmd-set-text :open -s {url:pretty}')
|
||||
config.bind('O', 'cmd-set-text -s :open -s -t')
|
||||
config.bind('gO', 'cmd-set-text :open -s -t -r {url:pretty}')
|
||||
config.bind('xo', 'cmd-set-text -s :open -s -b')
|
||||
config.bind('xO', 'cmd-set-text :open -s -b -r {url:pretty}')
|
||||
config.bind('wo', 'cmd-set-text -s :open -s -w')
|
||||
config.bind('wO', 'cmd-set-text :open -s -w {url:pretty}')
|
||||
config.bind('pp', 'open -s -- {clipboard}')
|
||||
config.bind('pP', 'open -s -- {primary}')
|
||||
config.bind('Pp', 'open -s -t -- {clipboard}')
|
||||
config.bind('PP', 'open -s -t -- {primary}')
|
||||
config.bind('wp', 'open -s -w -- {clipboard}')
|
||||
config.bind('wP', 'open -s -w -- {primary}')
|
||||
'';
|
||||
|
||||
searchEngines = {
|
||||
DEFAULT = "https://search.brave.com/search?q={}";
|
||||
# Nix
|
||||
pkg = "https://search.nixos.org/packages?query={}";
|
||||
opt = "https://search.nixos.org/options?query={}";
|
||||
lib = "https://noogle.dev/q?term={}";
|
||||
hm = "https://home-manager-options.extranix.com/?query={}";
|
||||
wiki = "https://wiki.nixos.org/w/index.php?search={}";
|
||||
|
||||
# Wikipedia
|
||||
w = "https://en.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
|
||||
wpt = "https://pt.wikipedia.org/wiki/Special:Search?search={}&go=Go&ns0=1";
|
||||
};
|
||||
|
||||
profiles = let
|
||||
programmingSearchEngines = {
|
||||
# Languages
|
||||
go = "https://pkg.go.dev/search?q={}";
|
||||
};
|
||||
setColor = c: {
|
||||
colors.tabs.selected.even.bg = c;
|
||||
colors.tabs.selected.odd.bg = c;
|
||||
colors.tabs.pinned.selected.even.bg = c;
|
||||
colors.tabs.pinned.selected.odd.bg = c;
|
||||
};
|
||||
in {
|
||||
"art".settings = setColor "#CBA6F7"; # Catppuccin's Mauve;
|
||||
"personal".settings = setColor "#F5E0DC"; # Catppuccin's Rosewater
|
||||
"work" = {
|
||||
settings = setColor "#74C7EC"; # Catppuccin's Sapphire
|
||||
searchEngines = programmingSearchEngines;
|
||||
};
|
||||
"job" = {
|
||||
settings =
|
||||
(config.programs.qutebrowser.profiles."work".settings)
|
||||
// {
|
||||
confirm_quit = ["always"];
|
||||
content.webgl = true;
|
||||
}
|
||||
// (setColor "#A6E2A1"); # Catppuccin's Green
|
||||
searchEngines = programmingSearchEngines;
|
||||
};
|
||||
"shopping".settings = setColor "#F9E2AF"; # Catppuccin's Yellow
|
||||
"goverment".settings = setColor "#A6ADC8"; # Catppuccin's Subtext 1
|
||||
"academic".settings =
|
||||
{
|
||||
confirm_quit = ["always"];
|
||||
content.webgl = true;
|
||||
}
|
||||
// setColor "#19236F";
|
||||
"facebook".settings = setColor "#1877F2"; # Facebook's Blue
|
||||
"yt-music".settings =
|
||||
{
|
||||
tabs.width = 10;
|
||||
}
|
||||
// (setColor "#FF0000"); # Youtube's Red
|
||||
};
|
||||
|
||||
greasemonkey = [
|
||||
# Youtube Adblocking
|
||||
(pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/afreakk/greasemonkeyscripts/refs/heads/master/youtube_adblock.js";
|
||||
hash = "sha256-AyD9VoLJbKPfqmDEwFIEBMl//EIV/FYnZ1+ona+VU9c=";
|
||||
})
|
||||
|
||||
# Youtube Sponsorblock
|
||||
(pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/afreakk/greasemonkeyscripts/refs/heads/master/youtube_sponsorblock.js";
|
||||
hash = "sha256-nwNade1oHP+w5LGUPJSgAX1+nQZli4Rhe8FFUoF5mLE=";
|
||||
})
|
||||
|
||||
# Reddit adblock
|
||||
(pkgs.fetchurl {
|
||||
url = "https://github.com/afreakk/greasemonkeyscripts/raw/refs/heads/master/reddit_adblock.js";
|
||||
hash = "sha256-KmCXL4GrZtwPLRyAvAxADpyjbdY5UFnS/XKZFKtg7tk=";
|
||||
})
|
||||
|
||||
# Pinterest adblock
|
||||
(pkgs.writeText "pinterest_adblock.js" ''
|
||||
// ==UserScript==
|
||||
// @name remove ads from pinterest
|
||||
// @version 1.0.0
|
||||
// @author guz
|
||||
// @match *://*.pinterest.com/*
|
||||
// ==/UserScript==
|
||||
|
||||
const removeShit = () => {
|
||||
document.querySelectorAll('[data-grid-item]:has([title="Promoted by"])').forEach((e) => e.remove());
|
||||
document.querySelectorAll('[data-grid-item]:has([data-test-id="oneTapPromotedPin"])').forEach((e) => e.remove());
|
||||
document.querySelectorAll('[data-grid-item]:has([aria-label="Product Pin"])').forEach((e) => e.remove());
|
||||
// document.querySelectorAll('[data-grid-item]:has-text(ideas you might love)').forEach((e) => e.remove());
|
||||
// document.querySelectorAll('[data-grid-item]:has-text(Seaches to try)').forEach((e) => e.remove());
|
||||
};
|
||||
(trySetInterval = () => {
|
||||
window.setInterval(removeShit, 1000);
|
||||
})();
|
||||
'')
|
||||
|
||||
# Privacy Redirector
|
||||
(pkgs.substitute {
|
||||
src = pkgs.fetchurl {
|
||||
url = "https://github.com/dybdeskarphet/privacy-redirector/raw/refs/heads/main/privacy-redirector.user.js";
|
||||
hash = "sha256-xj36+/3coiStIxftWCJUWHokSEmr+YRLOTktbmn5TkU=";
|
||||
};
|
||||
substitutions = [
|
||||
# ON-OFF (Redirection / Farside)
|
||||
"--replace"
|
||||
"pinterest = [true, true]"
|
||||
"pinterest = [false, false]"
|
||||
"--replace"
|
||||
"tumblr = [true, false]"
|
||||
"tumblr = [false, false]"
|
||||
"--replace"
|
||||
"wikipedia = [true, false]"
|
||||
"wikipedia = [false, false]"
|
||||
"--replace"
|
||||
"youtube = [true, false]"
|
||||
"youtube = [false, false]"
|
||||
"--replace"
|
||||
"instagram = [true, true]"
|
||||
"instagram = [false, false]"
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
programs.mpv.enable = true;
|
||||
programs.mpv.scripts = with pkgs.mpvScripts; [
|
||||
quality-menu
|
||||
sponsorblock
|
||||
];
|
||||
|
||||
xdg.mimeApps.defaultApplications = listToAttrs (map (name: {
|
||||
inherit name;
|
||||
value = config.programs.qutebrowser.package.meta.desktopFileName;
|
||||
}) [
|
||||
"application/x-extension-shtml"
|
||||
"application/x-extension-xhtml"
|
||||
"application/x-extension-html"
|
||||
"application/x-extension-xhtm"
|
||||
"application/x-extension-htm"
|
||||
"x-scheme-handler/unknown"
|
||||
"x-scheme-handler/mailto"
|
||||
"x-scheme-handler/chrome"
|
||||
"x-scheme-handler/about"
|
||||
"x-scheme-handler/https"
|
||||
"x-scheme-handler/http"
|
||||
"application/xhtml+xml"
|
||||
"application/json"
|
||||
"text/plain"
|
||||
"text/html"
|
||||
]);
|
||||
}
|
||||
44
home/terminal/configuration.nix
Normal file
44
home/terminal/configuration.nix
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
pkgs-unstable,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.default
|
||||
];
|
||||
|
||||
# User
|
||||
users.users."guz" = {
|
||||
extraGroups = ["wheel" "guz"];
|
||||
isNormalUser = true;
|
||||
hashedPasswordFile = builtins.toString config.sops.secrets."guz/password".path;
|
||||
shell = self.packages.${pkgs.stdenv.hostPlatform.system}.devkit.zsh;
|
||||
};
|
||||
users.groups."guz" = {};
|
||||
|
||||
home-manager.backupFileExtension = "bkp";
|
||||
home-manager.extraSpecialArgs = {inherit inputs self pkgs-unstable;};
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users."guz" = ./home.nix;
|
||||
|
||||
services.displayManager.sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
};
|
||||
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
withUWSM = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
xdg.portal.xdgOpenUsePortal = true;
|
||||
xdg.portal.extraPortals = with pkgs; [xdg-desktop-portal-gtk];
|
||||
|
||||
# Shell
|
||||
programs.zsh.enable = true;
|
||||
}
|
||||
285
home/terminal/desktop.nix
Normal file
285
home/terminal/desktop.nix
Normal file
@@ -0,0 +1,285 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
osConfig,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; {
|
||||
xdg.configFile."uwsm/env".source = "${config.home.sessionVariablesPackage}/etc/profile.d/hm-session-vars.sh"; # Set environment variables
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = mkForce false; # Incompatible with UWSM
|
||||
package = null; # Use the package from the NixOS module
|
||||
portalPackage = null; # Use the package from the NixOS module
|
||||
settings = {
|
||||
"$MONITOR-1" = mkDefault "";
|
||||
"$MONITOR-2" = mkDefault "";
|
||||
|
||||
animations.enabled = true;
|
||||
|
||||
decoration.rounding = 5;
|
||||
decoration.dim_inactive = true;
|
||||
decoration.dim_strength = 0.2;
|
||||
decoration.dim_around = 0.4;
|
||||
|
||||
exec-once = [
|
||||
"wl-paste --type text --watch cliphist store"
|
||||
"wl-paste --type image --watch cliphist store"
|
||||
];
|
||||
|
||||
dwindle.pseudotile = true;
|
||||
dwindle.preserve_split = true;
|
||||
|
||||
general.gaps_in = 5;
|
||||
general.gaps_out = 10;
|
||||
general.border_size = 0;
|
||||
general.layout = "dwindle";
|
||||
|
||||
input.kb_layout = elemAt 0 (strings.splitString "-" osConfig.console.keyMap);
|
||||
input.kb_variant = elemAt 1 (strings.splitString "-" osConfig.console.keyMap);
|
||||
input.follow_mouse = 1;
|
||||
input.sensitivity = 0;
|
||||
|
||||
monitor = [", preferred, auto, 1"];
|
||||
|
||||
workspace = [
|
||||
# Primary monitor
|
||||
"1,monitor:$MONITOR-1,default:true"
|
||||
"2,monitor:$MONITOR-1"
|
||||
"3,monitor:$MONITOR-1"
|
||||
"4,monitor:$MONITOR-1"
|
||||
"5,monitor:$MONITOR-1"
|
||||
# Second monitor
|
||||
"6,monitor:$MONITOR-2"
|
||||
"7,monitor:$MONITOR-2"
|
||||
"8,monitor:$MONITOR-2"
|
||||
"9,monitor:$MONITOR-2"
|
||||
"10,monitor:$MONITOR-2,default:true"
|
||||
];
|
||||
|
||||
# Keymaps
|
||||
bind = [
|
||||
# Applications shortcut
|
||||
"SUPER, Q, exec, ${config.home.sessionVariables.TERMINAL}" # Terminal
|
||||
# TODO: "SUPER, E, exec, " # File manager
|
||||
"SUPER, W, exec, xdg-open https://search.brave.com"
|
||||
|
||||
# Launcher
|
||||
# TODO: "SUPER, S, exec, "
|
||||
"SUPER, I, exec, ${getExe pkgs.rofimoji}" # Emoji Picker
|
||||
|
||||
# Navigation
|
||||
"SUPER, C, killactive"
|
||||
"SUPER, F, fullscreen"
|
||||
"SUPER_SHIFT, F, togglefloating"
|
||||
|
||||
"SUPER, h, movefocus l"
|
||||
"SUPER, l, movefocus r"
|
||||
"SUPER, k, movefocus u"
|
||||
"SUPER, j, movefocus d"
|
||||
|
||||
"SUPER, 1, workspace 1"
|
||||
"SUPER, 2, workspace 2"
|
||||
"SUPER, 3, workspace 3"
|
||||
"SUPER, 4, workspace 4"
|
||||
"SUPER, 5, workspace 5"
|
||||
"SUPER, 6, workspace 6"
|
||||
"SUPER, 7, workspace 7"
|
||||
"SUPER, 8, workspace 8"
|
||||
"SUPER, 9, workspace 9"
|
||||
"SUPER, 0, workspace 10"
|
||||
|
||||
"SUPER_SHIFT, 1, movetoworkspace 1"
|
||||
"SUPER_SHIFT, 2, movetoworkspace 2"
|
||||
"SUPER_SHIFT, 3, movetoworkspace 3"
|
||||
"SUPER_SHIFT, 4, movetoworkspace 4"
|
||||
"SUPER_SHIFT, 5, movetoworkspace 5"
|
||||
"SUPER_SHIFT, 6, movetoworkspace 6"
|
||||
"SUPER_SHIFT, 7, movetoworkspace 7"
|
||||
"SUPER_SHIFT, 8, movetoworkspace 8"
|
||||
"SUPER_SHIFT, 9, movetoworkspace 9"
|
||||
"SUPER_SHIFT, 0, movetoworkspace 10"
|
||||
|
||||
# Clipboard manager
|
||||
"SUPER, V, exec, cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy"
|
||||
|
||||
# Print region
|
||||
",Print, exec, ${getExe pkgs.grim} -g \"$(${getExe slurp} -d)\" - | wl-copy"
|
||||
|
||||
# Copy color
|
||||
"SUPER, P, exec, ${getExe pkgs.hyprpicker} | wl-copy"
|
||||
];
|
||||
# Mouse Keymaps
|
||||
bindm = [
|
||||
"SUPER, mouse:272, movewindow" # Left-click
|
||||
"SUPER, mouse:273, resizewindow" # Right-click
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# Application Launcher
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
modes = ["drun" "emoji"];
|
||||
};
|
||||
|
||||
# Clipboard
|
||||
services.cliphist = {
|
||||
enable = true;
|
||||
allowImages = true;
|
||||
};
|
||||
home.packages = with pkgs; [
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
# Notifications
|
||||
services.dunst = {
|
||||
enable = true;
|
||||
settings = {
|
||||
global.follow = "mouse";
|
||||
};
|
||||
};
|
||||
|
||||
# Bar
|
||||
programs.waybar.settings = let
|
||||
layer = "top";
|
||||
position = "top";
|
||||
|
||||
height = 25;
|
||||
spacing = 5;
|
||||
|
||||
margin-top = 5;
|
||||
margin-x = 10;
|
||||
margin-right = margin-x;
|
||||
margin-left = margin-x;
|
||||
in {
|
||||
main = let
|
||||
monitor = config.wayland.windowManager.hyprland.settings."$MONITOR-1";
|
||||
in {
|
||||
inherit
|
||||
layer
|
||||
position
|
||||
height
|
||||
spacing
|
||||
margin-top
|
||||
margin-right
|
||||
margin-left
|
||||
;
|
||||
|
||||
output = [monitor];
|
||||
|
||||
modules-left = [
|
||||
"hyprland/workspaces"
|
||||
];
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
active-only = false;
|
||||
persistent-workspaces = {
|
||||
"${monitor}" = [1 2 3 4 5];
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
default = "";
|
||||
active = "";
|
||||
};
|
||||
};
|
||||
|
||||
modules-center = [
|
||||
"clock"
|
||||
];
|
||||
|
||||
modules-right = [
|
||||
"pulseaudio"
|
||||
];
|
||||
|
||||
"clock" = {
|
||||
format = "{:%d %R}";
|
||||
format-alt = "{:%B %d, 12.0%y (%A)}";
|
||||
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||
calendar = {
|
||||
mode = "year";
|
||||
mode-mon-col = 3;
|
||||
weeks-pos = "left";
|
||||
on-scroll = 1;
|
||||
format = with config.lib.stylix.colors.withHashtag; {
|
||||
months = "<span color='${base09}'><b>{}</b></span>";
|
||||
days = "<span color='${base05}'><b>{}</b></span>";
|
||||
weeks = "<span color='${base09}'><b>W{}</b></span>";
|
||||
weeksdays = "<span color='${base09}'><b>{}</b></span>";
|
||||
today = "<span color='${base07}'><b>{}</b></span>";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
"pulseaudio" = {
|
||||
format = "{icon} {volume}%";
|
||||
format-muted = "";
|
||||
format-icons = {
|
||||
default = ["" ""];
|
||||
};
|
||||
onclick = "${lib.getExe pkgs.pwvucontrol}";
|
||||
};
|
||||
};
|
||||
secondary = let
|
||||
monitor = config.wayland.windowManager.hyprland.settings."$MONITOR-2";
|
||||
in {
|
||||
inherit
|
||||
layer
|
||||
position
|
||||
height
|
||||
spacing
|
||||
margin-top
|
||||
margin-right
|
||||
margin-left
|
||||
;
|
||||
|
||||
output = [monitor];
|
||||
|
||||
modules-left = [
|
||||
"cpu"
|
||||
"memory"
|
||||
"disk"
|
||||
];
|
||||
|
||||
"cpu" = {
|
||||
format = " {usage}%";
|
||||
};
|
||||
|
||||
"memory" = {
|
||||
format = " {percentage}%";
|
||||
};
|
||||
|
||||
"disk" = {
|
||||
interval = 30;
|
||||
format = " {specific_free:0.2f}";
|
||||
unit = "GB";
|
||||
};
|
||||
|
||||
modules-center = [
|
||||
"hyprland/window"
|
||||
];
|
||||
|
||||
"hyprland/window" = {
|
||||
format = "{title}";
|
||||
};
|
||||
|
||||
modules-right = [
|
||||
"hyprland/workspaces"
|
||||
];
|
||||
|
||||
"hyprland/workspaces" = {
|
||||
active-only = false;
|
||||
persistent-workspaces = {
|
||||
"${monitor}" = [6 7 8 9 10];
|
||||
};
|
||||
format = "{icon}";
|
||||
format-icons = {
|
||||
default = "";
|
||||
active = "";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
25
home/terminal/home.nix
Normal file
25
home/terminal/home.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
lib,
|
||||
options,
|
||||
...
|
||||
}:
|
||||
with lib; {
|
||||
imports =
|
||||
[
|
||||
./browser.nix
|
||||
./desktop.nix
|
||||
]
|
||||
++ (optionals (options.home?persistence) [
|
||||
./impermanence.nix
|
||||
]);
|
||||
|
||||
# This value determines the Home Manager release that your
|
||||
# configuration is compatible with. This helps avoid breakage
|
||||
# when a new Home Manager release introduces backwards
|
||||
# incompatible changes.
|
||||
#
|
||||
# You can update Home Manager without changing this value. See
|
||||
# the Home Manager release notes for a list of state version
|
||||
# changes in each release.
|
||||
home.stateVersion = "25.11";
|
||||
}
|
||||
40
home/terminal/impermanence.nix
Normal file
40
home/terminal/impermanence.nix
Normal file
@@ -0,0 +1,40 @@
|
||||
{lib, ...}:
|
||||
with lib; {
|
||||
home.persistence."/persist" = {
|
||||
directories = map (d:
|
||||
if isList d
|
||||
then {
|
||||
directory = elemAt 1 d;
|
||||
mode = elemAt 0 d;
|
||||
}
|
||||
else d) [
|
||||
["0755" "Documents"]
|
||||
["0755" "Downloads"]
|
||||
["0755" "KritaRecorder"]
|
||||
["0755" "Music"]
|
||||
["0755" "Nextcloud"]
|
||||
["0755" "Projects"]
|
||||
["0755" "Pictures"]
|
||||
["0755" "Videos"]
|
||||
["0755" "go"]
|
||||
["0700" ".gnupg"]
|
||||
["0700" ".ssh"]
|
||||
["0755" ".cache/blender"]
|
||||
["0755" ".cache/go-build"]
|
||||
["0755" ".cache/godot"]
|
||||
["0700" ".cache/gopls"]
|
||||
["0755" ".cache/nvim"]
|
||||
["0700" ".cache/qutebrowser"]
|
||||
["0755" ".cache/starship"]
|
||||
["0700" ".cache/wezterm"]
|
||||
["0755" ".cache/zellij"]
|
||||
["0755" ".config/blender"]
|
||||
["0751" ".config/inkscape"]
|
||||
["0600" ".config/kritarc"]
|
||||
["0644" ".config/kritadisplayrc"]
|
||||
["0755" ".config/qutebrowser"]
|
||||
["0755" ".local/share/direnv"]
|
||||
["0700" ".local/share/keyrings"]
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user