From 28f14cab2eda04898403e7caec75b5eca2a9b10a Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Sun, 29 May 2022 19:16:40 +0200 Subject: [PATCH] Things - `cura` without disallowed areas for Ender 3 printers - `udiskie` service for automounting - Emacs - removed `vimish-fold` and `evil-vimish-fold` - added `origami` - added `highlight-indent-guides` - restored and improved `dirvish` --- .github/workflows/update.yml | 4 +- flake.nix | 2 +- pkgs/cura/default.nix | 10 ++ pkgs/default.nix | 1 + pkgs/emacs/default.nix | 9 +- profiles/core/default.nix | 1 - .../emacs/emacs.d/config/aesthetics.el | 18 ++- .../emacs/emacs.d/config/config-dirvish.el | 123 ++++++++++++++++++ .../emacs/emacs.d/config/config-evil.el | 13 -- users/profiles/emacs/emacs.d/init.el | 1 + users/profiles/udiskie/default.nix | 7 + 11 files changed, 164 insertions(+), 25 deletions(-) create mode 100644 pkgs/cura/default.nix create mode 100644 users/profiles/emacs/emacs.d/config/config-dirvish.el create mode 100644 users/profiles/udiskie/default.nix diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 61cd45c..4dd6d37 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -2,7 +2,7 @@ name: update-flake-lock on: workflow_dispatch: # allows manual triggering schedule: - - cron: '0 2 * * 5' # runs weekly on Friday at 02:00 AM + - cron: '0 2 * * 6' # runs weekly on Friday at 02:00 AM jobs: lockfile: @@ -11,6 +11,8 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + - uses: cachix/install-nix-action@v17 + - name: Update flake.lock uses: DeterminateSystems/update-flake-lock@v9 with: diff --git a/flake.nix b/flake.nix index 5449421..a4bf651 100644 --- a/flake.nix +++ b/flake.nix @@ -121,7 +121,7 @@ importables = rec { profiles = digga.lib.rakeLeaves ./users/profiles; suites = with profiles; rec { - base = [ direnv git zsh gpg password-store ]; + base = [ direnv git zsh gpg password-store udiskie ]; emails = [ mails ]; shell = [ zsh exa fzf ]; gui = [ sway xdg gtk foot bat ]; diff --git a/pkgs/cura/default.nix b/pkgs/cura/default.nix new file mode 100644 index 0000000..c7dacf8 --- /dev/null +++ b/pkgs/cura/default.nix @@ -0,0 +1,10 @@ +{ pkgs }: + +pkgs.cura.overrideAttrs (old: { + buildInputs = old.buildInputs ++ [ pkgs.jq ]; + postInstall = old.postInstall or "" + '' + definitions="$out/share/cura/resources/definitions" + ce3="$definitions/creality_ender3.def.json" + cat <<< "$(jq '.overrides.machine_disallowed_areas.default_value = []' $ce3)" > $ce3 + ''; +}) diff --git a/pkgs/default.nix b/pkgs/default.nix index 7a693d5..14f74a3 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -17,6 +17,7 @@ in # sources = prev.callPackage (import ./_sources/generated.nix) { }; amule = prev.callPackage (import ./amule) { }; customEmacs = prev.callPackage (import ./emacs) { pkgs = prev; }; + cura = prev.callPackage (import ./cura) { pkgs = prev; }; droidcam = prev.callPackage (import ./droidcam) { }; google-chrome = import ./google-chrome { pkgs = prev; }; nixFromMaster = import ./nix-from-master { nix = prev.nix; pkgs = prev; }; diff --git a/pkgs/emacs/default.nix b/pkgs/emacs/default.nix index 54b3cd0..7305748 100644 --- a/pkgs/emacs/default.nix +++ b/pkgs/emacs/default.nix @@ -8,17 +8,16 @@ emacsWithPackages ( with epkgs.melpaStablePackages; [ ] ) ++ ( with epkgs.melpaPackages; [ - # dirvish - vimish-fold - evil-vimish-fold aggressive-indent all-the-icons company company-nixos-options dap-mode diff-hl - envrc + diredfl + dirvish doom-modeline + envrc evil evil-collection fira-code-mode @@ -30,6 +29,7 @@ emacsWithPackages ( helm-company helm-nixos-options helm-projectile + highlight-indent-guides lispy lsp-haskell lsp-mode @@ -46,6 +46,7 @@ emacsWithPackages ( org-roam org-roam-ui org-superstar + origami projectile psc-ide psci diff --git a/profiles/core/default.nix b/profiles/core/default.nix index 1c56d61..77f1853 100644 --- a/profiles/core/default.nix +++ b/profiles/core/default.nix @@ -63,5 +63,4 @@ in }; services.earlyoom.enable = true; - } diff --git a/users/profiles/emacs/emacs.d/config/aesthetics.el b/users/profiles/emacs/emacs.d/config/aesthetics.el index e47af2b..a4b829c 100644 --- a/users/profiles/emacs/emacs.d/config/aesthetics.el +++ b/users/profiles/emacs/emacs.d/config/aesthetics.el @@ -1,13 +1,13 @@ (use-package modus-themes :init (setq - modus-themes-region '(bg-only no-extend)) + modus-themes-region '(bg-only no-extend)) (modus-themes-load-themes) :config - (modus-themes-load-operandi) ;white theme - ;; (modus-themes-load-vivendi) ;black theme + (modus-themes-load-operandi) ;white theme + ;; (modus-themes-load-vivendi) ;black theme :bind ("" . modus-themes-toggle) -) + ) (use-package fira-code-mode :after all-the-icons @@ -43,7 +43,15 @@ ;; :hook ((prog-mode . rainbow-identifiers-mode)) ) -;; To move in a different config file +(use-package highlight-indent-guides + :hook ((prog-mode . highlight-indent-guides-mode)) + :config (setq highlight-indent-guides-method 'character + highlight-indent-guides-responsive 'top)) + +(use-package origami + :hook ((prog-mode . origami-mode))) + +;; TODO: To move in a different config file (when (string-equal system-type "darwin") (set-face-attribute 'default nil :height 150) (setq mac-command-modifier 'ctrl)) diff --git a/users/profiles/emacs/emacs.d/config/config-dirvish.el b/users/profiles/emacs/emacs.d/config/config-dirvish.el new file mode 100644 index 0000000..a09c065 --- /dev/null +++ b/users/profiles/emacs/emacs.d/config/config-dirvish.el @@ -0,0 +1,123 @@ +(use-package dired + ;; Dirvish respects all the keybindings in `dired-mode-map' + :bind + (nil + :map dired-mode-map + ("h" . dired-up-directory) + ("j" . dired-next-line) + ("k" . dired-previous-line) + ("l" . dired-find-file) + ("i" . wdired-change-to-wdired-mode) + ("." . dired-omit-mode)) + :config + (setq dired-recursive-deletes 'always) + (setq delete-by-moving-to-trash t) + (setq dired-dwim-target t) + ;; Make sure to use the long name of flags when exists + ;; eg. use "--almost-all" instead of "-A" + ;; Otherwise some commands won't work properly + (setq dired-listing-switches + "-l --almost-all --human-readable --time-style=long-iso --group-directories-first --no-group")) + +(use-package dired-x + ;; Enable dired-omit-mode by default + ;; :hook + ;; (dired-mode . dired-omit-mode) + :config + ;; Make dired-omit-mode hide all "dotfiles" + (setq dired-omit-files + (concat dired-omit-files "\\|^\\..*$"))) + +(use-package dirvish + :custom + ;; Go back home? Just press `bh' + (dirvish-menu-bookmarks + '(("h" "~/" "Home") + ("d" "~/Downloads/" "Downloads") + ("m" "/mnt/" "Drives") + ("t" "~/.local/share/Trash/files/" "TrashCan"))) + ;; (dirvish-header-line-format '(:left (path) :right (free-space))) + (dirvish-mode-line-format + '(:left + (sort file-time " " file-size symlink) ; it's ok to place string inside + :right + ;; For `dired-filter' users, replace `omit' with `filter' segment defined below + (omit yank index))) + (dirvish-attributes '(subtree-state + ;; file-size + ;; Feel free to replace `all-the-icons' with `vscode-icon'. + all-the-icons)) + ;; Maybe the icons are too big to your eyes + ;; (dirvish-all-the-icons-height 0.8) + ;; In case you want the details at startup like `dired' + ;; (dirvish-hide-details nil) + :config + ;; Place this line under :init to ensure the overriding at startup, see #22 + (dirvish-override-dired-mode) + (dirvish-peek-mode) + ;; Define mode line segment for `dired-filter' + ;; (dirvish-define-mode-line filter "Describe filters." + ;; (when (bound-and-true-p dired-filter-mode) + ;; (propertize (format " %s " (dired-filter--describe-filters)) + ;; 'face 'dired-filter-group-header))) + :bind + ;; Bind `dirvish|dirvish-dired|dirvish-side|dirvish-dwim' as you see fit + (("C-c f" . dirvish-fd) + :map dired-mode-map + ("TAB" . dirvish-toggle-subtree) + ("SPC" . dirvish-show-history) + ("*" . dirvish-mark-menu) + ("r" . dirvish-roam) + ("b" . dirvish-goto-bookmark) + ("f" . dirvish-file-info-menu) + ("M-n" . dirvish-go-forward-history) + ("M-p" . dirvish-go-backward-history) + ("M-s" . dirvish-setup-menu) + ("M-f" . dirvish-toggle-fullscreen) + ([remap dired-sort-toggle-or-edit] . dirvish-quicksort) + ([remap dired-do-redisplay] . dirvish-ls-switches-menu) + ([remap dired-summary] . dirvish-dispatch) + ([remap dired-do-copy] . dirvish-yank-menu) + ([remap mode-line-other-buffer] . dirvish-other-buffer))) + +;; Addtional syntax highlighting for dired +(use-package diredfl + :hook + (dired-mode . diredfl-mode)) + +;; Use `all-the-icons' as Dirvish's icon backend +(use-package all-the-icons + :if (display-graphic-p)) + +;; Or, use `vscode-icon' instead +;; (use-package vscode-icon +;; :config +;; (push '("jpg" . "image") vscode-icon-file-alist)) + +;; `ibuffer' like file filtering system +(use-package dired-filter + :after dirvish + :config + :custom + ;; Do not touch the header line + (dired-filter-show-filters nil) + (dired-filter-revert 'always) + :bind + (:map dired-mode-map + ([remap dired-omit-mode] . dired-filter-mode))) + +(use-package dired-collapse + :bind + (:map dired-mode-map + ("M-c" . dired-collapse-mode))) + +;; We already have `dirvish-toggle-subtree' +;; But you can still use this package if you want those fancy features +;; (use-package dired-subtree +;; :config +;; (setq dired-subtree-use-backgrounds nil) +;; :bind +;; (:map dired-mode-map +;; ("TAB" . dired-subtree-toggle))) + +(provide 'config-dirvish) diff --git a/users/profiles/emacs/emacs.d/config/config-evil.el b/users/profiles/emacs/emacs.d/config/config-evil.el index e464116..8797f2f 100644 --- a/users/profiles/emacs/emacs.d/config/config-evil.el +++ b/users/profiles/emacs/emacs.d/config/config-evil.el @@ -16,17 +16,4 @@ :config (evil-collection-init)) -(use-package vimish-fold - :ensure - :after evil) - -(use-package evil-vimish-fold - :ensure - :after vimish-fold - :init - (setq evil-vimish-fold-mode-lighter " ⮒") - (setq evil-vimish-fold-target-modes '(prog-mode conf-mode text-mode)) - :config - (global-evil-vimish-fold-mode)) - (provide 'config-evil) diff --git a/users/profiles/emacs/emacs.d/init.el b/users/profiles/emacs/emacs.d/init.el index 543eada..62cd967 100644 --- a/users/profiles/emacs/emacs.d/init.el +++ b/users/profiles/emacs/emacs.d/init.el @@ -22,5 +22,6 @@ (require 'config-translate) (require 'config-lisp) (require 'config-direnv) +(require 'config-dirvish) (server-start) diff --git a/users/profiles/udiskie/default.nix b/users/profiles/udiskie/default.nix new file mode 100644 index 0000000..1f5043f --- /dev/null +++ b/users/profiles/udiskie/default.nix @@ -0,0 +1,7 @@ +{ + services.udiskie = { + enable = true; + automount = true; + tray = "auto"; + }; +}