Compare commits

..

No commits in common. "d558c9a91e7b185321f9bf6f0943445ec5775795" and "e83212dfec7d095886e461a61c24c8bffb4d6e5c" have entirely different histories.

19 changed files with 321 additions and 171 deletions

View file

@ -760,15 +760,15 @@
"org-krita": { "org-krita": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1713037764, "lastModified": 1619935377,
"narHash": "sha256-EHJwe3G/k5/UWFfY+vEkCdKvKNCK7Oh3fFKgMUa87lw=", "narHash": "sha256-+HI8P0/LI8gdiCD7OiPKTAtLKrPt0REnQ+6oblHSHzU=",
"owner": "librephoenix", "owner": "lepisma",
"repo": "org-krita", "repo": "org-krita",
"rev": "6b85cf06f17dfcf9daeb6e045caea6df882bc4ff", "rev": "7e334951b8de8f2f1c8cbe5068e7dfe6b9e9808f",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "librephoenix", "owner": "lepisma",
"repo": "org-krita", "repo": "org-krita",
"type": "github" "type": "github"
} }
@ -805,22 +805,6 @@
"type": "github" "type": "github"
} }
}, },
"org-sliced-images": {
"flake": false,
"locked": {
"lastModified": 1711408181,
"narHash": "sha256-ck3mGXtJJ0N8asGE4cRtWeJx5/iC+bTXw2cvZgePJqM=",
"owner": "jcfk",
"repo": "org-sliced-images",
"rev": "bd1141d6df6edfd9749c0bbf3a72836148c0e39d",
"type": "github"
},
"original": {
"owner": "jcfk",
"repo": "org-sliced-images",
"type": "github"
}
},
"org-timeblock": { "org-timeblock": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -934,7 +918,6 @@
"org-krita": "org-krita", "org-krita": "org-krita",
"org-nursery": "org-nursery", "org-nursery": "org-nursery",
"org-side-tree": "org-side-tree", "org-side-tree": "org-side-tree",
"org-sliced-images": "org-sliced-images",
"org-timeblock": "org-timeblock", "org-timeblock": "org-timeblock",
"org-yaap": "org-yaap", "org-yaap": "org-yaap",
"phscroll": "phscroll", "phscroll": "phscroll",

View file

@ -1,7 +1,10 @@
{ {
description = "Flake of LibrePhoenix"; description = "Flake of LibrePhoenix";
outputs = inputs@{ self, ... }: outputs = inputs@{ self, nixpkgs, nixpkgs-stable, emacs-pin-nixpkgs, kdenlive-pin-nixpkgs,
home-manager-unstable, home-manager-stable, nix-doom-emacs,
nix-straight, stylix, blocklist-hosts, rust-overlay, org-nursery, org-yaap,
org-side-tree, org-timeblock, org-krita, phscroll, mini-frame, ... }:
let let
# ---- SYSTEM SETTINGS ---- # # ---- SYSTEM SETTINGS ---- #
systemSettings = { systemSettings = {
@ -48,9 +51,9 @@
# create patched nixpkgs # create patched nixpkgs
nixpkgs-patched = nixpkgs-patched =
(import inputs.nixpkgs { system = systemSettings.system; }).applyPatches { (import nixpkgs { system = systemSettings.system; }).applyPatches {
name = "nixpkgs-patched"; name = "nixpkgs-patched";
src = inputs.nixpkgs; src = nixpkgs;
patches = [ ./patches/emacs-no-version-check.patch ]; patches = [ ./patches/emacs-no-version-check.patch ];
}; };
@ -67,10 +70,10 @@
allowUnfree = true; allowUnfree = true;
allowUnfreePredicate = (_: true); allowUnfreePredicate = (_: true);
}; };
overlays = [ inputs.rust-overlay.overlays.default ]; overlays = [ rust-overlay.overlays.default ];
})); }));
pkgs-stable = import inputs.nixpkgs-stable { pkgs-stable = import nixpkgs-stable {
system = systemSettings.system; system = systemSettings.system;
config = { config = {
allowUnfree = true; allowUnfree = true;
@ -78,11 +81,11 @@
}; };
}; };
pkgs-emacs = import inputs.emacs-pin-nixpkgs { pkgs-emacs = import emacs-pin-nixpkgs {
system = systemSettings.system; system = systemSettings.system;
}; };
pkgs-kdenlive = import inputs.kdenlive-pin-nixpkgs { pkgs-kdenlive = import kdenlive-pin-nixpkgs {
system = systemSettings.system; system = systemSettings.system;
}; };
@ -91,17 +94,17 @@
# otherwise use patched nixos-unstable nixpkgs # otherwise use patched nixos-unstable nixpkgs
lib = (if ((systemSettings.profile == "homelab") || (systemSettings.profile == "worklab")) lib = (if ((systemSettings.profile == "homelab") || (systemSettings.profile == "worklab"))
then then
inputs.nixpkgs-stable.lib nixpkgs-stable.lib
else else
inputs.nixpkgs.lib); nixpkgs.lib);
# use home-manager-stable if running a server (homelab or worklab profile) # use home-manager-stable if running a server (homelab or worklab profile)
# otherwise use home-manager-unstable # otherwise use home-manager-unstable
home-manager = (if ((systemSettings.profile == "homelab") || (systemSettings.profile == "worklab")) home-manager = (if ((systemSettings.profile == "homelab") || (systemSettings.profile == "worklab"))
then then
inputs.home-manager-stable home-manager-stable
else else
inputs.home-manager-unstable); home-manager-unstable);
# Systems that can run tests: # Systems that can run tests:
supportedSystems = [ "aarch64-linux" "i686-linux" "x86_64-linux" ]; supportedSystems = [ "aarch64-linux" "i686-linux" "x86_64-linux" ];
@ -120,6 +123,7 @@
modules = [ modules = [
(./. + "/profiles" + ("/" + systemSettings.profile) (./. + "/profiles" + ("/" + systemSettings.profile)
+ "/home.nix") # load home.nix from selected PROFILE + "/home.nix") # load home.nix from selected PROFILE
# inputs.nix-flatpak.homeManagerModules.nix-flatpak # Declarative flatpaks
]; ];
extraSpecialArgs = { extraSpecialArgs = {
# pass config variables from above # pass config variables from above
@ -128,7 +132,16 @@
inherit pkgs-kdenlive; inherit pkgs-kdenlive;
inherit systemSettings; inherit systemSettings;
inherit userSettings; inherit userSettings;
inherit inputs; inherit (inputs) nix-doom-emacs;
inherit (inputs) org-nursery;
inherit (inputs) org-yaap;
inherit (inputs) org-side-tree;
inherit (inputs) org-timeblock;
inherit (inputs) org-krita;
inherit (inputs) phscroll;
inherit (inputs) mini-frame;
#inherit (inputs) nix-flatpak;
inherit (inputs) stylix;
}; };
}; };
}; };
@ -144,7 +157,8 @@
inherit pkgs-stable; inherit pkgs-stable;
inherit systemSettings; inherit systemSettings;
inherit userSettings; inherit userSettings;
inherit inputs; inherit (inputs) stylix;
inherit (inputs) blocklist-hosts;
}; };
}; };
}; };
@ -215,11 +229,7 @@
flake = false; flake = false;
}; };
org-krita = { org-krita = {
url = "github:librephoenix/org-krita"; url = "github:lepisma/org-krita";
flake = false;
};
org-sliced-images = {
url = "github:jcfk/org-sliced-images";
flake = false; flake = false;
}; };
phscroll = { phscroll = {

View file

@ -1,4 +1,4 @@
{ config, pkgs, pkgs-kdenlive, userSettings, ... }: { config, pkgs, pkgs-kdenlive, nix-doom-emacs, stylix, userSettings, ... }:
{ {
# Home Manager needs a bit of information about you and the paths it should # Home Manager needs a bit of information about you and the paths it should
@ -9,6 +9,8 @@
programs.home-manager.enable = true; programs.home-manager.enable = true;
imports = [ imports = [
(if ((userSettings.editor == "emacs") || (userSettings.editor == "emacsclient")) then nix-doom-emacs.hmModule else null)
stylix.homeManagerModules.stylix
(./. + "../../../user/wm"+("/"+userSettings.wm+"/"+userSettings.wm)+".nix") # My window manager selected from flake (./. + "../../../user/wm"+("/"+userSettings.wm+"/"+userSettings.wm)+".nix") # My window manager selected from flake
../../user/shell/sh.nix # My zsh and bash config ../../user/shell/sh.nix # My zsh and bash config
../../user/shell/cli-collection.nix # Useful CLI apps ../../user/shell/cli-collection.nix # Useful CLI apps
@ -97,7 +99,6 @@
blender-hip blender-hip
cura cura
curaengine_stable curaengine_stable
openscad
(stdenv.mkDerivation { (stdenv.mkDerivation {
name = "cura-slicer"; name = "cura-slicer";
version = "0.0.7"; version = "0.0.7";
@ -140,7 +141,6 @@
texinfo texinfo
libffi zlib libffi zlib
nodePackages.ungit nodePackages.ungit
ventoy
]) ++ ([ pkgs-kdenlive.kdenlive ]); ]) ++ ([ pkgs-kdenlive.kdenlive ]);
services.syncthing.enable = true; services.syncthing.enable = true;

View file

@ -1,4 +1,4 @@
{ config, pkgs, userSettings, ... }: { config, pkgs, nix-doom-emacs, stylix, userSettings, ... }:
{ {
# Home Manager needs a bit of information about you and the paths it should # Home Manager needs a bit of information about you and the paths it should
@ -9,6 +9,8 @@
programs.home-manager.enable = true; programs.home-manager.enable = true;
imports = [ imports = [
(if ((userSettings.editor == "emacs") || (userSettings.editor == "emacsclient")) then nix-doom-emacs.hmModule else null)
stylix.homeManagerModules.stylix
../../user/shell/sh.nix # My zsh and bash config ../../user/shell/sh.nix # My zsh and bash config
../../user/shell/cli-collection.nix # Useful CLI apps ../../user/shell/cli-collection.nix # Useful CLI apps
../../user/app/doom-emacs/doom.nix # My doom emacs config ../../user/app/doom-emacs/doom.nix # My doom emacs config

View file

@ -1,6 +1,6 @@
{ inputs, ... }: { blocklist-hosts, ... }:
let blocklist = builtins.readFile "${inputs.blocklist-hosts}/alternates/gambling-porn/hosts"; let blocklist = builtins.readFile "${blocklist-hosts}/alternates/gambling-porn/hosts";
in in
{ {
networking.extraHosts = '' networking.extraHosts = ''

View file

@ -1,4 +1,4 @@
{ lib, pkgs, inputs, userSettings, ... }: { lib, pkgs, stylix, userSettings, ... }:
let let
themePath = "../../../themes/"+userSettings.theme+"/"+userSettings.theme+".yaml"; themePath = "../../../themes/"+userSettings.theme+"/"+userSettings.theme+".yaml";
@ -8,7 +8,7 @@ let
backgroundSha256 = builtins.readFile (./. + "../../../themes/"+("/"+userSettings.theme)+"/backgroundsha256.txt"); backgroundSha256 = builtins.readFile (./. + "../../../themes/"+("/"+userSettings.theme)+"/backgroundsha256.txt");
in in
{ {
imports = [ inputs.stylix.nixosModules.stylix ]; imports = [ stylix.nixosModules.stylix ];
stylix.autoEnable = false; stylix.autoEnable = false;
stylix.polarity = themePolarity; stylix.polarity = themePolarity;

View file

@ -272,7 +272,7 @@
org-pretty-entities t org-pretty-entities t
org-ellipsis "") org-ellipsis "")
(setq-default line-spacing 0) (setq-default line-spacing 0.15)
; Automatic table of contents is nice ; Automatic table of contents is nice
(if (require 'toc-org nil t) (if (require 'toc-org nil t)
@ -437,8 +437,26 @@ same directory as the org-buffer and insert a link to this file."
(add-load-path! "~/.emacs.d/org-krita") (add-load-path! "~/.emacs.d/org-krita")
(require 'org-krita) (require 'org-krita)
(add-hook 'org-mode-hook 'org-krita-mode) (add-hook 'org-mode-hook 'org-krita-mode)
(setq org-krita-extract-filename "preview.png")
(setq org-krita-scale 1) (defun org-krita-show-link (link)
(org-krita-hide-link link)
(let* ((start (org-element-property :begin link))
(end (org-element-property :end link))
(overlay (make-overlay (+ start 0) (+ end 0)))
(kra-path (org-element-property :path link)))
(overlay-put overlay 'display (create-image (org-krita-extract-png kra-path) 'png t :scale 0.5))
(push (cons kra-path overlay) org-krita-overlays)))
(defun org-krita-edit (path &optional full-mode)
"Edit given PATH in krita canvasonly mode.
If FULL-MODE is not null, run full krita."
(let ((kra-path (expand-file-name path)))
(when (f-exists-p kra-path)
(if full-mode
(call-process org-krita-executable nil 0 nil kra-path)
(call-process org-krita-executable nil 0 nil kra-path))
(org-krita-add-watcher kra-path))))
(defun org-copy-link-to-clipboard-at-point () (defun org-copy-link-to-clipboard-at-point ()
"Copy current link at point into clipboard (useful for images and links)" "Copy current link at point into clipboard (useful for images and links)"
@ -464,12 +482,6 @@ same directory as the org-buffer and insert a link to this file."
:desc "Copy link/file at point into system clipbord (C-g to escape if copying a file)" :desc "Copy link/file at point into system clipbord (C-g to escape if copying a file)"
"y y" 'org-copy-link-to-clipboard-at-point)) "y y" 'org-copy-link-to-clipboard-at-point))
(add-load-path! "~/.emacs.d/org-sliced-images")
(require 'org-sliced-images)
(defalias 'org-remove-inline-images #'org-sliced-images-remove-inline-images)
(defalias 'org-toggle-inline-images #'org-sliced-images-toggle-inline-images)
(defalias 'org-display-inline-images #'org-sliced-images-display-inline-images)
;; Online images inside of org mode is pretty cool ;; Online images inside of org mode is pretty cool
;; This snippit is from Tobias on Stack Exchange ;; This snippit is from Tobias on Stack Exchange
;; https://emacs.stackexchange.com/questions/42281/org-mode-is-it-possible-to-display-online-images ;; https://emacs.stackexchange.com/questions/42281/org-mode-is-it-possible-to-display-online-images

View file

@ -1,11 +1,11 @@
{ config, lib, pkgs-emacs, pkgs-stable, inputs, userSettings, systemSettings, ... }: { config, lib, pkgs-emacs, pkgs-stable, userSettings, systemSettings,
org-nursery, org-yaap, org-side-tree, org-timeblock, org-krita, phscroll, mini-frame, ... }:
let let
themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../../themes"+("/"+userSettings.theme)+"/polarity.txt")); themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../../themes"+("/"+userSettings.theme)+"/polarity.txt"));
dashboardLogo = ./. + "/nix-" + themePolarity + ".png"; dashboardLogo = ./. + "/nix-" + themePolarity + ".png";
in in
{ {
imports = [ imports = [
inputs.nix-doom-emacs.hmModule
../git/git.nix ../git/git.nix
../../shell/sh.nix ../../shell/sh.nix
../../shell/cli-collection.nix ../../shell/cli-collection.nix
@ -79,30 +79,26 @@ in
}; };
home.file.".emacs.d/org-yaap" = { home.file.".emacs.d/org-yaap" = {
source = "${inputs.org-yaap}"; source = "${org-yaap}";
recursive = true; recursive = true;
}; };
home.file.".emacs.d/org-side-tree" = { home.file.".emacs.d/org-side-tree" = {
source = "${inputs.org-side-tree}"; source = "${org-side-tree}";
recursive = true; recursive = true;
}; };
home.file.".emacs.d/org-timeblock" = { home.file.".emacs.d/org-timeblock" = {
source = "${inputs.org-timeblock}"; source = "${org-timeblock}";
recursive = true; recursive = true;
}; };
home.file.".emacs.d/org-nursery" = { home.file.".emacs.d/org-nursery" = {
source = "${inputs.org-nursery}"; source = "${org-nursery}";
}; };
home.file.".emacs.d/org-krita" = { home.file.".emacs.d/org-krita" = {
source = "${inputs.org-krita}"; source = "${org-krita}";
};
home.file.".emacs.d/org-sliced-images" = {
source = "${inputs.org-sliced-images}";
}; };
home.file.".emacs.d/dashboard-logo.png".source = dashboardLogo; home.file.".emacs.d/dashboard-logo.png".source = dashboardLogo;
@ -112,11 +108,11 @@ in
}; };
home.file.".emacs.d/phscroll" = { home.file.".emacs.d/phscroll" = {
source = "${inputs.phscroll}"; source = "${phscroll}";
}; };
home.file.".emacs.d/mini-frame" = { home.file.".emacs.d/mini-frame" = {
source = "${inputs.mini-frame}"; source = "${mini-frame}";
}; };
home.file.".emacs.d/system-vars.el".text = '' home.file.".emacs.d/system-vars.el".text = ''

View file

@ -342,7 +342,7 @@ Doom Emacs is traditionally installed by cloning the repository ([[https://githu
org-pretty-entities t org-pretty-entities t
org-ellipsis "…") org-ellipsis "…")
(setq-default line-spacing 0) (setq-default line-spacing 0.15)
; Automatic table of contents is nice ; Automatic table of contents is nice
(if (require 'toc-org nil t) (if (require 'toc-org nil t)
@ -514,8 +514,26 @@ same directory as the org-buffer and insert a link to this file."
(add-load-path! "~/.emacs.d/org-krita") (add-load-path! "~/.emacs.d/org-krita")
(require 'org-krita) (require 'org-krita)
(add-hook 'org-mode-hook 'org-krita-mode) (add-hook 'org-mode-hook 'org-krita-mode)
(setq org-krita-extract-filename "preview.png")
(setq org-krita-scale 1) (defun org-krita-show-link (link)
(org-krita-hide-link link)
(let* ((start (org-element-property :begin link))
(end (org-element-property :end link))
(overlay (make-overlay (+ start 0) (+ end 0)))
(kra-path (org-element-property :path link)))
(overlay-put overlay 'display (create-image (org-krita-extract-png kra-path) 'png t :scale 0.5))
(push (cons kra-path overlay) org-krita-overlays)))
(defun org-krita-edit (path &optional full-mode)
"Edit given PATH in krita canvasonly mode.
If FULL-MODE is not null, run full krita."
(let ((kra-path (expand-file-name path)))
(when (f-exists-p kra-path)
(if full-mode
(call-process org-krita-executable nil 0 nil kra-path)
(call-process org-krita-executable nil 0 nil kra-path))
(org-krita-add-watcher kra-path))))
#+END_SRC #+END_SRC
*** Copy Links/Files into Clipboard *** Copy Links/Files into Clipboard
@ -569,14 +587,6 @@ else
fi fi
exit exit
#+END_SRC #+END_SRC
*** Org Sliced Images
#+begin_src emacs-lisp :tangle config.el
(add-load-path! "~/.emacs.d/org-sliced-images")
(require 'org-sliced-images)
(defalias 'org-remove-inline-images #'org-sliced-images-remove-inline-images)
(defalias 'org-toggle-inline-images #'org-sliced-images-toggle-inline-images)
(defalias 'org-display-inline-images #'org-sliced-images-display-inline-images)
#+end_src
*** Org Online Images *** Org Online Images
#+BEGIN_SRC emacs-lisp :tangle config.el #+BEGIN_SRC emacs-lisp :tangle config.el
;; Online images inside of org mode is pretty cool ;; Online images inside of org mode is pretty cool
@ -1983,14 +1993,14 @@ Any git package can be configured for a particular commit or branch:
* Nix Integration * Nix Integration
In order to have Nix load my Doom Emacs configuration [[./doom.nix][doom.nix]], which I source in the =imports= block of my [[../../../profiles/work/home.nix][home.nix]]. In order to have Nix load my Doom Emacs configuration [[./doom.nix][doom.nix]], which I source in the =imports= block of my [[../../../profiles/work/home.nix][home.nix]].
#+BEGIN_SRC nix :tangle doom.nix #+BEGIN_SRC nix :tangle doom.nix
{ config, lib, pkgs-emacs, pkgs-stable, inputs, userSettings, systemSettings, ... }: { config, lib, pkgs-emacs, pkgs-stable, userSettings, systemSettings,
org-nursery, org-yaap, org-side-tree, org-timeblock, org-krita, phscroll, mini-frame, ... }:
let let
themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../../themes"+("/"+userSettings.theme)+"/polarity.txt")); themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../../themes"+("/"+userSettings.theme)+"/polarity.txt"));
dashboardLogo = ./. + "/nix-" + themePolarity + ".png"; dashboardLogo = ./. + "/nix-" + themePolarity + ".png";
in in
{ {
imports = [ imports = [
inputs.nix-doom-emacs.hmModule
../git/git.nix ../git/git.nix
../../shell/sh.nix ../../shell/sh.nix
../../shell/cli-collection.nix ../../shell/cli-collection.nix
@ -2064,30 +2074,26 @@ in
}; };
home.file.".emacs.d/org-yaap" = { home.file.".emacs.d/org-yaap" = {
source = "${inputs.org-yaap}"; source = "${org-yaap}";
recursive = true; recursive = true;
}; };
home.file.".emacs.d/org-side-tree" = { home.file.".emacs.d/org-side-tree" = {
source = "${inputs.org-side-tree}"; source = "${org-side-tree}";
recursive = true; recursive = true;
}; };
home.file.".emacs.d/org-timeblock" = { home.file.".emacs.d/org-timeblock" = {
source = "${inputs.org-timeblock}"; source = "${org-timeblock}";
recursive = true; recursive = true;
}; };
home.file.".emacs.d/org-nursery" = { home.file.".emacs.d/org-nursery" = {
source = "${inputs.org-nursery}"; source = "${org-nursery}";
}; };
home.file.".emacs.d/org-krita" = { home.file.".emacs.d/org-krita" = {
source = "${inputs.org-krita}"; source = "${org-krita}";
};
home.file.".emacs.d/org-sliced-images" = {
source = "${inputs.org-sliced-images}";
}; };
home.file.".emacs.d/dashboard-logo.png".source = dashboardLogo; home.file.".emacs.d/dashboard-logo.png".source = dashboardLogo;
@ -2097,11 +2103,11 @@ in
}; };
home.file.".emacs.d/phscroll" = { home.file.".emacs.d/phscroll" = {
source = "${inputs.phscroll}"; source = "${phscroll}";
}; };
home.file.".emacs.d/mini-frame" = { home.file.".emacs.d/mini-frame" = {
source = "${inputs.mini-frame}"; source = "${mini-frame}";
}; };
home.file.".emacs.d/system-vars.el".text = '' home.file.".emacs.d/system-vars.el".text = ''

View file

@ -256,7 +256,7 @@ set cd_tab_fuzzy false
# Avoid previewing files larger than this size, in bytes. Use a value of 0 to # Avoid previewing files larger than this size, in bytes. Use a value of 0 to
# disable this feature. # disable this feature.
set preview_max_size 0 set preview_max_size 200000000
# The key hint lists up to this size have their sublists expanded. # The key hint lists up to this size have their sublists expanded.
# Otherwise the submaps are replaced with "...". # Otherwise the submaps are replaced with "...".

View file

@ -75,18 +75,8 @@ ext nes, has fceux, X = fceux "$1"
#ext exe = wine "$1" #ext exe = wine "$1"
name ^[mM]akefile$ = make name ^[mM]akefile$ = make
#------------------------------------------ #----------- FL STUDIO --------------
# My applications ext flp = flstudio "$@" & &>/dev/null
#------------------------------------------
ext kra, has krita, X, flag f = krita "$@" &>/dev/null
ext kra~, has krita, X, flag f = krita "$@" &>/dev/null
ext blend, has blender, X, flag f = blender "$@" &>/dev/null
ext blend~, has blender, X, flag f = blender "$@" &>/dev/null
ext xopp, has xournalpp, X, flag f = xournalpp "$@" &>/dev/null
ext xopp~, has blender, X, flag f = xournalpp "$@" &>/dev/null
ext helio, has helio, X, flag f = helio "$@" &>/dev/null
ext kdenlive, has kdenlive-accel, X, flag f = kdenlive-accel "$@" &>/dev/null
ext flp, has flstudio, X, flag f = flstudio "$@" &>/dev/null
#-------------------------------------------- #--------------------------------------------
# Scripts # Scripts
@ -222,6 +212,11 @@ label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER"
# they are never triggered accidentally. # # they are never triggered accidentally. #
###################################################################### ######################################################################
# My applications
ext kra = krita "$@" & &>/dev/null
ext blend* = blender "$@" & &>/dev/null
ext helio = helio "$@" & &>/dev/null
ext kdenlive = kdenlive-accel "$@" & &>/dev/null
# Execute a file as program/script. # Execute a file as program/script.
mime application/x-executable = "$1" mime application/x-executable = "$1"

View file

@ -170,29 +170,29 @@ handle_image() {
## as above), but might fail for unsupported types. ## as above), but might fail for unsupported types.
exit 7;; exit 7;;
# Video ## Video
video/*) # video/*)
# Get frame 10% into video # # Get embedded thumbnail
ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6 # ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy "${IMAGE_CACHE_PATH}" && exit 6
# Get embedded thumbnail # # Get frame 10% into video
ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy "${IMAGE_CACHE_PATH}" && exit 6 # ffmpegthumbnailer -i "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" -s 0 && exit 6
exit 1;; # exit 1;;
# Audio ## Audio
audio/*) # audio/*)
# Get embedded thumbnail # # Get embedded thumbnail
ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy \ # ffmpeg -i "${FILE_PATH}" -map 0:v -map -0:V -c copy \
"${IMAGE_CACHE_PATH}" && exit 6;; # "${IMAGE_CACHE_PATH}" && exit 6;;
# PDF ## PDF
application/pdf) # application/pdf)
pdftoppm -f 1 -l 1 \ # pdftoppm -f 1 -l 1 \
-scale-to-x "${DEFAULT_SIZE%x*}" \ # -scale-to-x "${DEFAULT_SIZE%x*}" \
-scale-to-y -1 \ # -scale-to-y -1 \
-singlefile \ # -singlefile \
-jpeg -tiffcompression jpeg \ # -jpeg -tiffcompression jpeg \
-- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \ # -- "${FILE_PATH}" "${IMAGE_CACHE_PATH%.*}" \
&& exit 6 || exit 1;; # && exit 6 || exit 1;;
## ePub, MOBI, FB2 (using Calibre) ## ePub, MOBI, FB2 (using Calibre)
@ -205,7 +205,7 @@ handle_image() {
# >/dev/null && exit 6 # >/dev/null && exit 6
# exit 1;; # exit 1;;
# Font ## Font
application/font*|application/*opentype) application/font*|application/*opentype)
preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png" preview_png="/tmp/$(basename "${IMAGE_CACHE_PATH%.*}").png"
if fontimage -o "${preview_png}" \ if fontimage -o "${preview_png}" \
@ -265,42 +265,29 @@ handle_image() {
# ;; # ;;
esac esac
openscad_image() { # openscad_image() {
TMPPNG="$(mktemp -t XXXXXXXXXX --suffix '.png')" # TMPPNG="$(mktemp -t xxxxxx.png)"
openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \ # openscad --colorscheme="${OPENSCAD_COLORSCHEME}" \
--imgsize="${OPENSCAD_IMGSIZE/x/,}" \ # --imgsize="${OPENSCAD_IMGSIZE/x/,}" \
-o "${TMPPNG}" "${1}" # -o "${TMPPNG}" "${1}"
mv "${TMPPNG}" "${IMAGE_CACHE_PATH}" # mv "${TMPPNG}" "${IMAGE_CACHE_PATH}"
} # }
FULL_FILE_PATH=$(readlink -f $FILE_PATH);
case "${FILE_EXTENSION_LOWER}" in case "${FILE_EXTENSION_LOWER}" in
# 3D models ## 3D models
# OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH} ## OpenSCAD only supports png image output, and ${IMAGE_CACHE_PATH}
# is hardcoded as jpeg. So we make a tempfile.png and just ## is hardcoded as jpeg. So we make a tempfile.png and just
# move/rename it to jpg. This works because image libraries are ## move/rename it to jpg. This works because image libraries are
# smart enough to handle it. ## smart enough to handle it.
csg|scad) # csg|scad)
openscad_image "${FILE_PATH}" && exit 6 # openscad_image "${FILE_PATH}" && exit 6
;; # ;;
stl) # 3mf|amf|dxf|off|stl)
openscad_image <(echo "import(\"${FULL_FILE_PATH}\");") && exit 6 # openscad_image <(echo "import(\"${FILE_PATH}\");") && exit 6
;; # ;;
3mf|amf|dxf|off|stl)
openscad_image <(echo "import(\"${FULL_FILE_PATH}\");") && exit 6
;;
drawio) drawio)
draw.io -x "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" \ draw.io -x "${FILE_PATH}" -o "${IMAGE_CACHE_PATH}" \
--width "${DEFAULT_SIZE%x*}" && exit 6 --width "${DEFAULT_SIZE%x*}" && exit 6
;;
blend|blend~)
blender-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
;;
kra|kra~)
unzip -pP "" -- "${FILE_PATH}" "mergedimage.png" > "${IMAGE_CACHE_PATH}" && exit 6
;;
xopp|xopp~)
xournalpp "${FILE_PATH}" --create-img "${IMAGE_CACHE_PATH}" && exit 6
exit 1;; exit 1;;
esac esac
} }

58
user/pkgs/blockbench.nix Normal file
View file

@ -0,0 +1,58 @@
{ lib, pkgs, ... }:
{
nixpkgs.overlays = [
(self: super:
{
blockbench-electron =
super.blockbench-electron.overrideAttrs (oldAttrs: rec {
pname = "blockbench-electron";
alias = "blockbench";
version = "4.8.1";
src = super.fetchurl {
inherit pname version;
url = "https://github.com/JannisX11/blockbench/releases/download/v${version}/Blockbench_${version}.AppImage";
sha256 = "sha256-CE2wDOt1WBcYmPs4sEyZ3LYvKLequFZH0B3huMYHlwA=";
name = "${pname}-${version}.AppImage";
};
appimageContents = super.appimageTools.extractType2 {
inherit pname version;
name = "${pname}-${version}";
inherit src;
};
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
nativeBuildInputs = [ super.makeWrapper ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/${pname} $out/share/applications
cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
cp -a ${appimageContents}/blockbench.desktop $out/share/applications/${pname}.desktop
cp -a ${appimageContents}/usr/share/icons $out/share
substituteInPlace $out/share/applications/${pname}.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
runHook postInstall
'';
postFixup = ''
makeWrapper ${super.electron_22}/bin/electron $out/bin/${pname} \
--add-flags $out/share/${pname}/resources/app.asar \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ super.stdenv.cc.cc ]}"
makeWrapper ${super.electron_22}/bin/electron $out/bin/${alias} \
--add-flags $out/share/${pname}/resources/app.asar \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ super.stdenv.cc.cc ]}"
'';
});
}
)
];
home.packages = [ pkgs.blockbench-electron ];
}

45
user/pkgs/impressive.nix Normal file
View file

@ -0,0 +1,45 @@
# THIS DOES NOT WORK YET!
{ lib, buildPythonPackage, pkgs, ... }:
let name = "Impressive";
_name = "impressive";
version = "0.13.2";
in
buildPythonPackage rec {
inherit name version;
src = fetchTarball {
url = "https://sourceforge.net/projects/${_name}/files/${name}/${version}/${name}-${version}.tar.gz/download";
sha256 = "sha256:0zbkqc29mgm93mysf3y5gvkaj4xxp1jv4ix1fqrcpfx3cricrkql";
};
phases = "installPhase";
pyproject = false;
doCheck = false;
propagatedBuildInputs = with pkgs; [
python3Packages.pygame
python3Packages.pyopengl
python3Packages.pillow
python3Packages.pygame_sdl2
python3Packages.pygame-gui
ffmpeg
mplayer
xdg-utils
];
installPhase = ''
mkdir -p $out $out/bin $out/opt $out/share $out/share/doc $out/share/man
cp $src/impressive.py $out/opt
chmod +x $out/opt/impressive.py
ln -s $out/opt/impressive.py $out/bin/impressive
'';
meta = {
homepage = "https://impressive.sourceforge.net/";
description = "the Chuck Norris of presentation software";
license = lib.licenses.gpl2Only;
maintainers = [];
};
}

32
user/pkgs/pokefinder.nix Normal file
View file

@ -0,0 +1,32 @@
# THIS DOESN'T WORK YET!!!
# I'M NOT SMART ENOUGH TO FIGURE THIS OUT XD
{ lib, stdenv, fetchgit, pkgs, ... }:
let name = "pokefinder";
version = "4.1.2";
in
stdenv.mkDerivation {
inherit name version;
src = fetchgit {
url = "https://github.com/Admiral-Fish/${name}";
fetchSubmodules = true;
rev = "v${version}";
sha256 = "sha256-ps8F6IcbCNybrZ02tbLNyB3YEvKlcYgCpv5Em7Riv+Q=";
};
buildInputs = with pkgs; [ qt6.full qt6.qttools ];
nativeBuildInputs = with pkgs; [ python3 pkgs.cmake qt6.wrapQtAppsHook ];
cmakeFlags = [
"-DCMAKE_BUILD_TYPE=RELEASE"
"-DCMAKE_PREFIX_PATH=${pkgs.qt6.full}"
];
meta = {
homepage = "https://github.com/Admiral-Fish/PokeFinder";
description = "Cross platform Pokémon RNG tool";
license = lib.licenses.gpl3;
maintainers = [];
};
}

View file

@ -7,7 +7,7 @@
ranger = super.ranger.overrideAttrs (oldAttrs: rec { ranger = super.ranger.overrideAttrs (oldAttrs: rec {
preConfigure = '' preConfigure = ''
substituteInPlace ranger/__init__.py \ substituteInPlace ranger/__init__.py \
--replace "DEFAULT_PAGER = 'less'" "DEFAULT_PAGER = '${lib.getBin pkgs.bat}/bin/bat'" --replace "DEFAULT_PAGER = 'less'" "DEFAULT_PAGER = '${lib.getBin pkgs.less}/bin/less'"
# give image previews out of the box when building with w3m # give image previews out of the box when building with w3m
substituteInPlace ranger/config/rc.conf \ substituteInPlace ranger/config/rc.conf \
@ -28,10 +28,5 @@
} }
) )
]; ];
home.packages = with pkgs; [
poppler_utils
librsvg
ffmpegthumbnailer
];
} }

27
user/pkgs/smartcalc.nix Normal file
View file

@ -0,0 +1,27 @@
{ lib, pkgs, ... }:
let
rustPlatform = pkgs.makeRustPlatform {
cargo = pkgs.rust-bin.stable.latest.minimal;
rustc = pkgs.rust-bin.stable.latest.minimal;
};
in
rustPlatform.buildRustPackage rec {
pname = "smartcalc-tui";
version = "1.0.7";
src = fetchTarball {
url = "https://github.com/superhawk610/smartcalc-tui/archive/refs/tags/v1.0.7.tar.gz";
sha256 = "1dv24rsj87avpbrmab0hy3v729fdqh1cfbvl1xsjmfn8y35z4m5m";
};
cargoSha256 = "sha256-0AWsJccfzkUkpB6imibN6iUNDEx3vrX9kEgD98nXURw=";
checkType = "debug";
meta = with lib; {
description = "Terminal UI for erhanbaris/smartcalc";
homepage = "https://github.com/superhawk610/smartcalc-tui";
license = licenses.mit;
maintainers = [];
};
}

View file

@ -1,4 +1,5 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
# Collection of useful CLI apps # Collection of useful CLI apps
home.packages = with pkgs; [ home.packages = with pkgs; [
@ -14,12 +15,16 @@
bat eza fd bottom ripgrep bat eza fd bottom ripgrep
rsync rsync
unzip unzip
tmux
w3m w3m
pandoc pandoc
hwinfo hwinfo
pciutils pciutils
numbat numbat
(pkgs.callPackage ../pkgs/pokemon-colorscripts.nix { }) (pkgs.callPackage ../pkgs/smartcalc.nix { })
#(pkgs.writeShellScriptBin "sc" ''smartcalc'')
#(pkgs.callPackage ../pkgs/pokemon-colorscripts.nix { })
#(pkgs.python3Packages.callPackage ../pkgs/impressive.nix { })
(pkgs.writeShellScriptBin "airplane-mode" '' (pkgs.writeShellScriptBin "airplane-mode" ''
#!/bin/sh #!/bin/sh
connectivity="$(nmcli n connectivity)" connectivity="$(nmcli n connectivity)"

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, inputs, userSettings, ... }: { config, lib, pkgs, userSettings, ... }:
let let
themePath = "../../../themes"+("/"+userSettings.theme+"/"+userSettings.theme)+".yaml"; themePath = "../../../themes"+("/"+userSettings.theme+"/"+userSettings.theme)+".yaml";
@ -7,9 +7,6 @@ let
backgroundSha256 = builtins.readFile (./. + "../../../themes/"+("/"+userSettings.theme)+"/backgroundsha256.txt"); backgroundSha256 = builtins.readFile (./. + "../../../themes/"+("/"+userSettings.theme)+"/backgroundsha256.txt");
in in
{ {
imports = [ inputs.stylix.homeManagerModules.stylix ];
home.file.".currenttheme".text = userSettings.theme; home.file.".currenttheme".text = userSettings.theme;
stylix.autoEnable = false; stylix.autoEnable = false;
stylix.polarity = themePolarity; stylix.polarity = themePolarity;