Compare commits

..

1 commit
master ... wsl

Author SHA1 Message Date
Paul-Henri Froidmont
ea63d5e273
wip 2024-11-18 09:00:47 +01:00
43 changed files with 1588 additions and 1734 deletions

View file

@ -8,33 +8,24 @@
{ {
imports = [ imports = [
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
] ] ++ (lib.my.mapModulesRec' (toString ./modules) import);
++ (lib.my.mapModulesRec' (toString ./modules) import);
nix = { nix = {
package = pkgs.nixVersions.stable; package = pkgs.nixFlakes;
extraOptions = "experimental-features = nix-command flakes"; extraOptions = "experimental-features = nix-command flakes";
nixPath = [ "nixpkgs=${inputs.nixpkgs}" ]; nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
settings = { settings = {
substituters = [ substituters = [
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"http://cache.banditlair.com"
"https://cache.nixos.org/" "https://cache.nixos.org/"
"https://devenv.cachix.org"
# "ssh://nix-ssh@hel1.banditlair.com"
]; ];
trusted-public-keys = [ trusted-public-keys = [
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw=" "cache.banditlair.com:4zk7iDvzKh6VN+LxzKIGcVPKgL5dLeyEt2ydrgx4o8c="
"hel1.banditlair.com:stzB4xe5QTFvSABoP11ZpNzLDCRZ93PExk0Z/gOzW3g="
]; ];
auto-optimise-store = true; auto-optimise-store = true;
}; };
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
persistent = true;
};
}; };
system.configurationRevision = lib.mkIf (inputs.self ? rev) inputs.self.rev; system.configurationRevision = lib.mkIf (inputs.self ? rev) inputs.self.rev;
@ -43,10 +34,6 @@
i18n.defaultLocale = lib.mkDefault "en_US.UTF-8"; i18n.defaultLocale = lib.mkDefault "en_US.UTF-8";
zramSwap.enable = true;
zramSwap.memoryPercent = 300;
systemd.oomd.enable = true;
console = { console = {
keyMap = lib.mkDefault "fr"; keyMap = lib.mkDefault "fr";
font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-v32n.psf.gz"; font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-v32n.psf.gz";

442
flake.lock generated
View file

@ -1,38 +1,38 @@
{ {
"nodes": { "nodes": {
"blueprint": { "devshell": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"llm-agents", "nixvim",
"nixpkgs" "nixpkgs"
], ]
"systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1763308703, "lastModified": 1728330715,
"narHash": "sha256-O9Y+Wer8wOh+N+4kcCK5p/VLrXyX+ktk0/s3HdZvJzk=", "narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
"owner": "numtide", "owner": "numtide",
"repo": "blueprint", "repo": "devshell",
"rev": "5a9bba070f801d63e2af3c9ef00b86b212429f4f", "rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "numtide", "owner": "numtide",
"repo": "blueprint", "repo": "devshell",
"type": "github" "type": "github"
} }
}, },
"emacs-overlay": { "emacs-overlay": {
"inputs": { "inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1766423654, "lastModified": 1728839477,
"narHash": "sha256-ko2vQ6kf8dXLMTq2bnNazbPAHvdsf+BrWQfr4acRNDo=", "narHash": "sha256-HXWknm3vRHknK0yKdlO1qKFxO6f8lJHaufFekxjL4RY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "emacs-overlay", "repo": "emacs-overlay",
"rev": "d06edf59a5f5c1b15d607ec2e514cf2f8a71a591", "rev": "1ac99536bb5eb9b2b4fc161bd0651bcbbb36c6d9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -41,6 +41,174 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1727826117,
"narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flameshot-git": {
"flake": false,
"locked": {
"lastModified": 1725222363,
"narHash": "sha256-xM99adstwfOOaeecKyWQU3yY0p65pQyFgoz7WJNra98=",
"owner": "flameshot-org",
"repo": "flameshot",
"rev": "14a136777cd82ab70f42c13b4bc9418c756d91d2",
"type": "github"
},
"original": {
"owner": "flameshot-org",
"repo": "flameshot",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat_3",
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1728092656,
"narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "1211305a5b237771e13fcca0c51e60ad47326a9a",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"nixvim",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -48,11 +216,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1766387499, "lastModified": 1728791962,
"narHash": "sha256-AjK3/UKDzeXFeYNLVBaJ3+HLE9he1g5UrlNd4/BM3eA=", "narHash": "sha256-nr5QiXwQcZmf6/auC1UpX8iAtINMtdi2mH+OkqJQVmU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "527ad07e6625302b648ed3b28c34b62a79bd103e", "rev": "64c6325b28ebd708653dd41d88f306023f296184",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -62,33 +230,77 @@
"type": "github" "type": "github"
} }
}, },
"llm-agents": { "home-manager_2": {
"inputs": { "inputs": {
"blueprint": "blueprint", "nixpkgs": [
"nixpkgs": "nixpkgs_2", "nixvim",
"treefmt-nix": "treefmt-nix" "nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1766441132, "lastModified": 1726989464,
"narHash": "sha256-bd6d2lQiNaIEIjRZo7yFthyYJ8uugnRJfWn8SuOy8i4=", "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
"owner": "numtide", "owner": "nix-community",
"repo": "llm-agents.nix", "repo": "home-manager",
"rev": "950a181bbb93b8de506b1db15fec242d273d2c1d", "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "numtide", "owner": "nix-community",
"repo": "llm-agents.nix", "ref": "release-24.05",
"repo": "home-manager",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1727999297,
"narHash": "sha256-LTJuQPCsSItZ/8TieFeP30iY+uaLoD0mT0tAj1gLeyQ=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "8c8388ade72e58efdeae71b4cbb79e872c23a56b",
"type": "github"
},
"original": {
"owner": "lnl7",
"repo": "nix-darwin",
"type": "github"
}
},
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1730120924,
"narHash": "sha256-I6hwd+YlgefioLfmsM04MxzbEAES1N328/T+VqhcWnQ=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "b124084667fb4c912fda68fdd9d05f59e18b6ef7",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "main",
"repo": "NixOS-WSL",
"type": "github" "type": "github"
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1766309749, "lastModified": 1728492678,
"narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -98,45 +310,61 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-master": {
"locked": {
"lastModified": 1731682847,
"narHash": "sha256-6O0APLMLj/Zp2iDQVUVDiVTMWC1XC3TcVHuufzZ0dS0=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a8eb04832bed6c5cee8cd2d148a77644c5a4197f",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1766014764, "lastModified": 1728740863,
"narHash": "sha256-+73VffE5GP5fvbib6Hs1Su6LehG+9UV1Kzs90T2gBLA=", "narHash": "sha256-u+rxA79a0lyhG+u+oPBRtTDtzz8kvkc9a6SWSt9ekVc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2b0d2b456e4e8452cf1c16d00118d145f31160f9", "rev": "a3f9ad65a0bf298ed5847629a57808b97e6e8077",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-25.05", "ref": "nixos-24.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1766314097, "lastModified": 1729973466,
"narHash": "sha256-laJftWbghBehazn/zxVJ8NdENVgjccsWAdAqKXhErrM=", "narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "306ea70f9eb0fb4e040f8540e2deab32ed7e2055", "rev": "cd3e8833d70618c4eea8df06f95b364b016d4950",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixpkgs-unstable", "ref": "nixos-24.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1766309749, "lastModified": 1728492678,
"narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -146,84 +374,45 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": { "nixvim": {
"locked": {
"lastModified": 1766070988,
"narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c6245e83d836d0433170a16eb185cefe0572f8b8",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nvim-treesitter": {
"flake": false,
"locked": {
"lastModified": 1766230815,
"narHash": "sha256-+2PF6Q2uwRs/gbhKvR4jF8rYhe0HoZfwMwZCoZinp/o=",
"owner": "nvim-treesitter",
"repo": "nvim-treesitter",
"rev": "8cdffc6d334731ce3703b6d870a5a34fd878208a",
"type": "github"
},
"original": {
"owner": "nvim-treesitter",
"ref": "main",
"repo": "nvim-treesitter",
"type": "github"
}
},
"nvim-treesitter-main": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_4", "devshell": "devshell",
"nvim-treesitter": "nvim-treesitter", "flake-compat": "flake-compat_2",
"nvim-treesitter-textobjects": "nvim-treesitter-textobjects" "flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"home-manager": "home-manager_2",
"nix-darwin": "nix-darwin",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1766296113, "lastModified": 1728336862,
"narHash": "sha256-s6bymukQTFg6kAsgogwbCda+Fe+Su3T9rJE0xZ8s9R0=", "narHash": "sha256-0rG55ZD1zvLLJ+WgiYdJBZGm1fkgRUlwpfx7aNUT5m4=",
"owner": "iofq", "owner": "nix-community",
"repo": "nvim-treesitter-main", "repo": "nixvim",
"rev": "5ca3b0dd2d3d00fb597ba8c316eb3ca79ea17fbc", "rev": "b041963c607d766c4b102b8b56244ad38731f549",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "iofq", "owner": "nix-community",
"repo": "nvim-treesitter-main", "ref": "nixos-24.05",
"type": "github" "repo": "nixvim",
}
},
"nvim-treesitter-textobjects": {
"flake": false,
"locked": {
"lastModified": 1766243280,
"narHash": "sha256-hbVwqoo0WRTVKIhsG5N6IXnmOVrrQzGuE4x0rEMYro0=",
"owner": "nvim-treesitter",
"repo": "nvim-treesitter-textobjects",
"rev": "e91c585ac0ee760198dabc1fad2e6227effdcd5e",
"type": "github"
},
"original": {
"owner": "nvim-treesitter",
"ref": "main",
"repo": "nvim-treesitter-textobjects",
"type": "github" "type": "github"
} }
}, },
"root": { "root": {
"inputs": { "inputs": {
"emacs-overlay": "emacs-overlay", "emacs-overlay": "emacs-overlay",
"flameshot-git": "flameshot-git",
"home-manager": "home-manager", "home-manager": "home-manager",
"llm-agents": "llm-agents", "nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_3",
"nvim-treesitter-main": "nvim-treesitter-main", "nixpkgs-master": "nixpkgs-master",
"vim-org-roam": "vim-org-roam" "nixvim": "nixvim",
"vim-org-roam": "vim-org-roam",
"vim-yazi": "vim-yazi"
} }
}, },
"systems": { "systems": {
@ -241,19 +430,34 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"llm-agents", "nixvim",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1766000401, "lastModified": 1727984844,
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=", "narHash": "sha256-xpRqITAoD8rHlXQafYZOLvUXCF6cnZkPfoq67ThN0Hc=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd", "rev": "4446c7a6fc0775df028c5a3f6727945ba8400e64",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -265,11 +469,11 @@
"vim-org-roam": { "vim-org-roam": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1765802816, "lastModified": 1727183922,
"narHash": "sha256-Zzq4JK3iFBVr8QmMmv5vm/R8QyYqmL44fRMZa15m7eo=", "narHash": "sha256-gONxa/CUXPgV+ucC+WkEyeH/lFAiTaQx8bEBq7g6HyY=",
"owner": "chipsenkbeil", "owner": "chipsenkbeil",
"repo": "org-roam.nvim", "repo": "org-roam.nvim",
"rev": "74276a94e9e4af463e7ba35c22259eeced9c90f9", "rev": "17f85abf207ece51bd37c8f3490d8f7d2fa106d0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -277,6 +481,22 @@
"repo": "org-roam.nvim", "repo": "org-roam.nvim",
"type": "github" "type": "github"
} }
},
"vim-yazi": {
"flake": false,
"locked": {
"lastModified": 1728834368,
"narHash": "sha256-hvrtjNkieHFs/VzeEPlI+nkFoTsRX/c32bBOjXPBwpM=",
"owner": "mikavilpas",
"repo": "yazi.nvim",
"rev": "bff42c2ead02675d66e31799d2f3edaba29a4c79",
"type": "github"
},
"original": {
"owner": "mikavilpas",
"repo": "yazi.nvim",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -1,18 +1,29 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-master.url = "github:nixos/nixpkgs/master";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/master"; url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
emacs-overlay.url = "github:nix-community/emacs-overlay"; emacs-overlay.url = "github:nix-community/emacs-overlay";
nixvim = {
url = "github:nix-community/nixvim/nixos-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
vim-yazi = {
url = "github:mikavilpas/yazi.nvim";
flake = false;
};
vim-org-roam = { vim-org-roam = {
url = "github:chipsenkbeil/org-roam.nvim"; url = "github:chipsenkbeil/org-roam.nvim";
flake = false; flake = false;
}; };
llm-agents.url = "github:numtide/llm-agents.nix"; flameshot-git = {
# Workaround until nvim-treesitter main branch is used in nixpkgs url = "github:flameshot-org/flameshot";
nvim-treesitter-main.url = "github:iofq/nvim-treesitter-main"; flake = false;
};
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
}; };
outputs = outputs =
@ -33,20 +44,12 @@
config.allowUnfreePredicate = config.allowUnfreePredicate =
pkg: pkg:
builtins.elem (pkgs.lib.getName pkg) [ builtins.elem (pkgs.lib.getName pkg) [
"corefonts"
"steam" "steam"
"steam-original" "steam-original"
"steam-run" "steam-run"
"steam-unwrapped"
"keymapp"
"mongodb-compass"
"nvidia-x11"
"nvidia-settings"
"idea"
]; ];
overlays = overlays = extraOverlays ++ (pkgs.lib.attrValues self.overlays);
extraOverlays
++ (pkgs.lib.attrValues self.overlays)
++ [ inputs.nvim-treesitter-main.overlays.default ];
}; };
pkgs = mkPkgs nixpkgs [ ]; pkgs = mkPkgs nixpkgs [ ];

View file

@ -0,0 +1,54 @@
{ config, ... }:
{
imports = [ ./hardware-configuration.nix ];
modules = {
desktop.wm.enable = true;
editor = {
vim.enable = true;
emacs.enable = true;
};
services = {
flatpak.enable = true;
belgian-eid.enable = true;
docker.enable = true;
libvirt.enable = true;
languagetool.enable = true;
};
media = {
mpd.enable = true;
ncmpcpp.enable = true;
};
};
# Monitor backlight control
programs.light.enable = true;
users.users.${config.user.name}.extraGroups = [ "video" ];
services.tlp.enable = true;
home-manager.users.${config.user.name} =
{ _ }:
{
services.network-manager-applet.enable = true;
services.blueman-applet.enable = true;
wayland.windowManager.hyprland.settings = {
dwindle.no_gaps_when_only = 1;
};
};
services.pipewire.wireplumber.extraConfig = {
"monitor.bluez.properties" = {
"bluez5.enable-sbc-xq" = true;
"bluez5.enable-msbc" = true;
"bluez5.enable-hw-volume" = true;
"bluez5.roles" = [
"hsp_hs"
"hsp_ag"
"hfp_hf"
"hfp_ag"
];
};
};
system.stateVersion = "21.05";
}

View file

@ -0,0 +1,62 @@
{ modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"nvme"
"xhci_pci"
"sdhci_pci"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-amd" ];
# Required, otherwise the kernel freezes on boot
kernelParams = [
"amd_iommu=on"
"iommu=pt"
"pci=noats"
];
extraModulePackages = [ ];
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
initrd.luks.devices."crypted".device = "/dev/disk/by-uuid/1e900b2e-daea-4558-b18f-3d3a5843de61";
};
hardware.cpu.amd.updateMicrocode = true;
fileSystems."/" = {
device = "/dev/disk/by-uuid/a8abad9b-5615-4887-8431-3d80b78d073e";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/077C-758A";
fsType = "vfat";
};
swapDevices = [ { device = "/dev/disk/by-uuid/bb8fa9ef-9b8f-413d-913a-6c891649a954"; } ];
zramSwap.enable = true;
hardware = {
bluetooth = {
enable = true;
# Enable A2DP Sink
settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
};
};
networking.networkmanager.enable = true;
services.blueman.enable = true;
services.logind.lidSwitch = "ignore";
}

View file

@ -1,4 +1,4 @@
{ pkgs, config, ... }: { ... }:
{ {
imports = [ ./hardware-configuration.nix ]; imports = [ ./hardware-configuration.nix ];
@ -14,7 +14,6 @@
docker.enable = true; docker.enable = true;
libvirt.enable = true; libvirt.enable = true;
languagetool.enable = true; languagetool.enable = true;
work-proxy.enable = true;
}; };
media = { media = {
mpd.enable = true; mpd.enable = true;
@ -23,67 +22,14 @@
steam.enable = true; steam.enable = true;
lutris.enable = true; lutris.enable = true;
}; };
ai.opencode.enable = true;
}; };
user.name = "froidmpa";
programs.kdeconnect.enable = true; programs.kdeconnect.enable = true;
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
# nix = {
# distributedBuilds = true;
# buildMachines = [
# {
# hostName = "hel1.banditlair.com";
# sshUser = "nix-ssh";
# system = "x86_64-linux";
# supportedFeatures = [
# "nixos-test"
# "benchmark"
# "big-parallel"
# "kvm"
# ];
# }
# ];
# settings = {
# builders-use-substitutes = true;
# };
# };
services.tailscale.enable = true;
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
listenAddresses = [
{
# Tailscale interface
addr = "100.64.0.3";
port = 22;
}
];
};
users.users.${config.user.name} = {
openssh.authorizedKeys.keyFiles = [
../../ssh_keys/phfroidmont-desktop.pub
../../ssh_keys/phfroidmont-stellaris.pub
];
};
# Allow to externally control MPD # Allow to externally control MPD
networking.firewall.allowedTCPPorts = [ 6600 ]; networking.firewall.allowedTCPPorts = [ 6600 ];
home-manager.users.${config.user.name} =
{ ... }:
{
wayland.windowManager.hyprland.settings = {
monitor = [
"DP-1, 4096x2160@240, 0x0, 1.5"
];
};
};
system.stateVersion = "20.09"; system.stateVersion = "20.09";
} }

View file

@ -1,4 +1,5 @@
{ {
config,
lib, lib,
pkgs, pkgs,
modulesPath, modulesPath,
@ -8,7 +9,6 @@
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = { boot = {
kernelPackages = pkgs.linuxPackages_zen;
initrd.availableKernelModules = [ initrd.availableKernelModules = [
"nvme" "nvme"
"xhci_pci" "xhci_pci"
@ -17,6 +17,13 @@
"sd_mod" "sd_mod"
]; ];
initrd.kernelModules = [ "amdgpu" ]; initrd.kernelModules = [ "amdgpu" ];
# kernelPackages = pkgs.linuxPackages_6_9;
# Prevents constant crashing in BG3
kernelParams = [
"amdgpu.mcbp=0"
"amdgpu.noretry=0"
];
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
extraModulePackages = [ ]; extraModulePackages = [ ];
@ -48,10 +55,7 @@
swapDevices = [ { device = "/dev/disk/by-uuid/f714775c-b5af-4c0c-8330-999b43db4794"; } ]; swapDevices = [ { device = "/dev/disk/by-uuid/f714775c-b5af-4c0c-8330-999b43db4794"; } ];
powerManagement = { zramSwap.enable = true;
cpuFreqGovernor = "performance";
powertop.enable = true;
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
@ -63,11 +67,13 @@
enable = true; enable = true;
enable32Bit = true; enable32Bit = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
rocmPackages.clr rocm-opencl-icd
rocm-opencl-runtime
amdvlk
]; ];
}; };
hardware.cpu.amd.updateMicrocode = true; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
services.resolved.dnssec = "false"; services.resolved.dnssec = "false";
} }

View file

@ -27,7 +27,7 @@
services.openssh.enable = true; services.openssh.enable = true;
users.users.root.openssh.authorizedKeys.keyFiles = [ users.users.root.openssh.authorizedKeys.keyFiles = [
../../ssh_keys/phfroidmont-desktop.pub ../../ssh_keys/phfroidmont-desktop.pub
../../ssh_keys/phfroidmont-stellaris.pub ../../ssh_keys/phfroidmont-laptop.pub
]; ];
services.adguardhome = { services.adguardhome = {

View file

@ -1,124 +0,0 @@
{ config, ... }:
{
imports = [ ./hardware-configuration.nix ];
modules = {
desktop = {
wm.enable = true;
defaultBrowser = "brave";
};
editor = {
vim.enable = true;
emacs.enable = true;
};
services = {
flatpak.enable = true;
belgian-eid.enable = true;
docker.enable = true;
libvirt.enable = true;
languagetool.enable = true;
work-proxy.enable = true;
kanata.enable = true;
};
media = {
mpd.enable = true;
ncmpcpp.enable = true;
emulators.gc.enable = true;
steam.enable = true;
lutris.enable = true;
};
ai.opencode.enable = true;
};
# Monitor backlight control
programs.light.enable = true;
services.tlp.enable = true;
hardware.cpu.amd.updateMicrocode = true;
hardware.tuxedo-drivers.enable = true;
hardware.tuxedo-rs = {
enable = true;
tailor-gui.enable = true;
};
hardware = {
bluetooth = {
enable = true;
# Enable A2DP Sink
settings = {
General = {
Enable = "Source,Sink,Media,Socket";
};
};
};
};
networking.networkmanager.enable = true;
services.blueman.enable = true;
services.logind.settings.Login.HandleLidSwitch = "ignore";
user.name = "phfroidmont";
home-manager.users.${config.user.name} =
{ ... }:
{
services.network-manager-applet.enable = true;
services.blueman-applet.enable = true;
wayland.windowManager.hyprland.settings = {
env = [
"LIBVA_DRIVER_NAME,nvidia"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
];
workspace = [
"w[tv1], gapsout:0, gapsin:0"
"f[1], gapsout:0, gapsin:0"
];
windowrulev2 = [
"bordersize 0, floating:0, onworkspace:w[tv1]"
"rounding 0, floating:0, onworkspace:w[tv1]"
"bordersize 0, floating:0, onworkspace:f[1]"
"rounding 0, floating:0, onworkspace:f[1]"
];
};
};
services.pipewire.wireplumber.extraConfig = {
"monitor.bluez.properties" = {
"bluez5.enable-sbc-xq" = true;
"bluez5.enable-msbc" = true;
"bluez5.enable-hw-volume" = true;
"bluez5.roles" = [
"hsp_hs"
"hsp_ag"
"hfp_hf"
"hfp_ag"
];
};
};
services.tailscale.enable = true;
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
listenAddresses = [
{
# Tailscale interface
addr = "100.64.0.5";
port = 22;
}
];
};
users.users.${config.user.name} = {
openssh.authorizedKeys.keyFiles = [
../../ssh_keys/phfroidmont-desktop.pub
];
extraGroups = [ "video" ];
};
system.stateVersion = "25.05";
}

View file

@ -1,79 +0,0 @@
{ ... }:
{
disko.devices = {
disk.main = {
type = "disk";
# Replace with your device, e.g. /dev/disk/by-id/nvme-Samsung_SSD_980_...
device = "/dev/disk/by-id/nvme-Samsung_SSD_9100_PRO_2TB_S7YFNJ0Y612225D";
content = {
type = "gpt";
partitions = {
ESP = {
type = "ef00";
size = "512M";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "cryptroot";
settings = {
allowDiscards = true;
};
content = {
type = "btrfs";
extraArgs = [
"-L"
"nixos"
];
# Top-level btrfs mountpoint isn't used; subvols below define mounts
subvolumes = {
"@".mountpoint = "/";
"@home".mountpoint = "/home";
"@nix".mountpoint = "/nix";
"@log".mountpoint = "/var/log";
"@cache".mountpoint = "/var/cache";
# Common, fast, SSD-friendly defaults
"@".mountOptions = [
"compress=zstd"
"noatime"
"ssd"
"autodefrag"
];
"@home".mountOptions = [
"compress=zstd"
"noatime"
"ssd"
"autodefrag"
];
"@nix".mountOptions = [
"compress=zstd"
"noatime"
"ssd"
];
"@log".mountOptions = [
"compress=zstd"
"noatime"
"ssd"
];
"@cache".mountOptions = [
"compress=zstd"
"noatime"
"ssd"
];
};
};
};
};
};
};
};
};
}

View file

@ -1,92 +0,0 @@
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.kernelPackages = pkgs.linuxPackages_zen;
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"usb_storage"
"sd_mod"
"sdhci_pci"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
fileSystems."/" = {
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
fsType = "btrfs";
options = [ "subvol=@" ];
};
boot.initrd.luks.devices."cryptroot".device =
"/dev/disk/by-uuid/46f38e24-f03e-4e3b-9266-652340e1fa41";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/4847-A536";
fsType = "vfat";
options = [
"fmask=0077"
"dmask=0077"
];
};
fileSystems."/home" = {
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
fsType = "btrfs";
options = [ "subvol=@home" ];
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
fsType = "btrfs";
options = [ "subvol=@nix" ];
};
fileSystems."/var/cache" = {
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
fsType = "btrfs";
options = [ "subvol=@cache" ];
};
fileSystems."/var/log" = {
device = "/dev/disk/by-uuid/60093dc5-7e4f-479d-8e6b-d4f5fedcb01f";
fsType = "btrfs";
options = [ "subvol=@log" ];
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = true;
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
prime = {
offload = {
enable = true;
enableOffloadCmd = true;
};
amdgpuBusId = "PCI:6:0:0";
nvidiaBusId = "PCI:1:0:0";
};
};
}

View file

@ -29,4 +29,3 @@ Tl+QnLP+XbKej08mO6r8IEmJmnjKvpXOYxme9XCyAeArzrhvIwMfA0Qvy2qpTaBW
WdCWCiVe2F3L3e0afsfIZ/QOApjgU0tT2iz+2cPfVYHMve0RES3CGjdMCN8WHOKt WdCWCiVe2F3L3e0afsfIZ/QOApjgU0tT2iz+2cPfVYHMve0RES3CGjdMCN8WHOKt
w654Qw7ZrChUoLsPfjyhlHUB7UipQtIDT79QFxtqdi+HWTO/59Wl w654Qw7ZrChUoLsPfjyhlHUB7UipQtIDT79QFxtqdi+HWTO/59Wl
-----END CERTIFICATE----- -----END CERTIFICATE-----

View file

@ -37,4 +37,3 @@ hpzdvkhxOchnh39E2PEH6WiMAeKHXHgqGXqiGAWoLvIvk/ciP5VG3m/Nly9J2A7f
C8OhpoJcExnxrL1rHH+QWO3wVvbYrtKSsKqMqS7Bu8gWsAbEw8HpXgdO5TyJ3RHM C8OhpoJcExnxrL1rHH+QWO3wVvbYrtKSsKqMqS7Bu8gWsAbEw8HpXgdO5TyJ3RHM
yql2gDHKnbshIff/7tjPNwk5mttAPHtignx/MvOnRmnJvpug31v0UVEcig== yql2gDHKnbshIff/7tjPNwk5mttAPHtignx/MvOnRmnJvpug31v0UVEcig==
-----END CERTIFICATE----- -----END CERTIFICATE-----

114
hosts/wsl/default.nix Normal file
View file

@ -0,0 +1,114 @@
{
inputs,
pkgs,
config,
...
}:
{
imports = [
inputs.nixos-wsl.nixosModules.default
];
wsl = {
enable = true;
wslConf = {
network.generateResolvConf = false;
};
};
networking = {
nameservers = [
"10.33.0.100"
"10.33.1.30"
"1.1.1.1"
];
proxy = {
httpProxy = "http://127.0.0.1:3128";
httpsProxy = "http://127.0.0.1:3128";
noProxy = ".lefoyer.lu,.foyer.lu,.foyer.cloud,localhost,127.0.0.1";
};
};
modules = {
editor = {
vim.enable = true;
};
desktop.file-manager.enable = true;
desktop.zsh.enable = true;
};
environment.systemPackages = with pkgs; [
scala-cli
jdk17
httpie
zsh-syntax-highlighting
tldr
nil
coursier
nodejs
imagemagick
(sbt.override { jre = jdk17; })
mill
kafkactl
];
security.pki.certificateFiles = [
"${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
./certs/Foyer-Group-Root-CA.crt
./certs/Foyer-Sub-CA.crt
];
environment.variables = {
JAVAX_NET_SSL_TRUSTSTORE = "/mnt/c/Users/RDO/scoop/apps/java21/current/lib/security/cacerts";
JAVA_OPTS = "-Dhttp.proxyHost=localhost -Dhttp.proxyPort=3128 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128 -Djavax.net.ssl.trustStore=/mnt/c/Users/RDO/scoop/apps/java21/current/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit";
};
home-manager.users.${config.user.name} = {
home.file.".sbt/repositories".text = ''
[repositories]
local
maven-local
nexus-maven: https://nexus.foyer.lu/repository/mvn-all/
nexus-ivy: https://nexus.foyer.lu/repository/ivy-all/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
nexus-ivy-sbt: https://nexus.foyer.lu/repository/ivy-all/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[artifact](-[classifier])-[type].[ext]
'';
programs = {
git = {
enable = true;
userName = "Paul-Henri Froidmont";
userEmail = "rdo@foyer.lu";
extraConfig = {
init.defaultBranch = "master";
http.sslVerify = false;
};
};
bat.enable = true;
jq.enable = true;
fzf.enable = true;
lesspipe.enable = true;
pazi.enable = true;
broot = {
enable = true;
enableZshIntegration = true;
};
command-not-found.enable = true;
direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
};
};
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
# LogLevel = "DEBUG";
};
};
system.stateVersion = "24.05";
}

View file

@ -1,93 +0,0 @@
{
inputs,
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.ai.opencode;
in
{
options.modules.ai.opencode = {
enable = lib.my.mkBoolOpt false;
};
config = lib.mkIf cfg.enable {
home-manager.users.${config.user.name} =
{ ... }:
{
programs.opencode = {
enable = true;
package = inputs.llm-agents.packages.${pkgs.system}.opencode;
settings = {
model = "glm_4_5_air";
permission = {
bash = "ask";
edit = "ask";
};
provider = {
vllm = {
npm = "@ai-sdk/openai-compatible";
name = "vLLM";
options = {
baseURL = "http://model1.lefoyer.lu:8030/v1";
apiKey = "dummy";
};
models = {
glm_4_5_air = {
name = "GLM 4.5 Air (local)";
temperature = true;
default = true;
};
};
};
openai = {
models = {
"gpt-5.1-codex" = {
options = {
store = false;
# reasoningEffort = "high";
# textVerbosity = "medium";
# reasoningSummary = "auto";
include = [ "reasoning.encrypted_content" ];
};
};
"gpt-5.1-codex-max" = {
options = {
store = false;
include = [ "reasoning.encrypted_content" ];
};
};
};
};
};
agent = {
build = {
mode = "primary";
temperature = 0.4;
};
plan = {
mode = "primary";
temperature = 0.4;
};
};
lsp = {
metals = {
command = [ "${pkgs.metals}/bin/metals" ];
extensions = [
".scala"
".sbt"
".sc"
];
initialization = {
statusBarProvider = "log-message";
doctorProvider = "json";
};
};
};
};
};
};
};
}

View file

@ -1,53 +0,0 @@
{
config,
lib,
...
}:
let
cfg = config.modules.apps.newsboat;
in
{
options.modules.apps.newsboat = {
enable = lib.my.mkBoolOpt false;
};
config = lib.mkIf cfg.enable {
home-manager.users.${config.user.name} = {
programs.newsboat = {
enable = true;
autoFetchArticles = {
enable = true;
onCalendar = "hourly";
};
extraConfig = ''
urls-source "ocnews"
ocnews-url "https://cloud.banditlair.com"
ocnews-login "paultrial"
ocnews-passwordeval "secret-tool lookup elfeed nextcloud"
cleanup-on-quit yes
bind gg everywhere home
bind G everywhere end
bind u everywhere toggle-article-read
bind , everywhere sort
bind ^u everywhere pageup
bind ^d everywhere pagedown
bind k everywhere up
bind j everywhere down
bind l feedlist open
bind l articlelist open
bind h articlelist quit
bind h article quit
'';
};
};
};
}

View file

@ -18,7 +18,7 @@ in
programs.rofi = { programs.rofi = {
enable = true; enable = true;
package = pkgs.rofi.override { plugins = [ pkgs.rofi-calc ]; }; package = pkgs.rofi-wayland.override { plugins = [ pkgs.rofi-calc ]; };
terminal = "kitty"; terminal = "kitty";
extraConfig = { extraConfig = {
icon-theme = "Paper"; icon-theme = "Paper";

View file

@ -7,7 +7,7 @@
let let
wallpaper = pkgs.fetchurl { wallpaper = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/AngelJumbo/gruvbox-wallpapers/main/wallpapers/photography/houseonthesideofalake.jpg"; url = "https://raw.githubusercontent.com/AngelJumbo/gruvbox-wallpapers/main/wallpapers/irl/houseonthesideofalake.jpg";
sha256 = "sha256-obKI4qZvucogqRCl51lwV9X8SRaMqcbBwWMfc9TupIo="; sha256 = "sha256-obKI4qZvucogqRCl51lwV9X8SRaMqcbBwWMfc9TupIo=";
}; };
in in
@ -18,37 +18,27 @@ in
type = lib.types.path; type = lib.types.path;
default = wallpaper; default = wallpaper;
}; };
defaultBrowser = lib.mkOption {
type = lib.types.str;
default = "firefox";
};
}; };
config = lib.mkIf config.modules.desktop.wm.enable { config = lib.mkIf config.modules.desktop.wm.enable {
fonts = { fonts = {
enableDefaultPackages = true;
packages = with pkgs; [ packages = with pkgs; [
noto-fonts-color-emoji corefonts # Microsoft free fonts
noto-fonts-emoji
meslo-lg meslo-lg
pkgs.nerd-fonts.meslo-lg (nerdfonts.override {
pkgs.nerd-fonts.symbols-only fonts = [
"Meslo"
"NerdFontsSymbolsOnly"
];
})
]; ];
fontconfig.defaultFonts = { fontconfig.defaultFonts = {
monospace = [ "MesloLGS Nerd Font Mono" ]; monospace = [ "MesloLGS Nerd Font Mono" ];
}; };
}; };
security.pam.loginLimits = [
{
domain = "*";
item = "nofile";
type = "-";
value = "65536";
}
];
programs.adb.enable = true; programs.adb.enable = true;
programs.ssh.startAgent = true; programs.ssh.startAgent = true;
@ -63,7 +53,7 @@ in
gpg-agent = { gpg-agent = {
enable = true; enable = true;
enableSshSupport = false; enableSshSupport = false;
pinentry.package = pkgs.pinentry-gtk2; pinentryPackage = pkgs.pinentry-gtk2;
}; };
unclutter.enable = true; unclutter.enable = true;
}; };
@ -72,31 +62,18 @@ in
gpg.enable = true; gpg.enable = true;
git = { git = {
enable = true; enable = true;
userName = "Paul-Henri Froidmont";
userEmail = "git.contact-57n2p@froidmont.org";
signing = { signing = {
key = lib.mkDefault "3AC6F170F01133CE393BCD94BE948AFD7E7873BE"; key = lib.mkDefault "3AC6F170F01133CE393BCD94BE948AFD7E7873BE";
signByDefault = true; signByDefault = true;
}; };
settings = { extraConfig = {
user.name = "Paul-Henri Froidmont";
user.email = "git.contact-57n2p@froidmont.org";
init.defaultBranch = "master"; init.defaultBranch = "master";
}; };
}; };
ssh = { ssh = {
enable = true; enable = true;
enableDefaultConfig = false;
matchBlocks."*" = {
forwardAgent = false;
addKeysToAgent = "no";
compression = false;
serverAliveInterval = 0;
serverAliveCountMax = 3;
hashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no";
};
extraConfig = '' extraConfig = ''
# Force IPv4 otherwise git will try to use IPv6 which doesn't play well through a VPN # Force IPv4 otherwise git will try to use IPv6 which doesn't play well through a VPN
AddressFamily inet AddressFamily inet
@ -137,10 +114,10 @@ in
defaultApplications = { defaultApplications = {
"inode/directory" = "joshuto.desktop"; "inode/directory" = "joshuto.desktop";
"text/html" = "${config.modules.desktop.defaultBrowser}.desktop"; "text/html" = "firefox.desktop";
"x-scheme-handler/http" = "${config.modules.desktop.defaultBrowser}.desktop"; "x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "${config.modules.desktop.defaultBrowser}.desktop"; "x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/about" = "${config.modules.desktop.defaultBrowser}.desktop"; "x-scheme-handler/about" = "firefox.desktop";
"image/png" = "swayimg.desktop"; "image/png" = "swayimg.desktop";
"image/webp" = "swayimg.desktop"; "image/webp" = "swayimg.desktop";
@ -157,8 +134,7 @@ in
"application/pdf" = "org.pwmt.zathura-pdf-mupdf.desktop"; "application/pdf" = "org.pwmt.zathura-pdf-mupdf.desktop";
"application/msword" = "onlyoffice-desktopeditors.desktop"; "application/msword" = "onlyoffice-desktopeditors.desktop";
"application/vnd.openxmlformats-officedocument.presentationml.presentation" = "application/vnd.openxmlformats-officedocument.presentationml.presentation" = "onlyoffice-desktopeditors.desktop";
"onlyoffice-desktopeditors.desktop";
"application/vnd.openxmlformats-officedocument*" = "onlyoffice-desktopeditors.desktop"; "application/vnd.openxmlformats-officedocument*" = "onlyoffice-desktopeditors.desktop";
"text/*" = "nvim.desktop"; "text/*" = "nvim.desktop";
@ -172,10 +148,7 @@ in
options = [ "caps:escape" ]; options = [ "caps:escape" ];
}; };
sessionVariables = { sessionVariables.EDITOR = "vim";
EDITOR = "vim";
NIXOS_OZONE_WL = 1;
};
packages = packages =
(with pkgs; [ (with pkgs; [
@ -188,36 +161,27 @@ in
mpv mpv
mumble mumble
libreoffice-fresh libreoffice-fresh
signal-desktop onlyoffice-bin
onlyoffice-desktopeditors
thunderbird thunderbird
portfolio portfolio
gnucash gnucash
transmission-remote-gtk transmission-remote-gtk
monero-gui
scala-cli scala-cli
beamMinimal27Packages.elixir
jdk jdk
jetbrains.idea-oss jetbrains.idea-community
jetbrains.idea
httpie httpie
zsh-syntax-highlighting zsh-syntax-highlighting
R R
tldr tldr
kdePackages.ark ark
perf linuxPackages.perf
keymapp
presenterm
ledger-live-desktop
monero-gui
]) ])
++ [ pkgs.jellyfin-mpv-shim ]; ++ [ pkgs.jellyfin-mpv-shim ];
}; };
}; };
hardware.keyboard.zsa.enable = true;
hardware.ledger.enable = true;
}; };
} }

View file

@ -0,0 +1,44 @@
{
config,
lib,
pkgs,
inputs,
...
}:
let
cfg = config.modules.desktop.flameshot;
in
{
options.modules.desktop.flameshot = {
enable = lib.my.mkBoolOpt false;
};
config = lib.mkIf cfg.enable {
home-manager.users.${config.user.name} =
{ config, ... }:
{
services.flameshot = {
enable = true;
package = pkgs.flameshot.overrideAttrs (old: {
src = inputs.flameshot-git;
cmakeFlags = [ "-DUSE_WAYLAND_GRIM=1" ];
});
settings = {
General = {
showStartupLaunchMessage = false;
disabledTrayIcon = true;
showHelp = false;
showDesktopNotification = false;
filenamePattern = "%F_%T";
savePath = "${config.home.homeDirectory}/Pictures/Screenshots";
savePathFixed = true;
saveAfterCopy = true;
uiColor = "#83A598";
};
};
};
home.packages = [ pkgs.grim ];
};
};
}

View file

@ -18,21 +18,15 @@ in
font_family = "Meslo LG S"; font_family = "Meslo LG S";
font_size = 10; font_size = 10;
symbol_map = "U+e000-U+e00a,U+ea60-U+ebeb,U+e0a0-U+e0c8,U+e0ca,U+e0cc-U+e0d4,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b1,U+e700-U+e7c5,U+f000-U+f2e0,U+f300-U+f372,U+f400-U+f532,U+f0001-U+f1af0 Symbols Nerd Font Mono"; symbol_map = "U+e000-U+e00a,U+ea60-U+ebeb,U+e0a0-U+e0c8,U+e0ca,U+e0cc-U+e0d4,U+e200-U+e2a9,U+e300-U+e3e3,U+e5fa-U+e6b1,U+e700-U+e7c5,U+f000-U+f2e0,U+f300-U+f372,U+f400-U+f532,U+f0001-U+f1af0 Symbols Nerd Font Mono";
allow_remote_control = "yes";
listen_on = "unix:@mykitty";
}; };
keybindings = { keybindings = {
"ctrl+up" = "change_font_size all +2.0"; "ctrl+up" = "change_font_size all +2.0";
"ctrl+down" = "change_font_size all -2.0"; "ctrl+down" = "change_font_size all -2.0";
"shift+page_up" = "scroll_page_up"; "shift+page_up" = "scroll_page_up";
"shift+page_down" = "scroll_page_down"; "shift+page_down" = "scroll_page_down";
"ctrl+shift+u" = "scroll_to_prompt -1"; "ctrl+shift+comma" = "scroll_to_prompt -1";
"ctrl+shift+d" = "scroll_to_prompt 1"; "ctrl+shift+semicolon" = "scroll_to_prompt 1";
"ctrl+shift+t" = "new_tab_with_cwd !neighbor"; "ctrl+shift+t" = "new_tab_with_cwd";
"ctrl+," = "previous_tab";
"ctrl+;" = "next_tab";
"ctrl+shift+," = "move_tab_backward";
"ctrl+shift+;" = "move_tab_forward";
}; };
themeFile = "gruvbox-dark"; themeFile = "gruvbox-dark";
}; };

View file

@ -10,10 +10,10 @@ let
gruvboxPlus = pkgs.stdenv.mkDerivation rec { gruvboxPlus = pkgs.stdenv.mkDerivation rec {
name = "gruvbox-plus"; name = "gruvbox-plus";
version = "6.2.0"; version = "5.1";
src = pkgs.fetchurl { src = pkgs.fetchurl {
url = "https://github.com/SylEleuth/gruvbox-plus-icon-pack/releases/download/v${version}/gruvbox-plus-icon-pack-${version}.zip"; url = "https://github.com/SylEleuth/gruvbox-plus-icon-pack/releases/download/v${version}/gruvbox-plus-icon-pack-${version}.zip";
sha256 = "sha256-D+SPhucHU4Riz0mzU1LnaEkkaQt+blJMAsA5r6fTAQ0="; sha256 = "1n3hqwk1mqaj8vbmy0pqbiq6v5jqrhmhin506xbpnccl28f907j0";
}; };
dontUnpack = true; dontUnpack = true;
installPhase = '' installPhase = ''

View file

@ -8,7 +8,6 @@
let let
cfg = config.modules.desktop.wm; cfg = config.modules.desktop.wm;
term = "${config.home-manager.users.${config.user.name}.programs.kitty.package}/bin/kitty"; term = "${config.home-manager.users.${config.user.name}.programs.kitty.package}/bin/kitty";
wallpaper = config.modules.desktop.wallpaper;
in in
{ {
options.modules.desktop.wm = { options.modules.desktop.wm = {
@ -28,19 +27,93 @@ in
zsh.enable = true; zsh.enable = true;
dunst.enable = true; dunst.enable = true;
htop.enable = true; htop.enable = true;
flameshot.enable = true;
}; };
hardware = { hardware = {
audio.enable = true; audio.enable = true;
}; };
apps = { apps.rofi.enable = true;
rofi.enable = true; };
newsboat.enable = true;
home-manager.users.${config.user.name} = {
wayland.windowManager.sway = {
enable = true;
systemd.enable = true;
xwayland = true;
config = {
modifier = "Mod4";
input = {
"type:keyboard" = {
"xkb_layout" = "fr";
"xkb_variant" = "nodeadkeys";
"xkb_options" = "caps:escape";
"xkb_numlock" = "enabled";
};
};
keybindings = {
"mod4+Return" = "exec ${term}";
"mod4+c" = "kill";
"mod4+Shift+r" = "reload";
"mod4+Shift+c" = "exit";
"mod4+Shift+a" = "exec ${term} -e pulsemixer";
"mod4+w" = "exec firefox";
"mod4+r" = "exec ${term} -e yazi";
"mod4+e" = "exec emacsclient -c";
"mod4+n" = "exec emacsclient -c --eval '(elfeed)'";
"mod4+i" = "exec ${term} -e htop";
"mod4+m" = "exec ${term} -e ncmpcpp";
"mod4+v" = "exec ${term} -e ncmpcpp -s visualizer";
"mod4+t" = "floating toggle";
"mod4+d" = "exec rofi -show drun -show-icons";
"mod4+Shift+p" = "exec rofi -show p -modi p:rofi-power-menu";
"mod4+h" = "focus left";
"mod4+j" = "focus down";
"mod4+k" = "focus up";
"mod4+l" = "focus right";
"mod4+Shift+h" = "move left";
"mod4+Shift+j" = "move down";
"mod4+Shift+k" = "move up";
"mod4+Shift+l" = "move right";
"mod4+f" = "fullscreen";
"XF86AudioRaiseVolume" = "exec pulsemixer --change-volume +1";
"XF86AudioLowerVolume" = "exec pulsemixer --change-volume -1";
"XF86AudioMute" = "exec pulsemixer --toggle-mute";
"XF86AudioPlay" = "exec mpc toggle";
"XF86AudioPause" = "exec mpc toggle";
"XF86AudioNext" = "exec mpc next";
"XF86AudioPrev" = "exec mpc prev";
"mod4+p" = "exec mpc toggle";
};
keycodebindings = {
"mod4+10" = "workspace number 1";
"mod4+11" = "workspace number 2";
"mod4+12" = "workspace number 3";
"mod4+13" = "workspace number 4";
"mod4+14" = "workspace number 5";
"mod4+15" = "workspace number 6";
"mod4+16" = "workspace number 7";
"mod4+17" = "workspace number 8";
"mod4+18" = "workspace number 9";
"mod4+19" = "workspace number 0";
"mod4+Shift+10" = "move container to workspace number 1";
"mod4+Shift+11" = "move container to workspace number 2";
"mod4+Shift+12" = "move container to workspace number 3";
"mod4+Shift+13" = "move container to workspace number 4";
"mod4+Shift+14" = "move container to workspace number 5";
"mod4+Shift+15" = "move container to workspace number 6";
"mod4+Shift+16" = "move container to workspace number 7";
"mod4+Shift+17" = "move container to workspace number 8";
"mod4+Shift+18" = "move container to workspace number 9";
"mod4+Shift+19" = "move container to workspace number 0";
};
}; };
}; };
home-manager.users.${config.user.name} =
{ config, ... }:
{
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
systemd.enable = true; systemd.enable = true;
@ -90,9 +163,10 @@ in
}; };
}; };
gesture = [ gestures = {
"3, horizontal, workspace" workspace_swipe = true;
]; workspace_swipe_fingers = 3;
};
animations = { animations = {
enabled = true; enabled = true;
@ -108,12 +182,12 @@ in
bind = [ bind = [
"$mod, Return, exec, ${term}" "$mod, Return, exec, ${term}"
"$mod, C, killactive" "$mod, C, killactive"
# "$mod SHIFT, Q, exit" "$mod SHIFT, Q, exit"
"$mod SHIFT, A, exec, ${term} -e pulsemixer" "$mod SHIFT, A, exec, ${term} -e pulsemixer"
"$mod, W, exec, firefox" "$mod, W, exec, firefox"
"$mod, R, exec, ${term} -e yazi" "$mod, R, exec, ${term} -e yazi"
"$mod, E, exec, emacsclient -c" "$mod, E, exec, emacsclient -c"
"$mod, N, exec, ${term} -e newsboat" "$mod, N, exec, emacsclient -c --eval '(elfeed)'"
"$mod, I, exec, ${term} -e htop" "$mod, I, exec, ${term} -e htop"
"$mod, M, exec, ${term} -e ncmpcpp" "$mod, M, exec, ${term} -e ncmpcpp"
"$mod, V, exec, ${term} -e ncmpcpp -s visualizer" "$mod, V, exec, ${term} -e ncmpcpp -s visualizer"
@ -152,66 +226,36 @@ in
# Switch workspaces with mainMod + [0-9] # Switch workspaces with mainMod + [0-9]
"$mod, code:10, moveworkspacetomonitor, 1 current" "$mod, code:10, moveworkspacetomonitor, 1 current"
"$mod, code:10, workspace, 1" "$mod, code:10, workspace, 1"
"$mod, 1, moveworkspacetomonitor, 1 current"
"$mod, 1, workspace, 1"
"$mod, code:11, moveworkspacetomonitor, 2 current" "$mod, code:11, moveworkspacetomonitor, 2 current"
"$mod, code:11, workspace, 2" "$mod, code:11, workspace, 2"
"$mod, 2, moveworkspacetomonitor, 2 current"
"$mod, 2, workspace, 2"
"$mod, code:12, moveworkspacetomonitor, 3 current" "$mod, code:12, moveworkspacetomonitor, 3 current"
"$mod, code:12, workspace, 3" "$mod, code:12, workspace, 3"
"$mod, 3, moveworkspacetomonitor, 3 current"
"$mod, 3, workspace, 3"
"$mod, code:13, moveworkspacetomonitor, 4 current" "$mod, code:13, moveworkspacetomonitor, 4 current"
"$mod, code:13, workspace, 4" "$mod, code:13, workspace, 4"
"$mod, 4, moveworkspacetomonitor, 4 current"
"$mod, 4, workspace, 4"
"$mod, code:14, moveworkspacetomonitor, 5 current" "$mod, code:14, moveworkspacetomonitor, 5 current"
"$mod, code:14, workspace, 5" "$mod, code:14, workspace, 5"
"$mod, 5, moveworkspacetomonitor, 5 current"
"$mod, 5, workspace, 5"
"$mod, code:15, moveworkspacetomonitor, 6 current" "$mod, code:15, moveworkspacetomonitor, 6 current"
"$mod, code:15, workspace, 6" "$mod, code:15, workspace, 6"
"$mod, 6, moveworkspacetomonitor, 6 current"
"$mod, 6, workspace, 6"
"$mod, code:16, moveworkspacetomonitor, 7 current" "$mod, code:16, moveworkspacetomonitor, 7 current"
"$mod, code:16, workspace, 7" "$mod, code:16, workspace, 7"
"$mod, 7, moveworkspacetomonitor, 7 current"
"$mod, 7, workspace, 7"
"$mod, code:17, moveworkspacetomonitor, 8 current" "$mod, code:17, moveworkspacetomonitor, 8 current"
"$mod, code:17, workspace, 8" "$mod, code:17, workspace, 8"
"$mod, 8, moveworkspacetomonitor, 8 current"
"$mod, 8, workspace, 8"
"$mod, code:18, moveworkspacetomonitor, 9 current" "$mod, code:18, moveworkspacetomonitor, 9 current"
"$mod, code:18, workspace, 9" "$mod, code:18, workspace, 9"
"$mod, 9, moveworkspacetomonitor, 9 current"
"$mod, 9, workspace, 9"
"$mod, code:19, moveworkspacetomonitor, 10 current" "$mod, code:19, moveworkspacetomonitor, 10 current"
"$mod, code:19, workspace, 10" "$mod, code:19, workspace, 10"
"$mod, 0, moveworkspacetomonitor, 10 current"
"$mod, 0, workspace, 10"
# Move active window to a workspace with mainMod + SHIFT + [0-9] # Move active window to a workspace with mainMod + SHIFT + [0-9]
"$mod SHIFT, code:10, movetoworkspace, 1" "$mod SHIFT, code:10, movetoworkspace, 1"
"$mod SHIFT, 1, movetoworkspace, 1"
"$mod SHIFT, code:11, movetoworkspace, 2" "$mod SHIFT, code:11, movetoworkspace, 2"
"$mod SHIFT, 2, movetoworkspace, 2"
"$mod SHIFT, code:12, movetoworkspace, 3" "$mod SHIFT, code:12, movetoworkspace, 3"
"$mod SHIFT, 3, movetoworkspace, 3"
"$mod SHIFT, code:13, movetoworkspace, 4" "$mod SHIFT, code:13, movetoworkspace, 4"
"$mod SHIFT, 4, movetoworkspace, 4"
"$mod SHIFT, code:14, movetoworkspace, 5" "$mod SHIFT, code:14, movetoworkspace, 5"
"$mod SHIFT, 5, movetoworkspace, 5"
"$mod SHIFT, code:15, movetoworkspace, 6" "$mod SHIFT, code:15, movetoworkspace, 6"
"$mod SHIFT, 6, movetoworkspace, 6"
"$mod SHIFT, code:16, movetoworkspace, 7" "$mod SHIFT, code:16, movetoworkspace, 7"
"$mod SHIFT, 7, movetoworkspace, 7"
"$mod SHIFT, code:17, movetoworkspace, 8" "$mod SHIFT, code:17, movetoworkspace, 8"
"$mod SHIFT, 8, movetoworkspace, 8"
"$mod SHIFT, code:18, movetoworkspace, 9" "$mod SHIFT, code:18, movetoworkspace, 9"
"$mod SHIFT, 9, movetoworkspace, 9"
"$mod SHIFT, code:19, movetoworkspace, 10" "$mod SHIFT, code:19, movetoworkspace, 10"
"$mod SHIFT, 0, movetoworkspace, 10"
# Scroll through existing workspaces with mainMod + scroll # Scroll through existing workspaces with mainMod + scroll
"$mod, mouse_down, workspace, e-1" "$mod, mouse_down, workspace, e-1"
@ -231,8 +275,8 @@ in
", XF86MonBrightnessDown, exec, light -U 5" ", XF86MonBrightnessDown, exec, light -U 5"
", XF86MonBrightnessUp, exec, light -A 5" ", XF86MonBrightnessUp, exec, light -A 5"
", Print, exec, grim -g \"$(slurp)\" - | satty -f -" ", Print, exec, flameshot full"
"SHIFT, Print, exec, grim - | satty -f -" "SHIFT , Print, exec, env QT_SCREEN_SCALE_FACTORS=0.66666666 flameshot gui"
]; ];
bindm = [ bindm = [
@ -242,7 +286,7 @@ in
]; ];
exec-once = [ exec-once = [
"${pkgs.swaybg}/bin/swaybg --image ${wallpaper} --mode fill" "${pkgs.swaybg}/bin/swaybg --image ${config.modules.desktop.wallpaper} --mode fill"
"keepassxc" "keepassxc"
]; ];
@ -371,34 +415,11 @@ in
package = pkgs.waybar.override { wireplumberSupport = false; }; package = pkgs.waybar.override { wireplumberSupport = false; };
}; };
programs.satty = {
enable = true;
settings = {
general = {
output-filename = "${config.home.homeDirectory}/Pictures/Screenshots/satty_%Y-%m-%d_%H-%M-%S.png";
copy-command = "wl-copy";
actions-on-enter = [
"save-to-clipboard"
"save-to-file"
"exit"
];
early-exit = true;
save-after-copy = true;
};
};
};
home.activation.ensureScreenshotsDir = ''
${pkgs.coreutils}/bin/mkdir -p "$HOME/Pictures/Screenshots"
'';
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
wlr-randr wlr-randr
wl-clipboard wl-clipboard
wdisplays wdisplays
grim
slurp
]; ];
}; };

View file

@ -33,7 +33,12 @@ in
enableCompletion = true; enableCompletion = true;
autosuggestion.enable = true; autosuggestion.enable = true;
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
initContent = # bash sessionVariables = {
# COURSIER_CACHE = "/mnt/c/Users/RDO/scoop/persist/coursier/cache";
# COURSIER_REPOSITORIES = "ivy2Local|https://nexus.foyer.lu/repository/mvn-all/";
# JAVA_OPTS = "-Dsbt.ivy.home=/mnt/c/Users/RDO/.ivy2";
};
initExtra = # bash
'' ''
autoload -Uz up-line-or-beginning-search down-line-or-beginning-search autoload -Uz up-line-or-beginning-search down-line-or-beginning-search
zle -N up-line-or-beginning-search zle -N up-line-or-beginning-search
@ -41,9 +46,6 @@ in
[[ -n "$key[Up]" ]] && bindkey -- "$key[Up]" up-line-or-beginning-search [[ -n "$key[Up]" ]] && bindkey -- "$key[Up]" up-line-or-beginning-search
[[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search [[ -n "$key[Down]" ]] && bindkey -- "$key[Down]" down-line-or-beginning-search
bindkey "^P" up-line-or-beginning-search
bindkey "^N" down-line-or-beginning-search
''; '';
oh-my-zsh = { oh-my-zsh = {
enable = true; enable = true;
@ -64,7 +66,7 @@ in
} }
]; ];
}; };
pay-respects = { thefuck = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
}; };

View file

@ -81,7 +81,7 @@ in
activation = { activation = {
installDoomEmacs = '' installDoomEmacs = ''
if [ ! -d "${config.home-manager.users.${config.user.name}.xdg.configHome}/emacs" ]; then if [ ! -d "${config.home-manager.users.${config.user.name}.xdg.configHome}/emacs" ]; then
${pkgs.git}/bin/git clone --depth=1 --single-branch https://github.com/doomemacs/doomemacs "${ git clone --depth=1 --single-branch https://github.com/doomemacs/doomemacs "${
config.home-manager.users.${config.user.name}.xdg.configHome config.home-manager.users.${config.user.name}.xdg.configHome
}/emacs" }/emacs"
fi fi
@ -96,7 +96,7 @@ in
programs.emacs = { programs.emacs = {
enable = true; enable = true;
package = pkgs.emacs30.override { package = pkgs.emacs29.override {
withNativeCompilation = true; withNativeCompilation = true;
withPgtk = true; withPgtk = true;
withSQLite3 = true; withSQLite3 = true;

View file

@ -16,3 +16,6 @@ map("n", "<leader>wh", "<C-w>h", { desc = "Go to Left Window", remap = true })
-- File -- File
map("n", "<leader>fs", "<cmd>w<cr>", { desc = "Save File" }) map("n", "<leader>fs", "<cmd>w<cr>", { desc = "Save File" })
-- Buffer
map("n", "<leader>bk", LazyVim.ui.bufremove, { desc = "Delete Buffer" })

View file

@ -11,10 +11,4 @@ return {
defaults = { path_display = { "truncate" } }, defaults = { path_display = { "truncate" } },
}, },
}, },
{
'folke/snacks.nvim',
keys = {
{ "<leader>bk", function() Snacks.bufdelete() end, desc = "Delete Buffer" },
},
},
} }

View file

@ -1,8 +1,8 @@
return { return {
{ "folke/tokyonight.nvim", enabled = false }, { "folke/tokyonight.nvim", enabled = false },
{ "catppuccin", enabled = false }, { "catppuccin", enabled = false },
{ "mason-org/mason.nvim", enabled = false }, { "williamboman/mason.nvim", enabled = false },
{ "mason-org/mason-lspconfig.nvim", enabled = false }, { "williamboman/mason-lspconfig.nvim", enabled = false },
{ "jay-babu/mason-nvim-dap.nvim", enabled = false }, { "jay-babu/mason-nvim-dap.nvim", enabled = false },
{ "Bilal2453/luvit-meta", enabled = false }, { "Bilal2453/luvit-meta", enabled = false },
} }

View file

@ -1,15 +1,4 @@
return { return {
recommended = function()
return LazyVim.extras.wants({
ft = "scala",
root = { "build.sbt", "build.mill", "build.sc", "build.gradle", "pom.xml" },
})
end,
{
"scalameta/nvim-metals",
ft = { "scala", "sbt", "mill" },
config = function() end,
},
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
opts = { opts = {
@ -17,29 +6,8 @@ return {
metals = { metals = {
settings = { settings = {
showImplicitArguments = false, showImplicitArguments = false,
startMcpServer = true,
}, },
}, },
elixirls = {
cmd = { "elixir-ls" },
},
},
setup = {
metals = function(_, opts)
local metals = require("metals")
local metals_config = vim.tbl_deep_extend("force", metals.bare_config(), opts)
metals_config.on_attach = LazyVim.has("nvim-dap") and metals.setup_dap or nil
local nvim_metals_group = vim.api.nvim_create_augroup("nvim-metals", { clear = true })
vim.api.nvim_create_autocmd("FileType", {
pattern = { "scala", "sbt", "mill" },
callback = function()
metals.initialize_or_attach(metals_config)
end,
group = nvim_metals_group,
})
return true
end,
}, },
}, },
}, },

View file

@ -1,14 +0,0 @@
return {
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = {
sections = {
lualine_z = {
{
require("opencode").statusline,
},
}
}
},
}

View file

@ -1,36 +0,0 @@
return {
"NickvanDyke/opencode.nvim",
config = function()
---@type opencode.Opts
vim.g.opencode_opts = {
provider = {
enabled = "kitty",
kitty = {
location = "tab"
}
},
events = {
permissions = {
enabled = false
}
}
}
vim.o.autoread = true
vim.keymap.set({ "n", "x" }, "<leader>aa", function()
require("opencode").ask("@this: ", { submit = true })
end, { desc = "Ask opencode" })
vim.keymap.set({ "n", "x" }, "<leader>ao", function()
require("opencode").select()
end, { desc = "Execute opencode action…" })
vim.keymap.set({ "n", "x" }, "<leader>as", function()
require("opencode").prompt("@this")
end, { desc = "Add to opencode" })
vim.keymap.set({ "n", "t" }, "<leader>a.", function()
require("opencode").toggle()
end, { desc = "Toggle opencode" })
end,
}

View file

@ -3,7 +3,6 @@ return {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
opts = { opts = {
auto_install = false, auto_install = false,
sync_install = false,
ensure_installed = {}, ensure_installed = {},
parser_install_dir = vim.fs.joinpath(vim.fn.stdpath('data'), 'site'), parser_install_dir = vim.fs.joinpath(vim.fn.stdpath('data'), 'site'),
}, },

View file

@ -1,52 +0,0 @@
return {
"zk-org/zk-nvim",
keys = {
{
"<leader>zn",
"<Cmd>ZkNew { title = vim.fn.input('Title: ') }<CR>",
desc = "Create a new note after asking for its title"
},
{
"<leader>zo",
"<Cmd>ZkNotes { sort = { 'modified' } }<CR>",
desc = "Open Notes"
},
{
"<leader>zt",
"<Cmd>ZkTags<CR>",
desc = "Open notes associated with the selected tags"
},
{
"<leader>zf",
"<Cmd>ZkNotes { sort = { 'modified' }, match = { vim.fn.input('Search: ') } }<CR>",
desc = "Search for the notes matching a given query"
},
{
"<leader>zf",
":'<,'>ZkMatch<CR>",
mode = { "v" },
desc = "Search for the notes matching the current visual selection"
},
},
config = function()
require("zk").setup({
picker = "fzf_lua",
lsp = {
-- `config` is passed to `vim.lsp.start(config)`
config = {
name = "zk",
cmd = { "zk", "lsp" },
filetypes = { "markdown" },
-- on_attach = ...
-- etc, see `:h vim.lsp.start()`
},
-- automatically attach buffers in a zk notebook that match the given filetypes
auto_attach = {
enabled = true,
},
},
})
end,
}

View file

@ -2,6 +2,7 @@
config, config,
lib, lib,
pkgs, pkgs,
inputs,
... ...
}: }:
@ -14,9 +15,8 @@ in
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
home-manager.users.${config.user.name} = home-manager.users.${config.user.name} = {
{ config, ... }: imports = [ inputs.nixvim.homeManagerModules.nixvim ];
{
programs.neovim = { programs.neovim = {
enable = true; enable = true;
@ -24,7 +24,8 @@ in
vimAlias = true; vimAlias = true;
vimdiffAlias = true; vimdiffAlias = true;
withNodeJs = true; withNodeJs = true;
plugins = with pkgs.vimPlugins; [ plugins =
(with pkgs.vimPlugins; [
# base distro # base distro
LazyVim LazyVim
conform-nvim conform-nvim
@ -48,10 +49,6 @@ in
which-key-nvim which-key-nvim
nvim-web-devicons nvim-web-devicons
mini-nvim mini-nvim
mini-ai
mini-comment
mini-icons
mini-pairs
noice-nvim noice-nvim
nui-nvim nui-nvim
nvim-notify nvim-notify
@ -60,7 +57,6 @@ in
nvim-navic nvim-navic
dressing-nvim dressing-nvim
aerial-nvim aerial-nvim
snacks-nvim
# project management # project management
project-nvim project-nvim
@ -68,6 +64,7 @@ in
persistence-nvim persistence-nvim
# smart typing # smart typing
indent-blankline-nvim
guess-indent-nvim guess-indent-nvim
vim-illuminate vim-illuminate
@ -78,22 +75,23 @@ in
neodev-nvim neodev-nvim
SchemaStore-nvim # load known formats for json and yaml SchemaStore-nvim # load known formats for json and yaml
nvim-metals nvim-metals
nvim-jdtls
# cmp plugins # cmp plugins
nvim-cmp nvim-cmp # completion plugin
blink-cmp # completion plugin cmp-buffer # buffer completions
cmp-path # path completions
cmp_luasnip # snipper completions cmp_luasnip # snipper completions
cmp-nvim-lsp # LSP completions
# snippets # snippets
luasnip # snippet engine luasnip # snippet engine
nvim-snippets
friendly-snippets # a bunch of snippets to use friendly-snippets # a bunch of snippets to use
# search functionality # search functionality
plenary-nvim plenary-nvim
telescope-nvim telescope-nvim
telescope-fzf-native-nvim telescope-fzf-native-nvim
fzf-lua
grug-far-nvim grug-far-nvim
flash-nvim flash-nvim
@ -117,12 +115,10 @@ in
nvim-dap nvim-dap
nvim-dap-ui nvim-dap-ui
nvim-dap-virtual-text nvim-dap-virtual-text
one-small-step-for-vimkind
# neotest # neotest
neotest neotest
neotest-rust neotest-rust
neotest-elixir
# SQL # SQL
vim-dadbod vim-dadbod
@ -132,18 +128,12 @@ in
lazy-nvim lazy-nvim
lazydev-nvim lazydev-nvim
vim-startuptime vim-startuptime
yazi-nvim ])
zk-nvim ++ [
# File manager
(pkgs.vimUtils.buildVimPlugin { (pkgs.vimUtils.buildVimPlugin {
pname = "opencode.nvim"; name = "yazi.nvim";
version = "2025-12-04"; src = inputs.vim-yazi;
src = pkgs.fetchFromGitHub {
owner = "NickvanDyke";
repo = "opencode.nvim";
rev = "963fad75f794deb85d1c310d2e2cb033da44f670";
hash = "sha256-nKOsHgMptHnOS+SCTHa77sQ/ZiUY0aW26I8GN7ocRHE=";
};
}) })
]; ];
@ -170,19 +160,13 @@ in
marksman marksman
# Docker extra # Docker extra
dockerfile-language-server nodePackages.dockerfile-language-server-nodejs
hadolint hadolint
docker-compose-language-service docker-compose-language-service
# JSON and YAML extras # JSON and YAML extras
nodePackages.yaml-language-server nodePackages.yaml-language-server
# Java
jdt-language-server
# Elixir
beam28Packages.elixir-ls
# Custom # Custom
editorconfig-checker editorconfig-checker
shellcheck shellcheck
@ -225,15 +209,13 @@ in
{ import = "lazyvim.plugins.extras.formatting.prettier" }, { import = "lazyvim.plugins.extras.formatting.prettier" },
{ import = "lazyvim.plugins.extras.lang.angular" }, { import = "lazyvim.plugins.extras.lang.angular" },
{ import = "lazyvim.plugins.extras.lang.docker" }, { import = "lazyvim.plugins.extras.lang.docker" },
{ import = "lazyvim.plugins.extras.lang.java" },
{ import = "lazyvim.plugins.extras.lang.json" }, { import = "lazyvim.plugins.extras.lang.json" },
{ import = "lazyvim.plugins.extras.lang.markdown" }, { import = "lazyvim.plugins.extras.lang.markdown" },
{ import = "lazyvim.plugins.extras.lang.sql" }, { import = "lazyvim.plugins.extras.lang.sql" },
{ import = "lazyvim.plugins.extras.lang.yaml" }, { import = "lazyvim.plugins.extras.lang.yaml" },
{ import = "lazyvim.plugins.extras.lang.scala" }, { import = "lazyvim.plugins.extras.lang.scala" },
{ import = "lazyvim.plugins.extras.lang.elixir" },
{ import = "lazyvim.plugins.extras.test.core" },
{ import = "lazyvim.plugins.extras.lang.typescript" }, { import = "lazyvim.plugins.extras.lang.typescript" },
{ import = "lazyvim.plugins.extras.test.core" },
-- import/override with your plugins -- import/override with your plugins
{ import = "plugins" }, { import = "plugins" },
}, },
@ -265,8 +247,11 @@ in
} }
}, },
dev = { dev = {
path = "${pkgs.vimUtils.packDir config.programs.neovim.finalPackage.passthru.packpathDirs}/pack/myNeovimPackages/start", path = "${
patterns = {""}, pkgs.vimUtils.packDir
config.home-manager.users.${config.user.name}.programs.neovim.finalPackage.passthru.packpathDirs
}/pack/myNeovimPackages/start",
patterns = {"folke", "nvim-telescope", "hrsh7th", "akinsho", "stevearc", "LazyVim", "catppuccin", "saadparwaiz1", "nvimdev", "rafamadriz", "lewis6991", "lukas-reineke", "nvim-lualine", "L3MON4D3", "williamboman", "echasnovski", "nvim-neo-tree", "MunifTanjim", "mfussenegger", "rcarriga", "neovim", "nvim-pack", "nvim-treesitter", "windwp", "JoosepAlviste", "nvim-tree", "nvim-lua", "RRethy", "dstein64", "Saecki", "ggandor", "iamcco", "nvim-neotest", "rouge8", "theHamsta", "SmiteshP", "jbyuki", "simrat39", "b0o", "tpope", "kosayoda", "ellisonleao", "NeogitOrg", "sindrets", "scalameta", "garymjr", "mikavilpas","kristijanhusak","MagicDuck","MeanderingProgrammer"},
}, },
install = { install = {
missing = false, missing = false,
@ -280,8 +265,227 @@ in
source = ./lua; source = ./lua;
}; };
home.sessionVariables = { programs.nixvim = {
ZK_NOTEBOOK_DIR = "${config.home.homeDirectory}/Nextcloud/notes"; enable = false;
package = pkgs.neovim-unwrapped;
vimAlias = true;
keymaps = [
# Search
{
key = "<leader>cx";
action = "<CMD>Telescope diagnostics layout_strategy=vertical<CR>";
options.desc = "Search diagnostics";
}
# Project
{
key = "<leader>ps";
action = "<CMD>wa<CR>";
options.desc = "Save all buffers";
}
];
plugins = {
lazy = {
enable = true;
plugins = [
{
pkg = pkgs.vimPlugins.gitsigns-nvim;
opts.__raw = # lua
''
{
on_attach = function(buffer)
local gs = package.loaded.gitsigns
local function map(mode, l ,r, desc)
vim.keymap.set(mode, l, r, { buffer = buffer, desc = desc})
end
map("n", "<leader>g;", function()
if vim.wo.diff then
vim.cmd.normal({ "]c", bang = true })
else
gs.nav_hunk("next")
end
end, "Next Hunk")
map("n", "<leader>g,", function()
if vim.wo.diff then
vim.cmd.normal({ "[c", bang = true })
else
gs.nav_hunk("prev")
end
end, "Prev Hunk")
map({ "n", "v" }, "<leader>gs", gs.stage_hunk, "Stage Hunk")
map({ "n", "v" }, "<leader>gr", gs.reset_hunk, "Reset Hunk")
map("n", "<leader>gS", gs.stage_buffer, "Stage Buffer")
map("n", "<leader>gu", gs.undo_stage_hunk, "Undo Stage Hunk")
map("n", "<leader>gR", gs.reset_buffer, "Reset Buffer")
map("n", "<leader>gp", gs.preview_hunk_inline, "Preview Hunk Inline")
map("n", "<leader>gb", function() gs.blame_line({ full = true }) end, "Blame Line")
map("n", "<leader>gd", gs.diffthis, "Diff This")
map("n", "<leader>gD", function() gs.diffthis("~") end, "Diff This ~")
map('n', '<leader>tb', gs.toggle_current_line_blame, "Toggle current line blame")
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>", "GitSigns Select Hunk")
end,
}
'';
}
{
pkg = pkgs.vimPlugins.which-key-nvim;
event = "VimEnter";
config = # lua
''
function ()
require('which-key').setup()
require('which-key').register {
['<leader>b'] = { name = 'Buffer', _ = 'which_key_ignore' },
['<leader>c'] = { name = 'Code', _ = 'which_key_ignore' },
['<leader>d'] = { name = 'Document', _ = 'which_key_ignore' },
['<leader>f'] = { name = 'File', _ = 'which_key_ignore' },
['<leader>g'] = { name = 'Git', _ = 'which_key_ignore' },
['<leader>o'] = { name = 'Org', _ = 'which_key_ignore' },
['<leader>n'] = { name = 'Org-roam', _ = 'which_key_ignore' },
['<leader>p'] = { name = 'Project', _ = 'which_key_ignore' },
['<leader>r'] = { name = 'Rename', _ = 'which_key_ignore' },
['<leader>s'] = { name = 'Search', _ = 'which_key_ignore' },
['<leader>w'] = { name = 'Window', _ = 'which_key_ignore' },
['<leader>t'] = { name = 'Toggle', _ = 'which_key_ignore' },
['<leader>q'] = { name = 'Quit/Session', _ = 'which_key_ignore' },
}
end
'';
}
{
pkg = pkgs.vimPlugins.nvim-lspconfig;
config = # lua
''
function ()
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('lsp-attach', { clear = true }),
callback = function(event)
local map = function(keys, func, desc)
vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
end
map('gd', require('telescope.builtin').lsp_definitions, 'Go to definition')
map('gr', require('telescope.builtin').lsp_references, 'Go to references')
map('gI', require('telescope.builtin').lsp_implementations, 'Goto implementation')
map('gD', vim.lsp.buf.declaration, 'Go to declaration')
map('gT', require('telescope.builtin').lsp_type_definitions, 'Type definition')
map('<leader>cD', require('telescope.builtin').lsp_document_symbols, 'Document symbols')
map('<leader>cw', require('telescope.builtin').lsp_dynamic_workspace_symbols, 'Workspace symbols ')
map('<leader>cd', vim.diagnostic.open_float, 'Line diagnostics')
map('<leader>c,', vim.diagnostic.goto_prev, 'Previous diagnostics')
map('<leader>c;', vim.diagnostic.goto_next, 'Next diagnostics')
map('<leader>cr', vim.lsp.buf.rename, 'Rename')
map('<leader>ca', vim.lsp.buf.code_action, 'Code action')
map('K', vim.lsp.buf.hover, 'Hover Documentation')
end
})
local has_cmp, cmp_nvim_lsp = pcall(require, "cmp_nvim_lsp")
local capabilities = vim.tbl_deep_extend(
"force",
{},
vim.lsp.protocol.make_client_capabilities(),
has_cmp and cmp_nvim_lsp.default_capabilities() or {}
)
local function setup(server, server_opts)
local server_opts_with_caps = vim.tbl_deep_extend("force", {
capabilities = vim.deepcopy(capabilities),
}, server_opts)
require("lspconfig")[server].setup(server_opts_with_caps)
end
setup("yamlls", {})
setup("typos_lsp", {
init_options = { diagnosticSeverity = "Hint" }
})
setup("tsserver", {})
setup("terraformls", {})
setup("marksman", {})
setup("lua_ls", {})
setup("jsonls", { cmd = { "${pkgs.vscode-langservers-extracted}/bin/vscode-json-language-server", "--stdio" } })
setup("html", { cmd = { "${pkgs.vscode-langservers-extracted}/bin/vscode-html-language-server", "--stdio" } })
setup("eslint", { cmd = { "${pkgs.vscode-langservers-extracted}/bin/vscode-eslint-language-server", "--stdio" } })
setup("dockerls", { cmd = { "${pkgs.dockerfile-language-server-nodejs}/bin/docker-langserver", "--stdio" } })
setup("docker_compose_language_service", {})
setup("cssls", { cmd = { "${pkgs.vscode-langservers-extracted}/bin/vscode-css-language-server", "--stdio" } })
setup("bashls", {})
setup("ansiblels", { cmd = { "${pkgs.ansible-language-server}/bin/ansible-language-server", "--stdio" } })
end
'';
}
{
pkg = pkgs.vimPlugins.nvim-cmp;
event = "InsertEnter";
dependencies = [
pkgs.vimPlugins.cmp-nvim-lsp
pkgs.vimPlugins.cmp-path
pkgs.vimPlugins.cmp-buffer
];
opts.__raw = # lua
''
function()
local cmp = require("cmp")
return {
mapping = {
["<C-Space>"] = cmp.mapping.complete(),
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-e>"] = cmp.mapping.close(),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<CR>"] = cmp.mapping.confirm({ select = true }),
["<C-y>"] = cmp.mapping.confirm({ select = true }),
["<S-Tab>"] = cmp.mapping(cmp.mapping.select_prev_item(), { "i", "s" }),
["<Tab>"] = cmp.mapping(cmp.mapping.select_next_item(), { "i", "s" }),
},
sources = {
{ name = "nvim_lsp" },
{ name = "path" },
{ name = "buffer" },
{ name = "orgmode" },
},
}
end
'';
}
# Disabled for now as it tries to write org grammar to its own directory in the nix store
# https://github.com/nvim-orgmode/orgmode/blob/95fb795a422f0455e03d13a3f83525f1d00793ad/lua/orgmode/utils/treesitter/install.lua#L9
# {
# pkg = pkgs.vimPlugins.orgmode;
# event = "VeryLazy";
# ft = [ "org" ];
# config = /*lua*/ ''
# function ()
# require('orgmode').setup({
# org_agend_files = '~/Nextcloud/Org/**/*',
# org_default_notes_file = '~/Nextcloud/Org/refile.org',
# })
# end
# '';
# }
# {
# pkg = (pkgs.vimUtils.buildVimPlugin {
# name = "org-roam.nvim";
# src = inputs.vim-org-roam;
# });
# dependencies = [ pkgs.vimPlugins.orgmode ];
# event = "VeryLazy";
# ft = [ "org" ];
# config = /*lua*/ ''
# function ()
# require('org-roam').setup({
# directory = '~/Nextcloud/OrgRoam',
# })
# end
# '';
# }
];
};
};
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
@ -303,10 +507,8 @@ in
lua-language-server lua-language-server
docker-compose-language-service docker-compose-language-service
bash-language-server bash-language-server
angular-language-server inputs.nixpkgs-master.legacyPackages.x86_64-linux.angular-language-server
vtsls inputs.nixpkgs-master.legacyPackages.x86_64-linux.vtsls
zk
metals
]; ];
}; };
}; };

View file

@ -22,7 +22,7 @@ in
user.packages = [ user.packages = [
(lib.mkIf cfg.psx.enable pkgs.duckstation) (lib.mkIf cfg.psx.enable pkgs.duckstation)
(lib.mkIf cfg.ds.enable pkgs.desmume) (lib.mkIf cfg.ds.enable pkgs.desmume)
(lib.mkIf cfg.gc.enable pkgs.dolphin-emu) (lib.mkIf cfg.gc.enable pkgs.dolphinEmu)
(lib.mkIf (cfg.gba.enable || cfg.gb.enable || cfg.snes.enable) pkgs.higan) (lib.mkIf (cfg.gba.enable || cfg.gb.enable || cfg.snes.enable) pkgs.higan)
]; ];
}; };

View file

@ -14,31 +14,12 @@ in
lutris.enable = lib.my.mkBoolOpt false; lutris.enable = lib.my.mkBoolOpt false;
}; };
config = lib.mkMerge [ config = {
{
user.packages = [ user.packages = [
(lib.mkIf cfg.steam.enable pkgs.steam)
(lib.mkIf cfg.lutris.enable pkgs.lutris) (lib.mkIf cfg.lutris.enable pkgs.lutris)
(lib.mkIf cfg.lutris.enable pkgs.wine) (lib.mkIf cfg.lutris.enable pkgs.wine)
(lib.mkIf (cfg.steam.enable || cfg.lutris.enable) pkgs.protontricks) (lib.mkIf (cfg.steam.enable || cfg.lutris.enable) pkgs.protontricks)
]; ];
} };
(lib.mkIf cfg.steam.enable {
hardware.steam-hardware.enable = true;
programs.steam = {
enable = true;
protontricks.enable = true;
};
})
(lib.mkIf (cfg.steam.enable || cfg.lutris.enable) {
programs.gamemode = {
enable = true;
enableRenice = true;
};
home-manager.users.${config.user.name} = {
programs.mangohud = {
enable = true;
};
};
})
];
} }

View file

@ -1,41 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.media.mopidy;
in
{
options.modules.media.mopidy = {
enable = lib.my.mkBoolOpt false;
};
config = lib.mkIf cfg.enable {
home-manager.users.${config.user.name} =
{ ... }:
{
services.mopidy = {
enable = true;
extensionPackages = with pkgs; [
mopidy-mpd
mopidy-subidy
];
settings = {
mpd = {
enabled = true;
hostname = "0.0.0.0";
port = "6600";
};
subidy = {
url = "https://cloud.banditlair.com/apps/music/subsonic";
username = "paultrial";
password = "oEcMsam5uo8k";
legacy_auth = true;
};
};
};
};
};
}

View file

@ -18,15 +18,8 @@ in
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
(
(ncmpcpp.override { visualizerSupport = true; }) (ncmpcpp.override { visualizerSupport = true; })
# Duplicate fix until it makes its way in unstable mpc_cli
.overrideAttrs
(old: {
configureFlags = old.configureFlags ++ [ (lib.withFeatureAs true "boost" boost.dev) ];
})
)
mpc
]; ];
file.".config/ncmpcpp/config".source = ./config; file.".config/ncmpcpp/config".source = ./config;

View file

@ -13,7 +13,7 @@
config = { config = {
user = { user = {
name = lib.mkDefault "froidmpa"; name = "nixos";
description = "The primary user account"; description = "The primary user account";
extraGroups = [ extraGroups = [
"wheel" "wheel"

Binary file not shown.

View file

@ -1,57 +0,0 @@
{
config,
lib,
...
}:
let
cfg = config.modules.services.kanata;
in
{
options.modules.services.kanata = {
enable = lib.my.mkBoolOpt false;
};
config = lib.mkIf cfg.enable {
services.kanata = {
enable = true;
keyboards.laptop.config = ''
;; QWERTY-shaped matrix; works for AZERTY because Kanata uses scancodes.
(defsrc
esc 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
caps a s d f g h j k l ; ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt spc ralt rmet rctl
)
(defvar
tap-time 150
hold-time 200
)
;; Home-row mod-taps (tap sends the letter; hold sends the modifier)
(defalias
a-alt (tap-hold $tap-time $hold-time a lalt)
s-ctl (tap-hold $tap-time $hold-time s lctl)
d-sft (tap-hold $tap-time $hold-time d lsft)
f-met (tap-hold $tap-time $hold-time f lmet)
j-met (tap-hold $tap-time $hold-time j rmet)
k-sft (tap-hold $tap-time $hold-time k rsft)
l-ctl (tap-hold $tap-time $hold-time l rctl)
;-alt (tap-hold $tap-time $hold-time ; ralt)
)
(deflayer main
esc 1 2 3 4 5 6 7 8 9 0 - = bspc
tab q w e r t y u i o p [ ] \
caps @a-alt @s-ctl @d-sft @f-met g h @j-met @k-sft @l-ctl @;-alt ' ret
lsft z x c v b n m , . / rsft
lctl lmet lalt spc ralt rmet rctl
)
'';
};
};
}

View file

@ -1,60 +0,0 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.modules.services.work-proxy;
in
{
options.modules.services.work-proxy = {
enable = lib.my.mkBoolOpt false;
};
config = lib.mkIf cfg.enable {
services.tinyproxy = {
enable = true;
settings = {
LogLevel = "Info";
Port = 2345;
Upstream = [
''upstream http wsl:2345 ".microsoftonline.com"''
];
};
};
security.pki.certificateFiles = [
"${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
./certs/Foyer-Group-Root-CA.crt
./certs/Foyer-Sub-CA.crt
];
environment.variables = {
JAVAX_NET_SSL_TRUSTSTORE = ./certs/cacerts;
JAVA_OPTS = "-Djavax.net.ssl.trustStore=${./certs/cacerts} -Djavax.net.ssl.trustStorePassword=changeit";
JAVA_TOOL_OPTIONS = "-Djavax.net.ssl.trustStore=${./certs/cacerts} -Djavax.net.ssl.trustStorePassword=changeit";
};
home-manager.users.${config.user.name} = {
home = {
file.".sbt/repositories".text = ''
[repositories]
local
maven-local
nexus-maven: https://nexus.foyer.lu/repository/mvn-all/
nexus-ivy: https://nexus.foyer.lu/repository/ivy-all/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
nexus-ivy-sbt: https://nexus.foyer.lu/repository/ivy-all/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[artifact](-[classifier])-[type].[ext]
'';
};
};
environment.systemPackages = with pkgs; [
(sbt.override { jre = jdk17; })
mongodb-compass
chisel
];
};
}

View file

@ -0,0 +1 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILu2vaezsTNaTY8X4o2mFOmQguPnSAMOoPZRlW2ACAku froidmpa@froidmpa-laptop-2021-06-30

View file

@ -1 +0,0 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk6GUenOaMxf0YquxEPubN5zjrfHvqw76IYXxD9NUo6 phfroidmont@stellaris-2025-09-09