From dd4cbbb5174b1614f5fc432276f61f72b53bad72 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Wed, 28 Sep 2022 17:41:17 +0200 Subject: [PATCH] Everything works decently (now using EXWM) --- .envrc | 4 +- doom.d/init.el | 6 +- doom.d/modules/os/exwm/config.el | 3 +- flake.lock | 195 ++++++++++++++++++++++--------- flake.nix | 12 +- hmModules/cura/default.nix | 3 + hmModules/emacs/default.nix | 2 + hmModules/udiskie/default.nix | 1 - hosts/thinkpad/default.nix | 2 + modules/audio/default.nix | 2 + modules/ccr/default.nix | 10 ++ modules/docker/default.nix | 9 ++ modules/exwm/black.png | Bin 0 -> 547 bytes modules/exwm/default.nix | 76 +++++++----- modules/nix/default.nix | 22 ++++ modules/transmission/default.nix | 17 +++ secrets/default.nix | 7 ++ secrets/mlabs-cachix.age | Bin 0 -> 1067 bytes utils/default.nix | 28 +++-- 19 files changed, 291 insertions(+), 108 deletions(-) create mode 100644 hmModules/cura/default.nix create mode 100644 modules/docker/default.nix create mode 100644 modules/exwm/black.png create mode 100644 modules/transmission/default.nix create mode 100644 secrets/default.nix create mode 100644 secrets/mlabs-cachix.age diff --git a/.envrc b/.envrc index a6d5743..4a7aad1 100644 --- a/.envrc +++ b/.envrc @@ -1,2 +1,2 @@ -watch_file shell/* flake.nix -use flake || use nix +nix_direnv_watch_file utils/default.nix +use flake diff --git a/doom.d/init.el b/doom.d/init.el index db58f22..fe9a1aa 100644 --- a/doom.d/init.el +++ b/doom.d/init.el @@ -90,7 +90,7 @@ ;;debugger ; FIXME stepping through code, to help you add bugs direnv ;;docker - ;;editorconfig ; let someone else argue about tabs vs spaces + 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 @@ -103,7 +103,7 @@ ;;prodigy ; FIXME managing external services & code builders ;;rgb ; creating color strings ;;taskrunner ; taskrunner for all your projects - ;;terraform ; infrastructure as code + 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 @@ -117,7 +117,7 @@ ;;agda ; types of types of types of types... ;;beancount ; mind the GAAP ;;(cc +lsp) ; C > C++ == 1 - ;;clojure ; java with a lisp + 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 diff --git a/doom.d/modules/os/exwm/config.el b/doom.d/modules/os/exwm/config.el index 9d0846c..3df3166 100644 --- a/doom.d/modules/os/exwm/config.el +++ b/doom.d/modules/os/exwm/config.el @@ -16,7 +16,7 @@ ;; Confgure `exwm' the X window manager for emacs. (use-package! exwm :config - + (setq exwm-workspace-number 10) ;(mapcar (lambda (i) (exwm-workspace-switch-create i) (number-sequence 0 9))) ;(exwm-workspace-switch-create 1) @@ -27,6 +27,7 @@ ([?\s-q] . kill-this-buffer) ([?\s-f] . exwm-layout-toggle-fullscreen) ([?\s-c] . exwm-input-toggle-keyboard) + ([?\s-s] . (lambda () (interactive) (start-process-shell-command "screenshot" nil "maim -s -u | xclip -selection clipboard -t image/png -i"))) ([?\s-d] . (lambda (command) (interactive (list (read-shell-command "$ "))) (start-process-shell-command command nil command))) diff --git a/flake.lock b/flake.lock index 714cb17..0444e55 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1652712410, - "narHash": "sha256-hMJ2TqLt0DleEnQFGUHK9sV2aAzJPU8pZeiZoqRozbE=", + "lastModified": 1662241716, + "narHash": "sha256-urqPvSvvGUhkwzTDxUI8N1nsdMysbAfjmBNZaTYBZRU=", "owner": "ryantm", "repo": "agenix", - "rev": "7e5e58b98c3dcbf497543ff6f22591552ebfe65b", + "rev": "c96da5835b76d3d8e8d99a0fec6fe32f8539ee2e", "type": "github" }, "original": { @@ -18,14 +18,35 @@ "type": "github" } }, + "comma": { + "inputs": { + "flake-compat": "flake-compat", + "naersk": "naersk", + "nixpkgs": "nixpkgs_2", + "utils": "utils" + }, + "locked": { + "lastModified": 1663284638, + "narHash": "sha256-rXAX14yB8v9BOG4ZsdGEedpZAnNqhQ4DtjQwzFX/TLY=", + "owner": "nix-community", + "repo": "comma", + "rev": "c83ff3839983b3cb8deb407ff618ca12179de588", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "comma", + "type": "github" + } + }, "doom-emacs": { "flake": false, "locked": { - "lastModified": 1659994866, - "narHash": "sha256-6lxvYfoPtzvinBHKvuUDpCz44IJpmZMLfLMy5q9UcFk=", + "lastModified": 1660901074, + "narHash": "sha256-3apl0eQlfBj3y0gDdoPp2M6PXYnhxs0QWOHp8B8A9sc=", "owner": "doomemacs", "repo": "doomemacs", - "rev": "b06fd63dcb686045d0c105f93e07f80cb8de6800", + "rev": "c44bc81a05f3758ceaa28921dd9c830b9c571e61", "type": "github" }, "original": { @@ -38,11 +59,11 @@ "doom-snippets": { "flake": false, "locked": { - "lastModified": 1655900328, - "narHash": "sha256-fEYwFxW2sdzNK14DrS92OCGy8KDPZKewrHljnE/RlzQ=", + "lastModified": 1659894476, + "narHash": "sha256-1arRqlTos5uj6N47N4hyzHMMoUBxsxaZ/NK7iN5A+ZY=", "owner": "doomemacs", "repo": "snippets", - "rev": "6b2bd5a77c536ed414794ecf71d37a60ebd4663e", + "rev": "f957f8d195872f19c7ab0a777d592c611e10e9bb", "type": "github" }, "original": { @@ -62,11 +83,11 @@ "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_2", "flake-utils": "flake-utils", "format-all": "format-all", "nix-straight": "nix-straight", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nose": "nose", "ob-racket": "ob-racket", "org": "org", @@ -80,11 +101,11 @@ "ws-butler": "ws-butler" }, "locked": { - "lastModified": 1660129951, - "narHash": "sha256-uY0fxCwUQ5LmfX2CoklqOebKl6GM96qir2Zv1cbHdQI=", + "lastModified": 1662665437, + "narHash": "sha256-Aksr5xArGPbyrqEa/jxXn0/d9hc639SvpgUqfkdPLCY=", "owner": "nix-community", "repo": "nix-doom-emacs", - "rev": "20ca56a17dc33d67ed7d61b0e84205c617394b5b", + "rev": "a62512125de85c81fa8d1bb77ba8c8fe96d5b390", "type": "github" }, "original": { @@ -96,11 +117,11 @@ "emacs-overlay": { "flake": false, "locked": { - "lastModified": 1659638214, - "narHash": "sha256-lXa01G06Ey9qgj+rYN7Nzc53FP3p2UMMnAuxpWXu9Ko=", + "lastModified": 1662056744, + "narHash": "sha256-DSVel5s2LajK2F+bxKwenfbDis63GprQLJjAfpfWgfU=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "a151f9ff5b9fa813ac8918f3a3a67c643e7e2edc", + "rev": "6b4445aa659fa26b4f36d9975b34632312699a85", "type": "github" }, "original": { @@ -221,13 +242,29 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1650374568, + "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "b4a34015c698c7793d592d66adbab377907a2be8", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-utils": { "locked": { - "lastModified": 1656928814, - "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", "owner": "numtide", "repo": "flake-utils", - "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", "type": "github" }, "original": { @@ -273,14 +310,14 @@ "nixpkgs": [ "nixpkgsUnstable" ], - "utils": "utils" + "utils": "utils_2" }, "locked": { - "lastModified": 1660505226, - "narHash": "sha256-Jl1w6X3qNfp0Y5PwRlz/tlhVa6Wzzceq1iScni3gb9s=", + "lastModified": 1662759269, + "narHash": "sha256-lt8bAfEZudCQb+MxoNKmenhMTXhu3RCCyLYxU9t5FFk=", "owner": "nix-community", "repo": "home-manager", - "rev": "ff5133843c26979f8abb5dd801b32f40287692fa", + "rev": "9f7fe353b613d0e45d7a5cdbd1f13c96c15803dd", "type": "github" }, "original": { @@ -289,6 +326,28 @@ "type": "github" } }, + "naersk": { + "inputs": { + "nixpkgs": [ + "comma", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1662220400, + "narHash": "sha256-9o2OGQqu4xyLZP9K6kNe1pTHnyPz0Wr3raGYnr9AIgY=", + "owner": "nix-community", + "repo": "naersk", + "rev": "6944160c19cb591eb85bbf9b2f2768a935623ed3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "naersk", + "type": "github" + } + }, "nix-straight": { "flake": false, "locked": { @@ -307,11 +366,11 @@ }, "nixosHardware": { "locked": { - "lastModified": 1660740642, + "lastModified": 1660747200, "narHash": "sha256-tTc3scY+8jG4eWOhrE1aWk2sJ2pu+KBE5axjP3h5zIA=", "owner": "aciceri", "repo": "nixos-hardware", - "rev": "21ad034e26eb6451d346b4a3de688042ccbff823", + "rev": "747638748e51e0b9ae3e0d4372433bd5f35c3dd5", "type": "github" }, "original": { @@ -338,11 +397,11 @@ }, "nixpkgsStable": { "locked": { - "lastModified": 1660496378, - "narHash": "sha256-sgAhmrC1iSnl5T2VPPiMpciH1aRw5c7PYEdXX6jd6Gk=", + "lastModified": 1662576620, + "narHash": "sha256-yw0dBGrnbMQ73U+AIm8vA2vvoWWqMr0D6LegWuq4J6k=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "879121648fe522b38cc1cf75aef160a14a1f2e7b", + "rev": "c7bad05cd7be62d8e59131b351e1e99e6215e886", "type": "github" }, "original": { @@ -354,11 +413,11 @@ }, "nixpkgsUnstable": { "locked": { - "lastModified": 1660396586, - "narHash": "sha256-ePuWn7z/J5p2lO7YokOG1o01M0pDDVL3VrStaPpS5Ig=", + "lastModified": 1662019588, + "narHash": "sha256-oPEjHKGGVbBXqwwL+UjsveJzghWiWV0n9ogo1X6l4cw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e105167e98817ba9fe079c6c3c544c6ef188e276", + "rev": "2da64a81275b68fdad38af669afeda43d401e94b", "type": "github" }, "original": { @@ -370,11 +429,27 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1659606041, - "narHash": "sha256-W4/u2ssr3fS4XOtltrsDD9w2kF4jYYZr6JyPGUW2jdI=", + "lastModified": 1663235518, + "narHash": "sha256-q8zLK6rK/CLXEguaPgm9yQJcY0VQtOBhAT9EV2UFK/A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5f9b871b72b24f066b1a1e189efd0669f2888c49", + "rev": "2277e4c9010b0f27585eb0bed0a86d7cbc079354", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1661353537, + "narHash": "sha256-1E2IGPajOsrkR49mM5h55OtYnU0dGyre6gl60NXKITE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0e304ff0d9db453a4b230e9386418fd974d5804a", "type": "github" }, "original": { @@ -383,7 +458,7 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1645655918, "narHash": "sha256-ZfbEFRW7o237+A1P7eTKhXje435FCAoe0blj2n20Was=", @@ -432,11 +507,11 @@ "org": { "flake": false, "locked": { - "lastModified": 1659533964, - "narHash": "sha256-ipwJjcRzY9iqEjkG4m8EXZ6+8OMdANuXRnSwct2LByQ=", + "lastModified": 1662044935, + "narHash": "sha256-ZpxKw8L/IpxolkGyQMDut6V4i8I1T5za0QBBrztfcts=", "owner": "emacs-straight", "repo": "org-mode", - "rev": "4702a73031c77ba03b480b0848c137d5d8773e07", + "rev": "e36c3cc21b8b1471e1f7928a118de693819c3f12", "type": "github" }, "original": { @@ -448,11 +523,11 @@ "org-contrib": { "flake": false, "locked": { - "lastModified": 1659039737, - "narHash": "sha256-ig8pVl790DopN6ZrCTIrvojt5/0Y+aOsjE87pqIVz8M=", + "lastModified": 1661026052, + "narHash": "sha256-rE7aioQxeVjo+TVI4DIppKkmf/c7tRNzK6hQJAmUnVE=", "owner": "emacsmirror", "repo": "org-contrib", - "rev": "39e2abc5629c1be6186bb6489ec4f76524edf82a", + "rev": "0740bd3fe69c4b327420185d931dcf0a9900a80e", "type": "github" }, "original": { @@ -496,14 +571,14 @@ "preCommitHooks": { "inputs": { "flake-utils": "flake-utils_2", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1659629599, - "narHash": "sha256-c9rvaqaH3HZo/C70E7rB18YSywa4ryTtN7CZ3cuCmoA=", + "lastModified": 1660830093, + "narHash": "sha256-HUhx3a82C7bgp2REdGFeHJdhEAzMGCk3V8xIvfBqg1I=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "6a9402e8f233de16536349d1dd3f4595c23386a4", + "rev": "8cb8ea5f1c7bc2984f460587fddd5f2e558f6eb8", "type": "github" }, "original": { @@ -515,11 +590,11 @@ "revealjs": { "flake": false, "locked": { - "lastModified": 1653993278, - "narHash": "sha256-X43lsjoLBWmttIKj9Jzut0UP0dZlsue3fYbJ3++ojbU=", + "lastModified": 1660499724, + "narHash": "sha256-BhnEmX+8h0MVol7T4Zr2w53A+AmgzcVirpwHCR/G73U=", "owner": "hakimel", "repo": "reveal.js", - "rev": "039972c730690af7a83a5cb832056a7cc8b565d7", + "rev": "b23d15c4304a9a1b72f484171fc97682e5ed85a3", "type": "github" }, "original": { @@ -531,6 +606,7 @@ "root": { "inputs": { "agenix": "agenix", + "comma": "comma", "doomEmacs": "doomEmacs", "homeManager": "homeManager", "nixosHardware": "nixosHardware", @@ -574,11 +650,11 @@ "ts-fold": { "flake": false, "locked": { - "lastModified": 1659171920, - "narHash": "sha256-/yY3Ph/BE3PFZhnBIQIHkwOW/43phSI7WeoMvU83TG4=", + "lastModified": 1662006199, + "narHash": "sha256-gDelW/h2LyknTQNkHODvzCJCKelLdLIQoDh/L1lk3KA=", "owner": "jcs-elpa", "repo": "ts-fold", - "rev": "17d131f69a717d7e8cc6d3af9dfa7d2b5e2b78ef", + "rev": "28409a0ceede0751ed9d520c6a19d1f5f1211502", "type": "github" }, "original": { @@ -588,6 +664,21 @@ } }, "utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "utils_2": { "locked": { "lastModified": 1653893745, "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", diff --git a/flake.nix b/flake.nix index f160aff..1b3e3dd 100644 --- a/flake.nix +++ b/flake.nix @@ -12,18 +12,10 @@ preCommitHooks.url = github:cachix/pre-commit-hooks.nix; agenix.url = github:ryantm/agenix; doomEmacs.url = github:nix-community/nix-doom-emacs; + comma.url = github:nix-community/comma; }; - outputs = { - self, - nixpkgsUnstable, - nixpkgsStable, - nixosHardware, - homeManager, - preCommitHooks, - agenix, - doomEmacs, - } @ inputs: let + outputs = {self, ...} @ inputs: let utils = (import ./utils) inputs; inherit (utils) lib mkConfigurations mkVmApps checkFormatting formatter formatApp mkDevShell; in { diff --git a/hmModules/cura/default.nix b/hmModules/cura/default.nix new file mode 100644 index 0000000..2dcb042 --- /dev/null +++ b/hmModules/cura/default.nix @@ -0,0 +1,3 @@ +{pkgs, ...}: { + home.packages = [pkgs.cura]; +} diff --git a/hmModules/emacs/default.nix b/hmModules/emacs/default.nix index 3ea9440..fd96543 100644 --- a/hmModules/emacs/default.nix +++ b/hmModules/emacs/default.nix @@ -23,5 +23,7 @@ fd imagemagick sqlite + maim + xclip ]; } diff --git a/hmModules/udiskie/default.nix b/hmModules/udiskie/default.nix index c6b20aa..910b22f 100644 --- a/hmModules/udiskie/default.nix +++ b/hmModules/udiskie/default.nix @@ -2,6 +2,5 @@ services.udiskie = { enable = true; automount = true; - tray = "never"; }; } diff --git a/hosts/thinkpad/default.nix b/hosts/thinkpad/default.nix index a40c162..05c2722 100644 --- a/hosts/thinkpad/default.nix +++ b/hosts/thinkpad/default.nix @@ -20,6 +20,8 @@ "adb" "qmk-udev" "bluetooth" + "docker" + "transmission" ]; boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usb_storage" "sd_mod"]; diff --git a/modules/audio/default.nix b/modules/audio/default.nix index d8933a8..8e5c841 100644 --- a/modules/audio/default.nix +++ b/modules/audio/default.nix @@ -5,4 +5,6 @@ enable = true; package = pkgs.pulseaudioFull; }; + + users.extraUsers.ccr.extraGroups = ["audio"]; } diff --git a/modules/ccr/default.nix b/modules/ccr/default.nix index 8feed2a..ece9311 100644 --- a/modules/ccr/default.nix +++ b/modules/ccr/default.nix @@ -46,9 +46,19 @@ "element" "udiskie" "discord" + "cura" ]; home.packages = with pkgs; [ + comma ]; home.stateVersion = config.system.stateVersion; + # TODO move away from here + xdg.enable = true; + home.pointerCursor = { + x11.enable = true; + size = 32; + package = pkgs.vanilla-dmz; + name = "Vanilla-DMZ"; + }; }; } diff --git a/modules/docker/default.nix b/modules/docker/default.nix new file mode 100644 index 0000000..342f14a --- /dev/null +++ b/modules/docker/default.nix @@ -0,0 +1,9 @@ +{ + config, + lib, + pkgs, + ... +}: { + virtualisation.docker.enable = true; + users.users.ccr.extraGroups = ["docker"]; +} diff --git a/modules/exwm/black.png b/modules/exwm/black.png new file mode 100644 index 0000000000000000000000000000000000000000..5895b18ab2f575306440c029702d027bcb0a82f0 GIT binary patch literal 547 zcmV+;0^I$HP)EX>4Tx04R}tkv&MmKpe$iTct%R4rUM$$xxjvh>8d%UlDMV_&%l-5@>lA>)Fz1bM0hc>K-;*JmvMYsX1`7q?{fxdT2lUeehUh{c(q`kL)&ouk{0i^?SyOP;d8~^|S32;bRa{vG?BLDy{BLR4&KXw2B00(qQ zO+^Rh2owkaFv|$IA^-pY8FWQhbVF}#ZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b l01Qb)K~xCWV_;xl0000400Ad7Ckg-n002ovPDHLkV1krU*O34K literal 0 HcmV?d00001 diff --git a/modules/exwm/default.nix b/modules/exwm/default.nix index cf56aa1..500e196 100644 --- a/modules/exwm/default.nix +++ b/modules/exwm/default.nix @@ -1,38 +1,54 @@ {pkgs, ...}: { services.xserver = { enable = true; - autorun = false; + autorun = true; + exportConfiguration = true; + layout = "us"; + xkbModel = "thinkpad"; + xkbVariant = "altgr-intl"; libinput.enable = true; - displayManager.startx.enable = true; + displayManager = { + defaultSession = "none+exwm"; + autoLogin.enable = true; + autoLogin.user = "ccr"; + sddm = { + enable = true; + autoLogin.relogin = true; + #background = "#000000"; + }; + }; + desktopManager = { + xterm.enable = false; + }; + windowManager = { + session = pkgs.lib.singleton { + name = "exwm"; + # TODO query emacs daemon to discover if it's ready to start EXWM)` before starting the session + start = '' + exec dbus-launch --exit-with-session emacsclient --create-frame -F "((fullscreen . fullboth))" --eval "(exwm-init)" + ''; + }; + }; }; - 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 - - dbus-update-activation-environment DISPLAY - - # Lockscreen - exec ${pkgs.xss-lock}/bin/xss-lock -- ${pkgs.i3lock-blur}/bin/i3lock-color & - - # Finally start Emacs - exec dbus-launch emacsclient --create-frame -F "((fullscreen . fullboth))" + services.xserver.displayManager.sessionCommands = '' + ${pkgs.xorg.xrdb}/bin/xrdb -merge <${ + pkgs.writeText "Xresources" '' + Xcursor.theme: Adwaita + Xcursor.size: 16 + Emacs.Background: black + '' + } ''; + + home-manager.users.ccr = { + services.network-manager-applet.enable = true; + services.blueman-applet.enable = true; + services.pasystray.enable = true; + xsession.enable = true; + }; + + services.udisks2.enable = true; + + hardware.opengl.enable = true; } diff --git a/modules/nix/default.nix b/modules/nix/default.nix index 064ec21..193bb1c 100644 --- a/modules/nix/default.nix +++ b/modules/nix/default.nix @@ -7,6 +7,19 @@ nix = { settings = { auto-optimise-store = true; + trusted-users = [ + "root" + "ccr" + "@wheel" + ]; + trusted-public-keys = [ + "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" + "mlabs.cachix.org-1:gStKdEqNKcrlSQw5iMW6wFCj3+b+1ASpBVY2SYuNV2M=" + ]; + substituters = [ + "https://cache.iog.io" + "https://mlabs.cachix.org/" + ]; }; extraOptions = '' @@ -21,4 +34,13 @@ optimise.automatic = true; }; + + age.secrets.mlabs-cachix.file = ../../secrets/mlabs-cachix.age; + system.activationScripts = { + populate-netrc.text = '' + cat < /etc/nix/netrc + machine mlabs.cachix.org login "" password "$(cat ${config.age.secrets.mlabs-cachix.path})" + EOF + ''; + }; } diff --git a/modules/transmission/default.nix b/modules/transmission/default.nix new file mode 100644 index 0000000..699d538 --- /dev/null +++ b/modules/transmission/default.nix @@ -0,0 +1,17 @@ +{ + config, + lib, + pkgs, + ... +}: { + services.transmission = { + enable = true; + settings = { + rpc-port = 9091; + rpc-whitelist-enabled = false; + rpc-host-whitelist-enabled = false; + }; + }; + + users.users.ccr.extraGroups = ["transmission"]; +} diff --git a/secrets/default.nix b/secrets/default.nix new file mode 100644 index 0000000..bd09263 --- /dev/null +++ b/secrets/default.nix @@ -0,0 +1,7 @@ +let + keys = { + agenix = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC5cEUx25pnZiH3eBrE2xNbJ92gJiKSznDUNRzcEL4ti6FlJm+75p4q0hgdqHwStR8+uCWBL6viVFCGutOVMFE5MX1Oc3A8fJdR6H9Rrwvk/1UQzqzc9tWxw1qPLKz+fnPDomjOvNofghCWQRwX3Xf1HnIqvRwELpNbR9i+/cHkDGzLJxkstbt4gol8ywMPkw02QdKk8s5MEd1vawxc+7Chs0JPW57RDqDYFErYys52JLeAViCBB9bofF+KT42LuRXKSjWlvCV9kR5TL49vUeBgzMQWMh++WQdN4m9lpqFqYyc75I49/E0HGf8LChDSS+hvRnb5MbtnVGjEA4WDHyldmJCvUNob5CUo4FjoSPRi+S/J3Ads8D4JVwaJOJEVqmMKEhiQ0Hzk4hwe3eV/VumlZj4U/QjaCrqqi4TW/iP0gNRfzcfiM+G/z5R7w1NMUpTX7oilyKjMQmGnXB857D3SSptS7dwh5OiKhVmrQMRCduooUsj236abqLU28K//RnxhOgh8kDGgoUHApnTiMZNKhgLiR42lKrubNcW1tAAqoNyFLMwwXeMLjh0iP1b5y8ntfNPNIcGb7vcwpS24z/aIjW7rQ4J7x5EBphHGhys6ne+irdhOM8c7kFr+c8+Q2oU0YAtFuMYztAFOHm1e20X00Zvys2nuee+hT9F1NungAQ=="; + }; +in { + "secrets/mlabs-cachix.age".publicKeys = [keys.agenix]; +} diff --git a/secrets/mlabs-cachix.age b/secrets/mlabs-cachix.age new file mode 100644 index 0000000000000000000000000000000000000000..5f3f048b3973d69e40fccfa8fb3950b4ab9f7ea1 GIT binary patch literal 1067 zcmWmC&#T*X003~2=fHTGQ}7KuJVBq#*w-XY+w`!_G;NwTKboZ9q)A03Ns~0mn%`-g zqB2lH{PAR<$WS+#CsCZvgNz~S;Z5-%bKnyd{Dt5_@ajWBod3dykKx)CJG9a=&b=ty ziBh+^K%vTstt^{W(#+VBn6y?UArY~N zmhrZ*G_19vnx;7ATXPq~DXm#Tyf(M`Sfb;eHBA}})3STSAmbE&(REj4J;dq`&a_Jz zp|Ew5%RVKCbGnq55+A}GHXlKjtJLb9jPb{QC-9j`dJ4;Vuhm${D@$^F4C}Y0C04_m z*;MhxP9$WB;nncgL@x*3By=FQ9e80;RD0YiU`O0sX({=T9ZKbjSehN$<%V!`ErLv@ zK#SqfKwEb@lW}7d0nm|pHVWDFik`5Kby+x;vXnI>;f_L5!M{D_P3Uc-&QqoN&gYNK58QXBB0kR8ABx7kZAY+N;?7H%v6GM30@_f+Ea!8!?a zcqYJReHD*O$!`szAPqFFs-mVpVTa3Tf_{F$j7GvE69Nr zWeQ5VLsWxOsc~BBK)mP)ZGueDD1a)J$`&!z@Old4%UmK>sxcUdQgQSicoE`G91f4S}K&gQ$iNn z|Hp&dyE=AL`^tw;{CaGIc<=U?j@_5?XK(%OuOD|4bz8f9$NmSi&6_VBTzl%we^PRI A$N&HU literal 0 HcmV?d00001 diff --git a/utils/default.nix b/utils/default.nix index ed2e457..b7f382b 100644 --- a/utils/default.nix +++ b/utils/default.nix @@ -5,6 +5,7 @@ homeManager, doomEmacs, agenix, + comma, ... }: let supportedSystems = {x86_64-linux = "x86_64-linux";}; @@ -26,15 +27,15 @@ [ { networking.hostName = lib.mkForce name; + home-manager.users.ccr.imports = [ + doomEmacs.hmModule + ]; + age.identityPaths = ["/home/ccr/.ssh/id_rsa"]; + nixpkgs.overlays = [agenix.overlay comma.overlays.default]; } (../hosts + "/${name}") homeManager.nixosModule agenix.nixosModule - { - home-manager.users.ccr.imports = [ - doomEmacs.hmModule - ]; - } ] ++ modules; specialArgs = { @@ -55,7 +56,6 @@ mkVmApp = system: configuration: let shellScript = pkgsFor.${system}.writeShellScript "run-vm" '' - #rm ${configuration.config.networking.hostName}.qcow2 ${configuration.config.system.build.vm}/bin/run-${configuration.config.networking.hostName}-vm ''; in { @@ -99,9 +99,19 @@ } ); - mkDevShell = lib.perSystem (system: { - default = pkgsFor.${system}.mkShell { - inherit (checkFormattingHook.${system}.nix) shellHook; + mkDevShell = lib.perSystem (system: let + pkgs = pkgsFor.${system}; + in { + default = pkgs.mkShell { + shellHook = + checkFormattingHook.${system}.nix.shellHook + + '' + export RULES="$(git rev-parse --show-toplevel)/secrets/default.nix"; + ''; + packages = with pkgs; [ + git + agenix.packages.${system}.agenix + ]; }; }); in {