Things
- `wireguard` for `hs` - gnome keyring for VSCode to make Copilot work - uninstalled local `Hydra` on `pc` - VSCode -> VSCodeFHS - Emacs - typescript - solidity - envrc mode
This commit is contained in:
parent
3668e2d3d0
commit
816bd8fe6f
132 changed files with 1410 additions and 3682 deletions
|
@ -1,41 +0,0 @@
|
|||
# Editor configuration, see http://editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
# Ignore diffs/patches
|
||||
[*.{diff,patch}]
|
||||
end_of_line = unset
|
||||
insert_final_newline = unset
|
||||
trim_trailing_whitespace = unset
|
||||
indent_size = unset
|
||||
|
||||
[{.*,secrets}/**]
|
||||
end_of_line = unset
|
||||
insert_final_newline = unset
|
||||
trim_trailing_whitespace = unset
|
||||
charset = unset
|
||||
indent_style = unset
|
||||
indent_size = unset
|
||||
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
|
||||
[*.md]
|
||||
max_line_length = off
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.{el,org}]
|
||||
end_of_line = unset
|
||||
insert_final_newline = unset
|
||||
trim_trailing_whitespace = unset
|
||||
charset = unset
|
||||
indent_style = unset
|
||||
indent_size = unset
|
||||
|
41
.github/workflows/check.yml
vendored
41
.github/workflows/check.yml
vendored
|
@ -1,41 +0,0 @@
|
|||
name: "Check & Build (with Cachix)"
|
||||
on:
|
||||
workflow_dispatch: # allows manual triggering
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- update_flake_lock_action
|
||||
jobs:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
- run: |
|
||||
DEBIAN_FRONTEND=noninteractive
|
||||
sudo apt-get update -q -y && sudo apt-get install -q -y qemu-system-aarch64 qemu-efi binfmt-support qemu-user-static
|
||||
- uses: cachix/install-nix-action@v17
|
||||
with:
|
||||
extra_nix_config: >
|
||||
experimental-features = nix-command flakes
|
||||
system-features = nixos-test benchmark big-parallel kvm recursive-nix
|
||||
extra-platforms = aarch64-linux
|
||||
keep-going = true
|
||||
substituters =
|
||||
https://aciceri-fleet.cachix.org
|
||||
https://nrdxp.cachix.org
|
||||
https://nix-community.cachix.org
|
||||
arm.cachix.org
|
||||
https://cache.nixos.org
|
||||
trusted-public-keys = >
|
||||
aciceri-fleet.cachix.org-1:WiHJIK4UFTdfvWx0lG3mCR4EddyYsRhIuMGSje3/YGI=
|
||||
nrdxp.cachix.org-1:Fc5PSqY2Jm1TrWfm88l6cvGWwz3s93c6IOifQWnhNW4=
|
||||
nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
|
||||
arm.cachix.org-1:K3XjAeWPgWkFtSS9ge5LJSLw3xgnNqyOaG7MDecmTQ8=
|
||||
cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
|
||||
- uses: cachix/cachix-action@v10
|
||||
with:
|
||||
name: aciceri-fleet
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
- run: nix -Lv build ".#nixosConfigurations.pc.config.system.build.toplevel"
|
||||
- run: nix -Lv build ".#nixosConfigurations.pbp.config.system.build.toplevel" --option system aarch64-linux
|
||||
- run: nix -Lv build ".#nixosConfigurations.hs.config.system.build.toplevel"
|
45
.github/workflows/release.yml
vendored
45
.github/workflows/release.yml
vendored
|
@ -1,45 +0,0 @@
|
|||
name: "Release (with Cachix)"
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "release-*"
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.3.4
|
||||
- uses: cachix/install-nix-action@v16
|
||||
with:
|
||||
install_url: https://nixos-nix-install-tests.cachix.org/serve/8d8xah1f6ypccpmw9cfsl8ziw1chj4cl/install
|
||||
install_options: "--tarball-url-prefix https://nixos-nix-install-tests.cachix.org/serve"
|
||||
extra_nix_config: >
|
||||
experimental-features = nix-command flakes
|
||||
system-features = nixos-test benchmark big-parallel kvm recursive-nix
|
||||
extra-platforms = aarch64-linux
|
||||
keep-going = true
|
||||
substituters =
|
||||
https://aciceri-fleet.cachix.org
|
||||
https://nrdxp.cachix.org
|
||||
https://nix-community.cachix.org
|
||||
arm.cachix.org
|
||||
https://cache.nixos.org
|
||||
trusted-public-keys = >
|
||||
aciceri-fleet.cachix.org-1:WiHJIK4UFTdfvWx0lG3mCR4EddyYsRhIuMGSje3/YGI=
|
||||
nrdxp.cachix.org-1:Fc5PSqY2Jm1TrWfm88l6cvGWwz3s93c6IOifQWnhNW4=
|
||||
nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
|
||||
arm.cachix.org-1:K3XjAeWPgWkFtSS9ge5LJSLw3xgnNqyOaG7MDecmTQ8=
|
||||
cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
|
||||
- uses: cachix/cachix-action@v10
|
||||
with:
|
||||
name: aciceri-fleet
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
# - run: nix -Lv develop -c bud build pc pcBootstrapIso
|
||||
# - run: nix -Lv develop -c bud build hs hsBootstrapIso
|
||||
- uses: marvinpinto/action-automatic-releases@latest
|
||||
with:
|
||||
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
prerelease: false
|
||||
automatic_release_tag: latest
|
||||
title: Latest ISOs
|
||||
files: |
|
||||
result/iso/*.iso
|
23
.github/workflows/update.yml
vendored
23
.github/workflows/update.yml
vendored
|
@ -1,23 +0,0 @@
|
|||
name: update-flake-lock
|
||||
on:
|
||||
workflow_dispatch: # allows manual triggering
|
||||
schedule:
|
||||
- cron: '0 2 * * *' # runs weekly on Friday at 02:00 AM
|
||||
|
||||
jobs:
|
||||
lockfile:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- uses: cachix/install-nix-action@v17
|
||||
|
||||
- name: Update flake.lock
|
||||
uses: DeterminateSystems/update-flake-lock@v9
|
||||
with:
|
||||
pr-title: "Automatic `flake.lock` update"
|
||||
pr-labels: |
|
||||
flake-inputs
|
||||
automatic
|
||||
token: ${{ secrets.PR_UPDATE_FLAKE_TOKEN }} # to open the PR using my GitHub account, needed to trigger the `check` workflow
|
12
.gitignore
vendored
12
.gitignore
vendored
|
@ -1,14 +1,4 @@
|
|||
result
|
||||
.direnv
|
||||
doc/index.html
|
||||
|
||||
# Result of flk commands
|
||||
vm
|
||||
iso
|
||||
doi
|
||||
|
||||
pkgs/_sources/.shake*
|
||||
|
||||
.pre-commit-config.yaml
|
||||
*.qcow2
|
||||
|
||||
profiles/cachix/mlabs.nix
|
||||
|
|
77
README.org
77
README.org
|
@ -1,77 +0,0 @@
|
|||
* NixFleet
|
||||
|
||||
A complete, declarative and reproducible configuration of my entire
|
||||
Nix fleet, this includes the following machines:
|
||||
|
||||
- [X] my main home workstation ~pc~
|
||||
- [X] homeserver (mainly a nas) ~hs~
|
||||
- [X] my arm based [[https://wiki.pine64.org/wiki/Pinebook_Pro][PineBook Pro]] ~pbp~, almost completely open hardware
|
||||
|
||||
The different confgurations share many profiles, in fact my original
|
||||
goal was to avoid to rewrite the same Nix derivations for my
|
||||
different machines.
|
||||
|
||||
** Continuous integration
|
||||
At every commit a GitHub action builds all the machines and publish the
|
||||
artifacts produces to [[aciceri-fleet.cachix.org]].
|
||||
Moreover, every night, another GitHub action is triggered and it try to update
|
||||
the flake's lockfile creating a PR, the same GitHub action is before is run
|
||||
against the branch of this PR.
|
||||
|
||||
** Commands
|
||||
Here I describe my most used commands. All the commands are executed
|
||||
inside the Flake's development shell. To enter in this shell is
|
||||
sufficent to ~cd~ in the folder (if you use ~direnv~) or run ~nix
|
||||
develop~.
|
||||
|
||||
*** Checking
|
||||
To check that the Nix Flake is [[https://nixos.org/manual/nix/unstable/command-ref/new-cli/nix3-flake-check.html#evaluation-checks][well defined]]:
|
||||
#+begin_src shell
|
||||
nix flake check
|
||||
#+end_src
|
||||
|
||||
*** Building
|
||||
#+begin_src shell
|
||||
nix -Lv build
|
||||
".#nixosConfigurations.<host>.config.system.build.toplevel"
|
||||
#+end_src
|
||||
|
||||
where ~<host>~ is the hostname e.g. ~pc~.
|
||||
|
||||
*** Testing new config
|
||||
#+begin_src shell
|
||||
bud rebuild <host> test
|
||||
#+end_src
|
||||
|
||||
where ~<host>~ is the hostname e.g. ~pc~.
|
||||
|
||||
|
||||
*** Switching
|
||||
#+begin_src shell
|
||||
bud rebuild <host> switch
|
||||
#+end_src
|
||||
|
||||
where ~<host>~ is the hostname e.g. ~pc~.
|
||||
|
||||
*** Remote deploy
|
||||
|
||||
#+begin_src shell
|
||||
deploy -d --hostname <hostname> '.#<host>' --skip-checks --ssh-user root
|
||||
#+end_src
|
||||
|
||||
where
|
||||
- ~<hostname>~ is the remote machine hostname or ip
|
||||
- ~<host>~ is one between ~pc~, ~pbp~ or ~hs~
|
||||
|
||||
** Github Actions
|
||||
*** Check and build
|
||||
At every commit pushed on ~master~ a Github actions which ~nix flake
|
||||
check~ the flake is executed and then every system is build.
|
||||
Currently this workflow will skip ~aarch64~ hosts since the runner is
|
||||
~x86_64~ and I didn't find a way to make it cross compile.
|
||||
|
||||
*** Release
|
||||
At every tagged commit whose tag name starts with ~release-~ a process
|
||||
that releases all the bootstrap ISOs for the systems is started. Here
|
||||
I've the same problem with ~aarch64~ hosts so the runner will skip
|
||||
them.
|
|
@ -1,5 +0,0 @@
|
|||
status = [ "check" ]
|
||||
|
||||
required_approvals = 1
|
||||
|
||||
up_to_date_approvals = true
|
31
default.nix
31
default.nix
|
@ -1,31 +0,0 @@
|
|||
let
|
||||
inherit (default.inputs.nixos) lib;
|
||||
|
||||
default = (import ./lib/compat).defaultNix;
|
||||
|
||||
ciSystems = [
|
||||
"aarch64-linux"
|
||||
"i686-linux"
|
||||
"x86_64-linux"
|
||||
];
|
||||
|
||||
filterSystems = lib.filterAttrs
|
||||
(system: _: lib.elem system ciSystems);
|
||||
|
||||
recurseIntoAttrsRecursive = lib.mapAttrs (_: v:
|
||||
if lib.isAttrs v
|
||||
then recurseIntoAttrsRecursive (lib.recurseIntoAttrs v)
|
||||
else v
|
||||
);
|
||||
|
||||
systemOutputs = lib.filterAttrs
|
||||
(name: set: lib.isAttrs set
|
||||
&& lib.any
|
||||
(system: set ? ${system} && name != "legacyPackages")
|
||||
ciSystems
|
||||
)
|
||||
default.outputs;
|
||||
|
||||
ciDrvs = lib.mapAttrs (_: system: filterSystems system) systemOutputs;
|
||||
in
|
||||
(recurseIntoAttrsRecursive ciDrvs) // { shell = import ./shell.nix; }
|
80
doom.d/config.el
Normal file
80
doom.d/config.el
Normal file
|
@ -0,0 +1,80 @@
|
|||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||
;; sync' after modifying this file!
|
||||
|
||||
|
||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||
;; clients, file templates and snippets. It is optional.
|
||||
(setq user-full-name "Andrea Ciceri"
|
||||
user-mail-address "andrea.ciceri@autistici.org")
|
||||
|
||||
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||
;;
|
||||
;; - `doom-font' -- the primary font to use
|
||||
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||
;; presentations or streaming.
|
||||
;; - `doom-unicode-font' -- for unicode glyphs
|
||||
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||
;;
|
||||
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||
;; accept. For example:
|
||||
;;
|
||||
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light))
|
||||
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||
;;
|
||||
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||
|
||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||
;; `load-theme' function. This is the default:
|
||||
(setq doom-theme 'doom-one)
|
||||
|
||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||
(setq display-line-numbers-type 'relative)
|
||||
|
||||
;; If you use `org' and don't want your org files in the default location below,
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
(setq org-directory "~/org/")
|
||||
|
||||
|
||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||
;;
|
||||
;; (after! PACKAGE
|
||||
;; (setq x y))
|
||||
;;
|
||||
;; The exceptions to this rule:
|
||||
;;
|
||||
;; - Setting file/directory variables (like `org-directory')
|
||||
;; - Setting variables which explicitly tell you to set them before their
|
||||
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||
;;
|
||||
;; Here are some additional functions/macros that will help you configure Doom.
|
||||
;;
|
||||
;; - `load!' for loading external *.el files relative to this one
|
||||
;; - `use-package!' for configuring packages
|
||||
;; - `after!' for running code after a package has loaded
|
||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||
;; this file. Emacs searches the `load-path' when you load packages with
|
||||
;; `require' or `use-package'.
|
||||
;; - `map!' for binding new keys
|
||||
;;
|
||||
;; To get information about any of these functions/macros, move the cursor over
|
||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||
;; This will open documentation for it, including demos of how they are used.
|
||||
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||
;; etc).
|
||||
;;
|
||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||
;; they are implemented.
|
||||
|
||||
(use-package! pinentry
|
||||
:init (setq epa-pinentry-mode `loopback)
|
||||
(pinentry-start))
|
195
doom.d/init.el
Normal file
195
doom.d/init.el
Normal file
|
@ -0,0 +1,195 @@
|
|||
;;; init.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; This file controls what Doom modules are enabled and what order they load
|
||||
;; in. Remember to run 'doom sync' after modifying it!
|
||||
|
||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||
;; of our modules are listed, including what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||
;; flags as well (those symbols that start with a plus).
|
||||
;;
|
||||
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input
|
||||
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
company ; the ultimate code completion backend
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
vertico ; the search engine of the future
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
;;(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
;;hydra
|
||||
;;indent-guides ; highlighted indent columns
|
||||
;;ligatures ; ligatures and symbols to make your code pretty again
|
||||
minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
;;nav-flash ; blink cursor line after big motions
|
||||
;;neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
;;tabs ; a tab bar for Emacs
|
||||
treemacs ; a project drawer, like neotree but cooler
|
||||
;;unicode ; extended unicode support for various languages
|
||||
vc-gutter ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
;;zen ; distraction-free coding or writing
|
||||
|
||||
:editor
|
||||
(evil +everywhere); come to the dark side, we have cookies
|
||||
file-templates ; auto-snippets for empty files
|
||||
fold ; (nigh) universal code folding
|
||||
;;(format +onsave) ; automated prettiness
|
||||
;;god ; run Emacs commands without modifier keys
|
||||
;;lispy ; vim for lisp, for people who don't like vim
|
||||
;;multiple-cursors ; editing in many places at once
|
||||
;;objed ; text object editing for the innocent
|
||||
;;parinfer ; turn lisp into python, sort of
|
||||
;;rotate-text ; cycle region at point between text candidates
|
||||
snippets ; my elves. They type so I don't have to
|
||||
;;word-wrap ; soft wrapping with language-aware indent
|
||||
|
||||
:emacs
|
||||
dired ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
;;ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
||||
:term
|
||||
eshell ; the elisp shell that works everywhere
|
||||
;;shell ; simple shell REPL for Emacs
|
||||
;;term ; basic terminal emulator for Emacs
|
||||
vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
;;(spell +flyspell) ; tasing you for misspelling mispelling
|
||||
grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
;;gist ; interacting with github gists
|
||||
lookup ; navigate your code and its documentation
|
||||
;;lsp ; M-x vscode
|
||||
magit ; a git porcelain for Emacs
|
||||
make ; run make tasks from Emacs
|
||||
pass ; password manager for nerds
|
||||
;;pdf ; pdf enhancements
|
||||
;;prodigy ; FIXME managing external services & code builders
|
||||
;;rgb ; creating color strings
|
||||
;;taskrunner ; taskrunner for all your projects
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if IS-MAC macos) ; improve compatibility with macOS
|
||||
tty ; improve the terminal Emacs experience
|
||||
exwm
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
;;(cc +lsp) ; C > C++ == 1
|
||||
;;clojure ; java with a lisp
|
||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||
;;coq ; proofs-as-programs
|
||||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
;;data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
emacs-lisp ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
;;ess ; emacs speaks statistics
|
||||
;;factor
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;gdscript ; the language you waited for
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(graphql +lsp) ; Give queries a REST
|
||||
(haskell +lsp) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
json ; At least it ain't XML
|
||||
;;(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
javascript ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;;julia ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
;;latex ; writing papers in Emacs has never been so fun
|
||||
;;lean ; for folks with too much to prove
|
||||
;;ledger ; be audit you can be
|
||||
;;lua ; one-based indices? one-based indices
|
||||
markdown ; writing docs for people to ignore
|
||||
;;nim ; python + lisp at the speed of c
|
||||
nix ; I hereby declare "nix geht mehr!"
|
||||
;;ocaml ; an objective camel
|
||||
org ; organize your plain life in plain text
|
||||
;;php ; perl's insecure younger brother
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;purescript ; javascript, but functional
|
||||
python ; beautiful is better than ugly
|
||||
;;qt ; the 'cutest' gui framework ever
|
||||
;;racket ; a DSL for DSLs
|
||||
;;raku ; the artist formerly known as perl6
|
||||
;;rest ; Emacs as a REST client
|
||||
;;rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
;;web ; the tubes
|
||||
yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
;;calendar
|
||||
;;emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
;;irc ; how neckbeards socialize
|
||||
;;(rss +org) ; emacs as an RSS reader
|
||||
;;twitter ; twitter client https://twitter.com/vnought
|
||||
|
||||
:config
|
||||
;;literate
|
||||
(default +bindings +smartparens))
|
134
doom.d/modules/os/exwm/config.el
Normal file
134
doom.d/modules/os/exwm/config.el
Normal file
|
@ -0,0 +1,134 @@
|
|||
;;; os/exwm/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Define custom variables for the `exwm-update-class-hook' for users to
|
||||
;; configure which buffers names should NOT be modified.
|
||||
(defvar exwm/ignore-wm-prefix "sun-awt-X11-"
|
||||
"Don't rename exwm buffers with this prefix.")
|
||||
(defvar exwm/ignore-wm-name "gimp"
|
||||
"Don't rename exwm buffers with this name.")
|
||||
|
||||
;; Make sure `exwm' windows can be restored when switching workspaces.
|
||||
(defun exwm--update-utf8-title-advice (oldfun id &optional force)
|
||||
"Only update the window title when the buffer is visible."
|
||||
(when (get-buffer-window (exwm--id->buffer id))
|
||||
(funcall oldfun id force)))
|
||||
|
||||
;; Confgure `exwm' the X window manager for emacs.
|
||||
(use-package! exwm
|
||||
:config
|
||||
;; Configure global key bindings.
|
||||
(setq exwm-input-global-keys
|
||||
`(([?\s-r] . exwm-reset)
|
||||
([?\s-w] . exwm-workspace-switch)
|
||||
([?\s-&] . (lambda (command)
|
||||
(interactive (list (read-shell-command "$ ")))
|
||||
(start-process-shell-command command nil command)))
|
||||
,@(mapcar (lambda (i)
|
||||
`(,(kbd (format "s-%d" i)) .
|
||||
(lambda ()
|
||||
(interactive)
|
||||
(exwm-workspace-switch-create ,i))))
|
||||
(number-sequence 0 9))))
|
||||
|
||||
;; Configure the default buffer behaviour. All buffers created in `exwm-mode'
|
||||
;; are named "*EXWM*". Change it in `exwm-update-class-hook' and `exwm-update-title-hook'
|
||||
;; which are run when a new X window class name or title is available.
|
||||
(add-hook 'exwm-update-class-hook
|
||||
(lambda ()
|
||||
(unless (or (string-prefix-p exwm/ignore-wm-prefix exwm-instance-name)
|
||||
(string= exwm/ignore-wm-name exwm-instance-name))
|
||||
(exwm-workspace-rename-buffer exwm-class-name))))
|
||||
(add-hook 'exwm-update-title-hook
|
||||
(lambda ()
|
||||
(when (or (not exwm-instance-name)
|
||||
(string-prefix-p exwm/ignore-wm-prefix exwm-instance-name)
|
||||
(string= exwm/ignore-wm-name exwm-instance-name))
|
||||
(exwm-workspace-rename-buffer exwm-title))))
|
||||
|
||||
;; Show `exwm' buffers in buffer switching prompts.
|
||||
(add-hook 'exwm-mode-hook #'doom-mark-buffer-as-real-h)
|
||||
|
||||
;; Restore window configurations involving exwm buffers by only changing names
|
||||
;; of visible buffers.
|
||||
(advice-add #'exwm--update-utf8-title :around #'exwm--update-utf8-title-advice)
|
||||
|
||||
;; Enable the window manager.
|
||||
(exwm-enable))
|
||||
|
||||
;; Use the `ido' configuration for a few configuration fixes that alter
|
||||
;; 'C-x b' workplace switching behaviour. This also effects the functionality
|
||||
;; of 'SPC .' file searching in doom regardless of the users `ido' configuration.
|
||||
(use-package! exwm-config
|
||||
:after exwm
|
||||
:config
|
||||
(exwm-config--fix/ido-buffer-window-other-frame))
|
||||
|
||||
;; Configure `exwm-randr' to support multi-monitor setups as well as
|
||||
;; hot-plugging HDMI outputs. Read more at:
|
||||
;; https://github.com/ch11ng/exwm/wiki#randr-multi-screen
|
||||
(use-package! exwm-randr
|
||||
:after exwm
|
||||
:config
|
||||
(add-hook 'exwm-randr-screen-change-hook
|
||||
(lambda ()
|
||||
(let ((xrandr-output-regexp "\n\\([^ ]+\\) connected ")
|
||||
default-output)
|
||||
(with-temp-buffer
|
||||
(call-process "xrandr" nil t nil)
|
||||
(goto-char (point-min))
|
||||
(re-search-forward xrandr-output-regexp nil 'noerror)
|
||||
(setq default-output (match-string 1))
|
||||
(forward-line)
|
||||
(if (not (re-search-forward xrandr-output-regexp nil 'noerror))
|
||||
(call-process
|
||||
"xrandr" nil nil nil
|
||||
"--output" default-output
|
||||
"--auto")
|
||||
(call-process
|
||||
"xrandr" nil nil nil
|
||||
"--output" (match-string 1) "--primary" "--auto"
|
||||
"--output" default-output "--off")
|
||||
(setq exwm-randr-workspace-monitor-plist
|
||||
(list 0 (match-string 1))))))))
|
||||
(exwm-randr-enable))
|
||||
|
||||
;; Configure emacs input methods in all X windows.
|
||||
(when (featurep! +xim)
|
||||
(use-package! exwm-xim
|
||||
:after exwm
|
||||
:config
|
||||
;; These variables are required for X programs to pick up Emacs IM.
|
||||
(setenv "XMODIFIERS" "@im=exwm-xim")
|
||||
(setenv "GTK_IM_MODULE" "xim")
|
||||
(setenv "QT_IM_MODULE" "xim")
|
||||
(setenv "CLUTTER_IM_MODULE" "xim")
|
||||
(setenv "QT_QPA_PLATFORM" "xcb")
|
||||
(setenv "SDL_VIDEODRIVER" "x11")
|
||||
(exwm-xim-enable)))
|
||||
|
||||
;; Configure the rudamentary status bar.
|
||||
(when (featurep! +status)
|
||||
(setq display-time-default-load-average nil)
|
||||
(display-time-mode +1)
|
||||
(display-battery-mode +1))
|
||||
|
||||
;; Configure `exwm-firefox-*'.
|
||||
(when (featurep! +firefox)
|
||||
(use-package! exwm-firefox-core
|
||||
:after exwm
|
||||
:config
|
||||
;; Add the <ESC> key to the exwm input keys for firefox buffers.
|
||||
(dolist (k `(escape))
|
||||
(cl-pushnew k exwm-input-prefix-keys)))
|
||||
|
||||
;; Configure further depending if the user has evil mode enabled.
|
||||
(when (featurep! :editor evil)
|
||||
(use-package! exwm-firefox-evil
|
||||
:after exwm
|
||||
:config
|
||||
;; Add the firefox wm class name.
|
||||
(dolist (k `("firefox"))
|
||||
(cl-pushnew k exwm-firefox-evil-firefox-class-name))
|
||||
;; Add the firefox buffer hook
|
||||
(add-hook 'exwm-manage-finish-hook
|
||||
'exwm-firefox-evil-activate-if-firefox))))
|
6
doom.d/modules/os/exwm/doctor.el
Normal file
6
doom.d/modules/os/exwm/doctor.el
Normal file
|
@ -0,0 +1,6 @@
|
|||
;;; -*- lexical-binding: t; no-byte-compile: t; -*-
|
||||
;;; os/exwm/doctor.el
|
||||
|
||||
(when (featurep! +firefox)
|
||||
(unless (executable-find "firefox")
|
||||
(warn! "Couldn't find firefox. exwm-firefox will not work")))
|
11
doom.d/modules/os/exwm/packages.el
Normal file
11
doom.d/modules/os/exwm/packages.el
Normal file
|
@ -0,0 +1,11 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; os/exwm/packages.el
|
||||
|
||||
;; Here we require the `exwm' package.
|
||||
(package! exwm :pin "e43bd78...")
|
||||
|
||||
;; Here we require the `exwm-firefox*' packages.
|
||||
(when (featurep! +firefox)
|
||||
(if (featurep! :editor evil)
|
||||
(package! exwm-firefox-evil :pin "14643ee...")
|
||||
(package! exwm-firefox-core :pin "e2fe2a8ODO...")))
|
52
doom.d/packages.el
Normal file
52
doom.d/packages.el
Normal file
|
@ -0,0 +1,52 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; $DOOMDIR/packages.el
|
||||
|
||||
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||
;; use 'M-x doom/reload'.
|
||||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;(package! some-package)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||
;(package! another-package
|
||||
; :recipe (:host github :repo "username/repo"))
|
||||
|
||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||
;; `:files' in the `:recipe':
|
||||
;(package! this-package
|
||||
; :recipe (:host github :repo "username/repo"
|
||||
; :files ("some-file.el" "src/lisp/*.el")))
|
||||
|
||||
;; If you'd like to disable a package included with Doom, you can do so here
|
||||
;; with the `:disable' property:
|
||||
;(package! builtin-package :disable t)
|
||||
|
||||
;; You can override the recipe of a built in package without having to specify
|
||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||
;(package! builtin-package :recipe (:nonrecursive t))
|
||||
;(package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||
|
||||
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||
;; This is required for some packages whose default branch isn't 'master' (which
|
||||
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||
;(package! builtin-package :recipe (:branch "develop"))
|
||||
|
||||
;; Use `:pin' to specify a particular commit to install.
|
||||
;(package! builtin-package :pin "1a2b3c4d5e")
|
||||
|
||||
|
||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||
;(unpin! pinned-package)
|
||||
;; ...or multiple packages
|
||||
;(unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;(unpin! t)
|
||||
|
||||
(package! pinentry)
|
1
emacs.d
1
emacs.d
|
@ -1 +0,0 @@
|
|||
users/profiles/emacs/emacs.d
|
671
flake.lock
generated
671
flake.lock
generated
|
@ -1,125 +1,106 @@
|
|||
{
|
||||
"nodes": {
|
||||
"blank": {
|
||||
"locked": {
|
||||
"lastModified": 1625557891,
|
||||
"narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=",
|
||||
"owner": "divnix",
|
||||
"repo": "blank",
|
||||
"rev": "5a5d2684073d9f563072ed07c871d577a6c614a8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"repo": "blank",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"agenix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1650976225,
|
||||
"narHash": "sha256-PGM65SQHS63Dd5MmLJo3GJsZP9lJVZmpWxluQoG1Dt8=",
|
||||
"owner": "LnL7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "bb3baef6e115ae47bc2ab4973bd3a486488485b0",
|
||||
"lastModified": 1652712410,
|
||||
"narHash": "sha256-hMJ2TqLt0DleEnQFGUHK9sV2aAzJPU8pZeiZoqRozbE=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "7e5e58b98c3dcbf497543ff6f22591552ebfe65b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "LnL7",
|
||||
"repo": "nix-darwin",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"deploy": {
|
||||
"doom-emacs": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1657393840,
|
||||
"narHash": "sha256-ISaIbqCNKKz9DhrTVKvDS40CzZiqICb2eDepGUdwYQA=",
|
||||
"owner": "doomemacs",
|
||||
"repo": "doomemacs",
|
||||
"rev": "33c5f3721a704c72e49efc5960be3785d1a80b81",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "doomemacs",
|
||||
"ref": "master",
|
||||
"repo": "doomemacs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"doom-snippets": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1655900328,
|
||||
"narHash": "sha256-fEYwFxW2sdzNK14DrS92OCGy8KDPZKewrHljnE/RlzQ=",
|
||||
"owner": "doomemacs",
|
||||
"repo": "snippets",
|
||||
"rev": "6b2bd5a77c536ed414794ecf71d37a60ebd4663e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "doomemacs",
|
||||
"repo": "snippets",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"doomEmacs": {
|
||||
"inputs": {
|
||||
"doom-emacs": "doom-emacs",
|
||||
"doom-snippets": "doom-snippets",
|
||||
"emacs-overlay": "emacs-overlay",
|
||||
"emacs-so-long": "emacs-so-long",
|
||||
"evil-escape": "evil-escape",
|
||||
"evil-markdown": "evil-markdown",
|
||||
"evil-org-mode": "evil-org-mode",
|
||||
"evil-quick-diff": "evil-quick-diff",
|
||||
"explain-pause-mode": "explain-pause-mode",
|
||||
"flake-compat": "flake-compat",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1648475189,
|
||||
"narHash": "sha256-gAGAS6IagwoUr1B0ohE3iR6sZ8hP4LSqzYLC8Mq3WGU=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "83e0c78291cd08cb827ba0d553ad9158ae5a95c3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devshell": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
"format-all": "format-all",
|
||||
"nix-straight": "nix-straight",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nose": "nose",
|
||||
"ob-racket": "ob-racket",
|
||||
"org": "org",
|
||||
"org-contrib": "org-contrib",
|
||||
"org-yt": "org-yt",
|
||||
"php-extras": "php-extras",
|
||||
"revealjs": "revealjs",
|
||||
"rotate-text": "rotate-text",
|
||||
"sln-mode": "sln-mode",
|
||||
"ts-fold": "ts-fold",
|
||||
"ws-butler": "ws-butler"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1650389807,
|
||||
"narHash": "sha256-GFRBdHMJ/T/ifaE2GS58RWpxyufH0LqI3oGS6oWAnHk=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "5a53bbf3eb4c908d83884d725a86b3a3bde35979",
|
||||
"lastModified": 1658470797,
|
||||
"narHash": "sha256-ovk7xcjGqoXgc7fV4m0tlKhiuAglON4TKmt//Bd0fLE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-doom-emacs",
|
||||
"rev": "f7fd8620be427c6489f496645513d536e380c50c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"digga": {
|
||||
"inputs": {
|
||||
"blank": "blank",
|
||||
"darwin": "darwin",
|
||||
"deploy": "deploy",
|
||||
"devshell": "devshell",
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-utils-plus": "flake-utils-plus",
|
||||
"home-manager": [
|
||||
"unstable"
|
||||
],
|
||||
"latest": "latest",
|
||||
"nixlib": [
|
||||
"unstable"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"unstable"
|
||||
],
|
||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1653150882,
|
||||
"narHash": "sha256-uxz5yS6BliJE7Ed7gV9e6c0cCxo8AoWorHBpc7/I8FI=",
|
||||
"owner": "divnix",
|
||||
"repo": "digga",
|
||||
"rev": "6b0c0aa1ae0410960de8f3ae7168e1991783ecbb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "divnix",
|
||||
"ref": "hotfix-exported-overlays",
|
||||
"repo": "digga",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-doom-emacs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"emacs-overlay": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
"nixpkgs": [
|
||||
"unstable"
|
||||
]
|
||||
},
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1653736770,
|
||||
"narHash": "sha256-Vp8fWSGTEeuWc71rVXsh+ofsHHUPhKunc8aQLGN0ETc=",
|
||||
"lastModified": 1658430126,
|
||||
"narHash": "sha256-W5zw1NI7c47qT/FCkNAVmahA5On5UUs1pabAL6Tb2iI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "ff629e757452d010b7c91fdd2597aeca370bcf68",
|
||||
"rev": "6c868dbad387da912e2a47f63a913c8a62555127",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -128,23 +109,103 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"emacs-so-long": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1575031854,
|
||||
"narHash": "sha256-xIa5zO0ZaToDrec1OFjBK6l39AbA4l/CE4LInVu2hi0=",
|
||||
"owner": "hlissner",
|
||||
"repo": "emacs-so-long",
|
||||
"rev": "ed666b0716f60e8988c455804de24b55919e71ca",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hlissner",
|
||||
"repo": "emacs-so-long",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"evil-escape": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1588439096,
|
||||
"narHash": "sha256-aB2Ge5o/93B18tPf4fN1c+O46CNh/nOqwLJbox4c8Gw=",
|
||||
"owner": "hlissner",
|
||||
"repo": "evil-escape",
|
||||
"rev": "819f1ee1cf3f69a1ae920e6004f2c0baeebbe077",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hlissner",
|
||||
"repo": "evil-escape",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"evil-markdown": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1626852210,
|
||||
"narHash": "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=",
|
||||
"owner": "Somelauw",
|
||||
"repo": "evil-markdown",
|
||||
"rev": "8e6cc68af83914b2fa9fd3a3b8472573dbcef477",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Somelauw",
|
||||
"repo": "evil-markdown",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"evil-org-mode": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1607203864,
|
||||
"narHash": "sha256-JxwqVYDN6OIJEH15MVI6XOZAPtUWUhJQWHyzcrUvrFg=",
|
||||
"owner": "hlissner",
|
||||
"repo": "evil-org-mode",
|
||||
"rev": "a9706da260c45b98601bcd72b1d2c0a24a017700",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hlissner",
|
||||
"repo": "evil-org-mode",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"evil-quick-diff": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1575189609,
|
||||
"narHash": "sha256-oGzl1ayW9rIuq0haoiFS7RZsS8NFMdEA7K1BSozgnJU=",
|
||||
"owner": "rgrinberg",
|
||||
"repo": "evil-quick-diff",
|
||||
"rev": "69c883720b30a892c63bc89f49d4f0e8b8028908",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "rgrinberg",
|
||||
"repo": "evil-quick-diff",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"explain-pause-mode": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1595842060,
|
||||
"narHash": "sha256-++znrjiDSx+cy4okFBBXUBkRFdtnE2x+trkmqjB3Njs=",
|
||||
"owner": "lastquestion",
|
||||
"repo": "explain-pause-mode",
|
||||
"rev": "2356c8c3639cbeeb9751744dbe737267849b4b51",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lastquestion",
|
||||
"repo": "explain-pause-mode",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1648199409,
|
||||
"narHash": "sha256-JwPKdC2PoVBkG6E+eWw3j6BMR6sL3COpYWfif7RVb8Y=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "64a525ee38886ab9028e6f61790de0832aa3ef03",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1650374568,
|
||||
|
@ -162,11 +223,11 @@
|
|||
},
|
||||
"flake-utils": {
|
||||
"locked": {
|
||||
"lastModified": 1642700792,
|
||||
"narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=",
|
||||
"lastModified": 1656928814,
|
||||
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "846b2ae0fc4cc943637d3d1def4454213e203cba",
|
||||
"rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -175,24 +236,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils-plus": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1652704544,
|
||||
"narHash": "sha256-UTKE33tYgCmDszaVyWA33a8mtegM5xfH4fH8w4y6TxA=",
|
||||
"owner": "gytis-ivaskevicius",
|
||||
"repo": "flake-utils-plus",
|
||||
"rev": "f8d6d1f87b6177e3bc674c29f247bdbf897ba274",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "gytis-ivaskevicius",
|
||||
"repo": "flake-utils-plus",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1644229661,
|
||||
|
@ -208,33 +251,36 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"format-all": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1652776076,
|
||||
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
|
||||
"lastModified": 1581716637,
|
||||
"narHash": "sha256-ul7LCe60W8TIvUmUtZtZRo8489TK9iTPDsLHmzxY57M=",
|
||||
"owner": "lassik",
|
||||
"repo": "emacs-format-all-the-code",
|
||||
"rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"owner": "lassik",
|
||||
"repo": "emacs-format-all-the-code",
|
||||
"rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home": {
|
||||
"homeManager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"unstable"
|
||||
]
|
||||
"nixpkgsUnstable"
|
||||
],
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1653518057,
|
||||
"narHash": "sha256-cam3Nfae5ADeEs6mRPzr0jXB7+DhyMIXz0/0Q13r/yk=",
|
||||
"lastModified": 1658238241,
|
||||
"narHash": "sha256-naoSta79MYYRtVnIZhzq+YWgTOBhWE1Sr1AIhG7ZA9g=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "64831f938bd413cefde0b0cf871febc494afaa4f",
|
||||
"rev": "70d5929885ccec8dde8585894dd3ebe606e75f41",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -243,44 +289,92 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"nix-straight": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1650701402,
|
||||
"narHash": "sha256-XKfstdtqDg+O+gNBx1yGVKWIhLgfEDg/e2lvJSsp9vU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "bc41b01dd7a9fdffd32d9b03806798797532a5fe",
|
||||
"lastModified": 1656684255,
|
||||
"narHash": "sha256-ZefQiv4Ipu2VkLjs1oyelTLU7kBVJgkcQd+yBpJU0yo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-straight.el",
|
||||
"rev": "fb8dd5c44cde70abd13380766e40af7a63888942",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1653463224,
|
||||
"narHash": "sha256-bUxKhqZhki2vPzFTl8HOo1m7pagF7WzY1MZiso8U5ws=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "39a7bfc496d2ddfce73fe9542af1f2029ba4fe39",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-straight.el",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1653738054,
|
||||
"narHash": "sha256-IaR8iLN4Ms3f5EjU1CJkXSc49ZzyS5qv03DtVAti6/s=",
|
||||
"lastModified": 1638587357,
|
||||
"narHash": "sha256-2ySMW3QARG8BsRPmwe7clTbdCuaObromOKewykP+UJc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e34c5379866833f41e2a36f309912fa675d687c7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-21.11",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgsStable": {
|
||||
"locked": {
|
||||
"lastModified": 1658500284,
|
||||
"narHash": "sha256-g7vwZ5UF8PvC9f2/7Zf5O6zxgJiMSuh1CiGZVuuOhEQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "17b62c338f2a0862a58bb6951556beecd98ccda9",
|
||||
"rev": "e3583ad6e533a9d8dd78f90bfa93812d390ea187",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-22.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgsUnstable": {
|
||||
"locked": {
|
||||
"lastModified": 1658380158,
|
||||
"narHash": "sha256-DBunkegKWlxPZiOcw3/SNIFg93amkdGIy2g0y/jDpHg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a65b5b3f5504b8b89c196aba733bdf2b0bd13c16",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1658397257,
|
||||
"narHash": "sha256-2M1Ih3r8/mL8h0n8+PYoGXFazVY9zBcGJrNxNC3JgNo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a174de16edfc6aa0893530b9a95d0bd0c2a952b7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1645655918,
|
||||
"narHash": "sha256-ZfbEFRW7o237+A1P7eTKhXje435FCAoe0blj2n20Was=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "77a7a4197740213879b9a1d2e1788c6c8ade4274",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -288,139 +382,202 @@
|
|||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"nose": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1650726686,
|
||||
"narHash": "sha256-hE5PCqQlsdgWH3AUTwesvjZWs5ZUZ8SjMS5cnFB6W54=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3c0f57e36ed0cf9947281e3b31f1bebb7ce5d4a1",
|
||||
"lastModified": 1400604510,
|
||||
"narHash": "sha256-daEi8Kta1oGaDEmUUDDQMahTTPOpvNpDKk22rlr7cB0=",
|
||||
"owner": "emacsattic",
|
||||
"repo": "nose",
|
||||
"rev": "f8528297519eba911696c4e68fa88892de9a7b72",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "emacsattic",
|
||||
"repo": "nose",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgsDevInput": {
|
||||
"ob-racket": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1650581082,
|
||||
"narHash": "sha256-aq5jnmGhP0hSXYozkxUKpgSZILvDobxB976JZFG6If8=",
|
||||
"owner": "aciceri",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "24b40a255c6adc6ab32c69737e8b4cfc50d8c8b4",
|
||||
"lastModified": 1584656173,
|
||||
"narHash": "sha256-rBUYDDCXb+3D4xTPQo9UocbTPZ32kWV1Uya/1DmZknU=",
|
||||
"owner": "xchrishawk",
|
||||
"repo": "ob-racket",
|
||||
"rev": "83457ec9e1e96a29fd2086ed19432b9d75787673",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "aciceri",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "xchrishawk",
|
||||
"repo": "ob-racket",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"org": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1653738054,
|
||||
"narHash": "sha256-IaR8iLN4Ms3f5EjU1CJkXSc49ZzyS5qv03DtVAti6/s=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "17b62c338f2a0862a58bb6951556beecd98ccda9",
|
||||
"lastModified": 1658412564,
|
||||
"narHash": "sha256-JHiUjc4OAfPtNTWikVYEIkJkba9qV4N3QbtcJpjk4cM=",
|
||||
"owner": "emacs-straight",
|
||||
"repo": "org-mode",
|
||||
"rev": "99681ce38937ba993a0407cee4fd6a7f869211bf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "emacs-straight",
|
||||
"repo": "org-mode",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"org-contrib": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1653738054,
|
||||
"narHash": "sha256-IaR8iLN4Ms3f5EjU1CJkXSc49ZzyS5qv03DtVAti6/s=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "17b62c338f2a0862a58bb6951556beecd98ccda9",
|
||||
"lastModified": 1652646857,
|
||||
"narHash": "sha256-IWIShWyVnbwXqGLQaDNvJ0KoepxhIrXWTjPyGPEkQ14=",
|
||||
"owner": "emacsmirror",
|
||||
"repo": "org-contrib",
|
||||
"rev": "c1e0980fd7a57ca2042fd78acfb1dfb5c3bc03fa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "emacsmirror",
|
||||
"repo": "org-contrib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nur": {
|
||||
"org-yt": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1653724318,
|
||||
"narHash": "sha256-4J2d/fc7huLrYsU7VRiquSNOcQoqQQQGNweR48zFEc4=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"rev": "7a8313c6322856a5adbf9217e289733e67020652",
|
||||
"lastModified": 1527381913,
|
||||
"narHash": "sha256-dzQ6B7ryzatHCTLyEnRSbWO0VUiX/FHYnpHTs74aVUs=",
|
||||
"owner": "TobiasZawada",
|
||||
"repo": "org-yt",
|
||||
"rev": "40cc1ac76d741055cbefa13860d9f070a7ade001",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "NUR",
|
||||
"owner": "TobiasZawada",
|
||||
"repo": "org-yt",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"php-extras": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1573312690,
|
||||
"narHash": "sha256-r4WyVbzvT0ra4Z6JywNBOw5RxOEYd6Qe2IpebHXkj1U=",
|
||||
"owner": "arnested",
|
||||
"repo": "php-extras",
|
||||
"rev": "d410c5af663c30c01d461ac476d1cbfbacb49367",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "arnested",
|
||||
"repo": "php-extras",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"preCommitHooks": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1656169028,
|
||||
"narHash": "sha256-y9DRauokIeVHM7d29lwT8A+0YoGUBXV3H0VErxQeA8s=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "db3bd555d3a3ceab208bed48f983ccaa6a71a25e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"revealjs": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1653993278,
|
||||
"narHash": "sha256-X43lsjoLBWmttIKj9Jzut0UP0dZlsue3fYbJ3++ojbU=",
|
||||
"owner": "hakimel",
|
||||
"repo": "reveal.js",
|
||||
"rev": "039972c730690af7a83a5cb832056a7cc8b565d7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hakimel",
|
||||
"repo": "reveal.js",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"deploy": [
|
||||
"digga",
|
||||
"deploy"
|
||||
],
|
||||
"digga": "digga",
|
||||
"emacs-overlay": "emacs-overlay",
|
||||
"home": "home",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgsDevInput": "nixpkgsDevInput",
|
||||
"nur": "nur",
|
||||
"stable": "stable",
|
||||
"unstable": "unstable"
|
||||
"agenix": "agenix",
|
||||
"doomEmacs": "doomEmacs",
|
||||
"homeManager": "homeManager",
|
||||
"nixpkgsStable": "nixpkgsStable",
|
||||
"nixpkgsUnstable": "nixpkgsUnstable",
|
||||
"preCommitHooks": "preCommitHooks"
|
||||
}
|
||||
},
|
||||
"stable": {
|
||||
"rotate-text": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1653653155,
|
||||
"narHash": "sha256-zeKfULtxT5f7yDHhg7awVhVEsTsMNGNS2/7xlymUIFU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "13c15a84ffa02c5dd288f2398cd6eaf107d16dc5",
|
||||
"lastModified": 1322962747,
|
||||
"narHash": "sha256-SOeOgSlcEIsKhUiYDJv0p+mLUb420s9E2BmvZQvZ0wk=",
|
||||
"owner": "debug-ito",
|
||||
"repo": "rotate-text.el",
|
||||
"rev": "48f193697db996855aee1ad2bc99b38c6646fe76",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "release-21.11",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "debug-ito",
|
||||
"repo": "rotate-text.el",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"unstable": {
|
||||
"sln-mode": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1653581809,
|
||||
"narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "83658b28fe638a170a19b8933aa008b30640fbd1",
|
||||
"lastModified": 1423727528,
|
||||
"narHash": "sha256-XqkqPyEJuTtFslOz1fpTf/Klbd/zA7IGpzpmum/MGao=",
|
||||
"owner": "sensorflo",
|
||||
"repo": "sln-mode",
|
||||
"rev": "0f91d1b957c7d2a7bab9278ec57b54d57f1dbd9c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "sensorflo",
|
||||
"repo": "sln-mode",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ts-fold": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1658223568,
|
||||
"narHash": "sha256-HxUAg+MUbH8nNhKtRzZDeN/a/sCQHSpDRCK2nvvHp8g=",
|
||||
"owner": "jcs-elpa",
|
||||
"repo": "ts-fold",
|
||||
"rev": "ea554f10e79ed9846662b1639adc4b86783ecfc6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "jcs-elpa",
|
||||
"repo": "ts-fold",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1648297722,
|
||||
"narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
|
||||
"lastModified": 1653893745,
|
||||
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
|
||||
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -428,6 +585,22 @@
|
|||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ws-butler": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1634511126,
|
||||
"narHash": "sha256-c0y0ZPtxxICPk+eaNbbQf6t+FRCliNY54CCz9QHQ8ZI=",
|
||||
"owner": "hlissner",
|
||||
"repo": "ws-butler",
|
||||
"rev": "572a10c11b6cb88293de48acbb59a059d36f9ba5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hlissner",
|
||||
"repo": "ws-butler",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
|
|
165
flake.nix
165
flake.nix
|
@ -1,145 +1,36 @@
|
|||
{
|
||||
description = "A complete, declarative and reproducible configuration of my entire Nix fleet";
|
||||
description = "A complete, declarative, and reproducible configuration of my entire Nix fleet";
|
||||
|
||||
inputs =
|
||||
{
|
||||
stable.url = github:nixos/nixpkgs/release-21.11;
|
||||
unstable.url = github:nixos/nixpkgs/nixos-unstable;
|
||||
nixpkgsDevInput.url = github:aciceri/nixpkgs;
|
||||
|
||||
nur.url = github:nix-community/NUR;
|
||||
|
||||
digga.url = github:divnix/digga/hotfix-exported-overlays; # waiting for https://github.com/divnix/digga/issues/464
|
||||
digga.inputs.nixpkgs.follows = "unstable";
|
||||
digga.inputs.nixlib.follows = "unstable";
|
||||
digga.inputs.home-manager.follows = "unstable";
|
||||
|
||||
home.url = github:nix-community/home-manager;
|
||||
home.inputs.nixpkgs.follows = "unstable";
|
||||
|
||||
deploy.follows = "digga/deploy";
|
||||
|
||||
emacs-overlay.url = github:nix-community/emacs-overlay;
|
||||
emacs-overlay.inputs.nixpkgs.follows = "unstable";
|
||||
|
||||
nixos-hardware.url = github:NixOS/nixos-hardware;
|
||||
inputs = {
|
||||
nixpkgsUnstable.url = github:NixOS/nixpkgs/nixos-unstable;
|
||||
nixpkgsStable.url = github:NixOS/nixpkgs/nixos-22.05;
|
||||
homeManager = {
|
||||
url = github:nix-community/home-manager;
|
||||
inputs.nixpkgs.follows = "nixpkgsUnstable";
|
||||
};
|
||||
preCommitHooks.url = github:cachix/pre-commit-hooks.nix;
|
||||
agenix.url = github:ryantm/agenix;
|
||||
doomEmacs.url = github:nix-community/nix-doom-emacs;
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ self
|
||||
, stable
|
||||
, unstable
|
||||
, nixpkgsDevInput
|
||||
, digga
|
||||
, home
|
||||
, nixos-hardware
|
||||
, emacs-overlay
|
||||
, nur
|
||||
, deploy
|
||||
, ...
|
||||
} @ inputs:
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgsUnstable,
|
||||
nixpkgsStable,
|
||||
homeManager,
|
||||
preCommitHooks,
|
||||
agenix,
|
||||
doomEmacs,
|
||||
} @ inputs: let
|
||||
utils = (import ./utils) inputs;
|
||||
inherit (utils) lib mkConfigurations mkVmApps checkFormatting formatApp mkDevShell;
|
||||
in {
|
||||
nixosConfigurations = mkConfigurations;
|
||||
|
||||
digga.lib.mkFlake
|
||||
{
|
||||
inherit self inputs;
|
||||
apps = lib.recursiveUpdate (mkVmApps self.nixosConfigurations) formatApp;
|
||||
|
||||
channelsConfig = { allowUnfree = true; };
|
||||
checks = checkFormatting ./.;
|
||||
|
||||
channels = {
|
||||
stable = {
|
||||
imports = [ (digga.lib.importOverlays ./overlays) ];
|
||||
};
|
||||
unstable = {
|
||||
imports = [ (digga.lib.importOverlays ./overlays) ];
|
||||
};
|
||||
};
|
||||
|
||||
sharedOverlays = [
|
||||
(
|
||||
final: prev: {
|
||||
__dontExport = true;
|
||||
lib = prev.lib.extend (
|
||||
lfinal: lprev: {
|
||||
our = self.lib;
|
||||
}
|
||||
);
|
||||
}
|
||||
)
|
||||
emacs-overlay.overlay
|
||||
nur.overlay
|
||||
deploy.overlay
|
||||
(import ./pkgs {
|
||||
nixpkgsStableInput = stable;
|
||||
nixpkgsDevInput = nixpkgsDevInput;
|
||||
})
|
||||
];
|
||||
|
||||
nixos = {
|
||||
hostDefaults = {
|
||||
channelName = "stable";
|
||||
imports = [ (digga.lib.importExportableModules ./modules) ];
|
||||
modules = [
|
||||
# { lib.our = self.lib; }
|
||||
digga.nixosModules.bootstrapIso
|
||||
digga.nixosModules.nixConfig
|
||||
home.nixosModules.home-manager
|
||||
];
|
||||
};
|
||||
hosts = {
|
||||
pc = {
|
||||
system = "x86_64-linux";
|
||||
channelName = "unstable";
|
||||
imports = [{ modules = ./hosts/pc; }];
|
||||
};
|
||||
hs = {
|
||||
system = "x86_64-linux";
|
||||
channelName = "stable";
|
||||
imports = [{ modules = ./hosts/hs; }];
|
||||
};
|
||||
pbp = {
|
||||
system = "aarch64-linux";
|
||||
channelName = "unstable";
|
||||
imports = [{ modules = ./hosts/pbp; }];
|
||||
modules = [
|
||||
"${nixos-hardware}/pine64/pinebook-pro"
|
||||
];
|
||||
};
|
||||
};
|
||||
importables = rec {
|
||||
profiles = digga.lib.rakeLeaves ./profiles // {
|
||||
users = digga.lib.rakeLeaves ./users;
|
||||
};
|
||||
suites = with profiles; rec {
|
||||
base = [ core upower users.ccr users.root ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home = {
|
||||
imports = [ (digga.lib.importExportableModules ./users/modules) ];
|
||||
modules = [ ];
|
||||
importables = rec {
|
||||
profiles = digga.lib.rakeLeaves ./users/profiles;
|
||||
suites = with profiles; rec {
|
||||
base = [ direnv git zsh gpg password-store udiskie tmux ];
|
||||
emails = [ mails ];
|
||||
shell = [ zsh exa fzf ];
|
||||
gui = [ sway xdg gtk foot bat ];
|
||||
browser = [ firefox chromium qutebrowser tor-browser ];
|
||||
multimedia = [ mpv zathura ];
|
||||
dev = [ vim emacs vscode lorri direnv qmk ];
|
||||
modelling = [ blender cura ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
devshell = ./shell;
|
||||
|
||||
homeConfigurations = digga.lib.mkHomeConfigurations
|
||||
self.nixosConfigurations;
|
||||
|
||||
deploy.nodes = digga.lib.mkDeployNodes
|
||||
self.nixosConfigurations
|
||||
{ };
|
||||
};
|
||||
devShells = mkDevShell;
|
||||
};
|
||||
}
|
||||
|
|
12
hmModules/emacs/default.nix
Normal file
12
hmModules/emacs/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{pkgs, ...}: {
|
||||
programs.emacs.enable = true;
|
||||
programs.doom-emacs = {
|
||||
enable = true;
|
||||
package = pkgs.emacs28NativeComp;
|
||||
doomPrivateDir = ../../doom.d;
|
||||
};
|
||||
|
||||
services.emacs = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
18
hmModules/firefox/default.nix
Normal file
18
hmModules/firefox/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{pkgs, ...}: {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
profiles.ccr = {
|
||||
settings = {
|
||||
"browser.startup.homepage" = "https://google.it";
|
||||
"browser.search.region" = "IT";
|
||||
"browser.search.isUS" = false;
|
||||
"distribution.searchplugins.defaultLocale" = "it-IT";
|
||||
"general.useragent.locale" = "it-IT";
|
||||
"browser.bookmarks.showMobileBookmarks" = true;
|
||||
"browser.download.folderList" = 2;
|
||||
"browser.download.lastDir" = "/home/ccr/downloads/";
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
33
hmModules/git/default.nix
Normal file
33
hmModules/git/default.nix
Normal file
|
@ -0,0 +1,33 @@
|
|||
{pkgs, ...}: let
|
||||
config = {
|
||||
name = "Andrea Ciceri";
|
||||
email = "andrea.ciceri@autistici.org";
|
||||
};
|
||||
in {
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.gitAndTools.gitFull;
|
||||
|
||||
extraConfig = {
|
||||
ui.color = true;
|
||||
pull.rebase = false;
|
||||
rebase.autostash = true;
|
||||
};
|
||||
|
||||
userName = config.name;
|
||||
userEmail = config.email;
|
||||
signing = {
|
||||
signByDefault = true;
|
||||
key = config.email;
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
url =
|
||||
if pkgs.stdenv.hostPlatform.isDarwin
|
||||
then {}
|
||||
else {
|
||||
"ssh://git@github.com/" = {insteadOf = https://github.com/;};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
16
hmModules/gpg/default.nix
Normal file
16
hmModules/gpg/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{pkgs, ...}: {
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
sshKeys = ["CE2FD0D9BECBD8876811714925066CC257413416"];
|
||||
extraConfig = ''
|
||||
allow-emacs-pinentry
|
||||
allow-loopback-pinentry
|
||||
'';
|
||||
};
|
||||
|
||||
programs.gpg = {
|
||||
enable = true;
|
||||
settings = {};
|
||||
};
|
||||
}
|
3
hmModules/mpv/default.nix
Normal file
3
hmModules/mpv/default.nix
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
programs.mpv.enable = true;
|
||||
}
|
|
@ -1,9 +1,14 @@
|
|||
{
|
||||
services.password-store-sync.enable = true;
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.password-store = {
|
||||
enable = true;
|
||||
settings = {
|
||||
PASSWORD_STORE_DIR = "/home/ccr/.password-store";
|
||||
};
|
||||
};
|
||||
services.password-store-sync.enable = true;
|
||||
}
|
|
@ -1,6 +1,4 @@
|
|||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
{pkgs, ...}: {
|
||||
programs.qutebrowser = {
|
||||
enable = true;
|
||||
searchEngines = {
|
||||
|
@ -23,7 +21,7 @@
|
|||
};
|
||||
};
|
||||
settings = {
|
||||
url.start_pages = [ "https://searx.be" ];
|
||||
url.start_pages = ["https://searx.be"];
|
||||
editor.command = [
|
||||
"emacsclient"
|
||||
"+{line}:{column}"
|
||||
|
@ -41,9 +39,8 @@
|
|||
comment = "Qutebrowser";
|
||||
desktopName = "qutebrowser";
|
||||
type = "Application";
|
||||
mimeTypes = [ "x-scheme-handler/https" ];
|
||||
mimeTypes = ["x-scheme-handler/https"];
|
||||
}
|
||||
)
|
||||
];
|
||||
}
|
||||
|
|
@ -1,5 +1,28 @@
|
|||
{ pkgs, config, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.bat.enable = true;
|
||||
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
config = {
|
||||
warn_timeout = "60s"; # default was 5s
|
||||
};
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
programs.exa = {
|
||||
enable = true;
|
||||
enableAliases = true;
|
||||
};
|
||||
|
||||
programs.fzf.enable = true;
|
||||
|
||||
programs.vim.enable = true;
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableAutosuggestions = true;
|
||||
|
@ -55,7 +78,7 @@
|
|||
NIX_BUILD_SHELL = "${pkgs.zsh-nix-shell}/scripts/buildShellShim.zsh";
|
||||
PROMPT = "\\\${IN_NIX_SHELL:+[nix-shell] }$PROMPT";
|
||||
};
|
||||
loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec sway";
|
||||
loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec startx";
|
||||
initExtra =
|
||||
if pkgs.stdenv.hostPlatform.isDarwin
|
||||
then "if test -e /etc/static/bashrc; then source /etc/static/bashrc > /dev/null 2>&1; fi"
|
|
@ -1,18 +0,0 @@
|
|||
{ profiles, ... }:
|
||||
{
|
||||
# build with: `bud build bootstrap bootstrapIso`
|
||||
# reachable on the local link via ssh root@fe80::47%eno1
|
||||
# where 'eno1' is replaced by your own machine's network
|
||||
# interface that has the local link to the target machine
|
||||
imports = [
|
||||
# profiles.networking
|
||||
profiles.core
|
||||
profiles.users.root # make sure to configure ssh keys
|
||||
profiles.users.ccr
|
||||
];
|
||||
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
|
||||
# will be overridden by the bootstrapIso instrumentation
|
||||
fileSystems."/" = { device = "/dev/disk/by-label/nixos"; };
|
||||
}
|
|
@ -1,334 +0,0 @@
|
|||
{ config, lib, pkgs, profiles, ... }:
|
||||
|
||||
{
|
||||
imports = with profiles; [ sshd ];
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = [ "ohci_pci" "ehci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
||||
loader.grub = pkgs.lib.mkForce {
|
||||
enable = true;
|
||||
version = 2;
|
||||
device = "/dev/disk/by-id/ata-OCZ-VERTEX_TMHAK8OARSURAIF6N1A5";
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-label/nixos";
|
||||
fsType = "btrfs";
|
||||
};
|
||||
"/mnt/archivio" = {
|
||||
device = "/dev/disk/by-label/archivio";
|
||||
fsType = "ext4";
|
||||
};
|
||||
"/mnt/film" = {
|
||||
device = "/dev/disk/by-label/film";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[{ device = "/dev/disk/by-label/swap"; }];
|
||||
|
||||
systemd.services.standby-sdb = {
|
||||
description = "Set spindown time (sleep) for /dev/sdb ";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.hdparm}/bin/hdparm -B 127 -S 241 /dev/sdb";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.standby-sdc = {
|
||||
description = "Set spindown time (sleep) for /dev/sdc ";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.hdparm}/bin/hdparm -B 127 -S 241 /dev/sdc";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.amuled.serviceConfig.Restart = pkgs.lib.mkForce "always";
|
||||
users.users.amule = {
|
||||
isNormalUser = false;
|
||||
isSystemUser = true;
|
||||
group = "amule";
|
||||
};
|
||||
users.groups."amule" = { };
|
||||
|
||||
services = {
|
||||
|
||||
samba-wsdd = {
|
||||
enable = true;
|
||||
workgroup = "WORKGROUP";
|
||||
hostname = "nas";
|
||||
discovery = true;
|
||||
};
|
||||
|
||||
samba = {
|
||||
enable = true;
|
||||
securityType = "user";
|
||||
extraConfig = ''
|
||||
workgroup = WORKGROUP
|
||||
server string = nas
|
||||
netbios name = nas
|
||||
security = user
|
||||
map to guest = bad user
|
||||
vfs objects = recycle
|
||||
recycle:repository = .recycle
|
||||
recycle:keeptree = yes
|
||||
recycle:versions = yes
|
||||
'';
|
||||
shares = {
|
||||
archivio = {
|
||||
path = "/mnt/archivio/archivio";
|
||||
comment = "archivio";
|
||||
"force user" = "ccr";
|
||||
browseable = "yes";
|
||||
writeable = "yes";
|
||||
"guest ok" = "yes";
|
||||
"read only" = "no";
|
||||
};
|
||||
film = {
|
||||
path = "/mnt/film/film";
|
||||
comment = "film";
|
||||
"force user" = "ccr";
|
||||
browseable = "yes";
|
||||
writeable = "yes";
|
||||
"guest ok" = "yes";
|
||||
"read only" = "no";
|
||||
};
|
||||
transmission = {
|
||||
path = "/mnt/archivio/transmission";
|
||||
comment = "transmission";
|
||||
"force user" = "transmission";
|
||||
browseable = "yes";
|
||||
writeable = "yes";
|
||||
"guest ok" = "yes";
|
||||
"read only" = "no";
|
||||
};
|
||||
amule = {
|
||||
path = "/mnt/archivio/amule";
|
||||
comment = "amule";
|
||||
"force user" = "ccr";
|
||||
browseable = "yes";
|
||||
writeable = "yes";
|
||||
"guest ok" = "yes";
|
||||
"read only" = "no";
|
||||
};
|
||||
musica = {
|
||||
path = "/mnt/film/musica";
|
||||
comment = "music";
|
||||
"force user" = "ccr";
|
||||
browseable = "yes";
|
||||
writeable = "no";
|
||||
"guest ok" = "yes";
|
||||
"read only" = "no";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
transmission = {
|
||||
enable = true;
|
||||
# the following json is merged to this attrset, it must have `rpc-username` and `rpc-password`
|
||||
credentialsFile = "/mnt/archivio/transmission/credentials.json";
|
||||
settings = {
|
||||
download-dir = "/mnt/archivio/transmission/";
|
||||
incomplete-dir = "/mnt/archivio/transmission/.incomplete";
|
||||
incomplete-dir-enabled = true;
|
||||
|
||||
rpc-port = 9091;
|
||||
rpc-whitelist-enabled = false;
|
||||
rpc-host-whitelist-enabled = false;
|
||||
rpc-authentication-required = true;
|
||||
};
|
||||
};
|
||||
|
||||
amule = {
|
||||
dataDir = "/mnt/archivio/amule";
|
||||
enable = true;
|
||||
user = "amule";
|
||||
};
|
||||
|
||||
calibre-web = {
|
||||
enable = true;
|
||||
listen = {
|
||||
ip = "0.0.0.0";
|
||||
port = 9092;
|
||||
};
|
||||
options.calibreLibrary = "/mnt/archivio/calibre/";
|
||||
openFirewall = true;
|
||||
};
|
||||
|
||||
syncthing = {
|
||||
enable = true;
|
||||
guiAddress = "0.0.0.0:8384";
|
||||
dataDir = "/mnt/archivio/syncthing";
|
||||
user = "ccr";
|
||||
overrideDevices = false;
|
||||
overrideFolders = false;
|
||||
folders = {
|
||||
"/mnt/archivio/syncthing/camera" = {
|
||||
id = "camera";
|
||||
};
|
||||
"/mnt/archivio/syncthing/orgzly" = {
|
||||
id = "orgzly";
|
||||
};
|
||||
"/mnt/archivio/syncthing/roam" = {
|
||||
id = "roam";
|
||||
};
|
||||
"/mnt/archivio/syncthing/whatsapp" = {
|
||||
id = "whatsapp";
|
||||
};
|
||||
"/mnt/archivio/syncthing/calls" = {
|
||||
id = "calls";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
navidrome = {
|
||||
enable = false;
|
||||
settings = {
|
||||
Address = "0.0.0.0";
|
||||
Port = 9093;
|
||||
MusicFolder = "/mnt/film/musica";
|
||||
DataFolder = "/mnt/film/musica/.navidrome";
|
||||
};
|
||||
};
|
||||
|
||||
nginx = {
|
||||
enable = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
clientMaxBodySize = "10G"; # max file size for uploads
|
||||
commonHttpConfig = ''
|
||||
log_format upstream_time '$remote_addr - $remote_user [$time_local] '
|
||||
'"$request" $status $body_bytes_sent '
|
||||
'"$http_referer" "$http_user_agent"'
|
||||
'rt=$request_time uct="$upstream_connect_time" uht="$upstream_header_time" urt="$upstream_response_time"';
|
||||
'';
|
||||
virtualHosts = {
|
||||
"torrent.ccr.ydns.eu" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:9091";
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
"sync.ccr.ydns.eu" = {
|
||||
enableACME = true;
|
||||
addSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:8384";
|
||||
};
|
||||
};
|
||||
|
||||
"books.ccr.ydns.eu" = {
|
||||
enableACME = true;
|
||||
addSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:9092";
|
||||
};
|
||||
};
|
||||
|
||||
"music.ccr.ydns.eu" = {
|
||||
enableACME = true;
|
||||
addSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://localhost:9093";
|
||||
};
|
||||
};
|
||||
|
||||
"gate.ccr.ydns.eu" = {
|
||||
enableACME = true;
|
||||
addSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://192.168.1.71:80";
|
||||
};
|
||||
};
|
||||
|
||||
"cam.ccr.ydns.eu" = {
|
||||
enableACME = true;
|
||||
addSSL = true;
|
||||
locations."/" = {
|
||||
proxyPass = "http://192.168.1.80:80";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
systemd.services.ydns =
|
||||
let
|
||||
ydnsUpdater = pkgs.writeScriptBin "ydnsUpdater" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
USER="andrea.ciceri@autistici.org"
|
||||
PASSWORD=$(cat /home/ccr/.ydns-password)
|
||||
DOMAIN="ccr.ydns.eu"
|
||||
|
||||
for SUBDOMAIN in "books" "music" "sync" "torrent" "gate" "cam"
|
||||
do
|
||||
HOST="$SUBDOMAIN.$DOMAIN"
|
||||
${pkgs.curl}/bin/curl --basic -u "$USER:$PASSWORD" --silent https://ydns.io/api/v1/update/?host=$HOST
|
||||
done
|
||||
${pkgs.curl}/bin/curl --basic -u "$USER:$PASSWORD" --silent https://ydns.io/api/v1/update/?host=$DOMAIN
|
||||
'';
|
||||
in
|
||||
{
|
||||
description = "YDNS IP updater";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
User = "ccr";
|
||||
Type = "oneshot";
|
||||
ExecStart = "${ydnsUpdater}/bin/ydnsUpdater";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.timers.ydnsUpdater = {
|
||||
wantedBy = [ "timers.target" ];
|
||||
partOf = [ "ydnsUpdater.service" ];
|
||||
timerConfig = {
|
||||
OnCalendar = "*-*-* *:00:00"; # hourly
|
||||
Unit = "ydnsUpdater.service";
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowPing = true;
|
||||
allowedTCPPorts = [
|
||||
80 # http
|
||||
139 # samba
|
||||
443 # https
|
||||
445 # samba
|
||||
4712 # amule
|
||||
4711 # amule web gui
|
||||
8384 # syncthing
|
||||
];
|
||||
allowedUDPPorts = [
|
||||
137 # samba
|
||||
138 # samba
|
||||
];
|
||||
};
|
||||
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
email = "andrea.ciceri@autistici.org";
|
||||
};
|
||||
|
||||
nix = {
|
||||
gc = {
|
||||
automatic = true;
|
||||
options = "--delete-older-than 3d";
|
||||
};
|
||||
};
|
||||
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||
}
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{ suites, ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
] ++ suites.base;
|
||||
|
||||
}
|
|
@ -1,79 +0,0 @@
|
|||
{ config, lib, pkgs, profiles, ... }:
|
||||
|
||||
{
|
||||
imports = with profiles; [ mount-nas sshd dbus avahi printing xdg syncthing ];
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = [ "usbhid" ];
|
||||
extraModulePackages = with config.boot.kernelPackages; [
|
||||
v4l2loopback
|
||||
];
|
||||
loader = {
|
||||
grub.enable = false;
|
||||
generic-extlinux-compatible.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
opengl.enable = true;
|
||||
pulseaudio = {
|
||||
enable = true;
|
||||
package = pkgs.pulseaudioFull;
|
||||
};
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
settings = {
|
||||
General = {
|
||||
MultiProfile = "multiple";
|
||||
ControllerMode = "dual";
|
||||
AutoConnect = true;
|
||||
};
|
||||
Policy = {
|
||||
AutoEnable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.blueman.enable = true;
|
||||
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
interfaces.wlan0.useDHCP = true;
|
||||
networkmanager.enable = true;
|
||||
};
|
||||
|
||||
time.timeZone = "Europe/Rome";
|
||||
# location = {
|
||||
# # not using geoclue since it's broken on aarch64
|
||||
# latitude = "45.4654219";
|
||||
# longitude = "45.4654219";
|
||||
# };
|
||||
|
||||
fileSystems = {
|
||||
"/" = {
|
||||
device = "/dev/disk/by-uuid/5aa67d2d-93fd-4e7c-b634-aa8d7b65bbb8";
|
||||
fsType = "btrfs";
|
||||
};
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/C406-2AFC";
|
||||
fsType = "vfat";
|
||||
};
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[{ device = "/dev/disk/by-uuid/e236d328-496e-4cf8-ba54-857789ca258f"; }];
|
||||
|
||||
nix = {
|
||||
gc = {
|
||||
automatic = true;
|
||||
options = "--delete-older-than 3d";
|
||||
};
|
||||
};
|
||||
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
|
||||
|
||||
services.logind.extraConfig = ''
|
||||
HandlePowerKey=ignore
|
||||
'';
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
{ suites, ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
] ++ suites.base;
|
||||
}
|
|
@ -1,89 +0,0 @@
|
|||
{ config, lib, pkgs, profiles, ... }:
|
||||
|
||||
{
|
||||
imports = with profiles; [ mount-nas sshd dbus avahi printing xdg docker adb syncthing qmk-udev ];
|
||||
|
||||
system.stateVersion = "22.05";
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||
initrd.kernelModules = [ ];
|
||||
kernelModules = [ "kvm-intel" "snd-aloop" "v4l2loopback" ];
|
||||
extraModulePackages = with config.boot.kernelPackages; [
|
||||
v4l2loopback
|
||||
pkgs.v4l2loopback-dc
|
||||
];
|
||||
|
||||
extraModprobeConfig = ''
|
||||
options v42loopback exclusive_caps=1 max_buffers=2
|
||||
'';
|
||||
|
||||
binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||||
|
||||
loader.grub = pkgs.lib.mkForce {
|
||||
enable = true;
|
||||
version = 2;
|
||||
device = "/dev/sda";
|
||||
};
|
||||
};
|
||||
|
||||
sound.enable = true;
|
||||
|
||||
hardware = {
|
||||
opengl.enable = true;
|
||||
pulseaudio = {
|
||||
enable = true;
|
||||
package = pkgs.pulseaudioFull;
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems."/" =
|
||||
{
|
||||
device = "/dev/disk/by-label/nixos";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/home" =
|
||||
{
|
||||
device = "/dev/disk/by-label/home";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[{ device = "/dev/disk/by-label/swap"; }];
|
||||
|
||||
nix = {
|
||||
gc = {
|
||||
automatic = lib.mkForce false; # Temporarily disabled, TODO: re-enable
|
||||
options = "--delete-older-than 3d";
|
||||
};
|
||||
# package = pkgs.nixFromMaster;
|
||||
package = pkgs.nix;
|
||||
extraOptions = lib.mkForce ''
|
||||
experimental-features = ca-derivations nix-command flakes
|
||||
|
||||
keep-outputs = true
|
||||
keep-derivations = true
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.nix-daemon.serviceConfig = {
|
||||
LimitNOFILE = lib.mkForce "Infinity"; # 131072; # should help with fds errors due to experimental feature `ca-derivations`
|
||||
};
|
||||
|
||||
networking.firewall = {
|
||||
enable = true;
|
||||
allowPing = true;
|
||||
};
|
||||
|
||||
|
||||
services.hydra = {
|
||||
enable = true;
|
||||
hydraURL = "http://localhost:3000"; # externally visible URL
|
||||
notificationSender = "hydra@localhost"; # e-mail of hydra service
|
||||
# a standalone hydra will require you to unset the buildMachinesFiles list to avoid using a nonexistant /etc/nix/machines
|
||||
buildMachinesFiles = [ ];
|
||||
# you will probably also want, otherwise *everything* will be built from scratch
|
||||
useSubstitutes = true;
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{ suites, ... }:
|
||||
{
|
||||
imports = [
|
||||
./configuration.nix
|
||||
] ++ suites.base;
|
||||
|
||||
}
|
151
hosts/thinkpad/default.nix
Normal file
151
hosts/thinkpad/default.nix
Normal file
|
@ -0,0 +1,151 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
fleetModules,
|
||||
...
|
||||
}: {
|
||||
imports = fleetModules [
|
||||
"common"
|
||||
"audio"
|
||||
"ccr"
|
||||
"exwm"
|
||||
];
|
||||
|
||||
hardware.cpu.intel.updateMicrocode = true;
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
|
||||
boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "sd_mod"];
|
||||
boot.initrd.kernelModules = [];
|
||||
boot.kernelModules = ["kvm-intel"];
|
||||
boot.extraModulePackages = [];
|
||||
|
||||
fileSystems."/" = {
|
||||
device = "rpool/system/root";
|
||||
fsType = "zfs";
|
||||
};
|
||||
|
||||
fileSystems."/nix" = {
|
||||
device = "rpool/system/nix";
|
||||
fsType = "zfs";
|
||||
};
|
||||
|
||||
fileSystems."/home" = {
|
||||
device = "rpool/user/home";
|
||||
fsType = "zfs";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-label/boot";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices = [
|
||||
{device = "/dev/disk/by-uuid/3cab8a5d-602c-4e3d-b436-c0e5595aeb94";}
|
||||
];
|
||||
|
||||
networking.hostId = "8ef630a9";
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
#networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
|
||||
#networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
||||
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
copyKernels = true;
|
||||
efiSupport = true;
|
||||
devices = ["nodev"];
|
||||
efiInstallAsRemovable = true;
|
||||
};
|
||||
|
||||
networking.hostName = "thinkpad"; # Define your hostname.
|
||||
# Pick only one of the below networking options.
|
||||
#networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||
# Configure network proxy if necessary
|
||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
console = {
|
||||
font = "Lat2-Terminus16";
|
||||
# keyMap = "us";
|
||||
useXkbConfig = true; # use xkbOptions in tty.
|
||||
};
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
# services.xserver.enable = true;
|
||||
|
||||
# Configure keymap in X11
|
||||
# services.xserver.layout = "us";
|
||||
# services.xserver.xkbOptions = {
|
||||
# "eurosign:e";
|
||||
# "caps:escape" # map caps to escape.
|
||||
# };
|
||||
|
||||
# Enable CUPS to print documents.
|
||||
# services.printing.enable = true;
|
||||
|
||||
# Enable sound.
|
||||
# sound.enable = true;
|
||||
# hardware.pulseaudio.enable = true;
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
|
||||
#Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
#users.users.jane = {
|
||||
# isNormalUser = true;
|
||||
# extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||
# packages = with pkgs; [
|
||||
# firefox
|
||||
# thunderbird
|
||||
# ];
|
||||
# };
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
networkmanager
|
||||
wget
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
# services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
# Copy the NixOS configuration file and link it from the resulting system
|
||||
# (/run/current-system/configuration.nix). This is useful in case you
|
||||
# accidentally delete configuration.nix.
|
||||
# system.copySystemConfiguration = true;
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "22.05"; # Did you read the comment?
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
let
|
||||
rev = "e7e5d481a0e15dcd459396e55327749989e04ce0";
|
||||
flake = (import
|
||||
(
|
||||
fetchTarball {
|
||||
url = "https://github.com/edolstra/flake-compat/archive/${rev}.tar.gz";
|
||||
sha256 = "0zd3x46fswh5n6faq4x2kkpy6p3c6j593xbdlbsl40ppkclwc80x";
|
||||
}
|
||||
)
|
||||
{
|
||||
src = ../../.;
|
||||
});
|
||||
in
|
||||
flake
|
|
@ -1,10 +0,0 @@
|
|||
{ ... }:
|
||||
let
|
||||
inherit (default.inputs.nixos) lib;
|
||||
|
||||
host = configs.${hostname} or configs.NixOS;
|
||||
configs = default.nixosConfigurations;
|
||||
default = (import ../.).defaultNix;
|
||||
hostname = lib.fileContents /etc/hostname;
|
||||
in
|
||||
host
|
|
@ -1,2 +0,0 @@
|
|||
{ lib }:
|
||||
lib.makeExtensible (self: { })
|
8
modules/audio/default.nix
Normal file
8
modules/audio/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{pkgs, ...}: {
|
||||
sound.enable = true;
|
||||
|
||||
hardware.pulseaudio = {
|
||||
enable = true;
|
||||
package = pkgs.pulseaudioFull;
|
||||
};
|
||||
}
|
|
@ -1,43 +1,10 @@
|
|||
{ pkgs, suites, lib, config, ... }:
|
||||
{
|
||||
home-manager.users.ccr = { suites, ... }: {
|
||||
imports = with suites; shell ++ base ++ (if config.networking.hostName != "hs" then
|
||||
(
|
||||
gui ++ browser ++ multimedia ++ emails ++ dev ++ modelling
|
||||
) else [ ]);
|
||||
|
||||
home.packages = with pkgs; [
|
||||
ack
|
||||
ranger
|
||||
umoria
|
||||
droidcam
|
||||
] ++ (if config.networking.hostName != "hs" then [
|
||||
imv
|
||||
calibre
|
||||
# scrcpy # TODO: create a profile only for x86_64 (not available for aarch64)
|
||||
element-desktop
|
||||
gtk-engine-murrine
|
||||
gtk_engines
|
||||
gsettings-desktop-schemas
|
||||
lxappearance
|
||||
yarn
|
||||
yarn2nix
|
||||
python39Packages.poetry
|
||||
texlive.combined.scheme-full
|
||||
gphoto2
|
||||
rawtherapee
|
||||
translate-shell
|
||||
] ++
|
||||
(if !stdenv.hostPlatform.isAarch64 then [
|
||||
slack
|
||||
wineWowPackages.full
|
||||
vial
|
||||
deploy-rs.deploy-rs # to slow to cross compile for aarch64
|
||||
digikam
|
||||
] else [ ])
|
||||
else [ ]);
|
||||
};
|
||||
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
fleetHmModules,
|
||||
...
|
||||
}: {
|
||||
users.users.ccr = {
|
||||
uid = 1000;
|
||||
hashedPassword = "$6$JGOefuRk7kL$fK9.5DFnLLoW08GL4eKRyf958jyZdw//hLMaz4pp28jJuSFb24H6R3dgt1.sMs0huPY85rludSw4dnQJG5xSw1"; # mkpasswd -m sha-512
|
||||
|
@ -60,4 +27,22 @@
|
|||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDynKeHTnXOTCi+MH2agM4k5uBkTL+W5xkL/ep3DKuTIb9MbKjHkRIquSdVRAit4ZQVQN+S3yoCXCRdLLurM3/a6C7vc/a3UfGPyV/oDYDCdHNsOwimqIQg8Pc0WtnevLpZTC2VR4UU8zzaD/mmEWqxNszaNNUve+Fy0lwg6jn6vTnQCupbyMnghherozPJu94H/JLuDEcPT0wZUmBjhjT+yHp65Yk8hKVb1jRqEdjAHM4yZf6ceIxI9NMGeSnAKf/b8IsO6y7A93NZ75CnD6AW9Rclemi+nOqZo9zQ2m2LRtMTHSoNOLLkNQCCD+l2G4w1wPMONw4mz1vR917iJdd+5BXDtEVwScDfOmqVewynxkfztSvB+qTDzdqde3NO8fFA8jMk3rUXXfIl/Yb0G87wVT/Jcl7+ZBch8s+ljPsmyy5RY+uXLgKgE1tne0KJuzeJtxSAzTrPUhILB/A8PuJUzVGVWAdGRcusOc/0SdsluFsa11E0D946JcgNo72bWm0="
|
||||
];
|
||||
};
|
||||
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.ccr = {
|
||||
imports = fleetHmModules [
|
||||
"shell"
|
||||
"emacs"
|
||||
"mpv"
|
||||
"firefox"
|
||||
"qutebrowser"
|
||||
"git"
|
||||
"gpg"
|
||||
"password-store"
|
||||
];
|
||||
home.packages = with pkgs; [
|
||||
];
|
||||
home.stateVersion = config.system.stateVersion;
|
||||
};
|
||||
}
|
16
modules/common/default.nix
Normal file
16
modules/common/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
lib,
|
||||
fleetModules,
|
||||
...
|
||||
}: {
|
||||
imports = fleetModules [
|
||||
"nix"
|
||||
];
|
||||
|
||||
system.stateVersion = lib.mkForce "22.11";
|
||||
time.timeZone = lib.mkDefault "Europe/Rome";
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
users.mutableUsers = false;
|
||||
users.users.root.password = "password";
|
||||
i18n.defaultLocale = "en_US.UTF-8";
|
||||
}
|
36
modules/exwm/default.nix
Normal file
36
modules/exwm/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{pkgs, ...}: {
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
autorun = false;
|
||||
libinput.enable = true;
|
||||
displayManager.startx.enable = true;
|
||||
};
|
||||
|
||||
hardware.opengl.enable = true;
|
||||
|
||||
home-manager.users.ccr.home.file.".xinitrc".text = ''
|
||||
# Disable access control for the current user.
|
||||
xhost +SI:localuser:$USER
|
||||
|
||||
# Make Java applications aware this is a non-reparenting window manager.
|
||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||
|
||||
# Set default cursor.
|
||||
xsetroot -cursor_name left_ptr
|
||||
|
||||
# Set keyboard repeat rate.
|
||||
xset r rate 200 60
|
||||
|
||||
# Uncomment the following block to use the exwm-xim module.
|
||||
#export XMODIFIERS=@im=exwm-xim
|
||||
#export GTK_IM_MODULE=xim
|
||||
#export QT_IM_MODULE=xim
|
||||
#export CLUTTER_IM_MODULE=xim
|
||||
|
||||
# Lockscreen
|
||||
exec ${pkgs.xss-lock}/bin/xss-lock -- ${pkgs.i3lock-blur}/bin/i3lock-blur &
|
||||
|
||||
# Finally start Emacs
|
||||
exec emacsclient --eval "(exwm-init)" --create-frame -F "((fullscreen . fullboth))"
|
||||
'';
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
{ config, ... }: {
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
home.sessionVariables = {
|
||||
inherit (config.environment.sessionVariables) NIX_PATH;
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{ channel, inputs, ... }: {
|
||||
nix.nixPath = [
|
||||
"nixpkgs=${channel.input}"
|
||||
"nixos-config=${../lib/compat/nixos}"
|
||||
"home-manager=${inputs.home}"
|
||||
];
|
||||
}
|
24
modules/nix/default.nix
Normal file
24
modules/nix/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
nix = {
|
||||
settings = {
|
||||
auto-optimise-store = true;
|
||||
};
|
||||
|
||||
extraOptions = ''
|
||||
experimental-features = nix-command flakes ca-derivations
|
||||
'';
|
||||
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
options = "--delete-older-than 30d";
|
||||
};
|
||||
|
||||
optimise.automatic = true;
|
||||
};
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
final: prev: {
|
||||
# Since: https://github.com/NixOS/nixpkgs/pull/126137
|
||||
nix-direnv =
|
||||
if builtins.hasAttr "enableFlakes" prev.nix-direnv.override.__functionArgs
|
||||
then
|
||||
prev.nix-direnv.override
|
||||
{
|
||||
enableFlakes = true;
|
||||
}
|
||||
else prev.nix-direnv;
|
||||
}
|
|
@ -1,99 +0,0 @@
|
|||
{ fetchFromGitHub
|
||||
, stdenv
|
||||
, lib
|
||||
, zlib
|
||||
, wxGTK
|
||||
, perl
|
||||
, cryptopp
|
||||
, libupnp
|
||||
, gettext
|
||||
, libpng
|
||||
, autoreconfHook
|
||||
, pkg-config
|
||||
, makeWrapper
|
||||
, libX11
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
monolithic = true; # build monolithic amule
|
||||
enableDaemon = true; # build amule daemon
|
||||
httpServer = false; # build web interface for the daemon
|
||||
client = false; # build amule remote gui
|
||||
|
||||
oldAmule = stdenv.mkDerivation rec {
|
||||
pname = "amule";
|
||||
version = "unstable-20201006";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "amule-project";
|
||||
repo = "amule";
|
||||
rev = "6f8951527eda670c7266984ce476061bfe8867fc";
|
||||
sha256 = "12b44b6hz3mb7nsn6xhzvm726xs06xcim013i1appif4dr8njbx1";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/libs/ec/file_generator.pl \
|
||||
--replace /usr/bin/perl ${perl}/bin/perl
|
||||
# autotools expects these to be in the root
|
||||
cp docs/{AUTHORS,README} .
|
||||
cp docs/Changelog ./ChangeLog
|
||||
cp docs/Changelog ./NEWS
|
||||
'';
|
||||
|
||||
preAutoreconf = ''
|
||||
pushd src/pixmaps/flags_xpm >/dev/null
|
||||
./makeflags.sh
|
||||
popd >/dev/null
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook gettext makeWrapper pkg-config ];
|
||||
|
||||
buildInputs = [
|
||||
zlib
|
||||
wxGTK
|
||||
perl
|
||||
cryptopp.dev
|
||||
libupnp
|
||||
] ++ lib.optional httpServer libpng
|
||||
++ lib.optional client libX11;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
configureFlags = [
|
||||
"--with-crypto-prefix=${cryptopp.dev}"
|
||||
"--disable-debug"
|
||||
"--enable-optimize"
|
||||
(lib.enableFeature monolithic "monolithic")
|
||||
(lib.enableFeature enableDaemon "amule-daemon")
|
||||
(lib.enableFeature client "amule-gui")
|
||||
(lib.enableFeature httpServer "webserver")
|
||||
];
|
||||
|
||||
# aMule will try to `dlopen' libupnp and libixml, so help it
|
||||
# find them.
|
||||
postInstall = lib.optionalString monolithic ''
|
||||
wrapProgram $out/bin/amule \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libupnp ]}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Peer-to-peer client for the eD2K and Kademlia networks";
|
||||
longDescription = ''
|
||||
aMule is an eMule-like client for the eD2k and Kademlia
|
||||
networks, supporting multiple platforms. Currently aMule
|
||||
(officially) supports a wide variety of platforms and operating
|
||||
systems, being compatible with more than 60 different
|
||||
hardware+OS configurations. aMule is entirely free, its
|
||||
sourcecode released under the GPL just like eMule, and includes
|
||||
no adware or spyware as is often found in proprietary P2P
|
||||
applications.
|
||||
'';
|
||||
|
||||
homepage = "https://github.com/amule-project/amule";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ phreedom ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
};
|
||||
in
|
||||
oldAmule
|
|
@ -1,10 +0,0 @@
|
|||
{ 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
|
||||
'';
|
||||
})
|
|
@ -1,29 +0,0 @@
|
|||
{ nixpkgsStableInput, nixpkgsDevInput }:
|
||||
final: prev:
|
||||
let
|
||||
config.allowUnfree = true;
|
||||
overlays = [ ];
|
||||
nixpkgsStable = (import nixpkgsStableInput {
|
||||
inherit config overlays;
|
||||
system = prev.system;
|
||||
}).pkgs;
|
||||
nixpkgsDev = (import nixpkgsDevInput {
|
||||
inherit config overlays;
|
||||
system = prev.system;
|
||||
}).pkgs;
|
||||
in
|
||||
{
|
||||
# keep sources this first
|
||||
# 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; };
|
||||
qutebrowser = import ./qutebrowser { pkgs = prev; };
|
||||
slack = import ./slack { pkgs = prev; };
|
||||
umoria = nixpkgsDev.umoria;
|
||||
v4l2loopback-dc = prev.callPackage (import ./v4l2loopback-dc) { kernel = prev.linux; };
|
||||
# then, call packages with `final.callPackage`
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
{ stdenv, fetchzip, pkgconfig, ffmpeg, gtk3-x11, libjpeg, libusbmuxd, alsaLib, speex }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "droidcam";
|
||||
version = "0";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/dev47apps/droidcam/archive/refs/tags/v1.7.2.zip";
|
||||
sha256 = "1iskvs5p71gkiinj78kkl9ygl5il9rdbzm0h85hwyzm2xwkcybrp";
|
||||
};
|
||||
|
||||
sourceRoot = "source";
|
||||
|
||||
buildInputs = [ pkgconfig ];
|
||||
nativeBuildInputs = [ ffmpeg gtk3-x11 libusbmuxd alsaLib libjpeg speex ];
|
||||
|
||||
postPatch = ''
|
||||
cat Makefile
|
||||
ls ${libusbmuxd.out}/lib
|
||||
sed -i -e 's:-lusbmuxd:-I ${libusbmuxd.out} ${libusbmuxd.out}/lib/libusbmuxd-2.0.so:' Makefile
|
||||
sed -i -e 's:/opt/libjpeg-turbo:${libjpeg.out}:' Makefile
|
||||
sed -i -e 's:$(JPEG_DIR)/lib`getconf LONG_BIT`:${libjpeg.out}/lib:' Makefile
|
||||
sed -i -e 's:libturbojpeg.a:libturbojpeg.so:' Makefile
|
||||
cat Makefile
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp droidcam droidcam-cli $out/bin/
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "DroidCam Linux client";
|
||||
homepage = https://github.com/aramg/droidcam;
|
||||
};
|
||||
}
|
|
@ -1,87 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
# TODO: when `emcasPgtkNativeComp` will build on aarch64 re-use it
|
||||
myEmacs = with pkgs; if stdenv.hostPlatform.isAarch64 then emacs else emacsPgtkNativeComp;
|
||||
emacsWithPackages = (pkgs.emacsPackagesFor myEmacs).emacsWithPackages;
|
||||
in
|
||||
emacsWithPackages (
|
||||
epkgs: (
|
||||
with epkgs.melpaStablePackages; [ ]
|
||||
) ++ (
|
||||
with epkgs.melpaPackages; [
|
||||
# ts-fold
|
||||
aggressive-indent
|
||||
all-the-icons
|
||||
company
|
||||
company-nixos-options
|
||||
dap-mode
|
||||
diff-hl
|
||||
diredfl
|
||||
dirvish
|
||||
doom-modeline
|
||||
envrc
|
||||
evil
|
||||
evil-collection
|
||||
evil-tree-edit
|
||||
fira-code-mode
|
||||
git-auto-commit-mode
|
||||
go-translate
|
||||
good-scroll
|
||||
haskell-mode
|
||||
helm
|
||||
helm-ag
|
||||
helm-company
|
||||
helm-nixos-options
|
||||
helm-projectile
|
||||
highlight-indent-guides
|
||||
hl-todo
|
||||
lispy
|
||||
lsp-haskell
|
||||
lsp-mode
|
||||
lsp-python-ms
|
||||
lsp-ui
|
||||
magit
|
||||
magit-delta
|
||||
nix-mode
|
||||
nix-modeline
|
||||
nixos-options
|
||||
notmuch
|
||||
org-download
|
||||
org-fragtog
|
||||
org-roam
|
||||
org-roam-ui
|
||||
org-superstar
|
||||
origami
|
||||
pkgs.emacs28Packages.tree-sitter-langs
|
||||
pkgs.emacs28Packages.tsc
|
||||
projectile
|
||||
psc-ide
|
||||
psci
|
||||
purescript-mode
|
||||
rainbow-delimiters
|
||||
rainbow-identifiers
|
||||
scad-mode
|
||||
sudo-utils
|
||||
symex
|
||||
tree-edit
|
||||
tree-sitter
|
||||
treemacs
|
||||
treemacs-evil
|
||||
treemacs-icons-dired
|
||||
treemacs-magit
|
||||
treemacs-persp
|
||||
treemacs-projectile
|
||||
use-package
|
||||
visual-fill-column
|
||||
which-key
|
||||
writegood-mode
|
||||
]
|
||||
) ++ (
|
||||
with epkgs.elpaPackages; [
|
||||
modus-themes
|
||||
minimap
|
||||
]
|
||||
) ++ (
|
||||
with pkgs; [ ]
|
||||
)
|
||||
)
|
|
@ -1,8 +0,0 @@
|
|||
{ pkgs }:
|
||||
|
||||
pkgs.google-chrome.override {
|
||||
commandLineArgs = [
|
||||
"--enable-features=UseOzonePlatform"
|
||||
"--ozone-platform=wayland"
|
||||
];
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
{ nix, pkgs }:
|
||||
nix.overrideAttrs (old: {
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "NixOS";
|
||||
repo = "nix";
|
||||
rev = "3ec979fa902c49e975a9af7dc2792fb197030e04";
|
||||
hash = "sha256-mpFR1OrjayyVe8LpxJVaTLVIPPeTSIu7SDz/wXP78Vg=";
|
||||
};
|
||||
})
|
|
@ -1,9 +0,0 @@
|
|||
{ pkgs }:
|
||||
|
||||
pkgs.qutebrowser.overrideAttrs (old: {
|
||||
buildInputs = old.buildInputs ++ [ pkgs.makeWrapper ];
|
||||
postInstall = old.postInstall or "" + ''
|
||||
wrapProgram "$out/bin/qutebrowser" --set QT_QPA_PLATFORM wayland --set QT_WAYLAND_DISABLE_WINDOWDECORATION 1
|
||||
'';
|
||||
})
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
{ pkgs }:
|
||||
|
||||
pkgs.slack.overrideAttrs (old: {
|
||||
buildInputs = old.buildInputs ++ [ pkgs.makeWrapper ];
|
||||
postInstall = old.postInstall or "" + ''
|
||||
rm $out/bin/slack
|
||||
makeWrapper $out/lib/slack/slack $out/bin/slack \
|
||||
--prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \
|
||||
--prefix PATH : ${pkgs.lib.makeBinPath [pkgs.xdg-utils]} \
|
||||
--add-flags "--ozone-platform=wayland --enable-features=UseOzonePlatform,WebRTCPipeWireCapturer"
|
||||
'';
|
||||
})
|
|
@ -1,35 +0,0 @@
|
|||
{ stdenv, fetchzip, kernel }:
|
||||
|
||||
# if "Built-in-audio" (virtual device) is not shown in pavucontrol try the following
|
||||
# pacmd load-module module-alsa-source device=hw:Loopback,1,0
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "v4l2loopback-dc";
|
||||
version = "0";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/dev47apps/droidcam/archive/refs/tags/v1.7.2.zip";
|
||||
sha256 = "1iskvs5p71gkiinj78kkl9ygl5il9rdbzm0h85hwyzm2xwkcybrp";
|
||||
};
|
||||
|
||||
sourceRoot = "source/v4l2loopback";
|
||||
|
||||
KVER = "${kernel.modDirVersion}";
|
||||
KBUILD_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
|
||||
|
||||
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||
|
||||
postPatch = ''
|
||||
sed -i -e 's:/lib/modules/$(KERNELRELEASE)/build:${KBUILD_DIR}:g' Makefile
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib/modules/${KVER}/kernels/media/video
|
||||
cp v4l2loopback-dc.ko $out/lib/modules/${KVER}/kernels/media/video/
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "DroidCam kernel module v4l2loopback-dc";
|
||||
homepage = https://github.com/aramg/droidcam;
|
||||
};
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.adb.enable = !pkgs.stdenv.hostPlatform.isAarch64;
|
||||
|
||||
services.udev.packages = [
|
||||
pkgs.android-udev-rules
|
||||
];
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns = true;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
nix = {
|
||||
binaryCaches = [
|
||||
"https://aciceri-fleet.cachix.org"
|
||||
];
|
||||
binaryCachePublicKeys = [
|
||||
"aciceri-fleet.cachix.org-1:WiHJIK4UFTdfvWx0lG3mCR4EddyYsRhIuMGSje3/YGI="
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
nix = {
|
||||
binaryCaches = [
|
||||
"https://arm.cachix.org"
|
||||
];
|
||||
binaryCachePublicKeys = [
|
||||
"arm.cachix.org-1:K3XjAeWPgWkFtSS9ge5LJSLw3xgnNqyOaG7MDecmTQ8="
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
nix = {
|
||||
binaryCaches = [
|
||||
"https://cache.ngi0.nixos.org/"
|
||||
];
|
||||
binaryCachePublicKeys = [
|
||||
"cache.ngi0.nixos.org-1:KqH5CBLNSyX184S9BKZJo1LxrxJ9ltnY2uAs5c/f1MA="
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
{ pkgs, lib, ... }:
|
||||
let
|
||||
folder = ./.;
|
||||
toImport = name: value: folder + ("/" + name);
|
||||
filterCaches = key: value: value == "regular" && lib.hasSuffix ".nix" key && key != "default.nix";
|
||||
imports = lib.mapAttrsToList toImport (lib.filterAttrs filterCaches (builtins.readDir folder));
|
||||
in
|
||||
{
|
||||
inherit imports;
|
||||
nix.binaryCaches = [ "https://cache.nixos.org/" ];
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
nix = {
|
||||
binaryCaches = [
|
||||
"https://hydra.iohk.io"
|
||||
];
|
||||
binaryCachePublicKeys = [
|
||||
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
nix = {
|
||||
binaryCaches = [
|
||||
"https://nix-community.cachix.org"
|
||||
];
|
||||
binaryCachePublicKeys = [
|
||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
nix = {
|
||||
binaryCaches = [
|
||||
"https://nixpkgs-wayland.cachix.org"
|
||||
];
|
||||
binaryCachePublicKeys = [
|
||||
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
nix = {
|
||||
binaryCaches = [
|
||||
"https://nrdxp.cachix.org"
|
||||
];
|
||||
binaryCachePublicKeys = [
|
||||
"nrdxp.cachix.org-1:Fc5PSqY2Jm1TrWfm88l6cvGWwz3s93c6IOifQWnhNW4="
|
||||
];
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
config = {
|
||||
networking.firewall.extraCommands = ''
|
||||
iptables -I INPUT -p udp -m udp --dport 32768:60999 -j ACCEPT
|
||||
'';
|
||||
};
|
||||
}
|
|
@ -1,66 +0,0 @@
|
|||
{ self, config, lib, pkgs, ... }:
|
||||
let
|
||||
inherit (lib) fileContents;
|
||||
in
|
||||
{
|
||||
imports = [ ../cachix ];
|
||||
|
||||
environment = {
|
||||
|
||||
systemPackages = with pkgs; [
|
||||
#skim
|
||||
bat
|
||||
bat-extras.batman
|
||||
binutils
|
||||
bottom
|
||||
coreutils
|
||||
curl
|
||||
dnsutils
|
||||
dosfstools
|
||||
fd
|
||||
git
|
||||
glances
|
||||
gptfdisk
|
||||
htop
|
||||
iputils
|
||||
jq
|
||||
lsof
|
||||
manix
|
||||
moreutils
|
||||
nix-index
|
||||
nmap
|
||||
ripgrep
|
||||
tealdeer
|
||||
usbutils
|
||||
utillinux
|
||||
whois
|
||||
];
|
||||
};
|
||||
|
||||
fonts = {
|
||||
fonts = with pkgs; [ powerline-fonts dejavu_fonts fira-code fira-code-symbols emacs-all-the-icons-fonts ];
|
||||
fontconfig.defaultFonts = {
|
||||
monospace = [ "DejaVu Sans Mono for Powerline" ];
|
||||
sansSerif = [ "DejaVu Sans" ];
|
||||
};
|
||||
};
|
||||
|
||||
time.timeZone = "Europe/Rome";
|
||||
location.provider = "geoclue2";
|
||||
|
||||
|
||||
users.users.root.openssh.authorizedKeys.keys = [
|
||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJmn7H6wxrxCHypvY74Z6pBr5G6v564NaUZb9xIILV92JEdpZzuTLLlP+JkMx/8MLRy+pC7prMwR+FhH+LaTm/9x3T6FYP/q9UIAL3cFwBAwj5XQXQKzx9f6pX/7iJrMfAUQ+ZrRUNJHt5Gl+8UypmDgnQLuv5vmQSMRzKnUPuu4lCJtWOpSPhXffz3Ec1tm5nAMuxIMRPY91PYu1fMLlFrjB1FX1goVHKB1uWx16GjJszYCVbN6xcPac0sgUg+qNGBhWkUh0F073rhepQJeWp5FtwIxe2zRsZBxxTy5qxNLmHzBeNDxlOkcy2/Lr+BxVy+mhF/2fJziX80/bWSEA1"
|
||||
];
|
||||
|
||||
nix = {
|
||||
gc.automatic = true;
|
||||
optimise.automatic = true;
|
||||
autoOptimiseStore = true;
|
||||
useSandbox = true;
|
||||
allowedUsers = [ "@wheel" ];
|
||||
trustedUsers = [ "root" "@wheel" "hydra" "hydra-www" ];
|
||||
};
|
||||
|
||||
services.earlyoom.enable = true;
|
||||
}
|
|
@ -1,95 +0,0 @@
|
|||
[aws]
|
||||
symbol = " "
|
||||
|
||||
[character]
|
||||
success_symbol = "[❯](bold purple)"
|
||||
vicmd_symbol = "[❮](bold purple)"
|
||||
|
||||
[battery]
|
||||
full_symbol = ""
|
||||
charging_symbol = ""
|
||||
discharging_symbol = ""
|
||||
|
||||
[conda]
|
||||
symbol = " "
|
||||
|
||||
[directory]
|
||||
style = "cyan"
|
||||
read_only = " 🔒"
|
||||
|
||||
[docker]
|
||||
symbol = " "
|
||||
|
||||
[elixir]
|
||||
symbol = " "
|
||||
|
||||
[elm]
|
||||
symbol = " "
|
||||
|
||||
[git_branch]
|
||||
format = "[$symbol$branch]($style) "
|
||||
symbol = " "
|
||||
style = "bold dimmed white"
|
||||
|
||||
[git_status]
|
||||
format = '([「$all_status$ahead_behind」]($style) )'
|
||||
conflicted = "⚠️"
|
||||
ahead = "⟫${count} "
|
||||
behind = "⟪${count}"
|
||||
diverged = "🔀 "
|
||||
untracked = "📁 "
|
||||
stashed = "↪ "
|
||||
modified = "𝚫 "
|
||||
staged = "✔ "
|
||||
renamed = "⇆ "
|
||||
deleted = "✘ "
|
||||
style = "bold bright-white"
|
||||
|
||||
[golang]
|
||||
symbol = " "
|
||||
|
||||
[haskell]
|
||||
symbol = " "
|
||||
|
||||
[hg_branch]
|
||||
symbol = " "
|
||||
|
||||
[java]
|
||||
symbol = " "
|
||||
|
||||
[julia]
|
||||
symbol = " "
|
||||
|
||||
[memory_usage]
|
||||
symbol = " "
|
||||
disabled = false
|
||||
|
||||
[nim]
|
||||
symbol = " "
|
||||
|
||||
[nix_shell]
|
||||
format = '[$symbol$state]($style) '
|
||||
symbol = " "
|
||||
pure_msg = "λ"
|
||||
impure_msg = "⎔"
|
||||
|
||||
[nodejs]
|
||||
symbol = " "
|
||||
|
||||
[package]
|
||||
symbol = " "
|
||||
|
||||
[php]
|
||||
symbol = " "
|
||||
|
||||
[python]
|
||||
symbol = " "
|
||||
|
||||
[ruby]
|
||||
symbol = " "
|
||||
|
||||
[rust]
|
||||
symbol = " "
|
||||
|
||||
[status]
|
||||
disabled = false
|
|
@ -1,5 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.dbus.packages = with pkgs; [ dconf ];
|
||||
programs.dconf.enable = true;
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
virtualisation.docker.enable = true;
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
# FIXME: why this doesn't work anymore?
|
||||
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
environment.systemPackages = [ pkgs.sshfs ];
|
||||
|
||||
fileSystems =
|
||||
let
|
||||
nasUser = "ccr";
|
||||
nasHost = "ccr.ydns.eu";
|
||||
fsType = "fuse.sshfs";
|
||||
target = "/home/ccr/nas";
|
||||
options = [
|
||||
"delay_connect"
|
||||
"_netdev,user"
|
||||
"idmap=user"
|
||||
"transform_symlinks"
|
||||
# ssh-add -L > ~/.ssh/id_rsa
|
||||
"identityfile=/home/ccr/.ssh/id_rsa"
|
||||
"allow_other"
|
||||
"default_permissions"
|
||||
"uid=1000"
|
||||
"gid=100"
|
||||
"nofail"
|
||||
];
|
||||
in
|
||||
{
|
||||
# "${target}/amule" = {
|
||||
# inherit fsType options;
|
||||
# device = "${nasUser}@${nasHost}:/mnt/archivio/amule/";
|
||||
# };
|
||||
# "${target}/transmission" = {
|
||||
# inherit fsType options;
|
||||
# device = "${nasUser}@${nasHost}:/mnt/archivio/transmission/";
|
||||
# };
|
||||
# "${target}/calibre" = {
|
||||
# inherit fsType options;
|
||||
# device = "${nasUser}@${nasHost}:/mnt/archivio/calibre/";
|
||||
# };
|
||||
# "${target}/archivio" = {
|
||||
# inherit fsType options;
|
||||
# device = "${nasUser}@${nasHost}:/mnt/archivio/archivio/";
|
||||
# };
|
||||
# "${target}/film" = {
|
||||
# inherit fsType options;
|
||||
# device = "${nasUser}@${nasHost}:/mnt/film/film/";
|
||||
# };
|
||||
# "${target}/syncthing" = {
|
||||
# inherit fsType options;
|
||||
# device = "${nasUser}@${nasHost}:/mnt/archivio/syncthing/";
|
||||
# };
|
||||
# "${target}/aria" = {
|
||||
# inherit fsType options;
|
||||
# device = "${nasUser}@${nasHost}:/mnt/archivio/aria2/";
|
||||
# };
|
||||
# "${target}/musica" = {
|
||||
# inherit fsType options;
|
||||
# device = "${nasUser}@${nasHost}:/mnt/film/musica/";
|
||||
# };
|
||||
};
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.printing = {
|
||||
enable = true;
|
||||
drivers = [ pkgs.hplip ];
|
||||
};
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{ pkgs, ... }: {
|
||||
services.udev.packages = [ pkgs.qmk-udev-rules ];
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
{
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
permitRootLogin = "yes";
|
||||
forwardX11 = true;
|
||||
};
|
||||
|
||||
programs.ssh.setXAuthLocation = true;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
{
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
guiAddress = "127.0.0.1:8384";
|
||||
dataDir = "/home/ccr/syncthing";
|
||||
user = "ccr";
|
||||
};
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
{
|
||||
services.upower.enable = true;
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
xdg.portal.enable = true;
|
||||
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-wlr ];
|
||||
xdg.portal.gtkUsePortal = true;
|
||||
services.pipewire.enable = true;
|
||||
environment.sessionVariables = {
|
||||
MOZ_ENABLE_WAYLAND = "1";
|
||||
#XDG_CURRENT_DESKTOP = "sway"; # https://github.com/emersion/xdg-desktop-portal-wlr/issues/20
|
||||
#XDG_SESSION_TYPE = "wayland"; # https://github.com/emersion/xdg-desktop-portal-wlr/pull/11
|
||||
};
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
(import ./lib/compat).shellNix
|
|
@ -1,8 +0,0 @@
|
|||
{ self, inputs, ... }:
|
||||
{
|
||||
|
||||
modules = [
|
||||
./devos.nix
|
||||
];
|
||||
}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
{ pkgs, extraModulesPath, ... }:
|
||||
let
|
||||
|
||||
hooks = import ./hooks;
|
||||
|
||||
pkgWithCategory = category: package: { inherit package category; };
|
||||
linter = pkgWithCategory "linter";
|
||||
docs = pkgWithCategory "docs";
|
||||
devos = pkgWithCategory "devos";
|
||||
|
||||
in
|
||||
{
|
||||
_file = toString ./.;
|
||||
|
||||
imports = [ "${extraModulesPath}/git/hooks.nix" ];
|
||||
git = { inherit hooks; };
|
||||
|
||||
# tempfix: remove when merged https://github.com/numtide/devshell/pull/123
|
||||
devshell.startup.load_profiles = pkgs.lib.mkForce (
|
||||
pkgs.lib.noDepEntry ''
|
||||
# PATH is devshell's exorbitant privilige:
|
||||
# fence against its pollution
|
||||
_PATH=''${PATH}
|
||||
# Load installed profiles
|
||||
for file in "$DEVSHELL_DIR/etc/profile.d/"*.sh; do
|
||||
# If that folder doesn't exist, bash loves to return the whole glob
|
||||
[[ -f "$file" ]] && source "$file"
|
||||
done
|
||||
# Exert exorbitant privilige and leave no trace
|
||||
export PATH=''${_PATH}
|
||||
unset _PATH
|
||||
''
|
||||
);
|
||||
|
||||
packages = with pkgs; [
|
||||
git-crypt
|
||||
];
|
||||
|
||||
commands = with pkgs; [
|
||||
(devos nixUnstable)
|
||||
# {
|
||||
# category = "devos";
|
||||
# name = nvfetcher-bin.pname;
|
||||
# help = nvfetcher-bin.meta.description;
|
||||
# command = "cd $DEVSHELL_ROOT/pkgs; ${pkgs.nvfetcher-bin}/bin/nvfetcher -c ./sources.toml --no-output $@";
|
||||
# }
|
||||
(linter nixpkgs-fmt)
|
||||
(linter editorconfig-checker)
|
||||
# (docs python3Packages.grip) too many deps
|
||||
(docs mdbook)
|
||||
]
|
||||
++ lib.optional
|
||||
(system != "i686-linux")
|
||||
(devos cachix)
|
||||
|
||||
;
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
{
|
||||
enable = true;
|
||||
pre-commit.text = builtins.readFile ./pre-commit.sh;
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
if git rev-parse --verify HEAD >/dev/null 2>&1
|
||||
then
|
||||
against=HEAD
|
||||
else
|
||||
# Initial commit: diff against an empty tree object
|
||||
against=$(${git}/bin/git hash-object -t tree /dev/null)
|
||||
fi
|
||||
|
||||
diff="git diff-index --name-only --cached $against --diff-filter d"
|
||||
|
||||
nix_files=($($diff -- '*.nix'))
|
||||
all_files=($($diff))
|
||||
|
||||
# Format staged nix files.
|
||||
if [[ -n "${nix_files[@]}" ]]; then
|
||||
nixpkgs-fmt "${nix_files[@]}" \
|
||||
&& git add "${nix_files[@]}"
|
||||
fi
|
||||
|
||||
# check editorconfig
|
||||
editorconfig-checker -- "${all_files[@]}"
|
||||
if [[ $? != '0' ]]; then
|
||||
printf "%b\n" \
|
||||
"\nCode is not aligned with .editorconfig" \
|
||||
"Review the output and commit your fixes" >&2
|
||||
exit 1
|
||||
fi
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
programs.bat = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
openscad
|
||||
] ++ (if !stdenv.hostPlatform.isAarch64 then [
|
||||
blender
|
||||
]
|
||||
else [ ]);
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
package = with pkgs; if stdenv.hostPlatform.isAarch64 then ungoogled-chromium else google-chrome;
|
||||
};
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [ ] ++
|
||||
(if !stdenv.hostPlatform.isAarch64 then [
|
||||
cura # cura is currently broken on aarch64
|
||||
] else [ ]);
|
||||
home.sessionVariables = {
|
||||
QT_QPA_PLATFORM = "xcb";
|
||||
};
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
config = {
|
||||
warn_timeout = "60s"; # default was 5s
|
||||
};
|
||||
nix-direnv = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
home.file."emacs" = {
|
||||
recursive = true;
|
||||
source = ./emacs.d;
|
||||
target = ".emacs.d";
|
||||
};
|
||||
|
||||
programs.emacs = {
|
||||
enable = true;
|
||||
package = pkgs.customEmacs;
|
||||
};
|
||||
|
||||
services.emacs = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
# For some reason Hunspell dictionaries paths must be specified on Darwin
|
||||
home.sessionVariables =
|
||||
if pkgs.stdenv.hostPlatform.isDarwin then {
|
||||
DICPATH = "${pkgs.hunspellDicts.it_IT}/share/hunspell:${pkgs.hunspellDicts.en_US}/share/hunspell";
|
||||
} else { };
|
||||
|
||||
home.packages =
|
||||
let
|
||||
easy-ps = import
|
||||
(pkgs.fetchFromGitHub {
|
||||
owner = "justinwoo";
|
||||
repo = "easy-purescript-nix";
|
||||
rev = "7802db65618c2ead3a55121355816b4c41d276d9";
|
||||
sha256 = "0n99hxxcp9yc8yvx7bx4ac6askinfark7dnps3hzz5v9skrvq15q";
|
||||
})
|
||||
{
|
||||
inherit pkgs;
|
||||
};
|
||||
in
|
||||
with pkgs; [
|
||||
delta
|
||||
fd
|
||||
graphviz-nox
|
||||
hunspell
|
||||
hunspellDicts.en_US
|
||||
hunspellDicts.it_IT
|
||||
imagemagick
|
||||
mediainfo
|
||||
nixpkgs-fmt
|
||||
poppler_utils
|
||||
python3Full
|
||||
rnix-lsp
|
||||
silver-searcher
|
||||
unzip
|
||||
(
|
||||
makeDesktopItem {
|
||||
name = "org-protocol";
|
||||
exec = "emacsclient %u";
|
||||
comment = "Org protocol";
|
||||
desktopName = "org-protocol";
|
||||
type = "Application";
|
||||
mimeTypes = [ "x-scheme-handler/org-protocol" ];
|
||||
}
|
||||
)
|
||||
] ++ (if pkgs.system == "x86_64-linux" then [
|
||||
python-language-server
|
||||
] ++ (with easy-ps; [
|
||||
ffmpegthumbnailer
|
||||
]) else [ ]);
|
||||
}
|
|
@ -1,85 +0,0 @@
|
|||
(use-package modus-themes
|
||||
:init
|
||||
(setq
|
||||
modus-themes-region '(bg-only no-extend))
|
||||
(modus-themes-load-themes)
|
||||
:config
|
||||
(modus-themes-load-operandi) ;white theme
|
||||
;; (modus-themes-load-vivendi) ;black theme
|
||||
:bind ("<f5>" . modus-themes-toggle)
|
||||
)
|
||||
|
||||
(use-package fira-code-mode
|
||||
:after all-the-icons
|
||||
;;:custom (fira-code-mode-disabled-ligatures '("x")) ;; List of ligatures to turn off
|
||||
:config
|
||||
:hook ((prog-mode . (lambda () (progn (fira-code-mode) (set-fontset-font t '(#Xe100 . #Xe16f) "Fira Code Symbol"))))))
|
||||
|
||||
(use-package visual-fill-column
|
||||
:commands (visual-fill-column-mode)
|
||||
:hook
|
||||
(markdown-mode . activate-visual-fill-column)
|
||||
(org-mode . activate-visual-fill-column)
|
||||
:init
|
||||
(defun activate-visual-fill-column ()
|
||||
(interactive)
|
||||
(setq-local fill-column 80)
|
||||
(visual-line-mode t)
|
||||
(visual-fill-column-mode t))
|
||||
:config
|
||||
(setq-default visual-fill-column-center-text t
|
||||
visual-fill-column-fringes-outside-margins nil))
|
||||
|
||||
(use-package minimap
|
||||
:custom ((minimap-window-location 'right))
|
||||
:bind ("<f7>" . minimap-mode))
|
||||
|
||||
(use-package good-scroll
|
||||
:config (good-scroll-mode 1)
|
||||
:bind (("<next>" . #'good-scroll-up-full-screen)
|
||||
("<prior>" . #'good-scroll-down-full-screen)))
|
||||
|
||||
(use-package rainbow-identifiers
|
||||
;; :hook ((prog-mode . rainbow-identifiers-mode))
|
||||
)
|
||||
|
||||
(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)))
|
||||
|
||||
(use-package hl-todo
|
||||
:hook ((prog-mode . hl-todo-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))
|
||||
|
||||
(use-package doom-modeline
|
||||
:ensure t
|
||||
:init (doom-modeline-mode 1))
|
||||
|
||||
|
||||
(defalias 'yes-or-no-p 'y-or-n-p)
|
||||
(setq use-dialog-box nil
|
||||
display-time-format "%H:%M"
|
||||
column-number-mode t
|
||||
mouse-autoselect-window t
|
||||
inhibit-startup-screen t)
|
||||
(menu-bar-mode -1)
|
||||
(tool-bar-mode -1)
|
||||
(scroll-bar-mode -1)
|
||||
(fringe-mode 1)
|
||||
(display-time-mode 1)
|
||||
(global-hl-line-mode 1)
|
||||
|
||||
(add-hook 'prog-mode-hook #'display-line-numbers-mode)
|
||||
(add-hook 'prog-mode-hook #'rainbow-delimiters-mode)
|
||||
(add-hook 'prog-mode-hook #'show-paren-mode)
|
||||
|
||||
|
||||
(provide 'aesthetics)
|
|
@ -1,36 +0,0 @@
|
|||
(use-package company
|
||||
:init
|
||||
(setq company-backends '(company-capf
|
||||
company-keywords
|
||||
company-nixos-options
|
||||
company-semantic
|
||||
company-files
|
||||
company-etags
|
||||
company-elisp
|
||||
company-jedi
|
||||
company-ispell
|
||||
company-yasnippet)
|
||||
company-tooltip-limit 20
|
||||
company-show-numbers t
|
||||
company-idle-delay 0
|
||||
company-echo-delay 0)
|
||||
:bind
|
||||
(("C-c ." . company-complete)
|
||||
("C-c C-." . company-complete)
|
||||
("C-c s s" . company-yasnippet)
|
||||
:map company-active-map
|
||||
("C-n" . company-select-next)
|
||||
("C-p" . company-select-previous)
|
||||
("C-d" . company-show-doc-buffer)
|
||||
("M-." . company-show-location)))
|
||||
|
||||
(use-package helm-company
|
||||
:after (helm company)
|
||||
:bind (("C-c C-;" . helm-company))
|
||||
:commands (helm-company)
|
||||
:init
|
||||
(define-key company-mode-map (kbd "C-;") 'helm-company)
|
||||
(define-key company-active-map (kbd "C-;") 'helm-company))
|
||||
|
||||
|
||||
(provide 'config-company)
|
|
@ -1,7 +0,0 @@
|
|||
(use-package envrc
|
||||
:disabled t
|
||||
:after exec-path-from-shell
|
||||
:config
|
||||
(envrc-global-mode))
|
||||
|
||||
(provide 'config-direnv)
|
|
@ -1,123 +0,0 @@
|
|||
(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)
|
|
@ -1,10 +0,0 @@
|
|||
(setq backup-directory-alist `(("." . "~/.saves"))
|
||||
backup-by-copying t
|
||||
delete-old-versions 6
|
||||
kept-old-versions 2
|
||||
version-control t
|
||||
create-lockfiles nil
|
||||
native-comp-async-report-warnings-errors nil
|
||||
)
|
||||
|
||||
(provide 'config-emacs)
|
|
@ -1,46 +0,0 @@
|
|||
(use-package notmuch
|
||||
:custom
|
||||
(notmuch-archive-tags '("-unread"))
|
||||
;;(notmuch-show-indent-content nil)
|
||||
(notmuch-search-older-first nil)
|
||||
(message-kill-buffer-on-exit t)
|
||||
(notmuch-hello-sections
|
||||
'(notmuch-hello-insert-header
|
||||
notmuch-hello-insert-saved-searches
|
||||
notmuch-hello-insert-search
|
||||
notmuch-hello-insert-alltags
|
||||
notmuch-hello-insert-recent-searches
|
||||
notmuch-hello-insert-footer
|
||||
))
|
||||
(notmuch-tagging-keys
|
||||
'(("a" notmuch-archive-tags "Archive")
|
||||
("u" notmuch-show-
|
||||
mark-read-tags "Mark read")
|
||||
("m" ("+muted") "Mute")
|
||||
("f" ("+flagged") "Flag")
|
||||
("s" ("+spam" "-inbox") "Mark as spam")
|
||||
("d" ("+deleted" "-inbox") "Delete")))
|
||||
)
|
||||
|
||||
(use-package message
|
||||
:config
|
||||
(setq message-send-mail-function 'message-send-mail-with-sendmail
|
||||
message-sendmail-f-is-evil t
|
||||
message-sendmail-envelope-from nil ; 'header
|
||||
message-sendmail-extra-arguments '("--read-envelope-from"))
|
||||
|
||||
(setq mml-secure-smime-sign-with-sender t)
|
||||
(setq mml-secure-openpgp-sign-with-sender t)
|
||||
|
||||
;; Add signature by default
|
||||
(add-hook 'message-setup-hook 'mml-secure-message-sign-pgpmime)
|
||||
;; Verify other's signatures
|
||||
(setq mm-verify-option 'always))
|
||||
|
||||
(use-package sendmail
|
||||
:config
|
||||
(setq mail-specify-envelope-from nil
|
||||
send-mail-function 'message-send-mail-with-sendmail
|
||||
sendmail-program "msmtp"))
|
||||
|
||||
(provide 'config-emails)
|
|
@ -1,19 +0,0 @@
|
|||
|
||||
(use-package evil
|
||||
:custom
|
||||
(evil-want-keybinding nil)
|
||||
(evil-undo-system 'undo-redo)
|
||||
:config
|
||||
(evil-mode 1) ; globally enable evil-mode except for the following modes
|
||||
(mapcar (lambda (mode) (evil-set-initial-state mode 'emacs))
|
||||
'(vterm-mode
|
||||
eshell-mode
|
||||
dired-mode
|
||||
)))
|
||||
|
||||
(use-package evil-collection
|
||||
:after (evil)
|
||||
:config
|
||||
(evil-collection-init))
|
||||
|
||||
(provide 'config-evil)
|
|
@ -1,38 +0,0 @@
|
|||
(use-package helm
|
||||
:init
|
||||
(progn
|
||||
(require 'helm-config)
|
||||
(setq helm-autoresize-max-height 0)
|
||||
(setq helm-autoresize-min-height 20)
|
||||
(global-set-key (kbd "C-c h") 'helm-command-prefix)
|
||||
(global-unset-key (kbd "C-x c"))
|
||||
|
||||
(when (executable-find "ack")
|
||||
(setq helm-grep-default-command "ack -Hn --no-group --no-color %e %p %f"
|
||||
helm-grep-default-recurse-command "ack -H --no-group --no-color %e %p %f"))
|
||||
|
||||
(setq helm-semantic-fuzzy-match t
|
||||
helm-imenu-fuzzy-match t
|
||||
helm-M-x-fuzzy-match t ;; optional fuzzy matching for helm-M-x
|
||||
helm-buffers-fuzzy-matching t
|
||||
helm-recentf-fuzzy-match t
|
||||
helm-split-window-in-side-p t
|
||||
helm-buffer-max-length nil)
|
||||
|
||||
(helm-mode 1)
|
||||
(helm-autoresize-mode 1))
|
||||
|
||||
:bind
|
||||
(("C-c h" . helm-command-prefix)
|
||||
:map helm-command-map
|
||||
("b" . helm-buffers-list)
|
||||
("f" . helm-find-files)
|
||||
("m" . helm-mini)
|
||||
("o" . helm-imenu))
|
||||
:bind
|
||||
(("M-x" . helm-M-x)
|
||||
("M-y" . helm-show-kill-ring)
|
||||
("C-x b" . helm-mini)
|
||||
("C-x C-f" . helm-find-files)))
|
||||
|
||||
(provide 'config-helm)
|
|
@ -1,15 +0,0 @@
|
|||
(use-package symex
|
||||
:custom
|
||||
(symex-modal-backend 'evil)
|
||||
:config
|
||||
(symex-initialize)
|
||||
(global-set-key (kbd "C-c s") 'symex-mode-interface)) ; or whatever keybinding you like
|
||||
|
||||
|
||||
(use-package aggressive-indent
|
||||
:commands (aggressive-indent-mode aggressive-indent-global-mode)
|
||||
:hook
|
||||
(emacs-lisp-mode . aggressive-indent-mode)
|
||||
(lisp-mode . aggressive-indent-mode))
|
||||
|
||||
(provide 'config-lisp)
|
|
@ -1,30 +0,0 @@
|
|||
(use-package lsp-mode
|
||||
:init
|
||||
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l")
|
||||
(setq lsp-keymap-prefix "C-c l")
|
||||
:custom
|
||||
(lsp-haskell-server-path "haskell-language-server-wrapper")
|
||||
:hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode)
|
||||
(nix-mode . lsp)
|
||||
(python-mode . lsp)
|
||||
(haskell-mode . lsp)
|
||||
;; if you want which-key integration
|
||||
(lsp-mode . lsp-enable-which-key-integration))
|
||||
:commands lsp)
|
||||
|
||||
;; optionally
|
||||
(use-package lsp-ui :commands lsp-ui-mode)
|
||||
;; if you are helm user
|
||||
(use-package helm-lsp :commands helm-lsp-workspace-symbol)
|
||||
(use-package lsp-treemacs :commands lsp-treemacs-errors-list)
|
||||
|
||||
;; optionally if you want to use debugger
|
||||
(use-package dap-mode)
|
||||
;; (use-package dap-LANGUAGE) to load the dap adapter for your language
|
||||
|
||||
;; optional if you want which-key integration
|
||||
(use-package which-key
|
||||
:config
|
||||
(which-key-mode))
|
||||
|
||||
(provide 'config-lsp)
|
|
@ -1,23 +0,0 @@
|
|||
(setenv "SSH_AUTH_SOCK" "/run/user/1000/gnupg/S.gpg-agent.ssh")
|
||||
|
||||
(use-package magit
|
||||
:bind (("C-x g" . magit-status)
|
||||
("C-x C-g" . magit-status)))
|
||||
|
||||
(use-package magit-delta
|
||||
:hook (magit-mode . magit-delta-mode))
|
||||
|
||||
(use-package transient
|
||||
:defer t
|
||||
:config
|
||||
(transient-bind-q-to-quit))
|
||||
|
||||
(use-package diff-hl
|
||||
:after magit
|
||||
:config
|
||||
(require 'diff-hl-flydiff)
|
||||
(add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh)
|
||||
(diff-hl-flydiff-mode t)
|
||||
(global-diff-hl-mode t))
|
||||
|
||||
(provide 'config-magit)
|
|
@ -1,21 +0,0 @@
|
|||
(use-package nix-mode
|
||||
:mode "\\.nix\\'"
|
||||
:config (setq format-on-save t)
|
||||
:bind ("<f8>" . (lambda () (interactive) (setq format-on-save (not format-on-save)) ))
|
||||
:hook
|
||||
(before-save . (lambda () (when (format-on-save) (lsp-format-buffer)))))
|
||||
|
||||
(require 'sudo-utils)
|
||||
|
||||
(defun nixos-rebuild-switch ()
|
||||
(interactive)
|
||||
(sudo-utils-shell-command "nixos-rebuild switch"))
|
||||
|
||||
(defun nixos-rebuild-test ()
|
||||
(interactive)
|
||||
;; async-shell command should be sufficient, to check why it isn't
|
||||
(sudo-utils-shell-command "nixos-rebuild test"))
|
||||
|
||||
(global-set-key [f6] 'nixos-rebuild-test)
|
||||
|
||||
(provide 'config-nix)
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue