diff --git a/flake.lock b/flake.lock index af7cd67..a7666f0 100755 --- a/flake.lock +++ b/flake.lock @@ -33,11 +33,11 @@ "quickshell": "quickshell" }, "locked": { - "lastModified": 1775801889, - "narHash": "sha256-q1LGwhQbNOurIAClh5YwKVU2kJ5lTCxRYZf48bAb9IM=", + "lastModified": 1776670101, + "narHash": "sha256-VmPWtG6H+k2tgGnpYwNO5YueHOBdOXXTiBTrjXqcHag=", "owner": "caelestia-dots", "repo": "shell", - "rev": "0e07176ff149d02391531c802b51c28e73185f30", + "rev": "b94ee8d41bad1ea59395d6184425036fa7121bc5", "type": "github" }, "original": { @@ -67,6 +67,22 @@ "type": "github" } }, + "microPlugins-vivify": { + "flake": false, + "locked": { + "lastModified": 1770382657, + "narHash": "sha256-yWmIgT90mC9PhzyH/itDbRMmRTiZiwW+Yo0dsHW7ni8=", + "ref": "refs/heads/main", + "rev": "3c5cb25facf3fc4143bfea9323a60eda65ef8485", + "revCount": 8, + "type": "git", + "url": "https://codeberg.org/gibbert/micro-vivify" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/gibbert/micro-vivify" + } + }, "nixos-grub-themes": { "inputs": { "nixpkgs": "nixpkgs" @@ -103,11 +119,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1775763530, - "narHash": "sha256-BuTK9z1QEwWPOIakQ1gCN4pa4VwVJpfptYCviy2uOGc=", + "lastModified": 1776329215, + "narHash": "sha256-a8BYi3mzoJ/AcJP8UldOx8emoPRLeWqALZWu4ZvjPXw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b0188973b4b2a5b6bdba8b65381d6cd09a533da0", + "rev": "b86751bc4085f48661017fa226dee99fab6c651b", "type": "github" }, "original": { @@ -119,11 +135,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1775595990, - "narHash": "sha256-OEf7YqhF9IjJFYZJyuhAypgU+VsRB5lD4DuiMws5Ltc=", + "lastModified": 1776560675, + "narHash": "sha256-p68udKWWh7+V4ZPpcMDq0gTHWNZJnr4JPI+kHPPE40o=", "owner": "nixos", "repo": "nixpkgs", - "rev": "4e92bbcdb030f3b4782be4751dc08e6b6cb6ccf2", + "rev": "e07580dae39738e46609eaab8b154de2488133ce", "type": "github" }, "original": { @@ -158,6 +174,7 @@ "inputs": { "caelestia-shell": "caelestia-shell", "home-manager": "home-manager", + "microPlugins-vivify": "microPlugins-vivify", "nixos-grub-themes": "nixos-grub-themes", "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable" diff --git a/flake.nix b/flake.nix index e360572..3313439 100644 --- a/flake.nix +++ b/flake.nix @@ -15,6 +15,10 @@ url = "github:caelestia-dots/shell"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; + microPlugins-vivify = { + url = "git+https://codeberg.org/gibbert/micro-vivify"; + flake = false; + }; }; # never got nixvim to wokrs. ): # nixvim = { diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix index 55bdb92..bf89d8b 100755 --- a/hosts/laptop/configuration.nix +++ b/hosts/laptop/configuration.nix @@ -13,13 +13,16 @@ # Include the results of the hardware scan. ./hardware-configuration.nix inputs.home-manager.nixosModules.default - ../../modules/nixos/battery.nix + ../../hostsModules/laptop/nixos/battery.nix #../../modules/nixos/ly.nix - ../../modules/nixos/lyminimal.nix + ../../modules/nixos/ly.nix ../../modules/nixos/anki.nix - ../../modules/nixos/udevsimple.nix + ../../modules/nixos/nixUtils.nix + ../../hostsModules/laptop/nixos/udev.nix + ../../hostsModules/laptop/nixos/disk.nix ]; + programs.nix-ld.enable = true; #Run unpatched dynamic binaries on NixOS. For example lets run ./a.out from gcc documentation.man.generateCaches = true; # used for the man script @@ -150,12 +153,7 @@ #adds nixos experimental features: nix.settings.experimental-features = ["nix-command" "flakes"]; - # Garbage collector of generations - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 7d"; # every week delete generations older than a month - }; + # Allow unfree packages nixpkgs.config.allowUnfree = true; # Nonfree packages: Obsidian @@ -173,7 +171,7 @@ kdePackages.dolphin gnome-font-viewer wget - tree # shows dir in tree + #tree # shows dir in tree # we use eza now zsh # better bash brightnessctl # control brightness pulseaudio # sound server @@ -260,6 +258,11 @@ #vivify # for NoteWrapper # this is more up to date (callPackage ../../modules/packages/vivify.nix {}) + #(callPackage ../../modules/packages/sbb-tui.nix {}) + pkgs-unstable.nixpkgs-review + pkgs-unstable.nixfmt-tree + pkgs-unstable.treefmt + kakoune ]; # fonts diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index f3068ea..6959bb2 100755 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -11,10 +11,13 @@ ../../modules/home-manager/kitty.nix # terminal # use absolute path with --impure flag or go back to /etc/nixos and use relative ../../modules/home-manager/zoxide.nix # better cd ../../modules/home-manager/zsh.nix # better bash + ../../hostsModules/laptop/home-manager/zsh.nix # some things are hosts dependant. + ../../modules/home-manager/gtk.nix # some config for gtk themed apps ../../modules/home-manager/git.nix ../../modules/home-manager/ssh.nix ../../modules/home-manager/fastfetch.nix ../../modules/home-manager/hyprland.nix + ../../hostsModules/laptop/home-manager/hyprland.nix #../../modules/home-manager/wlogout.nix # logout utility ../../modules/home-manager/rofi.nix # used for keybinds and for clipboard #notifications are now manager with quickshell../../modules/home-manager/swaync.nix # notification daemon @@ -37,15 +40,11 @@ ../../modules/home-manager/thunderbird.nix # email client ../../modules/home-manager/eza.nix # ls replacement ../../modules/home-manager/vivify.nix # neovim markdown viewer (has also config for qutebrowser + #../../modules/home-manager/micro.nix # micro text editor. Not main editor (used for testing for notewrapper) + ../../modules/other/desktopEntries.nix # creates .desktop files ]; - #programs.nixvim = { - # enable = true; - # imports = [ ../../modules/nixvim/neovim.nix ]; - # package = pkgs.neovim; - #}; - # Home Manager needs a bit of information about you and the paths it should # Required for Home Manager home.username = "tomasr"; @@ -65,32 +64,21 @@ home.packages = [ #scritps (pkgs.callPackage ../../modules/scripts/dontkillsteam.nix {}) # kill app (if it is steam put it in some background - (pkgs.callPackage ../../modules/scripts/batterynotify.nix {}) - (pkgs.callPackage ../../modules/scripts/batterywarning.nix {}) + (pkgs.callPackage ../../hostsModules/laptop/scripts/batterynotify.nix {}) + (pkgs.callPackage ../../hostsModules/laptop/scripts/batterywarning.nix {}) (pkgs.callPackage ../../modules/scripts/weather.nix {}) - (pkgs.callPackage ../../modules/scripts/cowsay.nix {}) (pkgs.callPackage ../../modules/scripts/wallpaper.nix {}) (pkgs.callPackage ../../modules/scripts/mountkdrive.nix {}) - (pkgs.callPackage ../../modules/scripts/weatherwaybar.nix {}) (pkgs.callPackage ../../modules/scripts/colorpicker.nix {}) (pkgs.callPackage ../../modules/scripts/killall.nix {}) # kill all windows except focused window - (pkgs.callPackage ../../modules/scripts/launch.nix {}) # necessary for the apps i launch with hyprland at every start (pkgs.callPackage ../../modules/scripts/gitnotify.nix {}) (pkgs.callPackage ../../modules/scripts/tomato.nix {}) (pkgs.callPackage ../../modules/scripts/librewolfprofiles.nix {}) - (pkgs.callPackage ../../modules/scripts/performance-mode.nix {}) (pkgs.callPackage ../../modules/scripts/btm.nix {}) (pkgs.callPackage ../../modules/scripts/manix.nix {}) (pkgs.callPackage ../../modules/scripts/man.nix {}) (pkgs.callPackage ../../modules/scripts/trimmer.nix {}) - (pkgs.callPackage ../../modules/qt/qtbatticon.nix {}) - - #(pkgs.callPackage ../../modules/scripts/obsidianbackup.nix {}) # periodically syncs obsidian's note to kdrive - #(pkgs.callPackage ../../modules/scripts/obsidianprofiles.nix {}) # fzf vault selector # obsidian was replaced with a custom solution - # no longer used scripts for quickshell. see caelestia-shell - #(pkgs.callPackage ../../modules/scripts/QSsysinfo.nix {}) - #(pkgs.callPackage ../../modules/scripts/QSnotifycache.nix {}) - #(pkgs.callPackage ../../modules/scripts/QSnotifyhistory.nix {}) + (pkgs.callPackage ../../hostsModules/laptop/qt/qtbatticon.nix {}) #pkgs pkgs.gruvbox-gtk-theme pkgs.biber @@ -131,74 +119,9 @@ #(setq org-preview-latex-default-process 'dvisvgm) ] )) - # # It is sometimes useful to fine-tune packages, for example, by applying - # # overrides. You can do that directly here, just don't forget the - # # parentheses. Maybe you want to install Nerd Fonts with a limited number of - # # fonts? - # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) - - # # You can also create simple shell scripts directly inside your - # # configuration. For example, this adds a command 'my-hello' to your - # # environment: - # (pkgs.writeShellScriptBin "my-hello" '' - # echo "Hello, ${config.home.username}!" - # '') ]; - #maybe migrate both of them in a separate file - # gtk config - gtk.theme = { - enable = true; - Gruvbox-GTK-Theme-BL-MB = { - enable = true; - name = "Gruvbox-GTK-Theme-BL-MB"; - package = pkgs.gruvbox-gtk-theme; - }; - }; - # to resolve this https://wiki.nixos.org/wiki/Home_Manager#I_cannot_set_GNOME_or_Gtk_themes_via_Home_Manager - # ssh config - - programs.ssh.enable = true; - services.ssh-agent.enable = true; - - home.file.".ssh/config".text = '' - Host * - AddKeysToAgent yes - IdentityFile ~/.ssh/id_ed25519 - ''; - - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - home.file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. These will be explicitly sourced when using a - # shell provided by Home Manager. If you don't want to manage your shell - # through Home Manager then you have to manually source 'hm-session-vars.sh' - # located at either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/tomasr/etc/profile.d/hm-session-vars.sh - # home.sessionVariables = { EDITOR = "neovim"; # Git update function diff --git a/hostsModules/README.md b/hostsModules/README.md new file mode 100644 index 0000000..1fd26b2 --- /dev/null +++ b/hostsModules/README.md @@ -0,0 +1 @@ +For modules that are hosts specific. diff --git a/hostsModules/laptop/home-manager/hyprland.nix b/hostsModules/laptop/home-manager/hyprland.nix new file mode 100644 index 0000000..0b80f2b --- /dev/null +++ b/hostsModules/laptop/home-manager/hyprland.nix @@ -0,0 +1,17 @@ +{ + config, + pkgs, + pkgs-unstable, + ... +}: + +{ + wayland.windowManager.hyprland.settings = { + exec-once = [ + "qtbatticon" # custom battery tray + ]; + monitor = [ + "eDP-1, highres@highrr, 0x0, 1" + ]; + }; +} diff --git a/hostsModules/laptop/home-manager/zsh.nix b/hostsModules/laptop/home-manager/zsh.nix new file mode 100644 index 0000000..3718598 --- /dev/null +++ b/hostsModules/laptop/home-manager/zsh.nix @@ -0,0 +1,12 @@ +{ + config, + pkgs, + ... +}: { + programs.zsh = { + shellAliases = { + snrt = "git add -A && sudo nixos-rebuild test --flake ~/nixos/#laptop"; + snrs = "git add -A && sudo nixos-rebuild switch --flake ~/nixos/#laptop"; + }; + }; +} diff --git a/modules/nixos/battery.nix b/hostsModules/laptop/nixos/battery.nix similarity index 100% rename from modules/nixos/battery.nix rename to hostsModules/laptop/nixos/battery.nix diff --git a/hostsModules/laptop/nixos/disk.nix b/hostsModules/laptop/nixos/disk.nix new file mode 100644 index 0000000..c794a1f --- /dev/null +++ b/hostsModules/laptop/nixos/disk.nix @@ -0,0 +1,16 @@ +{ + config, + pkgs, + pkgs-unstable, + libs, + inputs, + ... +}: { + # i found swap necessary when running nixpkgs review + swapDevices = [{ + device = "/swapfile"; + size = 16384; # 16 GB + } + ]; + boot.kernel.sysctl."vm.swappiness" = 10; +} diff --git a/modules/nixos/udevsimple.nix b/hostsModules/laptop/nixos/udev.nix similarity index 100% rename from modules/nixos/udevsimple.nix rename to hostsModules/laptop/nixos/udev.nix diff --git a/modules/qt/qtbatticon.nix b/hostsModules/laptop/qt/qtbatticon.nix similarity index 100% rename from modules/qt/qtbatticon.nix rename to hostsModules/laptop/qt/qtbatticon.nix diff --git a/modules/scripts/batterynotify.nix b/hostsModules/laptop/scripts/batterynotify.nix similarity index 97% rename from modules/scripts/batterynotify.nix rename to hostsModules/laptop/scripts/batterynotify.nix index dcf9b73..4fc53b8 100644 --- a/modules/scripts/batterynotify.nix +++ b/hostsModules/laptop/scripts/batterynotify.nix @@ -5,7 +5,7 @@ brightnessctl, ... }: let - NotifySound = ../../assets/battery_notify.mp3; + NotifySound = ../../../assets/battery_notify.mp3; in writeShellApplication { name = "custom-batterynotify"; diff --git a/modules/scripts/batterywarning.nix b/hostsModules/laptop/scripts/batterywarning.nix similarity index 95% rename from modules/scripts/batterywarning.nix rename to hostsModules/laptop/scripts/batterywarning.nix index b83d651..41820d8 100644 --- a/modules/scripts/batterywarning.nix +++ b/hostsModules/laptop/scripts/batterywarning.nix @@ -5,7 +5,7 @@ brightnessctl, ... }: let - NotifySound = ../../assets/battery_notify.mp3; + NotifySound = ../../../assets/battery_notify.mp3; in writeShellApplication { name = "custom-batterywarning"; diff --git a/modules/README.md b/modules/README.md new file mode 100644 index 0000000..637db4a --- /dev/null +++ b/modules/README.md @@ -0,0 +1 @@ +This modules must be host independent. diff --git a/modules/home-manager/neovim2.nix b/modules/home-manager/.OLDneovim.nix similarity index 99% rename from modules/home-manager/neovim2.nix rename to modules/home-manager/.OLDneovim.nix index d64c955..392060e 100644 --- a/modules/home-manager/neovim2.nix +++ b/modules/home-manager/.OLDneovim.nix @@ -1,3 +1,5 @@ +# OLD Deprecated. + { config, pkgs, diff --git a/modules/home-manager/git.nix b/modules/home-manager/git.nix index e0b95b1..d1734ab 100644 --- a/modules/home-manager/git.nix +++ b/modules/home-manager/git.nix @@ -9,4 +9,8 @@ init.defaultBranch = "main"; }; }; + programs.gh = { + enable = true; + gitCredentialHelper.enable = true; + }; } diff --git a/modules/home-manager/gtk.nix b/modules/home-manager/gtk.nix new file mode 100644 index 0000000..078f319 --- /dev/null +++ b/modules/home-manager/gtk.nix @@ -0,0 +1,16 @@ +{ + config, + pkgs, + ... +}: { + # gtk config + gtk.theme = { + enable = true; + Gruvbox-GTK-Theme-BL-MB = { + enable = true; + name = "Gruvbox-GTK-Theme-BL-MB"; + package = pkgs.gruvbox-gtk-theme; + }; + }; + # to resolve this https://wiki.nixos.org/wiki/Home_Manager#I_cannot_set_GNOME_or_Gtk_themes_via_Home_Manager +} diff --git a/modules/home-manager/hyprland.nix b/modules/home-manager/hyprland.nix index aa1e21c..d935bca 100644 --- a/modules/home-manager/hyprland.nix +++ b/modules/home-manager/hyprland.nix @@ -210,7 +210,6 @@ in { "wl-paste --type image --watch cliphist store" # clipboard store image data "custom-batterynotify" "custom-batterywarning" - "qtbatticon" # custom battery tray "birdtray" # thunderbird tray app #wallpapers/b "swww img ${wallpaper}" @@ -268,7 +267,6 @@ in { # █░▀░█ █▄█ █#░▀█ █ ░█░ █▄█ █▀▄ monitor = [ #",preferred, auto, auto" - "eDP-1, highres@highrr, 0x0, 1" "HDMI-A-1, highres2highrr, auto-left, 1" ]; # _______ ___ __ __ _______ ___ __ _ _______ diff --git a/modules/home-manager/micro.nix b/modules/home-manager/micro.nix new file mode 100644 index 0000000..1a4bc63 --- /dev/null +++ b/modules/home-manager/micro.nix @@ -0,0 +1,46 @@ +{ + config, + pkgs, + pkgs-unstable, + inputs, + ... +}: { + programs.micro = { + enable = true; + package = pkgs-unstable.micro-full; + settings = { + }; + }; + home.file.".config/micro/plug/vivify" = { + enable = true; + source = inputs.microPlugins-vivify; + recursive = true; + force = true; + }; + home.file.".config/micro/init.lua" = { + enable = true; + force = true; + text = '' +local buffer = import("micro/buffer") +local shell = import("micro/shell") + +function vivifyOpen(buf) + local cursor = buf:GetActiveCursor() + local line = cursor.Loc.Y + 1 + + shell.ExecCommand("viv", string.format("%s:%d", buf.AbsPath, line)) +end + +function onBufferOpen(buf) + if os.getenv("MICRO_VIVIFY") ~= "1" then + return + end + + -- only run for real files (not help/log/etc) + if buf.Type.Kind == buffer.BTDefault then + vivifyOpen(buf) + end +end +''; + }; +} diff --git a/modules/home-manager/neovim.nix b/modules/home-manager/neovim.nix index 154ae45..5314706 100644 --- a/modules/home-manager/neovim.nix +++ b/modules/home-manager/neovim.nix @@ -7,7 +7,7 @@ programs.neovim = { enable = true; vimAlias = false; - viAlias = true; + viAlias = false; package = pkgs-unstable.neovim-unwrapped; # required for unwrapped version plugins = [ pkgs-unstable.vimPlugins.vivify-vim diff --git a/modules/home-manager/ssh.nix b/modules/home-manager/ssh.nix index 90d581e..22f3666 100644 --- a/modules/home-manager/ssh.nix +++ b/modules/home-manager/ssh.nix @@ -20,4 +20,9 @@ }; }; services.ssh-agent.enable = true; + home.file.".ssh/config".text = '' + Host * + AddKeysToAgent yes + IdentityFile ~/.ssh/id_ed25519 + ''; } diff --git a/modules/home-manager/zsh.nix b/modules/home-manager/zsh.nix index de9bcbc..4d0428d 100644 --- a/modules/home-manager/zsh.nix +++ b/modules/home-manager/zsh.nix @@ -41,8 +41,6 @@ manix = "custom-manix"; man = "custom-man"; mplayer = "mplayer -volume 5"; - snrt = "git add -A && sudo nixos-rebuild test --flake ~/nixos/#laptop"; - snrs = "git add -A && sudo nixos-rebuild switch --flake ~/nixos/#laptop"; # these are to create the developpement shell cenv = "nix-shell -p zsh gcc raylib libx11 libGL"; }; diff --git a/modules/nixos/.lyBROKEN.nix b/modules/nixos/.lyBROKEN.nix new file mode 100644 index 0000000..860bb9c --- /dev/null +++ b/modules/nixos/.lyBROKEN.nix @@ -0,0 +1,302 @@ +{...}: { + services.displayManager.ly = { + enable = true; + settings = { + animation = "gameoflife"; # none or doom or matrix or gameoflife or a dur file + animation_frame_delay = 5; + animation_timeout_sec = 0; + asterisk = "0x2022"; + auth_fails = 2; # numbers of failed authentification before special animation + battery_id = "BAT1"; + bigclock = "en"; + bigclock_12hr = false; + bigclock_seconds = false; + # Blank main box background + # Setting to false will make it transparent + blank_box = false; + + # Border foreground color id + border_fg = "0x00FFFFFF"; + + # Title to show at the top of the main box + # If set to null, none will be shown + box_title = null; + + # Brightness decrease command + brightness_down_cmd = "$PREFIX_DIRECTORY/bin/brightnessctl -q -n s 10%-"; + + # Brightness decrease key combination, or null to disable + brightness_down_key = "F5"; + + # Brightness increase command + brightness_up_cmd = "$PREFIX_DIRECTORY/bin/brightnessctl -q -n s +10%"; + + # Brightness increase key combination, or null to disable + brightness_up_key = "F6"; + + # Erase password input on failure + clear_password = true; + + # Format string for clock in top right corner (see strftime specification). Example: %c + # If null, the clock won't be shown + clock = true; + + # CMatrix animation foreground color id + cmatrix_fg = "0x0000FF00"; + + # CMatrix animation character string head color id + cmatrix_head_col = "0x01FFFFFF"; + + # CMatrix animation minimum codepoint. It uses a 16-bit integer + # For Japanese characters for example, you can use 0x3000 here + cmatrix_min_codepoint = "0x21"; + + # CMatrix animation maximum codepoint. It uses a 16-bit integer + # For Japanese characters for example, you can use 0x30FF here + cmatrix_max_codepoint = "0x7B"; + + # Color mixing animation first color id + colormix_col1 = "0x00FF0000"; + + # Color mixing animation second color id + colormix_col2 = "0x000000FF"; + + # Color mixing animation third color id + colormix_col3 = "0x20000000"; + + # Custom sessions directory + # You can specify multiple directories, + # e.g. $CONFIG_DIRECTORY/ly/custom-sessions:$PREFIX_DIRECTORY/share/custom-sessions + custom_sessions = "$CONFIG_DIRECTORY/ly/custom-sessions"; + + # Input box active by default on startup + # Available inputs: info_line, session, login, password + default_input = "password"; + + # DOOM animation fire height (1 thru 9) + doom_fire_height = 6; + + # DOOM animation fire spread (0 thru 4) + doom_fire_spread = 2; + + # DOOM animation custom top color (low intensity flames) + doom_top_color = "0x009F2707"; + + # DOOM animation custom middle color (medium intensity flames) + doom_middle_color = "0x00C78F17"; + + # DOOM animation custom bottom color (high intensity flames) + doom_bottom_color = "0x00FFFFFF"; + + # Dur file path + dur_file_path = "$CONFIG_DIRECTORY/ly/example.dur"; + + # Dur file alignment + # The dur file can be aligned with a direction and centered easily with the flags below + # Available inputs: topleft, topcenter, topright, centerleft, center, centerright, bottomleft, bottomcenter, bottomright + dur_offset_alignment = "center"; + + # Dur offset x direction (value is added to the current position determined by alignment, negatives are supported) + dur_x_offset = 0; + + # Dur offset y direction (value is added to the current position determined by alignment, negatives are supported) + dur_y_offset = 0; + + # Set margin to the edges of the DM (useful for curved monitors) + edge_margin = 0; + + # Error background color id + error_bg = "0x00000000"; + + # Error foreground color id + # Default is red and bold + error_fg = "0x01FF0000"; + + # Foreground color id + fg = "0x00FFFFFF"; + + # Render true colors (if supported) + # If false, output will be in eight-color mode + # All eight-color mode color codes: + # TB_DEFAULT 0x0000 + # TB_BLACK 0x0001 + # TB_RED 0x0002 + # TB_GREEN 0x0003 + # TB_YELLOW 0x0004 + # TB_BLUE 0x0005 + # TB_MAGENTA 0x0006 + # TB_CYAN 0x0007 + # TB_WHITE 0x0008 + # If full color is off, the styling options still work. The colors are + # always 32-bit values with the styling in the most significant byte. + # Note: If using the dur_file animation option and the dur file's color range + # is saved as 256 with this option disabled, the file will not be drawn. + full_color = true; + + # Game of Life entropy interval (0 = disabled, >0 = add entropy every N generations) + # 0 -> Pure Conway's Game of Life (will eventually stabilize) + # 10 -> Add entropy every 10 generations (recommended for continuous activity) + # 50+ -> Less frequent entropy for more natural evolution + gameoflife_entropy_interval = 10; + + # Game of Life animation foreground color id + gameoflife_fg = "0x0000FF00"; + + # Game of Life frame delay (lower = faster animation, higher = slower) + # 1-3 -> Very fast animation + # 6 -> Default smooth animation speed + # 10+ -> Slower, more contemplative speed + gameoflife_frame_delay = 3; + + # Game of Life initial cell density (0.0 to 1.0) + # 0.1 -> Sparse, minimal activity + # 0.4 -> Balanced activity (recommended) + # 0.7+ -> Dense, chaotic patterns + gameoflife_initial_density = 0.666; + + # Command executed when pressing hibernate key (can be null) + hibernate_cmd = null; + + # Specifies the key combination used for hibernate + hibernate_key = "F4"; + + # Remove main box borders + hide_borders = false; + + # Remove power management command hints + hide_key_hints = false; + + # Remove keyboard lock states from the top right corner + hide_keyboard_locks = false; + + # Remove version number from the top left corner + hide_version_string = false; + + # Command executed when no input is detected for a certain time + # If null, no command will be executed + inactivity_cmd = null; + + # Executes a command after a certain amount of seconds + inactivity_delay = 0; + + # Initial text to show on the info line + # If set to null, the info line defaults to the hostname + initial_info_text = null; + + # Input boxes length + input_len = 34; + + # Active language + # Available languages are found in $CONFIG_DIRECTORY/ly/lang/ + lang = "en"; + + # Command executed when logging in + # If null, no command will be executed + # Important: the code itself must end with `exec "$@"` in order to launch the session! + # You can also set environment variables in there, they'll persist until logout + login_cmd = null; + + # Path for login.defs file (used for listing all local users on the system on + # Linux) + #login_defs_path = /etc/login.defs + + # Command executed when logging out + # If null, no command will be executed + # Important: the session will already be terminated when this command is executed, so + # no need to add `exec "$@"` at the end + logout_cmd = null; + + # General log file path + #ly_log = /var/log/ly.log + + # Main box horizontal margin + margin_box_h = 2; + + # Main box vertical margin + margin_box_v = 1; + + # Set numlock on/off at startup + numlock = false; + + # Default path + # If null, ly doesn't set a path + #path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + + # Command executed when pressing restart_key + #restart_cmd = "/sbin/shutdown -r now" + + # Specifies the key combination used for restart + restart_key = "F2"; + + # Save the current desktop and login as defaults, and load them on startup + save = true; + + # Service name (set to ly to use the provided pam config file) + service_name = "ly"; + + # Session log file path + # This will contain stdout and stderr of Wayland sessions + # By default it's saved in the user's home directory + # Important: due to technical limitations, X11, shell sessions as well as + # launching session via KMSCON aren't supported, which means you won't get any + # logs from those sessions. + # If null, no session log will be created + session_log = null; + + # Setup command + setup_cmd = "$CONFIG_DIRECTORY/ly/setup.sh"; + + # Command executed when pressing shutdown_key + shutdown_cmd = "/sbin/shutdown $PLATFORM_SHUTDOWN_ARG now"; + + # Specifies the key combination used for shutdown + shutdown_key = "F1"; + + # Command executed when pressing sleep key (can be null) + sleep_cmd = null; + + # Specifies the key combination used for sleep + sleep_key = "F3"; + + # Command executed when starting Ly (before the TTY is taken control of) + # See file at path below for an example of changing the default TTY colors + start_cmd = "$CONFIG_DIRECTORY/ly/startup.sh"; + + # Center the session name. + text_in_center = false; + + # Default vi mode + # normal -> normal mode + # insert -> insert mode + vi_default_mode = "normal"; + + # Enable vi keybindings + vi_mode = false; + + # Wayland desktop environments + # You can specify multiple directories, + # e.g. $PREFIX_DIRECTORY/share/wayland-sessions:$PREFIX_DIRECTORY/local/share/wayland-sessions + waylandsessions = "$PREFIX_DIRECTORY/share/wayland-sessions"; + + # Xorg server command + x_cmd = "$PREFIX_DIRECTORY/bin/X"; + + # Xorg virtual terminal number + # Mostly useful for FreeBSD where choosing the current TTY causes issues + # If null, the current TTY will be chosen + x_vt = null; + + # Xorg xauthority edition tool + xauth_cmd = "$PREFIX_DIRECTORY/bin/xauth"; + + # xinitrc + # If null, the xinitrc session will be hidden + xinitrc = "~/.xinitrc"; + + # Xorg desktop environments + # You can specify multiple directories, + # e.g. $PREFIX_DIRECTORY/share/xsessions:$PREFIX_DIRECTORY/local/share/xsessions + xsessions = "$PREFIX_DIRECTORY/share/xsessions"; + }; + }; +} diff --git a/modules/nixos/udev.nix b/modules/nixos/.udevBROKEN.nix similarity index 100% rename from modules/nixos/udev.nix rename to modules/nixos/.udevBROKEN.nix diff --git a/modules/nixos/ly.nix b/modules/nixos/ly.nix index 860bb9c..a497150 100644 --- a/modules/nixos/ly.nix +++ b/modules/nixos/ly.nix @@ -1,302 +1,94 @@ {...}: { + # a minimal ly config as the big config (ly.nix) didnt worked services.displayManager.ly = { enable = true; settings = { - animation = "gameoflife"; # none or doom or matrix or gameoflife or a dur file - animation_frame_delay = 5; - animation_timeout_sec = 0; - asterisk = "0x2022"; - auth_fails = 2; # numbers of failed authentification before special animation - battery_id = "BAT1"; - bigclock = "en"; - bigclock_12hr = false; - bigclock_seconds = false; - # Blank main box background - # Setting to false will make it transparent - blank_box = false; - - # Border foreground color id - border_fg = "0x00FFFFFF"; - - # Title to show at the top of the main box - # If set to null, none will be shown - box_title = null; - - # Brightness decrease command - brightness_down_cmd = "$PREFIX_DIRECTORY/bin/brightnessctl -q -n s 10%-"; - - # Brightness decrease key combination, or null to disable - brightness_down_key = "F5"; - - # Brightness increase command - brightness_up_cmd = "$PREFIX_DIRECTORY/bin/brightnessctl -q -n s +10%"; - - # Brightness increase key combination, or null to disable - brightness_up_key = "F6"; - - # Erase password input on failure + # Core animation + animation = "none"; # none or doom or matrix or gameoflife or a dur file + # Ly supports 24-bit true color with styling, which means each color is a 32-bit value. + # The format is 0xSSRRGGBB, where SS is the styling, RR is red, GG is green, and BB is blue. + # Here are the possible styling options: + # TB_BOLD 0x01000000 + # TB_UNDERLINE 0x02000000 + # TB_REVERSE 0x04000000 + # TB_ITALIC 0x08000000 + # TB_BLINK 0x10000000 + # TB_HI_BLACK 0x20000000 + # TB_BRIGHT 0x40000000 + # TB_DIM 0x80000000 + # Programmatically, you'd apply them using the bitwise OR operator (|), but because Ly's + # configuration doesn't support using it, you have to manually compute the color value. + # Note that, if you want to use the default color value of the terminal, you can use the + # special value 0x00000000. This means that, if you want to use black, you *must* use + # the styling option TB_HI_BLACK (the RGB values are ignored when using this option). + # Basic TUI settings clear_password = true; - - # Format string for clock in top right corner (see strftime specification). Example: %c - # If null, the clock won't be shown - clock = true; - - # CMatrix animation foreground color id - cmatrix_fg = "0x0000FF00"; - - # CMatrix animation character string head color id - cmatrix_head_col = "0x01FFFFFF"; - - # CMatrix animation minimum codepoint. It uses a 16-bit integer - # For Japanese characters for example, you can use 0x3000 here - cmatrix_min_codepoint = "0x21"; - - # CMatrix animation maximum codepoint. It uses a 16-bit integer - # For Japanese characters for example, you can use 0x30FF here - cmatrix_max_codepoint = "0x7B"; - - # Color mixing animation first color id - colormix_col1 = "0x00FF0000"; - - # Color mixing animation second color id - colormix_col2 = "0x000000FF"; - - # Color mixing animation third color id - colormix_col3 = "0x20000000"; - - # Custom sessions directory - # You can specify multiple directories, - # e.g. $CONFIG_DIRECTORY/ly/custom-sessions:$PREFIX_DIRECTORY/share/custom-sessions - custom_sessions = "$CONFIG_DIRECTORY/ly/custom-sessions"; - - # Input box active by default on startup - # Available inputs: info_line, session, login, password default_input = "password"; - - # DOOM animation fire height (1 thru 9) - doom_fire_height = 6; - - # DOOM animation fire spread (0 thru 4) - doom_fire_spread = 2; - - # DOOM animation custom top color (low intensity flames) - doom_top_color = "0x009F2707"; - - # DOOM animation custom middle color (medium intensity flames) - doom_middle_color = "0x00C78F17"; - - # DOOM animation custom bottom color (high intensity flames) - doom_bottom_color = "0x00FFFFFF"; - - # Dur file path - dur_file_path = "$CONFIG_DIRECTORY/ly/example.dur"; - - # Dur file alignment - # The dur file can be aligned with a direction and centered easily with the flags below - # Available inputs: topleft, topcenter, topright, centerleft, center, centerright, bottomleft, bottomcenter, bottomright - dur_offset_alignment = "center"; - - # Dur offset x direction (value is added to the current position determined by alignment, negatives are supported) - dur_x_offset = 0; - - # Dur offset y direction (value is added to the current position determined by alignment, negatives are supported) - dur_y_offset = 0; - - # Set margin to the edges of the DM (useful for curved monitors) - edge_margin = 0; - - # Error background color id - error_bg = "0x00000000"; - - # Error foreground color id - # Default is red and bold - error_fg = "0x01FF0000"; - - # Foreground color id - fg = "0x00FFFFFF"; - - # Render true colors (if supported) - # If false, output will be in eight-color mode - # All eight-color mode color codes: - # TB_DEFAULT 0x0000 - # TB_BLACK 0x0001 - # TB_RED 0x0002 - # TB_GREEN 0x0003 - # TB_YELLOW 0x0004 - # TB_BLUE 0x0005 - # TB_MAGENTA 0x0006 - # TB_CYAN 0x0007 - # TB_WHITE 0x0008 - # If full color is off, the styling options still work. The colors are - # always 32-bit values with the styling in the most significant byte. - # Note: If using the dur_file animation option and the dur file's color range - # is saved as 256 with this option disabled, the file will not be drawn. + fg = "0x01cd6400"; full_color = true; - - # Game of Life entropy interval (0 = disabled, >0 = add entropy every N generations) - # 0 -> Pure Conway's Game of Life (will eventually stabilize) - # 10 -> Add entropy every 10 generations (recommended for continuous activity) - # 50+ -> Less frequent entropy for more natural evolution - gameoflife_entropy_interval = 10; - - # Game of Life animation foreground color id - gameoflife_fg = "0x0000FF00"; - - # Game of Life frame delay (lower = faster animation, higher = slower) - # 1-3 -> Very fast animation - # 6 -> Default smooth animation speed - # 10+ -> Slower, more contemplative speed - gameoflife_frame_delay = 3; - - # Game of Life initial cell density (0.0 to 1.0) - # 0.1 -> Sparse, minimal activity - # 0.4 -> Balanced activity (recommended) - # 0.7+ -> Dense, chaotic patterns - gameoflife_initial_density = 0.666; - - # Command executed when pressing hibernate key (can be null) - hibernate_cmd = null; - - # Specifies the key combination used for hibernate - hibernate_key = "F4"; - - # Remove main box borders hide_borders = false; - - # Remove power management command hints hide_key_hints = false; - - # Remove keyboard lock states from the top right corner - hide_keyboard_locks = false; - - # Remove version number from the top left corner + hide_keyboard_locks = true; hide_version_string = false; - - # Command executed when no input is detected for a certain time - # If null, no command will be executed - inactivity_cmd = null; - - # Executes a command after a certain amount of seconds - inactivity_delay = 0; - - # Initial text to show on the info line - # If set to null, the info line defaults to the hostname - initial_info_text = null; - - # Input boxes length input_len = 34; - - # Active language - # Available languages are found in $CONFIG_DIRECTORY/ly/lang/ lang = "en"; - - # Command executed when logging in - # If null, no command will be executed - # Important: the code itself must end with `exec "$@"` in order to launch the session! - # You can also set environment variables in there, they'll persist until logout - login_cmd = null; - - # Path for login.defs file (used for listing all local users on the system on - # Linux) - #login_defs_path = /etc/login.defs - - # Command executed when logging out - # If null, no command will be executed - # Important: the session will already be terminated when this command is executed, so - # no need to add `exec "$@"` at the end - logout_cmd = null; - - # General log file path - #ly_log = /var/log/ly.log - - # Main box horizontal margin - margin_box_h = 2; - - # Main box vertical margin - margin_box_v = 1; - - # Set numlock on/off at startup numlock = false; - - # Default path - # If null, ly doesn't set a path - #path = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" - - # Command executed when pressing restart_key - #restart_cmd = "/sbin/shutdown -r now" - - # Specifies the key combination used for restart - restart_key = "F2"; - - # Save the current desktop and login as defaults, and load them on startup save = true; - - # Service name (set to ly to use the provided pam config file) service_name = "ly"; - # Session log file path - # This will contain stdout and stderr of Wayland sessions - # By default it's saved in the user's home directory - # Important: due to technical limitations, X11, shell sessions as well as - # launching session via KMSCON aren't supported, which means you won't get any - # logs from those sessions. - # If null, no session log will be created - session_log = null; + bigclock = "en"; + clock = "%H:%M"; - # Setup command - setup_cmd = "$CONFIG_DIRECTORY/ly/setup.sh"; + colormix_col1 = "0x08E85D04"; + colormix_col2 = "0x08FABD2F"; + colormix_col3 = "0x08FE8019"; - # Command executed when pressing shutdown_key - shutdown_cmd = "/sbin/shutdown $PLATFORM_SHUTDOWN_ARG now"; + # Box appearance + #border_fg = "0x00FFFFFF"; + blank_box = true; + box_title = "tomasr@nixos"; + #margin_box_h = 2; + #margin_box_v = 1; + #text_in_center = false; - # Specifies the key combination used for shutdown - shutdown_key = "F1"; + # Animation: Conway’s Game of Life (optional, comment out for minimal setup) + gameoflife_fg = "0x40FFFFFF"; - # Command executed when pressing sleep key (can be null) + gameoflife_frame_delay = 3; + gameoflife_entropy_interval = 10; + gameoflife_initial_density = 0.666; + + # Optional commands (leave null or comment if unused) + hibernate_cmd = null; + inactivity_cmd = null; + login_cmd = "start-hyprland"; + #logout_cmd = null; sleep_cmd = null; - # Specifies the key combination used for sleep + # System commands keys + shutdown_cmd = "/sbin/shutdown $PLATFORM_SHUTDOWN_ARG now"; + shutdown_key = "F1"; + restart_key = "F2"; sleep_key = "F3"; + hibernate_key = "F4"; - # Command executed when starting Ly (before the TTY is taken control of) - # See file at path below for an example of changing the default TTY colors - start_cmd = "$CONFIG_DIRECTORY/ly/startup.sh"; + # top bar + session_log = null; + initial_info_text = null; # + # Custom sessions + #custom_sessions = "$CONFIG_DIRECTORY/ly/custom-sessions"; + #waylandsessions = "$PREFIX_DIRECTORY/share/wayland-sessions"; + #xsessions = "$PREFIX_DIRECTORY/share/xsessions"; - # Center the session name. - text_in_center = false; + # Xorg settings (only needed if using X) + #x_cmd = "$PREFIX_DIRECTORY/bin/X"; + #x_vt = null; + #xauth_cmd = "$PREFIX_DIRECTORY/bin/xauth"; + #xinitrc = "~/.xinitrc"; - # Default vi mode - # normal -> normal mode - # insert -> insert mode - vi_default_mode = "normal"; - - # Enable vi keybindings - vi_mode = false; - - # Wayland desktop environments - # You can specify multiple directories, - # e.g. $PREFIX_DIRECTORY/share/wayland-sessions:$PREFIX_DIRECTORY/local/share/wayland-sessions - waylandsessions = "$PREFIX_DIRECTORY/share/wayland-sessions"; - - # Xorg server command - x_cmd = "$PREFIX_DIRECTORY/bin/X"; - - # Xorg virtual terminal number - # Mostly useful for FreeBSD where choosing the current TTY causes issues - # If null, the current TTY will be chosen - x_vt = null; - - # Xorg xauthority edition tool - xauth_cmd = "$PREFIX_DIRECTORY/bin/xauth"; - - # xinitrc - # If null, the xinitrc session will be hidden - xinitrc = "~/.xinitrc"; - - # Xorg desktop environments - # You can specify multiple directories, - # e.g. $PREFIX_DIRECTORY/share/xsessions:$PREFIX_DIRECTORY/local/share/xsessions - xsessions = "$PREFIX_DIRECTORY/share/xsessions"; + # Setup / startup scripts + #setup_cmd = "$CONFIG_DIRECTORY/ly/setup.sh"; + #start_cmd = "$CONFIG_DIRECTORY/ly/startup.sh"; }; }; } diff --git a/modules/nixos/lyminimal.nix b/modules/nixos/lyminimal.nix deleted file mode 100644 index a497150..0000000 --- a/modules/nixos/lyminimal.nix +++ /dev/null @@ -1,94 +0,0 @@ -{...}: { - # a minimal ly config as the big config (ly.nix) didnt worked - services.displayManager.ly = { - enable = true; - settings = { - # Core animation - animation = "none"; # none or doom or matrix or gameoflife or a dur file - # Ly supports 24-bit true color with styling, which means each color is a 32-bit value. - # The format is 0xSSRRGGBB, where SS is the styling, RR is red, GG is green, and BB is blue. - # Here are the possible styling options: - # TB_BOLD 0x01000000 - # TB_UNDERLINE 0x02000000 - # TB_REVERSE 0x04000000 - # TB_ITALIC 0x08000000 - # TB_BLINK 0x10000000 - # TB_HI_BLACK 0x20000000 - # TB_BRIGHT 0x40000000 - # TB_DIM 0x80000000 - # Programmatically, you'd apply them using the bitwise OR operator (|), but because Ly's - # configuration doesn't support using it, you have to manually compute the color value. - # Note that, if you want to use the default color value of the terminal, you can use the - # special value 0x00000000. This means that, if you want to use black, you *must* use - # the styling option TB_HI_BLACK (the RGB values are ignored when using this option). - # Basic TUI settings - clear_password = true; - default_input = "password"; - fg = "0x01cd6400"; - full_color = true; - hide_borders = false; - hide_key_hints = false; - hide_keyboard_locks = true; - hide_version_string = false; - input_len = 34; - lang = "en"; - numlock = false; - save = true; - service_name = "ly"; - - bigclock = "en"; - clock = "%H:%M"; - - colormix_col1 = "0x08E85D04"; - colormix_col2 = "0x08FABD2F"; - colormix_col3 = "0x08FE8019"; - - # Box appearance - #border_fg = "0x00FFFFFF"; - blank_box = true; - box_title = "tomasr@nixos"; - #margin_box_h = 2; - #margin_box_v = 1; - #text_in_center = false; - - # Animation: Conway’s Game of Life (optional, comment out for minimal setup) - gameoflife_fg = "0x40FFFFFF"; - - gameoflife_frame_delay = 3; - gameoflife_entropy_interval = 10; - gameoflife_initial_density = 0.666; - - # Optional commands (leave null or comment if unused) - hibernate_cmd = null; - inactivity_cmd = null; - login_cmd = "start-hyprland"; - #logout_cmd = null; - sleep_cmd = null; - - # System commands keys - shutdown_cmd = "/sbin/shutdown $PLATFORM_SHUTDOWN_ARG now"; - shutdown_key = "F1"; - restart_key = "F2"; - sleep_key = "F3"; - hibernate_key = "F4"; - - # top bar - session_log = null; - initial_info_text = null; # - # Custom sessions - #custom_sessions = "$CONFIG_DIRECTORY/ly/custom-sessions"; - #waylandsessions = "$PREFIX_DIRECTORY/share/wayland-sessions"; - #xsessions = "$PREFIX_DIRECTORY/share/xsessions"; - - # Xorg settings (only needed if using X) - #x_cmd = "$PREFIX_DIRECTORY/bin/X"; - #x_vt = null; - #xauth_cmd = "$PREFIX_DIRECTORY/bin/xauth"; - #xinitrc = "~/.xinitrc"; - - # Setup / startup scripts - #setup_cmd = "$CONFIG_DIRECTORY/ly/setup.sh"; - #start_cmd = "$CONFIG_DIRECTORY/ly/startup.sh"; - }; - }; -} diff --git a/modules/nixos/nixUtils.nix b/modules/nixos/nixUtils.nix new file mode 100644 index 0000000..a6e263d --- /dev/null +++ b/modules/nixos/nixUtils.nix @@ -0,0 +1,18 @@ +{ + config, + pkgs, + pkgs-unstable, + libs, + inputs, + ... +}: { +# Garbage collector of generations + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; # every week delete generations older than a month + }; + # nixpkgs-review crashed my laptop multiple times. + nix.settings.max-jobs = 2; + nix.settings.cores = 2; +} diff --git a/modules/packages/sbb-tui.nix b/modules/packages/sbb-tui.nix new file mode 100644 index 0000000..3fccbbd --- /dev/null +++ b/modules/packages/sbb-tui.nix @@ -0,0 +1,42 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + nix-update-script, + versionCheckHook +}: + +buildGoModule (finalAttrs: { + pname = "sbb-tui"; + version = "1.13.4"; + __structuredAttrs = true; + src = fetchFromGitHub { + owner = "Necrom4"; + repo = "sbb-tui"; + tag = "v${finalAttrs.version}"; + hash = "sha256-JLjAhs5UbqgNYqpA3cDucrAS6ell+0JiDJNf7G33Nhs="; + }; + + vendorHash = "sha256-K4DOu3rfSlKAa5JNKCzWWpnWZlXXxtN5Po7p1Spqe1w="; + + ldflags = [ + "-s" + "-w" + "-X main.version=${finalAttrs.version}" + ]; + + doCheck = true; + + nativeCheckInputs = [ versionCheckHook ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "TUI client for Switzerland's public transport timetables, inspired by SBB/CFF/FFS app"; + homepage = "https://github.com/Necrom4/sbb-tui"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ tomasrivera ]; + mainProgram = "sbb-tui"; + }; +}) diff --git a/modules/qt/README.md b/modules/qt/README.md new file mode 100644 index 0000000..48a8205 --- /dev/null +++ b/modules/qt/README.md @@ -0,0 +1,3 @@ +Used for custom qt modules. + +Previously, `qtbatticon`. (Moved to `../../hostsModules/laptop/qt/qtbatticon`)