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
|
result
|
||||||
.direnv
|
.direnv
|
||||||
doc/index.html
|
.pre-commit-config.yaml
|
||||||
|
|
||||||
# Result of flk commands
|
|
||||||
vm
|
|
||||||
iso
|
|
||||||
doi
|
|
||||||
|
|
||||||
pkgs/_sources/.shake*
|
|
||||||
|
|
||||||
*.qcow2
|
*.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": {
|
"nodes": {
|
||||||
"blank": {
|
"agenix": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1625557891,
|
|
||||||
"narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=",
|
|
||||||
"owner": "divnix",
|
|
||||||
"repo": "blank",
|
|
||||||
"rev": "5a5d2684073d9f563072ed07c871d577a6c614a8",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "divnix",
|
|
||||||
"repo": "blank",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"darwin": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1650976225,
|
"lastModified": 1652712410,
|
||||||
"narHash": "sha256-PGM65SQHS63Dd5MmLJo3GJsZP9lJVZmpWxluQoG1Dt8=",
|
"narHash": "sha256-hMJ2TqLt0DleEnQFGUHK9sV2aAzJPU8pZeiZoqRozbE=",
|
||||||
"owner": "LnL7",
|
"owner": "ryantm",
|
||||||
"repo": "nix-darwin",
|
"repo": "agenix",
|
||||||
"rev": "bb3baef6e115ae47bc2ab4973bd3a486488485b0",
|
"rev": "7e5e58b98c3dcbf497543ff6f22591552ebfe65b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "LnL7",
|
"owner": "ryantm",
|
||||||
"repo": "nix-darwin",
|
"repo": "agenix",
|
||||||
"type": "github"
|
"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": {
|
"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",
|
"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",
|
"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": {
|
"locked": {
|
||||||
"lastModified": 1650389807,
|
"lastModified": 1658470797,
|
||||||
"narHash": "sha256-GFRBdHMJ/T/ifaE2GS58RWpxyufH0LqI3oGS6oWAnHk=",
|
"narHash": "sha256-ovk7xcjGqoXgc7fV4m0tlKhiuAglON4TKmt//Bd0fLE=",
|
||||||
"owner": "numtide",
|
"owner": "nix-community",
|
||||||
"repo": "devshell",
|
"repo": "nix-doom-emacs",
|
||||||
"rev": "5a53bbf3eb4c908d83884d725a86b3a3bde35979",
|
"rev": "f7fd8620be427c6489f496645513d536e380c50c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "nix-community",
|
||||||
"repo": "devshell",
|
"repo": "nix-doom-emacs",
|
||||||
"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",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"emacs-overlay": {
|
"emacs-overlay": {
|
||||||
"inputs": {
|
"flake": false,
|
||||||
"flake-utils": "flake-utils_3",
|
|
||||||
"nixpkgs": [
|
|
||||||
"unstable"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1653736770,
|
"lastModified": 1658430126,
|
||||||
"narHash": "sha256-Vp8fWSGTEeuWc71rVXsh+ofsHHUPhKunc8aQLGN0ETc=",
|
"narHash": "sha256-W5zw1NI7c47qT/FCkNAVmahA5On5UUs1pabAL6Tb2iI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "emacs-overlay",
|
"repo": "emacs-overlay",
|
||||||
"rev": "ff629e757452d010b7c91fdd2597aeca370bcf68",
|
"rev": "6c868dbad387da912e2a47f63a913c8a62555127",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -128,23 +109,103 @@
|
||||||
"type": "github"
|
"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-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,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1650374568,
|
"lastModified": 1650374568,
|
||||||
|
@ -162,11 +223,11 @@
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1642700792,
|
"lastModified": 1656928814,
|
||||||
"narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=",
|
"narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "846b2ae0fc4cc943637d3d1def4454213e203cba",
|
"rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -175,24 +236,6 @@
|
||||||
"type": "github"
|
"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": {
|
"flake-utils_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1644229661,
|
"lastModified": 1644229661,
|
||||||
|
@ -208,33 +251,36 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_3": {
|
"format-all": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1652776076,
|
"lastModified": 1581716637,
|
||||||
"narHash": "sha256-gzTw/v1vj4dOVbpBSJX4J0DwUR6LIyXo7/SuuTJp1kM=",
|
"narHash": "sha256-ul7LCe60W8TIvUmUtZtZRo8489TK9iTPDsLHmzxY57M=",
|
||||||
"owner": "numtide",
|
"owner": "lassik",
|
||||||
"repo": "flake-utils",
|
"repo": "emacs-format-all-the-code",
|
||||||
"rev": "04c1b180862888302ddfb2e3ad9eaa63afc60cf8",
|
"rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "numtide",
|
"owner": "lassik",
|
||||||
"repo": "flake-utils",
|
"repo": "emacs-format-all-the-code",
|
||||||
|
"rev": "47d862d40a088ca089c92cd393c6dca4628f87d3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"home": {
|
"homeManager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"unstable"
|
"nixpkgsUnstable"
|
||||||
]
|
],
|
||||||
|
"utils": "utils"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1653518057,
|
"lastModified": 1658238241,
|
||||||
"narHash": "sha256-cam3Nfae5ADeEs6mRPzr0jXB7+DhyMIXz0/0Q13r/yk=",
|
"narHash": "sha256-naoSta79MYYRtVnIZhzq+YWgTOBhWE1Sr1AIhG7ZA9g=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "64831f938bd413cefde0b0cf871febc494afaa4f",
|
"rev": "70d5929885ccec8dde8585894dd3ebe606e75f41",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -243,44 +289,92 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latest": {
|
"nix-straight": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1650701402,
|
"lastModified": 1656684255,
|
||||||
"narHash": "sha256-XKfstdtqDg+O+gNBx1yGVKWIhLgfEDg/e2lvJSsp9vU=",
|
"narHash": "sha256-ZefQiv4Ipu2VkLjs1oyelTLU7kBVJgkcQd+yBpJU0yo=",
|
||||||
"owner": "nixos",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs",
|
"repo": "nix-straight.el",
|
||||||
"rev": "bc41b01dd7a9fdffd32d9b03806798797532a5fe",
|
"rev": "fb8dd5c44cde70abd13380766e40af7a63888942",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nix-community",
|
||||||
"ref": "nixos-unstable",
|
"repo": "nix-straight.el",
|
||||||
"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",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1653738054,
|
"lastModified": 1638587357,
|
||||||
"narHash": "sha256-IaR8iLN4Ms3f5EjU1CJkXSc49ZzyS5qv03DtVAti6/s=",
|
"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",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"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"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -288,139 +382,202 @@
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nose": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1650726686,
|
"lastModified": 1400604510,
|
||||||
"narHash": "sha256-hE5PCqQlsdgWH3AUTwesvjZWs5ZUZ8SjMS5cnFB6W54=",
|
"narHash": "sha256-daEi8Kta1oGaDEmUUDDQMahTTPOpvNpDKk22rlr7cB0=",
|
||||||
"owner": "nixos",
|
"owner": "emacsattic",
|
||||||
"repo": "nixpkgs",
|
"repo": "nose",
|
||||||
"rev": "3c0f57e36ed0cf9947281e3b31f1bebb7ce5d4a1",
|
"rev": "f8528297519eba911696c4e68fa88892de9a7b72",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "emacsattic",
|
||||||
"ref": "nixpkgs-unstable",
|
"repo": "nose",
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgsDevInput": {
|
"ob-racket": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1650581082,
|
"lastModified": 1584656173,
|
||||||
"narHash": "sha256-aq5jnmGhP0hSXYozkxUKpgSZILvDobxB976JZFG6If8=",
|
"narHash": "sha256-rBUYDDCXb+3D4xTPQo9UocbTPZ32kWV1Uya/1DmZknU=",
|
||||||
"owner": "aciceri",
|
"owner": "xchrishawk",
|
||||||
"repo": "nixpkgs",
|
"repo": "ob-racket",
|
||||||
"rev": "24b40a255c6adc6ab32c69737e8b4cfc50d8c8b4",
|
"rev": "83457ec9e1e96a29fd2086ed19432b9d75787673",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "aciceri",
|
"owner": "xchrishawk",
|
||||||
"repo": "nixpkgs",
|
"repo": "ob-racket",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"org": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1653738054,
|
"lastModified": 1658412564,
|
||||||
"narHash": "sha256-IaR8iLN4Ms3f5EjU1CJkXSc49ZzyS5qv03DtVAti6/s=",
|
"narHash": "sha256-JHiUjc4OAfPtNTWikVYEIkJkba9qV4N3QbtcJpjk4cM=",
|
||||||
"owner": "NixOS",
|
"owner": "emacs-straight",
|
||||||
"repo": "nixpkgs",
|
"repo": "org-mode",
|
||||||
"rev": "17b62c338f2a0862a58bb6951556beecd98ccda9",
|
"rev": "99681ce38937ba993a0407cee4fd6a7f869211bf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "emacs-straight",
|
||||||
"ref": "nixpkgs-unstable",
|
"repo": "org-mode",
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"org-contrib": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1653738054,
|
"lastModified": 1652646857,
|
||||||
"narHash": "sha256-IaR8iLN4Ms3f5EjU1CJkXSc49ZzyS5qv03DtVAti6/s=",
|
"narHash": "sha256-IWIShWyVnbwXqGLQaDNvJ0KoepxhIrXWTjPyGPEkQ14=",
|
||||||
"owner": "NixOS",
|
"owner": "emacsmirror",
|
||||||
"repo": "nixpkgs",
|
"repo": "org-contrib",
|
||||||
"rev": "17b62c338f2a0862a58bb6951556beecd98ccda9",
|
"rev": "c1e0980fd7a57ca2042fd78acfb1dfb5c3bc03fa",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "emacsmirror",
|
||||||
"ref": "nixpkgs-unstable",
|
"repo": "org-contrib",
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"org-yt": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1653724318,
|
"lastModified": 1527381913,
|
||||||
"narHash": "sha256-4J2d/fc7huLrYsU7VRiquSNOcQoqQQQGNweR48zFEc4=",
|
"narHash": "sha256-dzQ6B7ryzatHCTLyEnRSbWO0VUiX/FHYnpHTs74aVUs=",
|
||||||
"owner": "nix-community",
|
"owner": "TobiasZawada",
|
||||||
"repo": "NUR",
|
"repo": "org-yt",
|
||||||
"rev": "7a8313c6322856a5adbf9217e289733e67020652",
|
"rev": "40cc1ac76d741055cbefa13860d9f070a7ade001",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "TobiasZawada",
|
||||||
"repo": "NUR",
|
"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"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"deploy": [
|
"agenix": "agenix",
|
||||||
"digga",
|
"doomEmacs": "doomEmacs",
|
||||||
"deploy"
|
"homeManager": "homeManager",
|
||||||
],
|
"nixpkgsStable": "nixpkgsStable",
|
||||||
"digga": "digga",
|
"nixpkgsUnstable": "nixpkgsUnstable",
|
||||||
"emacs-overlay": "emacs-overlay",
|
"preCommitHooks": "preCommitHooks"
|
||||||
"home": "home",
|
|
||||||
"nixos-hardware": "nixos-hardware",
|
|
||||||
"nixpkgsDevInput": "nixpkgsDevInput",
|
|
||||||
"nur": "nur",
|
|
||||||
"stable": "stable",
|
|
||||||
"unstable": "unstable"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stable": {
|
"rotate-text": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1653653155,
|
"lastModified": 1322962747,
|
||||||
"narHash": "sha256-zeKfULtxT5f7yDHhg7awVhVEsTsMNGNS2/7xlymUIFU=",
|
"narHash": "sha256-SOeOgSlcEIsKhUiYDJv0p+mLUb420s9E2BmvZQvZ0wk=",
|
||||||
"owner": "nixos",
|
"owner": "debug-ito",
|
||||||
"repo": "nixpkgs",
|
"repo": "rotate-text.el",
|
||||||
"rev": "13c15a84ffa02c5dd288f2398cd6eaf107d16dc5",
|
"rev": "48f193697db996855aee1ad2bc99b38c6646fe76",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "debug-ito",
|
||||||
"ref": "release-21.11",
|
"repo": "rotate-text.el",
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"unstable": {
|
"sln-mode": {
|
||||||
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1653581809,
|
"lastModified": 1423727528,
|
||||||
"narHash": "sha256-Uvka0V5MTGbeOfWte25+tfRL3moECDh1VwokWSZUdoY=",
|
"narHash": "sha256-XqkqPyEJuTtFslOz1fpTf/Klbd/zA7IGpzpmum/MGao=",
|
||||||
"owner": "nixos",
|
"owner": "sensorflo",
|
||||||
"repo": "nixpkgs",
|
"repo": "sln-mode",
|
||||||
"rev": "83658b28fe638a170a19b8933aa008b30640fbd1",
|
"rev": "0f91d1b957c7d2a7bab9278ec57b54d57f1dbd9c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "sensorflo",
|
||||||
"ref": "nixos-unstable",
|
"repo": "sln-mode",
|
||||||
"repo": "nixpkgs",
|
"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"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"utils": {
|
"utils": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1648297722,
|
"lastModified": 1653893745,
|
||||||
"narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=",
|
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade",
|
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -428,6 +585,22 @@
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"type": "github"
|
"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",
|
"root": "root",
|
||||||
|
|
163
flake.nix
163
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 =
|
inputs = {
|
||||||
{
|
nixpkgsUnstable.url = github:NixOS/nixpkgs/nixos-unstable;
|
||||||
stable.url = github:nixos/nixpkgs/release-21.11;
|
nixpkgsStable.url = github:NixOS/nixpkgs/nixos-22.05;
|
||||||
unstable.url = github:nixos/nixpkgs/nixos-unstable;
|
homeManager = {
|
||||||
nixpkgsDevInput.url = github:aciceri/nixpkgs;
|
url = github:nix-community/home-manager;
|
||||||
|
inputs.nixpkgs.follows = "nixpkgsUnstable";
|
||||||
nur.url = github:nix-community/NUR;
|
};
|
||||||
|
preCommitHooks.url = github:cachix/pre-commit-hooks.nix;
|
||||||
digga.url = github:divnix/digga/hotfix-exported-overlays; # waiting for https://github.com/divnix/digga/issues/464
|
agenix.url = github:ryantm/agenix;
|
||||||
digga.inputs.nixpkgs.follows = "unstable";
|
doomEmacs.url = github:nix-community/nix-doom-emacs;
|
||||||
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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs = {
|
||||||
{ self
|
self,
|
||||||
, stable
|
nixpkgsUnstable,
|
||||||
, unstable
|
nixpkgsStable,
|
||||||
, nixpkgsDevInput
|
homeManager,
|
||||||
, digga
|
preCommitHooks,
|
||||||
, home
|
agenix,
|
||||||
, nixos-hardware
|
doomEmacs,
|
||||||
, emacs-overlay
|
} @ inputs: let
|
||||||
, nur
|
utils = (import ./utils) inputs;
|
||||||
, deploy
|
inherit (utils) lib mkConfigurations mkVmApps checkFormatting formatApp mkDevShell;
|
||||||
, ...
|
in {
|
||||||
} @ inputs:
|
nixosConfigurations = mkConfigurations;
|
||||||
|
|
||||||
digga.lib.mkFlake
|
apps = lib.recursiveUpdate (mkVmApps self.nixosConfigurations) formatApp;
|
||||||
{
|
|
||||||
inherit self inputs;
|
|
||||||
|
|
||||||
channelsConfig = { allowUnfree = true; };
|
checks = checkFormatting ./.;
|
||||||
|
|
||||||
channels = {
|
devShells = mkDevShell;
|
||||||
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
|
|
||||||
{ };
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
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 = {
|
programs.password-store = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
PASSWORD_STORE_DIR = "/home/ccr/.password-store";
|
PASSWORD_STORE_DIR = "/home/ccr/.password-store";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
services.password-store-sync.enable = true;
|
||||||
}
|
}
|
|
@ -1,6 +1,4 @@
|
||||||
{ pkgs, ... }:
|
{pkgs, ...}: {
|
||||||
|
|
||||||
{
|
|
||||||
programs.qutebrowser = {
|
programs.qutebrowser = {
|
||||||
enable = true;
|
enable = true;
|
||||||
searchEngines = {
|
searchEngines = {
|
||||||
|
@ -46,4 +44,3 @@
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 = {
|
programs.zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableAutosuggestions = true;
|
enableAutosuggestions = true;
|
||||||
|
@ -55,7 +78,7 @@
|
||||||
NIX_BUILD_SHELL = "${pkgs.zsh-nix-shell}/scripts/buildShellShim.zsh";
|
NIX_BUILD_SHELL = "${pkgs.zsh-nix-shell}/scripts/buildShellShim.zsh";
|
||||||
PROMPT = "\\\${IN_NIX_SHELL:+[nix-shell] }$PROMPT";
|
PROMPT = "\\\${IN_NIX_SHELL:+[nix-shell] }$PROMPT";
|
||||||
};
|
};
|
||||||
loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec sway";
|
loginExtra = "[[ -z $DISPLAY && $TTY = /dev/tty1 ]] && exec startx";
|
||||||
initExtra =
|
initExtra =
|
||||||
if pkgs.stdenv.hostPlatform.isDarwin
|
if pkgs.stdenv.hostPlatform.isDarwin
|
||||||
then "if test -e /etc/static/bashrc; then source /etc/static/bashrc > /dev/null 2>&1; fi"
|
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, ... }: {
|
config,
|
||||||
imports = with suites; shell ++ base ++ (if config.networking.hostName != "hs" then
|
lib,
|
||||||
(
|
pkgs,
|
||||||
gui ++ browser ++ multimedia ++ emails ++ dev ++ modelling
|
fleetHmModules,
|
||||||
) 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 [ ]);
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.ccr = {
|
users.users.ccr = {
|
||||||
uid = 1000;
|
uid = 1000;
|
||||||
hashedPassword = "$6$JGOefuRk7kL$fK9.5DFnLLoW08GL4eKRyf958jyZdw//hLMaz4pp28jJuSFb24H6R3dgt1.sMs0huPY85rludSw4dnQJG5xSw1"; # mkpasswd -m sha-512
|
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="
|
"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